我在Rails应用程序中使用'handlebars_assets'
和i18n-js
,我有一个车把模板,我想在其中转换Rails模型对象属性。
<div class="question-body">
<div><strong>{{tAttr 'body'}}:</strong> {{question.body}}</div>
{{#if question.race}}
<div><strong>{{tAttr 'which_race'}}:</strong> {{question.which_race}}</div>
{{/if}}
<div><strong>{{tAttr 'half_breed'}}:</strong> {{question.half_breed}}</div>
<div><strong>{{tAttr 'age'}}:</strong> {{question.age}}</div>
<div><strong>{{tAttr 'weight'}}:</strong> {{question.weight}}</div>
<div><strong>{{tAttr 'gender'}}:</strong> {{question.gender}}</div>
</div>
我有一个简单的表单,该表单与remote: true
异步提交,如果创建了记录,则将上面的模板附加到DOM。这是我处理AJAX响应的JS部分。
Handlebars.registerHelper('tAttr',
function(str){
return (I18n != undefined ? I18n.t('activerecord.attributes.question.' + str) : str);
}
);
$('#question-form').on('ajax:success', function (evt, question, status, xhr) {
var $form = $(evt.currentTarget);
var questionHTML = HandlebarsTemplates['questions/show']({
question: question,
idx: Date.now(),
authToken: $('meta[name="csrf-token"]').attr('content')
});
$('#questions').prepend(questionHTML);
$form.find('input[type=text], textarea').val('');
$form.find('.form-errors').html('');
});
在这里我应该有德语名称,但是我有英语名称。我已经确认服务器上的I18n.locale
是:de
,但是我正在获取属性的英文名称。我尝试通过rake i18n:js:export
手动导出翻译,但这无济于事。我该如何解决?
答案 0 :(得分:0)
我设法解决了这个问题。我已经学会了在DevTools中调试JavaScript,并且能够注意到I18n.defaultLocale设置为“ en”。我已通过在Rails视图中添加此代码段来解决此问题。
<script>
I18n.locale = "de"
</script>