i18n 简易版

2023-10-20 18:59:43 浏览数 (2)

最近在做一个Edge插件,突然离开webpacknpm有点陌生而又兴奋的感觉。从最简单的http请求到i18n,都自己手撸了一遍。后来某一天,看到chrome文档有官方的i18n方案,就弃用了自己封装的代码。在这里,我把代码贴出来,纪念一下我"逝去"的代码~

代码语言:javascript复制
(function() {
  var i18n = {
    lang: 'en_US',
    phrases: {},
    tr: function(word) {
      return i18n.phrases[i18n.lang][word];
    },
    setLang: function(lang = 'en_US') {
      i18n.lang = lang;
      webix.storage.local.put('lang', lang);
      window.location.reload();
    }
  };

  // 恢复上次选择语言
  var localLang = webix.storage.local.get('lang');
  if (!localLang) {
    webix.storage.local.put('lang', 'en_US');
  } else {
    i18n.lang = localLang;
  }

  // 加载词库
  const xhr = new XMLHttpRequest();
  xhr.open('GET', '/profile/language.json', false);
  xhr.send();
  if (xhr.status !== 200) {
    throw new Error(`HTTP error! status: ${xhr.status}`);
  }

  var phrases = JSON.parse(xhr.responseText);
  i18n.phrases = phrases;

  window.i18n = i18n;
})();

0 人点赞