I18n.js 999 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. var Class = require('./Class');
  2. var safeGet = require('./safeGet');
  3. var extend = require('./extend');
  4. var strTpl = require('./strTpl');
  5. var isStr = require('./isStr');
  6. var isFn = require('./isFn');
  7. exports = Class({
  8. initialize: function I18n(locale, langs) {
  9. this._locale = locale;
  10. this._langs = langs;
  11. },
  12. set: function(locale, lang) {
  13. if (this._langs[locale]) {
  14. extend(this._langs[locale], lang);
  15. } else {
  16. this._langs[locale] = lang;
  17. }
  18. },
  19. t: function(path, data) {
  20. var val = '';
  21. var lang = this._langs[this._locale];
  22. if (!lang) return '';
  23. val = safeGet(lang, path);
  24. if (data) {
  25. if (isStr(val)) {
  26. val = strTpl(val, data);
  27. } else if (isFn(val)) {
  28. val = val(data);
  29. }
  30. }
  31. return val || '';
  32. },
  33. locale: function(locale) {
  34. this._locale = locale;
  35. }
  36. });
  37. module.exports = exports;