# gt-next: General Translation Next.js SDK: getMessages
URL: https://generaltranslation.com/zh/docs/next/api/strings/get-messages.mdx
---
title: getMessages
description: 用于字符串翻译的 getMessages() 函数 API 参考
---
## 概述
`getMessages` 函数是一个异步函数,用于在构建阶段翻译由 `msg` 编码的字符串。
```jsx
const m = await getMessages();
{ m(encodedString) }
;
```
**构建时翻译:**
`getMessages` 的翻译在构建时进行,也就是在应用部署之前。
你可以传入由 `msg` 编码的字符串,它们会被翻译成用户的首选语言。
## 参考
### 参数
无
### 返回值
一个回调函数 `m` 的 Promise;该函数会将 `msg` 提供的已编码内容转换为译文。
```jsx
Promise<(encodedContent: string, options?: Record) => string>
```
| Name | Type | Description |
| ---------------- | --------------------- | ---------------------- |
| `encodedContent` | `string` | 由 `msg` 生成的待翻译编码的字符串内容。 |
| `options?` | `Record` | 用于向编码的字符串传入变量的可选参数。 |
***
## 行为
### 生产环境
在 CD 过程中,`msg` 函数中的任何内容都会在应用部署前完成翻译。
这可确保所有区域设置都有较快的加载速度,但只能翻译在构建时已知的内容。
生成后,翻译内容会根据你的配置以以下两种方式之一存储: (1) 存储在 CDN 中,或 (2) 存储在应用的构建产物中。
随后,这些翻译内容会提供给用户。
如果找不到翻译,则会回退到原始内容。
请务必遵循[此处的部署指南](/docs/next/tutorials/quickdeploy)。
### 开发
在开发期间,`m` 函数会按需翻译内容。
这有助于快速原型设计,方便你预览应用在不同语言下的显示效果。
请记得在环境中添加 Dev API 密钥以启用此行为。
在开发环境中按需翻译时,你会看到一定延迟。
除非内容被明确配置为按需翻译,否则生产构建中不会出现这种情况,
即使用 [`tx`](/docs/next/api/strings/tx) 或 [``](/docs/next/api/components/tx)。
***
## 示例
### 基本用法
你可以使用 `getMessages` 来翻译由 `msg` 编码的字符串。
```javascript copy
import { msg, getMessages } from 'gt-next/server';
const encodedGreeting = msg('Hello, Alice!');
export default async function TranslateGreeting() {
const m = await getMessages();
return (
{m(encodedGreeting)}
);
}
```
注意:"Alice" 会被翻译成用户偏好的语言。
### 使用变量 [#variables]
你可以为编码的字符串传入变量。
```javascript copy
import { msg, getMessages } from 'gt-next/server';
const encodedGreeting = msg('Hello, {name}!');
export default async function TranslateGreeting() {
const m = await getMessages();
return (
{m(encodedGreeting, { name: 'Bob' })} {/* 这将显示 "Hello, Bob!" */}
);
}
```
### `msg` 变量会覆盖 `m` 变量
当你同时向 `msg` 和 `m` 传入变量时,传给 `msg` 的变量会覆盖传给 `m` 的变量。
```javascript copy
import { msg, getMessages } from 'gt-next/server';
const encodedGreeting = msg('Hello, {name}!', { name: 'Alice' });
export default async function TranslateGreeting() {
const m = await getMessages();
return (
{m(encodedGreeting, { name: 'Bob' })}
);
}
```
注意:这里会显示 "Hello, Alice!"——变量不会在渲染时被覆盖。
### 使用 ICU 消息格式
`gt-next` 支持 ICU 消息格式,因此你也可以对变量进行格式化。
```javascript copy
import { msg, getMessages } from 'gt-next/server';
const encodedMessage = msg('There are {count, plural, =0 {no items} =1 {one item} other {{count} items}} in the cart', { count: 10 });
export default async function TranslateGreeting() {
const m = await getMessages();
return (
{m(encodedMessage)}
);
}
```
ICU 消息格式是一种功能强大的变量格式化方式。
更多信息请参阅 [ICU 消息格式文档](https://unicode-org.github.io/icu/userguide/format_parse/messages/)。
***
## 说明
* `getMessages` 函数是一个服务端函数,用于翻译由 `msg` 编码的字符串。
* 使用 `getMessages` 翻译字符串会在 runtime 之前完成,即在构建过程中 (开发环境除外) 。
## 后续步骤
* 如需了解如何在构建时从编码的字符串进行客户端字符串翻译,请参阅 [`useMessages`](/docs/next/api/strings/use-messages)。
* 如需了解如何为翻译对字符串进行编码,请参阅 [`msg`](/docs/next/api/strings/msg)。
* 如需进行 runtime 翻译,请参阅 [`tx`](/docs/next/api/strings/tx) 和 [``](/docs/next/api/components/tx)。