【发布时间】: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 中的文档真的很差,所以我对此没有任何线索。有人有线索吗? 谢谢!
【问题讨论】: