我是ember,ember-cli的新手,我还在学习一切顺利的地方.我正在尝试使用ember-i18n模块添加多语言支持.
我有与bower一起安装的依赖项
bower install cldr ember-i18n --save
Run Code Online (Sandbox Code Playgroud)
而且我的进口工作正在进行中 Brocfile.js
app.import('vendor/cldr/plurals.js');
app.import('vendor/ember-i18n/lib/i18n.js');
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,i18n车把助手正在工作
{{t hello}} 给我"缺少翻译:你好"
我不知道在包含翻译的ember-cli文件夹结构中放置或引用文件的位置.
根据ember-i18n文档,它看起来像这样
Ember.I18n.translations = {
hello: "Hello World",
}
Run Code Online (Sandbox Code Playgroud)
我试着坚持app.js只是为了看它工作,但得到了错误:
Uncaught TypeError: Cannot set property 'translations' of undefined
Run Code Online (Sandbox Code Playgroud) 如果我使用内置帮助器的Ember.js input
{{input value=query class="form-input" placeholder="Search"}}
Run Code Online (Sandbox Code Playgroud)
我想用该字符串的翻译版本替换占位符字符串"Search".
通常,如果我还没有使用input帮助器,我会像这样访问翻译后的字符串:
{{ t "home.search" }}
Run Code Online (Sandbox Code Playgroud) 在我的客户控制器中,我定义了一些用于填充选择输入(下拉)选项的常量数组.
import Ember from 'ember';
export default Ember.Controller.extend({
occupations: [
{code: 'student', name: "Student"},
{code: 'worker', name: "Worker"},
{code: 'retired', name: "Retired"},
{code: 'other', name: "Other"}
]
});
Run Code Online (Sandbox Code Playgroud)
正常的解决方案是使用translationMacro函数t()或this.get('i18n').t()围绕翻译键,但它们不能用于这种情况,因为"this"内部对象或数组不会引用控制器.
解决这种情况的最佳做法是什么?