据我所知,创建国际化扩展所需的唯一步骤是创建一个 i18n 文件,如下所示:
//SemanticHighcharts.i18n.php
$messages = array();
$messages['en'] = array(
'semantichighcharts-desc' => 'A SMW result format displaying data with the help of highcharts
);
然后用全局变量 wgExtensionMessageFiles 引用这个文件
//SemanticHighcharts.php
global $wgExtensionMessagesFiles, $wgExtensionCredits;
$wgExtensionCredits['semantic'][] = array(
'path' => __FILE__,
'name' => 'SemanticHighcharts',
'version' => '0.0.1',
'url' => 'https://www.mediawiki.org/wiki/Extension:SemanticHighcharts',
'descriptionmsg' => 'semantichighcharts-desc'
);
//i18n
$wgExtensionMessagesFiles['SemanticHighcharts'] = dirname(__FILE__) . '/SemanticHighcharts.i18n.php';
这应该会导致 wgExtensionCredits 中的 descriptionmsg 在 Special:Version 上显示时被国际化。
然而事实并非如此……事实上,没有读取 i18n 文件中的消息密钥!
我该如何调试这个问题?在进行 wfMessage() 调用时,我尝试调试调用堆栈,但没有取得任何巨大成功。
任何帮助表示赞赏。我正在从 git 运行最新版本的 mediawiki。并且所有扩展都已经安装了composer。
//composer.json
{
"require": {
"php": ">=5.3.2",
"mediawiki/side-bar-menu": "dev-master",
"mediawiki/semantic-highcharts": "dev-master",
"mediawiki/semantic-result-formats": "dev-master"
},
"suggest": {
"ext-fileinfo": "*",
"ext-mbstring": "*",
"ext-wikidiff2": "*",
"ext-apc": "*"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/netbrain/SemanticHighcharts"
}
]
}