-1

据我所知,创建国际化扩展所需的唯一步骤是创建一个 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"
        }
    ]
}
4

1 回答 1

0

典型的,在这个问题上挣扎了很长一段时间之后。在发布此问题后,我尝试从 composer.json 中删除所有其他扩展,并进行了作曲家更新。这神奇地解决了我的问题。

我怀疑可能存在冲突的扩展名,或者可能只是作曲家自动加载机制出了问题。

我会尝试进一步调查。


似乎作曲家是罪魁祸首,在重新添加之前删除的扩展后,它仍然有效。所以我只能猜测作曲家依赖管理中有一些怪癖。

于 2014-03-07T06:38:00.830 回答