在Unity中进行本地化的最佳方式

时间:2016-10-09 08:49:05

标签: c# android unity3d localization

我正在建立一个统一的安卓游戏,我想添加一种或多种语言。我在资产商店中尝试了智能本地化资产。我正在搜索一个资产,允许我直接从文本组件编辑语言(在编辑器中),但我无法找到,所以我尝试了这个: 在场景中查找所有文本组件,并根据用户首选语言更改文本。例如,我没有将真实文本放在按钮中,但文本和脚本的唯一键将在其start方法中进行更改。但我想知道做本地化是否更好。

3 个答案:

答案 0 :(得分:2)

(2020年9月更新)本地化的方式实际上取决于您的项目。此后,我写了一篇关于here的博客文章。它包括用于Unity的基本的50行本地化工具。

如今,有一些Unity的本地化软件包。

我认为最好使用的资产是No Such Localization。它简单而强大。 (免责声明,我是资产的创建者。)

Unity有一个localizaition package(截至2020年9月仍在预览中)。仍然很不稳定,但从长期来看可能会成为事实上的本地化软件包。

答案 1 :(得分:1)

我强烈建议不要在您的代码中嵌入文本。它会让你的生活变得更加困难并减慢本地化过程(必须通过代码查找文本并不是最快捷,最好的方法来实现本地化)。

使用单独的文件。它使更新/更改更容易,更快捷,无需访问代码。

你试过l2本地化吗?它是一个方便的Unity插件,非常类似于智能本地化,允许您管理游戏的翻译。

您可以将所有本地化字符串放在一个Google电子表格中。设置完成后,您需要做的就是填写它以查看游戏中的结果。

我自己就是一名游戏翻译员,而且恰巧正在管理一个名为Level Up Translation的小型游戏翻译团队。几个月前,我们在博客中发布了localization in Unity的初学者指南。随意查看它!

答案 2 :(得分:1)

由于它是“统一本地化”搜索的第三个结果,因此我想在此主题上分享5美分。

首先,我绝对同意Damien Yoccoz的观点,即直接在代码中或在Unity Text组件中包含文本-如果要翻译游戏,请不要这样做。 让我提出一个我最近的游戏中使用的解决方案:

  1. 使用您要支持的语言创建属性文件。这些文件将具有键值结构(例如greetings=Hello!
  2. 创建一个脚本-我们称之为LangResolver-该脚本将在游戏启动时(例如在启动屏幕中)读取这些文件。该脚本将保存键值对,因此Dictionary <>将成为首选的数据结构。
  3. 标记所有可用于翻译的文本组件。我不会搜索所有Text组件,因为可能不需要其中的某些组件(例如,仅数字字段)。因此,应该创建另一个脚本(我们称之为LangText)来将键从属性绑定到Text组件。该脚本将具有一个公共的String字段,用于从属性中识别键。
  4. 最后,LangResolver应该有一种方法可以收集场景中的所有LangText,获取它们的标识符并根据当前系统语言或语言选择器设置实际文本。然后将从场景中的其他UIHandler组件中调用此方法。

如果您要搜索带有图片\视频here it is的精美教程,那么这些步骤对于任何试图建立简单的本地化支持的人来说都是一个好的开始。