Mau*_*out 2 internationalization composition vuejs3
我对 Vue3 或客户端开发总体来说有点陌生,我的任务是从 i18n 读取或更改全局区域设置。但根据文档,我应该能够在我的组件中使用 $i18n 变量,但它告诉我它是未定义的。
这是我的 i18n 配置:
从“vue-i18n”导入{createI18n};
从“./locales/en.json”导入 en;
从“./locales/nl.json”导入 nl;
常量 i18n = createI18n({
区域设置:“nl”,
允许成分:真,
warnHtmlInMessage: "关闭",
后备区域设置:“nl”,
消息:{
恩,
荷兰,
},
});
导出默认i18n;
我的 main.ts 正在使用它
从“vue”导入{createApp};
从“axios”导入 axios;
从“@/App.vue”导入应用程序;
从“@/router”导入路由器;
从“@/plugin/appSettings”导入 appSettings, { type iAppSettings };
从“@/plugin/api”导入 api;
从“@/i18n”导入 i18n;
从“@/stores”导入pinia;
const startUp = async () => {
尝试 {
让设置=空;
const 结果 = 等待 axios.get("config/config.json");
设置=结果.数据;
console.debug("加载的配置:", 设置);
const app = createApp(应用程序);
应用程序使用(pinia);
应用程序。使用(路由器);
app.use(appSettings, 设置);
app.use(api, 设置?.apiUrl);
应用程序.use(i18n);
app.mount("#app");
// 通过 `global` 属性更改语言环境,这应该根据文档工作,但事实并非如此。
i18n.global.locale = "en";
//也不起作用
i18n.global.locale.value = "en";
} 捕获 (e) {
console.error("启动失败", e);
}
};
启动()
。然后(
() => {
console.debug("应用程序已安装");
},
(e) => {
console.error("启动失败", e);
}
)
.catch((e) => {
console.error("启动失败", e);
});
根据文档,我可以在我的 Composition API 组件中使用 $i18n 变量。
从“@/plugin/appSettings”导入{ useAppSettings };
从“vue”导入{ref};
从“vue-i18n”导入{useI18n};
const props = DefineProps({
年:{ 类型:数字,必需:true },
currentYear: { 类型:数字,必需:true },
});
const appSettings = useAppSettings();
const { t } = useI18n();
常量年份 = ref(11);
year.value = props.year.toString();
if (props.currentYear > 2022) {
year.value += " - " + props.currentYear;
}
//对象可能在此未定义
这个.$i18n
//$i18n 未定义
$i18n
也在我的组件模板中尝试过这个,但遗憾的是也不起作用,就像这里提到的https://vue-i18n.intlify.dev/guide/essentials/scope.html#global-scope-1
我自己解决了,我需要删除括号。不确定这些括号的作用,如果有人可以向我解释或者有一个好的资源让我可以阅读这个问题,我将不胜感激。
import { useI18n } from "vue-i18n";
const { t } = useI18n();
Run Code Online (Sandbox Code Playgroud)
import { useI18n } from "vue-i18n";
const t = useI18n();
t.locale.value = "en";
Run Code Online (Sandbox Code Playgroud)