2013-09-23 4 views
3

Возможно ли передать параметры в переведенную строку RequireJS i18n? Например, я хотел бы определить что-то вроде этого:Подстановка параметров в RequireJS i18n переведенных строк

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

А затем передать ему данные, как это:

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

Я ничего не могу найти в документации, которая говорит, что это возможно , но раньше я делал такие вещи в других библиотеках i18n.

ответ

2

Некоторые другие ссылки на эту тему:

Вы могли бы построить что-то себя от языка шаблонного выбора. Например .:

<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> 
Смежные вопросы