RequireJS i18n翻译字符串中的参数替换

时间:2013-09-23 12:12:33

标签: javascript internationalization requirejs

是否可以将参数传递给RequireJS i18n翻译的字符串?例如,我想定义类似这样的内容:

// nls/strings.js
define({
  'record_created': 'A record for :name has been created.'
});

然后将数据传递给它:

var string = i18n.record_created('Nikola Tesla');

我在文档中找不到任何可能的内容,但我之前在其他i18n库中做过这类事情。

1 个答案:

答案 0 :(得分:2)

关于此主题的其他一些链接:

你可以用自己选择的模板语言自己构建一些东西。 E.g:

<script>
    define("myProps", {
        "record_created": "A record for {{name}} has been created at {{date}}"
    });

    define("myI18N", ["handlebars"], function(Handlebars) {
        function format(template, context) {
            var compiled = Handlebars.compile(template);
            return compiled(context);
        }

        function Wrapper(props) {
            var ob = {};
            for (var i in props) {
                ob[i] = format.bind(null, props[i]);
            }
            return ob;
        }

        return Wrapper;
    });

    require(["myProps", "myI18N"], function(props, i18n) {
        var ob = i18n(props);
        console.log(ob.record_created({
            name: "Meli",
            date: new Date()
        }));
    });
</script>

打印:

A record for Meli has been created at Mon Sep 23 2013 20:32:39 GMT+0100 (GMT Daylight Time)

设定:

<script>
    require = {
        paths: {
            "handlebars": "https://rawgithub.com/wycats/handlebars.js/v1.0.12/dist/handlebars"
        },
        shim: {
            'handlebars': {
                exports: 'Handlebars'
            }
        }
    };
</script>
<script src="http://requirejs.org/docs/release/2.1.8/comments/require.js"></script>
相关问题