UG4L19——多国语言

本章代码关键字

1
2
XML                                //这是FairyGUI自带的XML类,可以读取多国语言相关的XML文本
UIPackage.SetStringsSource() //加载语言文件,传入多国语言的XML对象,让接下来显示出来的文字元件按照语言文件上规定的显示

FairyGUI的多国语言解决方案

先拼界面,再翻译,把界面上的所有文字导出到一个文件,然后把这个文件提交翻译,运行时动态载入翻译好的文件

生成语言文件

菜单栏 ——> 工具 ——> 字符串导入与导出

image

image

  • 不导出已标记为发布时清空的内容

    例如文本,设置了发布时清空,如果这里勾选了,那么这个文本就不会出现在语言文件里

  • 如果导出目标文件已存在,与目标文件合并(覆盖)

    比如现在导出内容中包含1个id为x1的字符串值为a
    而目标文件也存在一个id为x1的字符串,值为b,
    则导出的结果文件里,x1的值为b

导出的文件包含了在UI上出现的所有文字(排除了纯阿拉伯数字),其中

image

  • name是唯一ID,不能修改
  • mz是控件名称,主要用于提示,
    没有实际用处,删了也不影响
  • 我们只需要在xml文件中修改显示内容即可

使用多国语言

菜单栏——>项目设置——>多国语言——>点击加号——>选择语言xml文件

image

添加后我们可以在工具栏进行语言切换,只在预览时生效,如果预览时改变文件内容,点击刷新键即可刷新

image

Unity中的使用

注意:语言文件要在创建UI前载入,不支持实时切换语言文件
如果要在游戏中切换语言,那只能先销毁所有UI,卸载所有包

  1. 自行加载语言文件中的string​(最好将语言文件导入到工程内)

    1
    string fileContext = Resources.Load<TextAsset>("English").text;
  2. 通过FairyGUI工具类中的XML

    1
    2
    string fileContext = Resources.Load<TextAsset>("English").text;
    XML xml = new XML(fileContext);
  3. 设置载入好的数据,再显示面板

    1
    2
    3
    4
    5
    string fileContext = Resources.Load<TextAsset>("English").text;
    XML xml = new XML(fileContext);
    UIPackage.SetStringsSource(xml);
    //显示面板前就要加载好语言文件
    UIManager.Instance.ShowPanel<TeachPanel>("teach");

显示效果:image

将编辑器中的文字全部替换

如果你想分成两个FGUI工程来管理两种语言,可以将现有工程复制一个,然后从外部导入翻译好的语言文件

imageimage

imageimage

注意:导入文本会修改掉工程中原有的所有文本内容,需要谨慎操作,一般都是复制原有工程进行操作

image

关于多国语言的制作总结

分支+多国语言

  • 分支控制图片的多国匹配
  • 多国语言控制文本的多国匹配