我在CKAN中翻译客户端文本时遇到问题。我的网站是法语,所以这是问题所在: - 如果我点击左边的绿色按钮“S'abonner”,它应该将按钮更改为红色按钮并显示文本“Sedésabonner”,而是显示“取消关注”,如照片中所示:
如果我再次点击它会显示“Follow”(而不是“S'abonner”)。所以这是客户端的问题。通常,当您在服务器端生成文本时,您在模板_('msgid存在于pofile'中)中写入,但是,在客户端,它使用来自AJAX调用的结果“/ api / i18n / {language} ”
我做了一些挖掘,似乎客户端转换使用了来自AJAX调用的结果“/ api / i18n / fr”,但我得到的只是一个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的文档真的很差,所以我没有这方面的线索。有人有线索吗? 谢谢!
答案 0 :(得分:0)
我怀疑您可能正在运行未发布的CKAN分支(例如master),因此尚未构建Javascript转换。
使用以下命令完成:
paster front-end-build -c config_file.ini
只需运行此命令,翻译就可以了。
在主存储库上,这只是在发布之前完成,以避免使git历史记录复杂化。
检查此网站是否运行最新的主分支,但每晚都在前端构建: