Unity多语言插件I2 Localization国际化应用
【就不收费了,要个关注不过分吧】
【图片来自插件官网,侵删】
前言
目前游戏往往都不会仅局限于国内语言,为了适应产品都要做国际化适配,因此会用到这个插件,这个插件要付费,因此请前往unity官网进行下载,支持正版,这里就不提供了。
先来注意事项:
1、一般为了性能考虑要结合Tmp使用,但是这里会有个小问题,就是字库问题,有些字库并不全都兼容所有语言字体,这点要特别注意比如这段日文:
中文:本地化语言
日文:ローカライズ言語
但出来后就变成这样:
出现这种问题就是字库的问题,请开发者联系美术组进行处理。
2、格式一般我们会用utf-8这种国际通用的标准格式,但是总会有几个国家特殊,那就得考虑做个定制版,鄙人有幸见过这种情形,甚至有的国家网络传输方式传输编码,传输包尺寸等用的不是国际通行的格式,都需要重做。
3、关于这个插件,我们一般不使用谷歌的技术方案。【国际化那妖蛾子】当然要是适配xbox这些单机,主机,还有switch这种设备就还好,至少他们基本都遵循国际化标准,唯一可能有问题的需要考虑的就是网络,这点与本文无关,就不展开了。
【暂时就这么多,进入正文】
因此我们用的都是本地读取csv的技术方案,不管是小游戏,还是大型产品,包括但不限于工业仿真系统【ps:国内这类产品基本上没人考虑过国际化】
首先安装软件:
window->Package Manager->Packages:My Assets->I2 Localization
然后Import导入即可
然后是Tools这里
先点下Force Detection,如果报错就说明这是初次初始化,如果没有报错就说明已经有生成好的配置了,一般在Resources下有个配置好的文件,直接点下进去配置就行了,如果有请跳过生成步骤,到配置
生成:
1、如果没有的话,一般open下也可以自动生成
2、不行的话也可手动
在Resources文件夹下,如图操作建立配置文件
配置:
然后侧边就会出现个空的这个
【这个操作步骤是官网建议,实践中似乎可以自动生成...,以防万一,没试过】
这里打开添加你要用的语言,我这里选了中文和英文
选择完,记得Add,添加下,然后就是这样
选择完后,来到Spreadsheets选项卡,选择Local
然后来到你的热更新文件夹下,建个utf-8格式的csv文件,我这里不需要热更,就在Resources文件夹下,不要用中文。
然后返回到这里,选择File,目录指定到这个csv文件,注意不要直接输入,选择这个,再选
他会卡一下,然后读取文件生成,你的csv表格内容如下图
重点就是绿色部分,一般国内key是中文,默认Description,为默认语言【添加个描述】,后面两个绿块,设置为你想要的语言,生成完后如下:
这里还没完,再来到Tools->Script
选个All,接着Build生成下,这样配置就好了
如何使用:
新建一个TMP,关于TMP生成部分这里就略,因为不是本文重点
先选择好你TMP的Font Asset
然后添加脚本【l2 Localize】
一般他会自己自动指定好Target,如果不行请手动切换 ,您也可通过代码进行添加
然后我在这里加了个测试代码,Localize textLocalize 是获取的TMP
//声明要多加
using I2.Loc;
using TMPro;
public Button btn_ch, btn_en;
public TextMeshPro text;
//获取的TMP
public Localize textLocalize;
//切换英文
void ChangeLanguageEnglish()
{
if (LocalizationManager.HasLanguage("Chinese"))
{
LocalizationManager.CurrentLanguage = "English";
}
}
//切换中文
void ChangeLanguageChinese()
{
if (LocalizationManager.HasLanguage("English"))
{
LocalizationManager.CurrentLanguage = "Chinese";
}
}
// Start is called before the first frame update
void Start()
{
btn_ch.onClick.AddListener(ChangeLanguageChinese);
btn_en.onClick.AddListener(ChangeLanguageEnglish);
//括号里填的是你文字表中的key
textLocalize.SetTerm("语言");
}
这样就完成了