【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地址

这是目前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本地化,让您的游戏为世界做好准备!
This is currently the most complete localization system available for Unity. Supports Unity UI, Unity 2D, TextMesh Pro, NGUI, 2D ToolKit, SVG Importer, Standard Components Localizes Image, Text, Sounds, Fonts, Sprites, Atlases, Prefabs, TextMeshes, Dropdowns and more. Auto Translation Built-in support for Google Translator to automatically localize all your labels into any language. Google Spreadsheets and CSV files Link external Spreadsheets and any change will be automatically downloaded, even after the game is released. Detect and Fix Errors Parse scenes to find missing or unused translations as well as duplicated or similar terms. Sub-Object Translations Set Secondary terms to change not just text and images, but also which Fonts and Atlases are used per language. Callbacks and Parameters Translations can be modified to insert Scores, Names and Game Variables using the languages grammar. Plurals Built-in rules for each language covering those that just need singular/plural forms up to those that use 6 variants. Right to Left Languages Correct rendering of RTL languages with support for line wrapping and alignment. Save Memory Create Fonts with only the characters you are using. Link your AssetBundles to add more localized content. Easy and Efficient Edit and Preview all your translations in one location, then, at runtime only the current language is loaded. Using fast lookups to access it. Reuse Translations Set texts to be automatically shown as UPPER CASE, lower case, Upper first, Title Case, etc. In Game Dynamic Translations Easy API to translate chat messages and other dynamic texts at runtime App Name and Store Localization Translate the name of your game to all languages and show in the Android/IOS store which languages your game support Simple yet Powerful Editors Intuitive inspectors allow you Preview, Edit, Categorize, Create, Parse and Filter even large sources. Compile Time Checking Bake translations into script constants to avoid Typo
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值