【问题标题】:Client-side translation does not work in CKAN客户端翻译在 CKAN 中不起作用
【发布时间】:2015-01-15 23:24:18
【问题描述】:

我在翻译 CKAN 中的客户端文本时遇到问题。我的网站是法语的,所以这里有问题: - 如果我单击左侧的绿色按钮“S'abonner”,它应该将按钮更改为红色并显示文本“Se désabonner”,但相反,它显示“取消关注”,如照片所示:

如果我再次单击它,它会显示“关注”(而不是“S'abonner”)。所以这是客户端的问题。通常,当您在服务器端生成文本时,您会在模板中写入 _('msgid present in pofile'),但在客户端,它使用 AJAX 调用“/api/i18n/{language}”的结果”。

我做了一些挖掘,似乎客户端翻译使用了对“/api/i18n/fr”的 AJAX 调用的结果,但我得到的只是一个 json 对象:

{
"": {
"domain": "ckan",
"lang": "fr",
"plural-forms": "nplurals=2; plural=(n > 1)"
}
}

但是,如果我查看 ckan 演示网站 (http://demo.ckan.org/api/i18n/fr),我会得到一个包含所有翻译的长 JSON 文件。 我设法发现这个 Ajax 调用是从哪里完成的,显然它来自:“src/ckan/ckan/public/base/javascript/client.js”,在函数处:

getLocaleData: function (locale, success, error) {
  var url = this.url('/api/i18n/' + (locale || ''));
  return jQuery.getJSON(url).then(success, error);
}

 If I replace 
var url = this.url('/api/i18n/' + (locale || '')); 

var url = this.url('http://demo.ckan.org/api/i18n/fr')

问题解决了,因为我在 json 对象中得到了翻译。 我的问题是如何获得要生成的正​​确数据,是否有要放入 production.ini 的参数?不幸的是,CKAN 中的文档真的很差,所以我对此没有任何线索。有人有线索吗? 谢谢!

【问题讨论】:

    标签: internationalization ckan


    【解决方案1】:

    我怀疑您可能正在运行 CKAN 的未发布分支(例如 master),因此尚未构建 Javascript 翻译。

    这是通过以下命令完成的:

    paster front-end-build -c config_file.ini
    

    只需运行此命令,翻译应该会正常。

    在主存储库上,这仅在发布之前完成,以避免使 git 历史复杂化。

    检查例如这个站点运行最新的主分支,但前端每天晚上都在其上构建:

    http://master.ckan.org/fr/dataset/world-countries

    【讨论】:

    • 我应用了你的命令,它似乎没有被粘贴者识别。以下是输出: Command 'front-end-build' not known (你可能需要运行 setup.py egg_info)
    • 您是从 ckan 文件夹 ({virtualenv}/src/ckan) 运行它吗?
    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 2017-11-11
    • 2018-04-27
    • 2011-11-09
    • 2018-09-25
    • 1970-01-01
    相关资源
    最近更新 更多