Untiy国际化(多语言)

1. 源文件

Untiy国际化(多语言)_第1张图片

就是一个excel文件:

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

2. 将表格转换成Json文本

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

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

Untiy国际化(多语言)_第2张图片

  输出一个名为 Language.json 的文件。
  将 Language.json 放在 resources 目录下。
Untiy国际化(多语言)_第3张图片

[
  {
    "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 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;
    }

    /// 
    /// 获取当前系统默认语言
    /// 
    /// 
    private string SystLanguage()
    {
        return Application.systemLanguage.ToString();
    }

    /// 
    /// 读取语言包
    /// 
    private void OnReadLanguage()
    {
        TextAsset asset = Resources.Load("Language");
        data = JsonToObject.JsonToObject_ByJsonContent(asset.text);
    }
}

/// 
/// 语言字段
/// 
public enum LanguageType
{
   Chinese,
    English
}

public class LanguageModel
{
    public string Chinese;
    public string English;
}

4. 运行结果

Untiy国际化(多语言)_第4张图片
点击中文

Untiy国际化(多语言)_第5张图片
点击英文

你可能感兴趣的:(Untiy国际化(多语言))