Skip to content

Latest commit

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

EasyLocalization

安装

可通过修改manifest.json,在其中加入如下条目安装:

{
"com.github.fanhexin.easylocalization": "https://github.com/fanhexin/EasyLocalization.git#upm"
}

创建Localization子类

EasyLocalization不对具体的多语言数据文件格式和加载方式做限制,使用者只需创建继承自抽象类DataProvider的实体子类,实现抽象方法。DataProvider本身继承自ScriptableObject,实现DataProvider的子类需要在工程内创建一份ScriptableObject资源文件,并拖入Localization资源文件的引用中。具体示例如下:

[CreateAssetMenu(fileName=nameof(TestDataProvider),menuName=nameof(TestDataProvider))]publicclassTestDataProvider:DataProvider{publicoverrideIEnumerable<string>Keys=>_dic[SystemLanguage.English.ToString()].Keys;publicoverrideIEnumerable<string>Languages{get{yieldreturnSystemLanguage.English.ToString();yieldreturnSystemLanguage.Chinese.ToString();}}publicoverridestringGetValue(stringlanguage,stringkey){return_dic[language][key];}[NonSerialized]privateDictionary<string,Dictionary<string,string>>_dic;privatevoidOnEnable(){_dic=newDictionary<string,Dictionary<string,string>>{["English"]=newDictionary<string,string>{{"TITLE_1","title_1"},{"TITLE_2","title_2"}},["Chinese"]=newDictionary<string,string>{{"TITLE_1","标题1"},{"TITLE_2","标题2"}}};}}

UGUI界面中添加LocalizationText

在场景中通过UI > LocalizationText添加带有多语言功能的Text控件,其带有自定义的Inspector,可直接通过LocalizationKey选择所关联的字典Key。 如下图所示:

LocalizationTextInspector

代码中查询Key

创建Localization的子类后,运行时可通过Localization.instance访问实例。Localization实现了Indexer,可通过[]语法直接查询。

stringvalue=Localization.instance["key值"];

切换语言时更新文本

在切换语言时,需要设置Localizationlanguage属性,对内部字典进行更新。更新结果会通过LocalizationText进行实时展示。

Localization.instance.language="Chinese";

Localization编辑器下的Reload功能

如在编辑器启动的状态下,多语言配置文件发生了更新,这时需要进行重新加载,以便LocalizationText Inspector上能显示新的Key或Value值。 可通过点击Localization资源文件Inspector上的Reload按钮实现。如下图:

Reload

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages