Lzh on GitHub

迁移指南

遵循本指南从 v9.x 升级到 v10.x

升级到 Vue I18n v11

我们已从 Vue I18n v10 升级到 v11,此主要版本升级废弃了 Legacy API 模式和自定义 v-t 指令,并从 Legacy API 模式中删除了 tc()$tc()

请在此处查看详细说明重大更改的文档:here

配置选项

以下 配置选项 已更改、废弃或删除。

状态选项说明
promotedexperimental.hmr默认启用并重命名为 hmr
promotedexperimental.switchLocalePathLinkSSR默认启用并已移除禁用选项。
promotedexperimental.autoImportTranslationFunctions默认启用并重命名为 autoDeclare
changedrestructureDir此项无法再禁用。<br><br>我们建议将其留空以使用默认值 'i18n'
deprecatedtypes根据 Vue I18n v12,v11 中仅支持 'composition' 类型。
deprecatedbaseUrl将只允许字符串值,并且在 v11 中不再支持函数配置。<br><br>对于复杂的设置,请使用运行时配置或依赖多域名语言环境来设置基本 URL。
deprecatedroutesNameSeparator此项被标记为内部,最终用户的用例尚不明确。
deprecateddefaultLocaleRouteNameSuffix此项被标记为内部,最终用户的用例尚不明确。
removedlazy现在所有语言环境文件都启用了语言环境消息的懒加载。
removedbundle.optimizeTranslationDirective此功能已被禁用并完全移除,有关此更改的上下文,请参阅 此问题的讨论
removedexperimental.generatedLocaleFilePathFormat为此模块配置的文件路径(例如语言环境文件、vue-i18n 配置)现在已从构建中完全移除,使此选项变得多余。

I18n 函数

以下可组合项和 I18n 函数 已更改、废弃或删除。

状态函数说明
changeduseLocaleHead()选项参数上的 key 属性已删除,无法再配置,这对于可预测和一致的本地化头部标签管理是必需的。
removedonLanguageSwitched()请改用 'i18n:localeSwitched' 钩子。<br><br>此函数实际上是调用钩子而不是订阅它,导致不可预测的行为。
removedonBeforeLanguageSwitch()请改用 '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 的迁移指南可在 旧版文档 中找到。