4

我正在使用快速车把来生成我的视图,但我遇到了一个问题,即我的视图中的某些内容没有正确翻译,因为我在#each 助手中调用了 I18n 助手。

Index.handlebars:

{{#if roomsList}}
    {{#each roomsList}}        
        <section id="roomNumber-{{RoomNumber}}">
            <div class="room-status">              
                <div class="room-number">
                    <p>{{RoomNumber}}</p>
                </div>
                <div class="room-description room-status-{{RoomStatus}}">
                    <p class="clean">{{i18n "clean"}}</p>
                    <p class="dirty">{{i18n "dirty"}}</p>
                    <p class="in-progress">{{i18n "in-progress"}}</p>
                    <p class="to-inspect">{{i18n "to-inspect"}}</p>
                </div>
            </div>
            <span class="clearfix"></span>
        </section>        
    {{/each}}
{{/if}}

JS:

var Handlebars = require('Handlebars');
var i18n = require('i18n');

module.exports = {
    //Setup our default layout
    defaultLayout: 'default',

    //Register handlebars helpers
    helpers: {
    //Register your helpers
        //Helper for multiple languages
        i18n: function () {
            return i18n.__.apply(this, arguments);
        },
        __n: function () {
            return i18n.__n.apply(this, arguments);
        },
        section: function (name, options) {
            if (!this._sections) this._sections = {};
            this._sections[name] = options.fn(this);
            return null;
        }, 
        breaklines: function(text) {
            text = Handlebars.Utils.escapeExpression(text);
            text = text.replace(/(\r\n|\n|\r)/gm, '<br>');
            return new Handlebars.SafeString(text);
        }
    }     
}

如何解决问题?

4

2 回答 2

1

更简单易读的解决方案是:

{{../i18n "parameter"}}

上面的解决方案也适用于动态变量

于 2020-03-02T07:46:28.487 回答
1

这个对我有用:

{{#with ..}}{{i18n "to-inspect"}}{{/with}}

这会将上下文向上移动

于 2018-05-21T15:02:18.430 回答