迁移指南
遵循本指南从 v9.x 升级到 v10.x
升级到 Vue I18n v11
我们已从 Vue I18n v10 升级到 v11,此主要版本升级废弃了 Legacy API 模式和自定义 v-t 指令,并从 Legacy API 模式中删除了 tc() 和 $tc()。
请在此处查看详细说明重大更改的文档:here。
配置选项
以下 配置选项 已更改、废弃或删除。
| 状态 | 选项 | 说明 |
|---|---|---|
| promoted | experimental.hmr | 默认启用并重命名为 hmr |
| promoted | experimental.switchLocalePathLinkSSR | 默认启用并已移除禁用选项。 |
| promoted | experimental.autoImportTranslationFunctions | 默认启用并重命名为 autoDeclare |
| changed | restructureDir | 此项无法再禁用。<br><br>我们建议将其留空以使用默认值 'i18n'。 |
| deprecated | types | 根据 Vue I18n v12,v11 中仅支持 'composition' 类型。 |
| deprecated | baseUrl | 将只允许字符串值,并且在 v11 中不再支持函数配置。<br><br>对于复杂的设置,请使用运行时配置或依赖多域名语言环境来设置基本 URL。 |
| deprecated | routesNameSeparator | 此项被标记为内部,最终用户的用例尚不明确。 |
| deprecated | defaultLocaleRouteNameSuffix | 此项被标记为内部,最终用户的用例尚不明确。 |
| removed | lazy | 现在所有语言环境文件都启用了语言环境消息的懒加载。 |
| removed | bundle.optimizeTranslationDirective | 此功能已被禁用并完全移除,有关此更改的上下文,请参阅 此问题的讨论。 |
| removed | experimental.generatedLocaleFilePathFormat | 为此模块配置的文件路径(例如语言环境文件、vue-i18n 配置)现在已从构建中完全移除,使此选项变得多余。 |
I18n 函数
以下可组合项和 I18n 函数 已更改、废弃或删除。
| 状态 | 函数 | 说明 |
|---|---|---|
| changed | useLocaleHead() | 选项参数上的 key 属性已删除,无法再配置,这对于可预测和一致的本地化头部标签管理是必需的。 |
| removed | onLanguageSwitched() | 请改用 'i18n:localeSwitched' 钩子。<br><br>此函数实际上是调用钩子而不是订阅它,导致不可预测的行为。 |
| removed | onBeforeLanguageSwitch() | 请改用 'i18n:beforeLocaleSwitch' 钩子。<br><br>此函数实际上是调用钩子而不是订阅它,导致不可预测的行为。 |
上下文函数
以下 上下文函数 已更改、废弃或删除。
| 状态 | 函数 | 说明 |
|---|---|---|
| changed | $localeHead() | 选项参数上的 key 属性已删除,无法再配置,这对于可预测和一致的本地化头部标签管理是必需的。 |
| deprecated | $localeHead() | 请改用 useLocaleHead() 可组合项。<br><br>由于用例有限而废弃,useLocaleHead() 可组合项提供相同的功能,并且更易于与 useHead() 结合使用。 |
| deprecated | $getRouteBaseName() | 请改用 $routeBaseName()。<br><br>已废弃,取而代之的是新名称下的相同函数:$routeBaseName(),以与其他上下文函数及其可组合对应项保持一致。 |
| removed | $resolveRoute() | 请改用 $localeRoute() |
| removed | $localeLocation() | 请改用 $localeRoute() |
运行时配置
运行时配置中的几个选项仅用于将构建时配置传输到运行时,在运行时更改这些选项可能会导致问题。
现在我们将它们视为编译器常量,而不是在运行时配置中设置它们,这样我们就可以从项目构建中删除任何未使用的逻辑。
以下选项已从运行时配置中删除:
| 已删除的运行时配置选项 |
|---|
lazy |
strategy |
trailingSlash |
differentDomains |
defaultDirection |
multiDomainLocales |
routeNameSeparator |
defaultLocaleRouteNameSuffix |
生成的选项
项目中生成的选项文件仅供此模块在运行时内部使用,不应使用,将来可能会删除更多属性。
未来的这些内部选项的更改将不会在迁移指南中记录。如果您有这些选项的用例,请提出问题描述您的用例,以便我们评估是否可以以不同的方式支持它。
生成的选项文件已重命名:
| 旧名称 | 新名称 |
|---|---|
#build/i18n-options.mjs | #build/i18n-options.mjs |
#internal/i18n/options.mjs | #internal/i18n-options.mjs |
以下导出已从生成的选项中删除:
| 已删除的导出 |
|---|
isSSG |
hasPages |
parallelPlugin |
nuxtI18nOptions |
DEFAULT_COOKIE_KEY |
DYNAMIC_PARAMS_KEY |
NUXT_I18N_MODULE_ID |
SWITCH_LOCALE_PATH_LINK_IDENTIFIER |
删除原因:
- 它们不再被模块使用,并且可能在最终构建中暴露易受攻击的信息
- 某些选项现在用作静态值,以便更好地进行摇树优化,从而生成更小的项目构建。
旧版迁移
v7 和 v8 的迁移指南可在 旧版文档 中找到。