GSmGpE6CwX2y9JjB25B8
我们使用此网站上的 Cookie 增强您的用户体验

使用本地化 API

使用本地化 API

5 min

如有必要,你可以使用脚本获取和格式化已添加至articles/Introduction to Localization on Roblox|本地化门户的译文。

加载译者

准备好使用 API 进行翻译时,你应首先获取 Translator 实例。

玩家区域设置

Players/LocalPlayer|LocalPlayer 属性上调用 LocalizationService/GetTranslatorForPlayerAsync|GetTranslatorForPlayerAsync() API 时,将根据玩家在 Roblox 帐户设置的语言获取 Translator

特定区域设置

如果已实施自定义游戏选项,允许玩家选择自己喜欢的语言,则可以通过 LocalizationService/GetTranslatorForLocaleAsync|GetTranslatorForLocaleAsync() 获取 Roblox 支持的语言代码的 Translator

下表概述了本地化门户中当前支持的语言。用黄色高亮显示的语言完全受 Roblox 平台/应用程序支持。

语言代码 语言
de German Deutsch
en English English
es Spanish Español
fr French Français
jp Japanese 日本語
ko Korean 한국어
pt Portuguese Português
zh-hans Chinese (Simplified) 中文(简体)
zh-hant Chinese (Traditional) 中文(繁體)
bg Bulgarian български
bn Bengali বাংলা
bs Bosnian босански
cs Czech Čeština
da Danish Dansk
el Greek ελληνικά
et Estonian Eesti
fi Finnish Suomi
hi Hindi हिन्दी
hr Croatian Hrvatski
hu Hungarian Magyar
id Indonesian Bahasa Indonesia
it Italian Italiano
ka Georgian ქართული
kk Kazakh қазақ тілі
km Khmer ភាសាខ្មែរ
lt Lithuanian Lietuvių
lv Latvian Latviešu
ms Malay Bahasa Melayu
my Burmese ဗမာစာ
nb Bokmal Bokmål
nl Dutch Nederlands
fil Filipino Filipino
pl Polish Polski
ro Romanian Română
ru Russian русский
si Sinhala සිංහල
sk Slovak Slovenčina
sl Slovenian Slovenski
sq Albanian Shqipe
sr Serbian српски
sv Swedish Svenska
th Thai ภาษาไทย
tr Turkish Türkçe
uk Ukrainian україньска
vi Vietnamese Tiểng Việt

Translate()

加载有效 Translator 之后,Translator/Translate|Translate() 函数即可基于其原文字符串和游戏内 Instance,从本地化门户获取译文。请注意,除非需要上下文覆盖,否则,Instance 参数可以是任意的。

A B C D E
上下文 原文 示例 es
Screen Pantalla
 

FormatByKey()

在有效的 Translator 上调用时,Translator/FormatByKey|FormatByKey() 将基于原文项目的标识符,从本地化门户获取译文。标识符键只能输入至已下载电子表格的列,或者直接输入至门户 — 无法通过 Roblox 应用程序中的自动文本捕捉功能来检测和添加。

如果你更喜欢使用 .csv articles/localization portal additional features#localizing-with-csv-files|电子表格管理译文,则可以在 Key 列输入标识符键:

A B C D E
上下文 原文 示例 es
Key_StartButton Start Iniciar
Key_OptionsButton Options Opciones
 

或者,你可以通过以下步骤,直接在本地化门户中输入基于键的条目:

  1. 在门户中的 Manage Translations(管理译文)页面上,单击 Add New Entry(添加新条目)按钮。
  1. 指定 Text to Translate(待译文字)(将成为电子表单中的原文)和值。
  2. 单击 Save(保存)按钮将条目添加至门户。

要在脚本中使用 Translator/FormatByKey|FormatByKey(),请使用本地化门户中的有效键名称调用 API。例如,使用西班牙语进行articles/localization portal additional features#test-localization|游戏测试时,以下代码示例中第 9 行的 print() 语句将为“Key_Prize”键输出西班牙语译文“joyas”。

A B C D E
上下文 原文 示例 es
Key_Prize jewels joyas
 

使用格式字符串

本地化 API 也可与/articles/localization format strings|格式字符串一起使用,以返回具有可变数据的译文。此方法仅取决于格式字符串是已编号还是已命名

已编号格式字符串

请考虑下方包含已编号格式字符串(如 {1:int})的翻译数据:

A B C D E
上下文 原文 示例 es
Key_Prize_1 {1:int} jewels {1:int} joyas
Key_Prize_2 ${1:fixed} cash and {2:int} jewels ${1:fixed} dinero y {2:int} joyas
 

要将这些数据格式化为可变金额的现金和/或珠宝,请将数量作为第二个参数,以逗号分隔的 Lua 数组传递至 Translator/FormatByKey|FormatByKey()。有此补充后,使用西班牙语进行游戏测试时,print() 语句即可输出正确的译文。

已命名格式字符串

处理已命名格式字符串(如 {NumJewels:int})时,请将键值对表作为第二个参数传递至 Translator/FormatByKey|FormatByKey(),其中,每对都包含格式字符串的名称和要替换的值。

A B C D E
上下文 原文 示例 es
Key_Prize_1 {NumJewels:int} jewels {NumJewels:int} joyas
Key_Prize_2 {AmountCash:fixed} cash and {NumJewels:int} jewels {AmountCash:fixed} dinero y {NumJewels:int} joyas
 

最佳做法

禁用 AutoLocalize

使用本地化 API 时,最佳做法通常是对要使用译文的对象禁用 GuiBase2d/AutoLocalize|AutoLocalize。例如:

情景 禁用 AutoLocalize 的原因
在他/她头顶上的 BillboardGui 上显示 NPC 的专有名称。 NPC 的名称不会随语言的不同而改变,因此 Studio 的自动文本捕捉功能绝不能捕捉该名称。
从门户获取译文并以“打字机”效果逐字母显示。 防止 Studio 的自动文本捕捉功能捕捉不完整的词语并将其添加至门户。

要为特定 GUI 对象禁用自动本地化功能,请在 Studio 中取消选中GuiBase2d/AutoLocalize|AutoLocalize 属性,或者在脚本中将其设置为 false

错误处理

以下帮助程序模块可捕捉本地化条目中可能存在的问题,并处理基于 Web 的功能在获取 Translator 时可能出现的错误。要在游戏中使用此功能,请执行以下操作:

  1. ReplicatedStorage 中创建新的 ModuleScript
  2. 将新脚本重命名为 TranslationHelper
  3. 将以下代码复制到脚本中。

将模块放入 ReplicatedStorage 后,就可以从 LocalScript 中进行 require() 处理,如以下第 5 行所示。之后,如有需要,可调用模块的 translate() 函数(等效于 Translator/Translate|Translate())或者 translateByKey() 函数(等效于 Translator/FormatByKey|FormatByKey())。