- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
vue2异步加载之前说过,vue3还是之前的方法,只是把 i18n.setLocaleMessage改为i18n.global.setLocaleMessage 。
但是本文还是详细说一遍:
主要还是缩小提代码包,没有按需加载前,语言包内容太多 。
好几屏幕全部是,虽然从webpack-analysis 看图里面占比可以忽略不计 。
一次加载所有翻译文件是过度和不必要的.
因为可能一直用中文,那么就不会用到英文的数据,就没必要去加载。只在请求的时候去加载它 。
import { createI18n } from 'vue-i18n'; import dayjs from 'dayjs'; import 'dayjs/locale/zh-cn'; import cookies from '@/utils/cookies'; import chineseJson from '../lang/zh-cn.json'; import englishJson from '../lang/en.json'; //****n const currentLang = cookies.get('blueking_language') || 'zh-cn'; if (currentLang === 'en') { dayjs.locale('en'); } else { dayjs.locale('zh-cn'); } const i18n = createI18n({ locale: currentLang, fallbackLocale: 'zh-cn', // 设置备用语言 silentFallbackWarn: true, silentTranslationWarn: true, globalInjection: true, allowComposition: true, messages: { en: { ...englishJson }, 'zh-cn': { ...chineseJson }, //****n }, }); export default i18n;
这个文件n多,堆叠起来体积也不少 。
import { createI18n } from 'vue-i18n'; import dayjs from 'dayjs'; import 'dayjs/locale/zh-cn'; import cookies from '@/utils/cookies'; // import chineseJson from '../lang/zh-cn.json'; // import englishJson from '../lang/en.json'; export type LangType = 'zh-cn'|'en'; const currentLang: LangType = cookies.get('blueking_language') as LangType || 'zh-cn'; // 初始化加载fallbackLocale 语言包,但是图表平台首先加载框架,无需放到框架里面去加载 /* const messages = { // en: { ...englishJson }, 'zh-cn': { ...chineseJson }, };*/ const i18n = createI18n({ locale: currentLang, fallbackLocale: 'zh-cn', // 设置备用语言 silentFallbackWarn: true, silentTranslationWarn: true, globalInjection: true, allowComposition: true, // messages, }); export function changLang(langs: LangType) { if (currentLang === 'en') { dayjs.locale('en'); } else { dayjs.locale('zh-cn'); } cookies.set('blueking_language', langs); loadLanguageAsync(langs); // window.location.reload(); } export function setI18nLanguage(lang: LangType) { i18n.global.locale = lang; return lang; } export function loadLanguageAsync(lang: LangType) { return import(/* webpackChunkName: "lang-request" */`../lang/${lang}.json`).then((langfile) => { // 动态加载对应的语言包 i18n.global.setLocaleMessage(lang, langfile); return setI18nLanguage(lang); // 返回并且设置 }); } changLang(currentLang); export default i18n;
这样就可以了 。
由于是异步加载,比如初始化只加载 fallbackLocale ,代码中注释的部分 。
vue3使用vue-i18n 9.x ,相关方法在i18n.global.xxx 。
但是这个加载包还是有些打,需要进一步拆分 。
这个优化有很多措施 。
之前的语言包全部是在一个json文件里面。第一个,json无法tree-shake 树摇 掉不用代码.
如果是ts,首先第一个按页面、功能 分成一个个 对象。虽然不用tree-shake.
但是可以通过组合得到不同的js.
然后在路由钩子里面,按需注入。loadLanguageAsync 。
。
。
。
。
参考文章:
vueI18n 多语言文件按需加载: https://blog.csdn.net/yujin0213/article/details/119137798 。
vue 多语言 vue-i18n 按需加载,异步调用 https://www.cnblogs.com/chenyi4/p/12409074.html 。
十分钟入门前端最佳的语言国际化方案 https://zhuanlan.zhihu.com/p/144717545 。
。
转载 本站 文章《 vue2升级vue3:vue-i18n国际化异步按需加载 》, 请注明出处: https://www.zhoulujun.cn/html/webfront/ECMAScript/vue3/8930.html 。
最后此篇关于vue2升级vue3:vue-i18n国际化异步按需加载的文章就讲到这里了,如果你想了解更多关于vue2升级vue3:vue-i18n国际化异步按需加载的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有一个 Java 字符串,但在处理时遇到了问题。我有一个字符串 s,它的值为丞(我随机选择的一个汉字,我不会说中文)。如果我打电话 String t = new String(s.getBytes(
在Qt中,所有的输入部件和文本绘制方式对Qt支持的所有语言都提供了内置的支持。Qt内置的字体引擎可以在同一时间正确而且精细地绘制不同的文本,这些文本可以包含来自众多不同书写系统的字符。如果想了解更多的
如何实现字段标签、帮助文本等的国际化支持。字段的标准乘法似乎不起作用例如文档中给出的用于创建联系表单的示例。我尝试为其他语言添加额外的字段(文档中描述的第一种方法) from django.db
是否有可能当我在操作类中使用“getText(”keyName”); 时,我可以指定仅从 ENGLISH 资源包中选择值。因为我只想将此值用于日志记录目的。 任何想法我怎么能做到这一点? BR 标准委
我有一些关于 GWT 的国际化解决方法的问题。 1) 处理直接写入 ui.xml 文件的静态文本的最佳方式是什么? 目前,我正在使用 Messages-Interface 来翻译 Java 生成的文本
我在 Symfony 2 中遇到了一个奇怪的翻译问题。 这是我的config.yml imports: - { resource: parameters.yml } - { resou
对于我的大部分应用程序,我可以使用 https://developers.google.com/web-toolkit/doc/latest/DevGuideI18n 中列出的推荐国际化技术。 (主要
我使用 Android Studio 创建了一个新的 Flutter 项目。我正在使用null-safety,并且正在物理设备上运行应用程序,但代码生成无法正常工作,没有flutter_gen.dar
这里是菜鸟。 我正在尝试对基于命令行的程序实现国际化。以下是 java 国际化路径中可用的内容。 import java.util.*; public class I18NSample { s
我使用 Android Studio 创建了一个新的 Flutter 项目。我正在使用null-safety,并且正在物理设备上运行应用程序,但代码生成无法正常工作,没有flutter_gen.dar
我正在开发一个需要多语言的应用程序。 我正在尝试关注 this国际化教程。但是,当我尝试“使用基本国际化”时, View 中没有列出我的 Storyboard。 我正在使用 XCode 4.6.3 我
我住在印度(有超过20种语言)我正在尝试在网站中实现java国际化。 但是在 Locale.getAvailableLocales() 中,本地语言不可用。我的情况是否可以实现国际化? 如果可能的话字
我有以下 SDN 4 实体: 决策、特征和值: @NodeEntity public class Value { private final static String SET_FOR = "
关于MySql,是否有支持所有或绝大多数语言的字符集? 最佳答案 统一码。它有几种编码:UTF-8、UTF-16 和 UTF-32。 来自 http://en.wikipedia.org/wiki/U
我目前正在使用 Vuepress。但是我想要在我的 Vuepress 站点中使用多种语言。经过 3 天的挣扎,我决定把我的问题放在这里。 (是的,我查看了 Vuepress 文档:https://vu
我需要返回一个 strftime() 调用,该调用使用与我本地机器/操作系统上设置的语言不同的语言。是否可以选择返回语言? 最佳答案 对于可靠的 i18n/L10N,可由必须在同一运行中提供不同本地化
我有一些按钮,按下它们后我想播放一些音频。按钮的名称是音频文件的名称 private func playAudio(title : String){ audioPlayer = AVAudio
如何更改 HTML5 的消息(或者它会根据浏览器的语言自动更改?) 例如: E-mail: 当我在 Opera 运行此代码(来自 W3schools)
我发现很多关于 url schemes 的话题,最常见的是: www.mysite.com/fr/products www.mysite.com/en/products www.mysite.com/
在 Android WebView 中处理国际化/本地化的最佳方式是什么。理想情况下,我想访问以下位置的所有字符串资源: res/values/strings.xmlres/values-de/str
我是一名优秀的程序员,十分优秀!