ue4这个本地化系统真是没找到啥傻瓜教程,搜搜改改差不多整明白了,搁着记一下怕忘
仅限文本(Text)的本地化,资源的本地化再研究
1.FText关联StringTable
需要把所有需要本地化的FText文本设置本地化Localizable为Yes,并关联StringTable
1.1建立StringTable
StringTable本质为一个object存储了一个内部字符串表,建立它的目的便于我们方便分类管理需要本地化的字符串(在内容浏览那右键建立即可)
表内对应key及SourceString,key设置为该字符易理解的描述即可,字符短和SourceString设置一样即可,注意key不能加空格
(Key居然可以设置中文,一般来说写上对这个字符易懂的描述吧,给外包翻译能看懂)
注意在StringTable中增添字符串的操作,如果显示文本需修改直接修改SourceString即可,key要修改只能删除重建,如果已经对该key有引用,但在StringTable中删除,此字符会变成missing string table entry显示,所以如果不确定该字符串不是在多个地方在用,不要进行删除操作
简单来说,需要本地化的文本都需要一条条在这StringTable建好,在用到的时候关联选中它
StringTable可以随便建立多个,方便文本的分类管理
1.2需要本地化的字符类型需为FText类型,选中关联
FText类型数据后面会多个小三角,点击进入该字符本地化设置
如不需本地化的Text,直接Localizable选no即可,如数字符号等
需要本地化的Text,Localizable选yes,默认会随机分配一个key
我们需选取NameSpace及key,namespace选取建立好的StringTable,选取对应key后即会显示该key对应的SourceString,此例为建立了一个SettingStringTable存放Setting相关的需要本地化的字符串
1.3如果Text是即时变化或绑定变量,需在传入参数时对Text本地化即可
创建新字符时如不确定是否已经在StringTable里创建的,为避免重复创建,点击window-localization dashboard,再点击English的Edit,然后可以search现有本地化表的所有字符,若搜索到已创建的就可以知道它在哪个StringTable中创建的,直接选取即可(需要在第二大步中收集了Text才能看的到,方法有点笨,没找到啥好办法)
4.comboBox的使用,
使用comboBox下拉选择控件时,需要对选项本地化用ComboBox(Text),不需要则用ComboBox(String)
ComboBox(String):
ComboBox(Text):
5.enum的本地化
Enum在蓝图创建时可以直接选取本地化,displayname和descriptioon都是FText,可用下面方式直接显示于UI,具备本地化功能
6.尽量减少switch string或string==***的操作
这个文本如果是被本地化的,这么一玩切换语言的时候文本就变了,逻辑跑不通
2.用本地化工具收集StringTable文本
2.1建立Target
点击window-localization dashboard,在这个界面编辑我断开了项目的版本控制,感觉连上版本控制各种报错,不行先断了(svn啥的)。然后建立了一个名叫Game的Target,目的是收集所有StringTable文本。
这里给出俩办法,第一个我所有StringTable都建在项目的Content/StringTable文件夹下,那么可根据路径收集,填上路径收集这个文件夹
第二个根据Collections收集,把要收集的StringTable放到同一个Collections下,这样就可以不限定放在哪了,Collections就是右键文件然后有个manage Collections,不会用的搜搜
2.2收集
默认起始Culture我这里是英文,然后按需加就行
设置好了点Gather Text,要收集一会,完事了英文就应该收集好了,别的文直接在这编辑或者导出po文件给外包再导回来。有变动的时候记者重新收集,就是再点Gather Text,然后还需要Compile Text,要不切换语言不生效。
3.在UMG中调试,建立语言更改设置
差不多就是这样SetCurrentLanguage是引擎方法,后边那个是自己写的,肯定需要建一个GameSaving保存语言设置。Culture需要传入当前使用文化,一般是俩字母,具体语言是啥在上边Add New Culture能看,Get Default Locale可以获取打包后运行时机器的默认语言设置,可在初始化时用。
在UMG的这个地方可以不运行就更改语言设置,方便ui上看语言切换后的界面效果