我有一个MediaWiki 1.33.0网站,只有一个扩展名→ContactPage,通过它我可以有一个简单的联系表。
使用HTMLForms template engine(其中写有default form-template for ContactPage),我扩展了默认形式以包括选择菜单。
选择列表数组键和此选择菜单的值在LocalSettings.php
中用英语编写,但我的网站不是主要使用LTR英文,而是使用RTL希伯来语,我希望它们出现最终用户使用我网站的母语。
wfLoadExtension( 'ContactPage' );
$wgContactConfig['default'] = array(
'RecipientUser' => 'Admin', // Must be the name of a valid account which also has a verified e-mail-address added to it.
'SenderName' => 'Contact Form on ' . $wgSitename, // "Contact Form on" needs to be translated
'SenderEmail' => null, // Defaults to $wgPasswordSender, may be changed as required
'RequireDetails' => true, // Either "true" or "false" as required
'IncludeIP' => false, // Either "true" or "false" as required
'MustBeLoggedIn' => false, // Check if the user is logged in before rendering the form
'AdditionalFields' => array(
'omgaselectbox' => [
'class' => 'HTMLSelectField',
'label' => 'Select an option',
'options' => [
'X' => 'X',
'Y' => 'Y',
'Z' => 'Z',
],
],
),
// Added in MW 1.26
'DisplayFormat' => 'table', // See HTMLForm documentation for available values.
'RLModules' => array(), // Resource loader modules to add to the form display page.
'RLStyleModules' => array(), // Resource loader CSS modules to add to the form display page.
);
1):用希伯来语写选择列表数组键和值(由于LTR-RTL冲突,可能有点混乱):
'options' => [
'ס' => 'ס',
'ט' => 'ט',
'ז' => 'ז',
],
2)通过类似的代码翻译客户端JavaScript中的英语选择列表数组键和值:
document.getElementById('select').selectedIndex = 0;
document.getElementById('select').value = 'Default';
我希望有序的后端方法,如果有的话,最好不要扩展
In this discussion是MediaWiki社区的成员,建议使用system message transclution,但对我来说不清楚的章节;我不明白这是什么意思,这对我的情况有什么帮助。
在没有扩展名的情况下,从“后端”到MediaWiki的翻译有哪些可能的方法?
答案 0 :(得分:1)
在MediaWiki的后端(php)和前端(JavaScript)部分中,本地化系统运行正常,→与后端保持最佳关系是因为它最小化。
假设您采用仅后端的方法:
如果所需的翻译已存在于MediaWiki中(例如,在表单的另一页上),则可以“简单地”重新使用该键。因此,假设您当前的其他选择字段定义如下:
'Select' => [
'type' => 'select',
'options' => [
'The english message' => 'value'
]
],
然后,您将其更改为以下内容:
'Select' => [
'type' => 'select',
'options-messages' => [
'the-message-key' => 'test'
]
],
请考虑将options
更改为options-messages
键。
另外:将密钥the-message-key
更改为要重用的消息密钥。
如果您知道使用消息/字符串的页面,则可以使用GET选项uselang
和值qqx
打开该页面,以查看消息密钥。示例:如果在登录页面上使用了字符串,只需使用https://example.com/wiki/Special:Userlogin?uselang=qqx打开登录页面即可显示该页面上使用的所有消息键。
但是,这样做时会出现一个警告:通常不建议重用现有的消息键,尤其是在其他页面上使用它们时。在考虑到特定上下文的情况下,将键翻译成数百种语言。这也可能意味着在联系页面上使用字符串/消息时,特定语言的翻译不适合。因此,我建议使用下面的第二个选项。
通常,这将通过扩展来完成,扩展可以提供一个特定的目录,该目录用于保存带有消息密钥转换的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)。这是添加自定义翻译的一种更稳定的方法,但是,您现在还需要注意将键翻译成自己想要支持的语言。如果没有将密钥翻译成用户选择的语言,则使用默认语言英语。