为翻译提供静态 json 文件
Serve static json file for translations
我正在使用 ember-i18n
进行翻译,我正在尝试按照 ember-i18n wiki 中的描述实时获取翻译
我不会从后端加载翻译,而是从静态文件加载它们。我已将文件 lang.json
放入 /public/i18n/
文件夹中,并使用以下服务检索它们:
export default Ember.Service.extend({
ajax: inject.service(), // ember-ajax service
i18n: inject.service(),
fetch(lang) {
if (isEmpty(lang) || !ENV.APP.languages.contains(lang)) {
lang = "en";
}
let url = "http://" + window.location.host + "/i18n/" + lang + ".json";
return new Ember.RSVP.Promise((resolve, reject) => {
this.get("ajax").request(url, {
type: "GET"
}).then((json) => {
this.get('i18n').addTranslations(lang, json);
resolve(lang);
}, (params) => {
Ember.Logger.debug(params);
reject();
});
});
}
});
lang.json 文件仅包含 json:
{
"key.foo": "Foo",
"key.bar": "Bar"
}
在开发中它就像一个魅力,但我在测试中遇到了一些问题 运行。检索到的 json 包含 lang.json
文件的内容,但它没有加载到 i18n
服务中(例如,如果我 运行 使用 -s
进行测试,我看到 missing translation xxx
无处不在。
此外,测试执行变得越来越慢,在 10-15 次测试后它会抛出超时错误。
我是不是在做一些不该做的事情,或者是我遗漏了什么?
谢谢
我正在使用:
ember-cli: 2.6.2
ember: ~2.6.0
ember-i18n: ~4.2.1
仅用于概念(用于您的回购)
1) 我打开 tests/index.html
然后修改它
<script src="assets/vendor.js"></script>
<!-- Next was added -->
<script>
var translations;
$.getJSON('/i18n/en.json').then(function(data){ translations = data; });
</script>
2) 里面 app/mirage/config.js
export default function() {
this.get("/i18n/:lang", function() {
return window.translations;
});
}
Git 此处我的更改有所不同 http://pastebin.com/eGwAXM77
我正在使用 ember-i18n
进行翻译,我正在尝试按照 ember-i18n wiki 中的描述实时获取翻译
我不会从后端加载翻译,而是从静态文件加载它们。我已将文件 lang.json
放入 /public/i18n/
文件夹中,并使用以下服务检索它们:
export default Ember.Service.extend({
ajax: inject.service(), // ember-ajax service
i18n: inject.service(),
fetch(lang) {
if (isEmpty(lang) || !ENV.APP.languages.contains(lang)) {
lang = "en";
}
let url = "http://" + window.location.host + "/i18n/" + lang + ".json";
return new Ember.RSVP.Promise((resolve, reject) => {
this.get("ajax").request(url, {
type: "GET"
}).then((json) => {
this.get('i18n').addTranslations(lang, json);
resolve(lang);
}, (params) => {
Ember.Logger.debug(params);
reject();
});
});
}
});
lang.json 文件仅包含 json:
{
"key.foo": "Foo",
"key.bar": "Bar"
}
在开发中它就像一个魅力,但我在测试中遇到了一些问题 运行。检索到的 json 包含 lang.json
文件的内容,但它没有加载到 i18n
服务中(例如,如果我 运行 使用 -s
进行测试,我看到 missing translation xxx
无处不在。
此外,测试执行变得越来越慢,在 10-15 次测试后它会抛出超时错误。
我是不是在做一些不该做的事情,或者是我遗漏了什么? 谢谢
我正在使用:
ember-cli: 2.6.2
ember: ~2.6.0
ember-i18n: ~4.2.1
仅用于概念(用于您的回购)
1) 我打开 tests/index.html
然后修改它
<script src="assets/vendor.js"></script>
<!-- Next was added -->
<script>
var translations;
$.getJSON('/i18n/en.json').then(function(data){ translations = data; });
</script>
2) 里面 app/mirage/config.js
export default function() {
this.get("/i18n/:lang", function() {
return window.translations;
});
}
Git 此处我的更改有所不同 http://pastebin.com/eGwAXM77