品牌语调定义了你的产品如何表达——包括语气、正式程度和风格——并为每个目标语言区域提供一段文本。它由组织统一拥有:这是一个具名容器,为其覆盖的每个语言区域承载一个变体,通过附加到本地化引擎来生效。
一个语调,覆盖多个语言区域
过去,品牌语调只是某个单一语言区域的一段文本,归属于某个引擎。现在,它变成了一个语调、按语言区域承载多段文本。原先那些按语言区域分别携带语调的引擎,如今都整合进一个统一语调,并为每个语言区域保留一个变体——每个语言区域和每段文本都原封不动,位置不变。
工作原理#
| 对象 | 字段 |
|---|---|
| 品牌语调 | 名称、描述。按目标语言区域保存文本。 |
| 变体 | 目标语言区域(或 *)和语调文本。 |
当引擎处理某个目标语言区域的请求时,会在所有已附加的语调中解析出唯一的最佳匹配变体,并将该文本放入 LLM 提示中——从而影响用词、句式和语域。
每次请求只会应用一段品牌语调文本。规则和术语表条目可以叠加;品牌语调不能叠加。
| 字段 | 说明 |
|---|---|
| 目标语言区域 | 这段文本适用的语言区域(例如 de、fr-CA、ja),或使用 * 表示适用于任意语言区域 |
| 语气文本 | 用自由形式的说明描述该语言区域的语气、正式程度和风格 |
每个引擎的每个语言区域只对应一个语调#
引擎针对某个语言区域只会读取一个品牌语调,以下三道保护机制会确保这一点:
| 操作尝试 | 结果 |
|---|---|
附加两个都包含 de 文本的语调 | 拒绝(400),并指出发生重叠的语言区域 |
当同一引擎上的另一个语调已覆盖 de 时,向某个语调添加一段 de 文本 | 拒绝(409) |
向同一个语调添加第二段 de 文本 | 拒绝(409)- 一个语调在每个语言区域只能包含一段文本 |
* 变体会作为所有没有专属文本的语言区域的默认值。特定语言区域的文本始终优先于它,区域解析也照常生效:de-DE 文本可以响应不带区域的 de 请求。参见 语言区域解析。
品牌语调由组织统一拥有#
| 操作 | 效果 |
|---|---|
| 创建品牌语调 | 它存在于组织层级,在附加之前不会应用到任何地方 |
| 将其附加到某个引擎 | 其中每个变体都会应用到该引擎中匹配的语言区域 |
| 将其附加到多个引擎 | 同一个语调会统一管理所有这些引擎 - 修改一次,所有引擎都会随之更新 |
| 将多个语调附加到同一个引擎 | 允许,前提是它们之间没有两个覆盖同一个语言区域 |
| 将其从引擎上移除 | 引擎会停止应用它。该语调及其变体会保留下来。 |
| 删除品牌语调 | 只要仍有引擎在应用它,就会被拒绝 - 请先移除。删除时会连同其变体一并删除。 |
| 删除引擎 | 品牌语调会继续保留。它们属于组织,而不属于引擎。 |
你可以在组织侧边栏的 Brand voices 下管理语调——列表会显示每个语调覆盖的语言区域数量,以及有多少引擎正在应用它;每个语调的详情页会列出各语言区域对应的文本。引擎的 Brand Voice 选项卡则会按语言区域逐行显示,并按整个语调进行移除。
编写品牌语调文本#
语调文本采用自由形式的自然语言。写的时候,可以把它当成是在向一位从未接触过你产品的译者做说明。
有效的品牌语气通常包括:
- 正式程度——例如德语中的正式 "Sie" 与非正式 "du",法语中的 "vous" 与 "tu"
- 语气——专业、对话式、活泼、技术导向
- 受众——开发者、企业采购方、消费者、内部团队
- 规范——如何处理数字、日期、货币或产品专有术语
示例#
以面向开发者受众的德语语言区域为例:
Use informal "du" address. Keep a direct, technical tone - similar
to how Stripe or Vercel write their German documentation. Prefer
short sentences. Use active voice. When a German equivalent exists
for a technical term, use it (e.g., "Bereitstellung" for deployment),
but keep widely-adopted English terms as-is (e.g., API, CLI, Token).容器的 name 和 description 是给人看的——它们用于在组织列表中识别语调,并说明它的用途。真正传递给模型的,只有变体文本。
在 API 中使用品牌语气#
当你调用 localize endpoint 时,品牌语调会自动生效。引擎会将请求中的 targetLocale 与所有已附加语调的变体进行匹配,并把最佳匹配放入提示中。无需额外参数。
{
"sourceLocale": "en",
"targetLocale": "de",
"data": {
"greeting": "Hey there! Ready to ship?",
"cta": "Get started"
}
}有了上面的德语文本后,引擎生成的会是更偏非正式、技术导向的翻译,而不是通用的正式输出。
| 调用 | 用途 |
|---|---|
POST /brand-voices | 为组织创建一个语调 |
GET /organizations/:id/brand-voices | 列出组织中的所有语调,并显示语言区域数和引擎数 |
GET /brand-voices/:id/variations | 列出某个语调按语言区域划分的文本 |
POST /brand-voice-variations with brandVoiceId | 为某个语言区域添加文本 |
PUT /brand-voice-variations/:id | 修改一段文本,或将其移动到另一个语言区域 |
PUT /engines/:id/brand-voices | 替换某个引擎应用的语调集合 |
DELETE /engines/:id/brand-voices/:brandVoiceId | 停止将某个语调应用到引擎上 |
GET /engines/:id/brand-voice-variations | 列出某个引擎当前应用的所有语言区域文本 |
POST /brand-voices 仍然接受同时传入 targetLocale 和 text,并为该语调初始化第一个变体;而 ownerEngineId 仍会把内容添加到引擎当前已应用的语调中——如果还没有语调,则会先创建并应用一个。
访问权限#
org:brandvoice:read 和 org:brandvoice:edit 用于管理语调及其变体;要将语调附加到引擎,还需要该引擎上的 engine:edit 权限。按语调授予权限后,某人可以只对单个语调拥有读取和编辑权限,而不必拥有组织内所有语调的权限。参见 角色与权限。
通过 MCP 管理品牌语气#
如果你使用 Lingo.dev MCP server,AI 编程助手就可以直接通过对话创建和更新品牌语气:
"Create a brand voice called Product voice and apply it to the
docs engine.""Set its German text to informal du, technical tone, short
sentences, active voice."