据我所知,创建国际化扩展所需的唯一步骤是创建如下的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()调用时试图调试callstack而没有任何成功。
感谢任何帮助。我正在从git运行最新版本的mediawiki。并且所有扩展都已与作曲家一起安装。
//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"
}
]
}
答案 0 :(得分:0)
典型的,经过一段时间的努力解决这个问题。发布此问题后,我尝试从composer.json中删除所有其他扩展,并进行了作曲家更新。这神奇地解决了我的问题。
我怀疑可能存在冲突的扩展,或者可能是作曲家自动加载机制出现问题。
我试着进一步研究它。
似乎作曲家是罪魁祸首,在重新添加之前删除的扩展后,它仍然有用。所以我只能猜测作曲家依赖管理中有一些怪癖。