【unity插件】Unity多语言插件I2 Localization简单使用

  分享一下Unity多语言插件I2 Localization的简单使用方法,以多语言文字为例,图片功能demo中也实现了。
  提前解释一下该插件中最重要的一个概念:Term。本质其实就是一个资源的ID,一个Term管理不同语言的相同资源。比如:一个Term名称为Test,它可以设置不同的资源类型,文字、图片、字体之类,Test可以依据你添加的语言设置不同语言下的资源。

一、首先导入插件包,目录是 子

 其中最主要的是Resources下面的那个预制体,它是项目的“语言管理器”,可以管理项目中的Term。
  注意:如果直接点击然后编辑预制体,则表示全局设置,即整个游戏的设置;如果把预制体I2Languages拖到场景中,则表示该场景的设置。它的Inspector面板中有个LanguageSouce组件,在这个组件上添加项目需要使用的语言:选择Language 页,填写语言名称,选择语言代码,如下图:
这里写图片描述

二、添加Term

1、步骤一中添加了语言,现在添加资源。选择Term页,点击 + ,填写Term的名称,点击CreateKey,如下(本人已经添加过4个):
这里写图片描述
2、点击刚才添加的Term名称,展开编辑选项,如下图。需要设置该Term对应的资源类型,可以有Text、Font、AudioClip、Sprite等等。下面会依据刚才添加的语言种类让你绑定 不同语言的对应资源,这样,一个Term就完成了。一个Term就是不同语言对应不同资源的同一个ID。
这里写图片描述

三、场景添加UI,并且本地化

  在场景中新建一个Text,在该Text上添加Localize脚本。注意一下三个箭头处:1、Target:指当前UI的类型,一般插件会自动选中;2、Term:这个UI需要的那个资源对应的Term,选中之后下面的资源随之改变;3、OpenSource:选择步骤一中拖的那个 I2Languages预制体。
这里写图片描述

四、静态改变语言

称为静态改变,意思是UI上的文字、图片都是游戏启动前设置好的。
1、在一个GameObject上添加SetLanguage脚本,为了方便,我直接将其加到I2Language预制体上。然后把预制体拖到LanguageSource上,如下
这里写图片描述
2、写测试脚本,为了方便,本人又把测试脚本添加到 I2Language预制体上了。。。写一个方法,传入的参数是步骤一中添加的语言名称的字符串,如下:

public void SetLanguage(string language)
{
   setLanguage._Language = language;
   setLanguage.ApplyLanguage();
}

将该方法绑定到按钮点击事件,并传入语言名称即可,效果如下(但愿能动):
这里写图片描述

五:动态更改语言

假如在代码中我们将上面的文字改变了,并且再次切换语言,怎么保持同步?如下
1、添加新文字的Term,如下:
这里写图片描述
2、在代码中更改Text的文字时,不能去Text组件Text.text = “XXX”这么写了,不然不能动态转换语言,转换之后会Text会变为初始值。这么写:

  [SerializeField]
  private Localize textLocalize;
  textLocalize.SetItem("BehindTheMountain");

关联需要修改的Text的Localize组件,然后SetItem(),参数是Term名称。效果如下:
这里写图片描述
六、总结
以上是多语言文字的基本使用例子,demo中有图片的多语言例子,其他资源的方法类似,详细文档参考 http://www.inter-illusion.com/assets/I2LocalizationManual/I2LocalizationManual.html

【补充】【2017-1-11】

  我们刚才创建了很多Term,但是有时候我们需要得到那个Term对应的本地化之后的字符串,该怎么办。
  开发过Android的同学应该都知道,Android中对于string资源的使用采用一个ID对应一个的String,这个ID会生成在R文件中,编写代码是直接使用R.string.xxx来得到资源。而I2这个插件也使用这个思路。
  在LanguageSource的预制体上,找到Tool-Script,选中你需要生成ID的Term,一般就点All全选吧,然后点击底部的”Build Script with Selected Terms”,生成ID,生成的ID名和你的Term名称一样。
