# vue: 翻译字符串
URL: https://generaltranslation.com/zh/docs/vue/guides/translating-strings.mdx
---
title: 翻译字符串
description: 如何使用 useGT 和 useMessages 翻译 Vue 标签、属性和共享字符串。
related:
links:
- /docs/vue/guides/translating-content
- /docs/vue/guides/developing-spa-translations
- /docs/vue/guides/formatting-variables
- /docs/vue/guides/configuring
---
对于无法作为模板内容表达的字符串,例如占位符、无障碍标签和传递给其他组件的值,请使用 [`useGT()`](/docs/vue/reference/composables/use-gt)。如果静态消息在一个模块中声明、在另一个模块中渲染,请结合使用 [`msg()`](/docs/vue/reference/functions/msg) 和 [`useMessages()`](/docs/vue/reference/composables/use-messages)。
## 使用 `useGT` 进行翻译 [#use-gt]
在组件设置期间调用 [`useGT()`](/docs/vue/reference/composables/use-gt),然后在模板中调用其返回的函数:
```vue
```
使用字符串字面量,以便 CLI 能够提取。找不到目录条目时,将返回源字符串。
唯一支持的选项是静态 `$context`:
```vue
```
花括号会被视为普通文本。[`useGT()`](/docs/vue/reference/composables/use-gt) 不处理 ICU 语法、不对变量进行插值,也不接受 React 字符串选项,如 `$id`、`$maxChars` 和 `$format`。
## 保持翻译结果的响应性 [#reactivity]
[`useGT()`](/docs/vue/reference/composables/use-gt) 返回的函数会在调用时读取当前活动的目录。当需要在区域设置或目录变更后自动更新结果时,请在模板、计算属性或响应式副作用中调用它:
```vue
{{ pageTitle }}
```
`const pageTitle = gt('Account settings')` 会在设置期间翻译一次并存储翻译快照。当 [`createGT()`](/docs/vue/reference/functions/create-gt) 插件切换区域设置时,它不会再次执行。
## 注册共享消息 [#messages]
使用 [`msg()`](/docs/vue/reference/functions/msg) 在共享模块中注册静态字符串。它会将内容标记为待提取,但不会执行翻译查找。
```ts title="src/messages.ts"
import { msg } from 'gt-vue';
export const statusMessages = {
active: msg('Active', { $context: 'account status' }),
paused: msg('Paused', { $context: 'account status' }),
};
```
在渲染所选消息的位置,使用 [`useMessages()`](/docs/vue/reference/composables/use-messages) 解析该消息:
```vue title="src/components/StatusBadge.vue"
{{ label }}
```
不传入选项时,[`msg()`](/docs/vue/reference/functions/msg) 会原样返回原始字符串。传入 `$context` 时,它会添加供 [`useMessages()`](/docs/vue/reference/composables/use-messages) 读取的不透明查找元数据。请勿解析这种编码表示形式,也不要假定其存储方式。
## 使用运行时值翻译内容 [#variables]
普通字符串查找不会插值运行时数据。请将完整短语放在 [``](/docs/vue/reference/components/t) 中,并用 [``](/docs/vue/reference/components/var) 标记变化的值:
```vue
Welcome back, {{ accountName }}!
```
当值还需要进行符合区域设置的格式化时,请使用 [``](/docs/vue/reference/components/num)、[``](/docs/vue/reference/components/currency) 和 [``](/docs/vue/reference/components/datetime)。
仅在浏览器中运行且需要在模块求值期间进行静态查找的 SPA,可在等待 [`initializeGTSPA()`](/docs/vue/reference/functions/initialize-gt-spa) 完成后使用 [`t()`](/docs/vue/reference/functions/t)。请遵循[使用 SPA 翻译进行开发](/docs/vue/guides/developing-spa-translations),以保持所需的导入顺序。
## Next steps
- /docs/vue/guides/translating-content
- /docs/vue/guides/developing-spa-translations
- /docs/vue/guides/formatting-variables
- /docs/vue/guides/configuring