

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用自定义术语自定义您的翻译
<a name="how-custom-terminology"></a>

在翻译请求中使用自定义术语，确保您的品牌名称、角色名称、型号名称和其他独特内容翻译成所需的结果。

您可以创建术语文件并将其上传到您的 Amazon Translate 账户。有关文件大小和术语文件数量的信息，请参阅[服务限额](what-is-limits.md#limits)。翻译文本时，您可以选择要使用的自定义术语文件。当 Amazon Translate 发现源文本和术语文件之间存在匹配项时，会使用术语文件中的翻译。

考虑以下示例：*Amazon Photos* provides free photo and video storage to Amazon Prime members. 在法语中，该名称不翻译：仍为 *Amazon Photos*。

当您在没有任何其他上下文的情况下使用 Amazon Translate 将 *Amazon Photos* 翻译成法语时，结果是 *Photos d'Amazon*，这不是您所需的翻译。

如果您为 *Amazon Photos* 一词添加自定义术语条目，指定法语翻译为 *Amazon Photos*，则 Amazon Translate 会使用自定义术语将该短语翻译成所需的结果。

Amazon Translate 不保证每次翻译都会使用目标术语。自定义术语使用翻译上下文中源术语和目标术语的含义来决定是否使用目标术语。有关更多信息，请参阅 [最佳实践](ct-best-practices.md)。

**Topics**
+ [创建自定义术语](creating-custom-terminology.md)
+ [使用自定义术语](using-ct.md)
+ [使用自定义术语示例 AWS SDK for Python (Boto)](examples-ct.md)
+ [加密术语](protect-terminology.md)
+ [最佳实践](ct-best-practices.md)

# 创建自定义术语
<a name="creating-custom-terminology"></a>

您可以通过创建术语文件来定义自定义术语。Amazon Translate 支持 CSV、TSV 或 TMX 文件格式。文件中的每个条目都包含每种目标语言的源术语和等效（已翻译）术语。

在创建术语文件后，您可以将文件上传到您的 Amazon Translate 账户。

**重要**  
自定义术语中的源文本*区分大小写*。在翻译过程中，Amazon Translate 会在输入文档中找到完全匹配的术语时使用自定义术语。

## 术语文件格式
<a name="creating-custom-terminology-examples"></a>

以下示例显示 CSV 格式的术语文件。

**CSV（逗号分隔值）**

```
en,fr,es
Amazon Photos,Amazon Photos,Amazon Photos
```

以下示例显示 TMX 格式的术语文件。TMX 文件使用翻译软件经常使用的 XML 格式。

**TMX（翻译记忆库交换）**

```
<?xml version="1.0" encoding="UTF-8"?>
 <tmx version="1.4">
  <header
     creationtool="XYZTool" creationtoolversion="0"
     datatype="PlainText" segtype="sentence"
     adminlang="en-us" srclang="en"
     o-tmf="test"/>
  <body>
    <tu>
      <tuv xml:lang="en">
        <seg>Amazon Photos</seg>
      </tuv>
      <tuv xml:lang="fr">
        <seg>Amazon Photos</seg>
      </tuv>
      <tuv xml:lang="es">
        <seg>Amazon Photos</seg>
      </tuv>
    </tu>   
  </body>
 </tmx>
```

## 方向性
<a name="creating-custom-terminology-directionality"></a>

上传自定义术语文件时，需要为自定义术语设置*方向性* 值。方向性表示术语文件指定一种源语言还是多种源语言。

对于方向性，设置为下列值之一：

**单向**  
术语文件包含一种源语言（列表中的第一种语言）。所有其他语言均为目标语言。  
例如，在 CSV 文件中，第一列包含源语言的文本，所有其他列包含目标语言的文本。

**多向**  
文件中的任何语言都可以是源语言或目标语言。例如，如果您的术语文件包含英语、法语和西班牙语文本，则可以将该文件用于翻译以下语言对的作业：  
+ 英语到法语
+ 英语到西班牙语
+ 法语到英语
+ 法语到西班牙语
+ 西班牙语到英语
+ 西班牙语到法语

相比之下，您需要为这六个翻译作业创建三个单向术语文件（每种源语言一个）。

# 使用自定义术语
<a name="using-ct"></a>

要在使用[TranslateText](https://docs.aws.amazon.com/translate/latest/APIReference/API_TranslateText.html)操作翻译文本时使用自定义术语，请包括可选`TerminologyNames`参数。

例如，如果您将以下名为 `Amazon_Family.csv` 的术语文件上传到您的账户：

```
     en,fr
     Amazon Family,Amazon Famille
```

您可以通过自定义术语使用以下 CLI 命令翻译文本。

**注意**  
此示例的格式适用于 Unix、Linux 和 macOS。对于 Windows，请将每行末尾的反斜杠 (\$1) Unix 行继续符替换为脱字号 (^)。

```
aws translate translate-text \
     --region region \
     --source-language-code "en" \
     --target-language-code "fr" \
     --terminology-names "Amazon_Family" \
     --text "Have you ever stored videos in Amazon Family?"
```

此操作会使用选定的自定义术语将文本翻译为“Avez-vous déjà fait des achats avec Amazon Famille?” 而非直接翻译为“Avez-vous déjà fait des achats avec Famille Amazon?”，显然后者并不是我们想要的翻译。

以下示例说明了如何在 Python 中使用相同的术语文件。

```
import boto3
     
translate = boto3.client(service_name='translate')
  
print("Translating 'Have you ever shopped with Amazon Family?' from English to French with the 'Amazon_Family' custom terminology...")
response = translate.translate_text(Text="Have you ever shopped with Amazon Family?", TerminologyNames=["Amazon_Family"], SourceLanguageCode="en", TargetLanguageCode="fr")
print("Translated text: " + response.get('TranslatedText'))
print("\n")
```

有关使用自定义术语进行 Amazon Translate 操作的更多信息，请参阅 [API 操作](https://docs.aws.amazon.com/translate/latest/APIReference/API_Operations.html)。

# 使用自定义术语示例 AWS SDK for Python (Boto)
<a name="examples-ct"></a>

以下示例说明如何在 Python 中使用自定义术语操作。要运行此示例，请通过安装 Python 软件开发工具包 AWS CLI。有关说明，请参阅 [安装和配置 AWS Command Line Interface (AWS CLI)](setting-up.md#setup-awscli)。

```
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import boto3
     
    translate = boto3.client(service_name='translate')
     
    # The terminology file 'my-first-terminology.csv' has the following contents:
    '''
    en,fr
    Amazon Family,Amazon Famille
    '''
     
    # Read the terminology from a local file
    with open('/tmp/my-first-terminology.csv', 'rb') as f:
        data = f.read()
     
    file_data = bytearray(data)
     
    print("Importing the terminology into Amazon Translate...")
    response = translate.import_terminology(Name='my-first-terminology', MergeStrategy='OVERWRITE', TerminologyData={"File": file_data, "Format": 'CSV'})
    print("Terminology imported: "),
    print(response.get('TerminologyProperties'))
    print("\n")
     
    print("Getting the imported terminology...")
    response = translate.get_terminology(Name='my-first-terminology', TerminologyDataFormat='CSV')
    print("Received terminology: "),
    print(response.get('TerminologyProperties'))
    print("The terminology data file can be downloaded here: " + response.get('TerminologyDataLocation').get('Location'))
    print("\n")
     
    print("Listing the first 10 terminologies for the account...")
    response = translate.list_terminologies(MaxResults=10)
    print("Received terminologies: "),
    print(response.get('TerminologyPropertiesList'))
    print("\n")
     
    print("Translating 'Amazon Family' from English to French with no terminology...")
    response = translate.translate_text(Text="Amazon Family", SourceLanguageCode="en", TargetLanguageCode="fr")
    print("Translated text: " + response.get('TranslatedText'))
    print("\n")
     
    print("Translating 'Amazon Family' from English to French with the 'my-first-terminology' terminology...")
    response = translate.translate_text(Text="Amazon Family", TerminologyNames=["my-first-terminology"], SourceLanguageCode="en", TargetLanguageCode="fr")
    print("Translated text: " + response.get('TranslatedText'))
    print("\n")
     
    # The terminology file 'my-updated-terminology.csv' has the following contents:
    '''
    en,fr
    Amazon Family,Amazon Famille
    Prime Video, Prime Video
    '''
     
    # Read the terminology from a local file
    with open('/tmp/my-updated-terminology.csv', 'rb') as f:
        data = f.read()
     
    file_data = bytearray(data)
     
    print("Updating the imported terminology in Amazon Translate...")
    response = translate.import_terminology(Name='my-first-terminology', MergeStrategy='OVERWRITE', TerminologyData={"File": file_data, "Format": 'CSV'})
    print("Terminology updated: "),
    print(response.get('TerminologyProperties'))
    print("\n")
     
    print("Translating 'Prime Video' from English to French with no terminology...")
    response = translate.translate_text(Text="Prime Video", SourceLanguageCode="en", TargetLanguageCode="fr")
    print("Translated text: " + response.get('TranslatedText'))
    print("\n")
     
    print("Translating 'Prime Video' from English to French with the 'my-first-terminology' terminology...")
    response = translate.translate_text(Text="Prime Video", TerminologyNames=["my-first-terminology"], SourceLanguageCode="en", TargetLanguageCode="fr")
    print("Translated text: " + response.get('TranslatedText'))
    print("\n")
     
    print("Cleaning up by deleting 'my-first-terminology'...")
    translate.delete_terminology(Name="my-first-terminology")
    print("Terminology deleted.")
```

# 加密术语
<a name="protect-terminology"></a>

Amazon Translate 致力于保护您的所有数据，您的自定义术语也不例外。每个自定义术语在创建时都会加密，因此只能由您访问。

有三个可用的加密选项：
+ 使用 AWS 加密。 AWS 加密是保护您的信息的默认选项。
+ 使用与您的账户关联的加密密钥。控制台中的一个菜单将为您提供可供使用的关联加密密钥选项。
+ 使用与您的账户不关联的加密密钥。控制台会显示一个输入字段，供您输入加密密钥的 Amazon 资源名称 (ARN)。

# 最佳实践
<a name="ct-best-practices"></a>

使用自定义术语时，请使用以下一般最佳做法：
+ 保持您的自定义术语整洁。仅包括需要控制其翻译值的术语。
+ 自定义术语区分大小写。如果您要为单词的大写和非大写版本提供目标翻译，请为每个版本各添加一个条目。
+ 自定义术语并不能作为用来控制间距、标点符号或大小写的工具。例如，避免使用以下类型的条目：
  + 添加空格 — 英语：美国 FR：U S A
  + 添加标点符号 — 英语：美国 FR：U.S.A
  + 更改大写 — 英语：美国 FR：美国
+ 不要为同一个源短语添加多个不同的翻译。例如：
  + 条目 \$11 – EN: Amazon FR: Amazon
  + 条目 \$12 – EN: Amazon FR: Amazone
+ 您可以为 Amazon Translate 支持的任何语言创建自定义术语文件。

Amazon Translate 不保证自定义术语在每次翻译中都使用目标术语。要提高自定义术语的准确性，请在为术语文件创建内容时遵循以下最佳实践：
+ 自定义术语适用于任何词汇，包括动词和同形异义词。专有名词（例如品牌名称和产品名称）是理想条目。
+ 目标术语应使用流畅的目标语言。对于包含大量特殊字符或格式的目标术语，建议不要使用自定义术语。
+ 您可以在术语文件中包含多字短语或子句。但是，包含多个单词的术语不太可能在目标语言中实现流畅阅读。
+ 自定义术语使用翻译上下文中源术语和目标术语的含义来决定是否使用目标术语。如果目标术语不适合给定的翻译环境，Amazon Translate 可能不会使用该目标术语。

  例如，如果您的术语文件包含以下英语到法语的条目：

  `EN: order, FR: commande`(根据英文 “to order” 翻译成法语 “指挥官”).

  Amazon Translate 在翻译以下句子时不使用此条目，因为翻译上下文不匹配：

  “**为了**让我们帮助你，请分享你的名字。” 

  避免这种情况的建议：
  + 确保每种语言的目标术语在语义上与源术语相同。
  + 避免使用具有多种含义的源词或目标术语。