美文网首页
Untiy国际化(多语言)

Untiy国际化(多语言)

作者: 陌上冰火 | 来源:发表于2018-12-01 13:39 被阅读0次

    1. 源文件

    就是一个excel文件:

    • 第一列,Chinese,存放中文字符串
    • 第二列,English,存放英文字符串
    • 其他语言。。。。

    2. 将表格转换成Json文本

    需要一个excel转Json/XML的工具类:
    链接:https://pan.baidu.com/s/1Uy-PNER33n7etzrAkA-BoA
    提取码:etxn

      将工具导入项目后,首先选中excel文件,然后选择Plugins——>ExcelTools,点击转换即可。


      输出一个名为 Language.json 的文件。
      将 Language.json 放在 resources 目录下。
    [
      {
        "Chinese": "账号",
        "English": "Account"
      },
      {
        "Chinese": "密码",
        "English": "password"
      },
      {
        "Chinese": "确定登录",
        "English": "Make sure the login"
      },
      {
        "Chinese": "密码找回",
        "English": "Get back password"
      },
      {
        "Chinese": "手机号码",
        "English": "cell phone number"
      },
      {
        "Chinese": "新密码",
        "English": "new password "
      },
      {
        "Chinese": "邀请码",
        "English": "Invitation code"
      }
    ]
    

    3. 使用

    1. 读取TextAsset资源
    2. 将文本内容转换成 LanguageModelList
    3. 根据 系统语言,index,读取相应的字符串
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class LanguageUtils {
    
        private List<LanguageModel> data;
    
        public static int Account = 0,
            Password = 1,
            ConfirmLogin = 2,
            FindPassword = 3,
            PhoneNumber = 4,
            NewPassword =5,
            InviteCode = 6;
    
        private static LanguageUtils instance;
    
        public static LanguageUtils GetInstance()
        {
            if(instance == null)
            {
                instance = new LanguageUtils();
            }
            return instance;
        }
    
        private LanguageUtils()
        {
            OnReadLanguage();
        }
    
        //自动判断系统语言
        public string GetString(int index) 
        {
            string lang = SystLanguage();
            if (lang.Equals("Chinese"))
            {
                return data[index].Chinese;
            }
            return data[index].English;
        }
    
        //手动传系统语言
        public string GetStringTest(int index,  LanguageType type)
        {
            if(type == LanguageType.Chinese)
            {
                return data[index].Chinese;
            }
            return data[index].English;
        }
    
        /// <summary>
        /// 获取当前系统默认语言
        /// </summary>
        /// <returns></returns>
        private string SystLanguage()
        {
            return Application.systemLanguage.ToString();
        }
    
        /// <summary>
        /// 读取语言包
        /// </summary>
        private void OnReadLanguage()
        {
            TextAsset asset = Resources.Load<TextAsset>("Language");
            data = JsonToObject.JsonToObject_ByJsonContent<LanguageModel>(asset.text);
        }
    }
    
    /// <summary>
    /// 语言字段
    /// </summary>
    public enum LanguageType
    {
       Chinese,
        English
    }
    
    public class LanguageModel
    {
        public string Chinese;
        public string English;
    }
    
    

    4. 运行结果

    点击中文
    点击英文

    相关文章

      网友评论

          本文标题:Untiy国际化(多语言)

          本文链接:https://www.haomeiwen.com/subject/ziiafqtx.html