配置
将自动抽取的 po 文件翻译完成,并编译为 json 文件后,就可以在 main.ts
/main.js
中配置 gettext 插件了。
import { createGettext } from "vue3-gettext";
import translations from "./language/translations.json";
const gettext = createGettext({
availableLanguages: {
en: "English",
de: "Deutsch",
},
defaultLanguage: "en",
translations: translations,
});
const app = createApp(App);
app.use(gettext);
具体的选项配置可查看 GetTextOptions
这个类型,下面是各配置的默认值:
{
// 支持的语言
availableLanguages: { en: "English" },
// 默认语言
defaultLanguage: "en",
// 不打印警告信息的语言
mutedLanguages: [],
// 默认会打印警告信息
silent: false,
// 翻译后的 json 资源
translations: {},
// 默认会在将 $gettext 等函数注册到全局
setGlobalProperties: true,
// 注册这些属性到全局
globalProperties: {
language: ['$language'], // gettext 实例
gettext: ['$gettext'], // 改成 ['$gettext', '__'] 这样支持同时使用 $gettext, __ 两种方式
ngettext: ['$ngettext'],// ['$ngettext','_n'] 同理支持 $ngettext 与 _n 两种方式
pgettext: ['$pgettext'],// ['$pgettext', '_x'] 这些 _x, _nx 是 WordPress 风格
npgettext: ['$npgettext'],// ['$npgettext', '_nx'] 带上下文的复数翻译
interpolate: ['$gettextInterpolate'], // 已废弃: gettext 内部的插值函数
},
provideDirective: true,
provideComponent: true,
}
踩坑陷阱
在组件外使用 gettext 函数
如果你需要在纯 typescript/javascript 文件中使用 gettext, 你可以将上述配置代码移到单独一个文件中配置并导出 gettext.
gettext.ts
:
export default createGettext({
...
});
然后在需要的地方导入并使用。
main.ts
:
import gettext from "./gettext";
...
const app = createApp(App);
app.use(gettext);
other.ts
:
import gettext from "./gettext";
const { $gettext } = gettext;
const myTest = $gettext("My translation message");