这里写图片描述
  打开ScriptLocalization脚本,你会发现里面都是一些静态字段,其实每个ID的Get最终都是调用前面的三个方法中的一个。如下图:
这里写图片描述
  之后我们就可以在代码中这样得到需要的本地化之后的字符串了:

ScriptLocalization.XXX;//XXX是你Term的ID

  本人没有试在代码中将语言改变前后,这样得到的是不是对应语言下的字符串。有需要的可以试试。还有,这种通过ID得到资源,似乎只适用字符串资源(因为本人写了Image的Term,但返回的都是String类型)。

最后附上demo地址

  • 11
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
这是目前Unity最完整的本地化系统。 支持 Unity UI,Unity 2D,TextMesh Pro,NGUI,2D ToolKit,SVG导入器,标准组件 本地化 图像,文本,声音,字体,精灵,地图集,预制件,TextMeshes,下拉列表等。 自动翻译 内置支持Google Translator,可自动将所有标签本地化为任何语言。 Google Spreadsheets和CSV文件 链接外部电子表格,即使在游戏发布后,也会自动下载任何更改。 检测并修复错误 解析场景以查找丢失或未使用的翻译以及重复或类似的术语。 子对象翻译 设置辅助术语不仅可以更改文本和图像,还可以更改每种语言使用的字体和地图集。 回调和参数 可以修改翻译以使用语法语法插入分数,名称和游戏变量。 复数 每种语言的内置规则涵盖那些只需要单数/复数形式的规则,直到那些使用6种变体的规则。 从右到左语言 正确呈现RTL语言,支持换行和对齐。 保存内存 仅使用您正在使用的字符创建字体。链接您的AssetBundles以添加更多本地化内容。 简单高效 在一个位置编辑和预览所有翻译,然后在运行时仅加载当前语言使用快速查找来访问它。 重复使用翻译 设置文本自动显示为大写,小写,上限,标题大小等。 在游戏动态翻译 Easy API在运行时翻译聊天消息和其他动态文本 应用程序名称和商店本地化 翻译游戏名称所有语言,并在Android / IOS商店中显示您的游戏支持哪些语言 简单但功能强大的编辑器 直观的检查员允许您预览,编辑,分类,创建,解析和过滤甚至大型来源。 编译时间检查 将翻译转换为脚本常量,以避免在访问代码时使用Typos。 Playmaker 可以 快速,轻松,强大地访问本地元素和交换语言并与之交互的几种操作?没问题! 立即获取I2本地化,让您的游戏为世界做好准备!
Unity I2 LocalizationUnity I2 国际化)是Unity引擎上的一种插件,用于帮助开发者实现游戏或应用的多语言支持。 Unity I2 Localization提供了一种简单易用的方式来管理和应用多语言文本。它允许开发者轻松地在游戏中添加多个语言,并根据用户的语言设置自动切换文本。开发者只需按照插件的文档指引在Unity编辑器中设置好本地化文本,然后在游戏中使用相应的API来获取和显示正确的语言文本。 通过Unity I2 Localization,开发者可以更方便地进行游戏的本地化工作。不同的语言文本可以按照对应的语种进行分类和组织,使得管理和更新翻译变得更加高效。开发者可以在Unity编辑器中直接修改和更新本地化文本,而无需重新编译代码,从而加快开发和调试的速度。 另外,Unity I2 Localization还提供了一些额外的功能,可以帮助开发者更好地适应各种语言环境。例如,插件支持复数形式的处理和变量替换,以便在不同语言中正确显示复数个数和动态内容。 总之,Unity I2 LocalizationUnity引擎上一款实用而强大的插件,可以帮助开发者轻松实现游戏或应用的多语言支持。它提供了一种简单易用的方式来管理和应用多语言文本,并且附带了一些额外的功能,使得本地化工作更加高效和灵活。无论是为了吸引更多的用户,还是为了扩大游戏或应用的市场,Unity I2 Localization都是一个很好的选择。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值