JavaScript 使用 reduce 方法实现简单的 i18n 功能

i18n: 国际化 (Internationalization) 的缩写

使用 Array.prototype.reduce() 方法实现简单的 i18n 功能

reduce() 方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。

实现代码:

function $translate(key) {
  // 翻译字典配置选项
  const options = {
    greetings: {
      hello: "Bonjour!",
    },
  };

  // 使用 `key` 作为索引获取 `options` 对象的深层属性
  return key.split(".").reduce((o, i) => {
    console.log("o", o);
    console.log("i", i);
    if (o) return o[i];
  }, options);

  // 简写
  // return key.split(".").reduce((o, i) => o && o[i], options);
}

$translate("greetings.hello");

输出:

img

参考:

  1. 编写一个插件

  2. Array.prototype.reduce()