hello~
我是ons同步插件的开发者
我的插件开始内部测试后, 遇到有x上的网友不会中文, 我琢磨obsidian不就是魔改的浏览器吗 , 结果各种方法尝试了一遍, 发现获取不到当前设备的语言 … 只好就此搁置
直到!! 官方人员给我指了一个仓库, 是官方内部人员开发的插件, 我发现他们内部实现i18n是通过Moment.js的locale函数
我一直以为是会有一个内部api, 用于管理语言, 之前也是按照这个方向查找测试, 结果方向都错了, 人家用的时间处理库的函数
具体使用
// 获取本地语言, 获取不到就默认英语
const locale = (window.moment) ? window.moment.locale() : "en";
// 导入英文语言字典
import en from "./en";
// 导入中文语言字典
import zh from "./zh";
// 声明语言列表
const localeMap: { [k: string]: Partial<typeof en> } = {
en,
"zh-cn": zh,
};
// 获取当前用户语言字典
const userLocale = localeMap[locale];
// 输入标识, 输出本地化语言文本
export default function t(str: keyof typeof en, ...inserts: string[]): string {
let localeStr = (userLocale && userLocale[str]) ?? en[str];
for (let i = 0; i < inserts.length; i++) {
localeStr = localeStr.replace(`%${i + 1}`, inserts[i]);
}
return localeStr;
}