官方文档地址:https://docs.unity3d.com/Packages/com.unity.localization@1.0/manual/QuickStartGuideWithVariants.html
使用流程
安装
PackageManager搜索Localization完成对应插件的安装
配置
PlayerSetting->Localization 创建本地化相关配置
创建之后点击Locale Generator可以选择需要支持的语言
创建Table Collection
TableCollection是一组本地化数据的集合。需要在Window->AssetManagement->Localization Table 点击New Table Collection,命名之后点击Create
编辑Table Collection
点击Edit Table Collection,之后选择需要编辑的Table Collection。
点击Add New Entry,可以添加一条新的本地化文本,Key是该文本的键值,后面可以填写不同语言对应的文本
本地化场景控制
控制界面通过Window > Asset Management > Localization Scene Controls打开
ActiveLocale:选项代表当前所处的本地化语言
Track Changes:该选项打开时,如果有本地化相关的组件(比如Text/Image)组件的参数值产生改变,会自动记录改变的内容
StringTable:当前本地场景控制读写的StringTable
AssetTable::当前本地场景控制读写的AssetTable
使用方法
以文本本地化为例子,修改一个开始按钮的文本
当打开TrackChanges选项时,先选择active locale为Chinese,并且选择好对应的StringTable
之后对文本进行修改,填入文本"开始"
可以看到Text处的框变成绿色的
并且在Text下方自动生成了一个GameObjectLocalizer的组件,组件上的跟踪的TableEntry也自动生成,并且在Chinese下将对应文字填充好
之后将ActiveLocale修改成English
可以看到Text内的内容自动产生改变,变成一个表示没有对应翻译的提示
删除文本框内的提示,填入该文本的英文翻译"Start",可以看到TableEntry内English对应的翻译由<empty>变成了我们修改的Start
运行验证
运行之后可以看到界面的右上角出现一个选择当前运行时的语言的菜单栏
当前的语言为Chinese,开始按钮上的文字也是之前Active Local为Chinese时编辑的"开始"
点击右上角的语言选择的菜单栏,将语言改为English,可以看到开始按钮上的文字自动变成"Start"
文本变化事件
在本地化组件修改本地语言的时候,会触发对应UpdateString事件,如果需要监听该事件的话,可以在Localize String Event组件下的Update String添加对应的事件监听
也可以通过代码的方式,通过LocalizedString的StringChanged事件对该事件进行监听
public class LocalizedStringWithEvents : MonoBehaviour
{
public LocalizedString myString;
string localizedText;
/// <summary>/// Register a ChangeHandler. This is called whenever the string needs to be updated./// </summary>void OnEnable()
{
myString.StringChanged += UpdateString;
}
void OnDisable()
{
myString.StringChanged -= UpdateString;
}
void UpdateString(string s)
{
localizedText = s;
}
void OnGUI()
{
EditorGUILayout.LabelField(localizedText);
}
}
导入/导出Table
在Localization Tables界面的EditTable Collection页签下,选择需要进行导入/导出的Table
之后点击右上的三个小点,可以选择Export/Import文件
一般编辑流程是,先确定好Table里需要进行本地化Table Entry,并且完成对应关系的绑定。之后导出csv文件,用Excel打开之后可以看到对应的Key,以及默认生成的ID。之后可以将其交由进行本地化翻译工作的同事,不要修改Key和ID,仅填入本地化的文本。之后再将修改后的CSV导入到工程