当前区域设置:{{ locale }}
``` 在普通脚本表达式中读取 `locale.value`。读取该 ref 的组件、计算值和渲染效果会在响应式区域设置切换完成后更新。 ## 构建语言切换器 [#switcher] [`useSetLocale()`](/docs/vue/reference/composables/use-set-locale) 返回一个异步区域设置函数。请等待其完成,以便界面能够显示加载中的状态或处理失败情况: ```vue title="src/components/LocaleSwitcher.vue" ``` 使用 [`createGT()`](/docs/vue/reference/functions/create-gt) 插件时,区域设置函数会先加载未缓存的目录,再更改区域设置。加载成功的结果会被缓存。如果多个请求重叠,只有最新的请求会更改当前区域设置。 空目录也算加载成功:区域设置会更改,并将源内容作为后备内容渲染。加载器被拒绝时,当前区域设置及其 cookie 保持不变。 ## 持久化区域设置 [#persistence] 在浏览器中,当前区域设置会存储在名为 `generaltranslation.locale`、适用于整个路径范围的会话 cookie 中。当 [`createGT()`](/docs/vue/reference/functions/create-gt) 未指定 `locale` 时,该 cookie 的优先级高于 `defaultLocale`。 如果应用需要与路由器或服务器端共用其他 cookie,请设置 `localeCookieName`: ```ts createGT({ defaultLocale: 'en', localeCookieName: 'my-app.locale', loadTranslations, }); ``` 请使用 [`useSetLocale()`](/docs/vue/reference/composables/use-set-locale),不要直接写入 cookie。浏览器不会在 cookie 变更时触发响应式事件,因此外部写入本身不会触发 Vue 重新渲染。 ## 选择响应式或基于重新加载的切换方式 [#runtime-mode] 初始化模式决定 cookie 变更后的行为: * [`createGT()`](/docs/vue/reference/functions/create-gt) 会加载 目录 并更新响应式使用方,无需重新加载页面。 * [`initializeGTSPA()`](/docs/vue/reference/functions/initialize-gt-spa) 会写入 cookie 并重新加载页面,以便预加载新的区域设置后重新执行模块级 [`t()`](/docs/vue/reference/functions/t) 调用。 SPA 初始化器接受 `locales`;如果保存的或请求的区域设置不受支持,则会回退到 `defaultLocale`。如果模块级翻译需要这种行为,请参阅[使用 SPA 翻译进行开发](/docs/vue/guides/developing-spa-translations)。 对于服务器端渲染,请在服务器端解析请求区域设置,并将其显式传递给 [`createGT()`](/docs/vue/reference/functions/create-gt)。该显式值会覆盖过期的浏览器 cookie,使服务器端渲染和 hydration 使用一致的区域设置。 ## Next steps - /docs/vue/guides/configuring - /docs/vue/guides/storing-translations - /docs/vue/guides/developing-spa-translations - /docs/vue/guides/translating-content