在MediaWiki中从“后端”进行翻译而没有扩展名的可能方法是什么?

问题描述 投票:1回答:1

我有一个只有一个扩展名的MediaWiki 1.33.0网站→ContactPage,使用它我可以有一个简单的联系表。

使用HTMLForms template engine(其中写有default form-template for ContactPage),我扩展了默认格式以包括选择菜单

我的问题

此选择菜单的键和值在LocalSettings.php中用英语编写,但我的网站不是主要使用LTR英文,而是使用RTL希伯来语,但是我希望它们以我的网站母语显示给冲浪者。

可能的解决方法

我既可以写数组键,也可以用希伯来语对其进行赋值(由于LTR-RTL冲突,可能会有些混乱),要么,我可以通过一些类似的代码在客户端JavaScript中翻译它们:

document.getElementById('select').selectedIndex = 0;
document.getElementById('select').value = 'Default';

我的愿望

我希望有序的后端方法,如果有的话,比不进行扩展

In this discussion,MediaWiki社区成员建议使用system message transclution,但有关该章节的内容对我来说还不清楚;我不明白这是什么意思,这对我的情况有什么帮助。

我的问题

在没有扩展的情况下从“后端”在MediaWiki中进行翻译的可能方法是什么?

php html forms translation mediawiki
1个回答
1
投票
第二:MediaWiki具有一种很棒的,易于使用且功能强大的本地化大多数可见界面的方法,请参阅help page以获取有关此内容的更多常规信息。

本地化系统在MediaWiki的后端(php)和前端(JavaScript)部分都运行良好。但是,只要有可能,我都会坚持后端本地化,因为它允许没有JavaScript的用户也可以使用该页面。

在您的情况下,您需要做更多的工作才能将值本地化(只要它们已经不作为消息存在)。因此,这里有两种情况:

消息已在MediaWiki中存在

[如果您知道,所需的翻译已在MediaWiki中存在(例如,在表单的另一页上),则可以“简单地”重新使用密钥。因此,假设您当前的附加选择字段定义如下所示:

'Select' => [ 'type' => 'select', 'options' => [ 'The english message' => 'value' ] ],

然后,您将其更改为如下所示:

'Select' => [
    'type' => 'select',
    'options-messages' => [
        'the-message-key' => 'test'
    ]
],

特别查看optionsoptions-messages键的更改。另外:将密钥the-message-key更改为要重复使用的消息密钥。如果您知道使用消息/字符串的页面,则可以使用GET选项uselang和值qqx打开该页面,以查看消息键。示例:如果在登录页面上使用了字符串,只需用https://example.com/wiki/Special:Userlogin?uselang=qqx打开登录页面即可显示该页面上使用的所有消息键。

但是,

一个警告

这样做:通常不建议重用现有的消息键,尤其是在其他页面上使用它们时。在考虑到特定上下文的情况下,将键翻译成数百种语言。这也可能意味着,在联系页面上使用字符串/消息时,特定语言的翻译不适合。因此,我建议使用下面的第二个选项。

当您所需的字符串尚未出现在MediaWiki系统中时

有点棘手。通常,您会有一个扩展名,该扩展名可以提供一个特定的目录,该目录中保存了带有消息密钥转换的JSON文件。但是,当您“只是”自定义扩展名时,您需要一种方法来输入密钥的翻译。

因此,首先让我们从上方接管更改。将您的选择字段定义更改为:

'Select' => [ 'type' => 'select', 'options-messages' => [ 'my-fancy-key' => 'test' ] ],

现在,有两种方法可以翻译密钥:

Wiki

通过将消息保存在Wiki上,只需编辑Wiki中的相应页面,也可以轻松地更改消息。在我们的示例中,让我们将密钥翻译为英语和希伯来语:

英语:在Wiki中编辑页面MediaWiki:My-fancy-key并添加所需的文本。

希伯来语:在Wiki中编辑页面MediaWiki:My-fancy-key/he并添加所需的文本。

作为已部署代码的一部分

我们需要使用JSON文件注册目录以翻译这些消息。即使没有创建扩展名,我们也使用与扩展名相同的配置变量$wgMessagesDirs。将以下行添加到LocalSettings.php:

$wgMessagesDirs['ContactPageCustomization'] = __DIR__ . '/customContactPage';

现在,在MediaWiki安装的根文件夹中创建目录customContactPage,并将以下文件包含以下内容:

en.json

{ "my-fancy-key": "Default" } 如果要翻译成另一种语言,请使用要翻译成的语言代码创建一个新文件。希伯来语应该是他,所以让我们创建一个新的语言文件:

he.json

{ "my-fancy-key": "ברירת מחדל" }

[如果您随后打开联系页面,则消息键my-fancy-key应翻译为英语Default,并且希伯来语应相同(至少基于Google Translate)。这是添加自定义翻译的一种更稳定的方法,但是,您现在还需要注意将键翻译成自己想要支持的语言。如果密钥没有翻译成用户选择的语言,则使用默认语言英语。
© www.soinside.com 2019 - 2024. All rights reserved.