Untiy国际化(多语言)

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. 运行结果

点击中文

点击英文
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,019评论 3 119
  • 我梦想的生活,就是住在这样诗意的水乡,白天工作,写生,晚上朋友聊聊天,喝喝茶,为这样的一天,努力吧!
    坐看云起的Annie阅读 190评论 0 4
  • 我是一只鱼 作者:屿上日光 你是水 向往着大海 向往着天空 流向了海洋 成了苦涩的水 飞向了天空 成了朵朵白云 我...
    屿上日光阅读 356评论 0 0