Unity本地化介绍Localization

Unity本地化介绍


概述:


本地化为了应对游戏发布到不同地区不同国家,对界面相关内容进行修改


先创建一个ui界面,待会对这个界面进行本地化操作,如图:


本地化之后


实现思路:

本地化只是对一些文字进行提取,生成一个文本文件,中国版本(chinese.txt),美国版本(American.txt),这两个文本文件中的内容都是对相同ui文字的操作,一个键对应一个值。(一个国家一个文本文件,根据发布的版本修改显示)


首先创建两个文本文件



再说一下实现原理:

①.将要发布的国家的版本对应文字做成文本文件,如上图

②.创建Localizationmanager,做成单例模式。

③.根据提供的路径解析文本文件为TextAsset

④.对解析的文本文件按照‘/’&‘=’拆分,存到字典当中

⑤.在创建一个Localization脚本,挂载在这个案例中的ui控件上面,定义一个公有变量,根据公有变量去字典里面查找替换

(其实这样的方式只适合用来学习本地化,有兴趣的同学可以学会这个之后,去看看NGUI里面的demo,有一个例子就是讲解本地化的,或者待会讲完这个例子我可以带着大家一起去剖析一下哦!)


好了,创建好了两个本地化文本文件,也创建好了我们的示例工程,接下来需要创建我们的LocalizationManager和LocalizationUI脚本了。

LocalizationManager:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class LocalizationManager
{

    private string mLanguage;//语言类型

    /// <summary>
    /// 这里可将修改的语言类型做成属性,提供给外界修改
    /// </summary>
    public string Language
    {
        get { return mLanguage; }
        set { mLanguage = value; }
    }


    private Dictionary<string, string> mLanguageDict; //存储语言字典
    private string resourceDir = "Localization";//解析的二级目录

    private static LocalizationManager mInstance;

    public static LocalizationManager GetSingleton()
    {
        if (mInstance == null)
        {
            mInstance=new LocalizationManager();
        }
        return mInstance;
    }

    private LocalizationManager()
    {
        mLanguageDict = new Dictionary<string, string>();
        SetLanguage("american");
    }

    /// <summary>
    /// 读取文本,存入字典
    /// </summary>
    /// <param name="varLanguage"></param>
    private void SetLanguage(string varLanguage)
    {
        //1.读取文本
        string tempPath = resourceDir + "/" + varLanguage;
        TextAsset asset = Resources.Load<TextAsset>(tempPath);
        string targetLanguage = asset.ToString();

        //2.解析文本存入字典
        string[] firstSplit=targetLanguage.Split('\n');
        for (int i = 0; i < firstSplit.Length; i++)
        {
            string[] secondSplit = firstSplit[i].Split('=');
            mLanguageDict.Add(secondSplit[0],secondSplit[1]);
        }
    }

    /// <summary>
    /// 根据键值设置ui文字
    /// </summary>
    /// <param name="varKey"></param>
    /// <returns></returns>
    public string  GetTextUI(string varKey)
    {
        if (string.IsNullOrEmpty(varKey)) { return null;}
        string tempText;
        if (mLanguageDict.TryGetValue(varKey, out tempText)) { return tempText;}
        return null;
    }

    
}


LocalizationUI:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class LocalizationUI : MonoBehaviour
{

    public string UIKey;
    private Text thisText;
    private LocalizationManager lomg;

    void Start()
    {
        lomg=LocalizationManager.GetSingleton();


        thisText = GetComponent<Text>();
        thisText.text = lomg.GetTextUI(UIKey);
    }
}

我们创建了四个Text控件,如图:


将LocalizationUI脚本挂载在Text上面即可,这样运行游戏时候,就可以看到效果了!这种是实现游戏本地化的一种方式之一。最后本例的工程下载地址:

链接:http://pan.baidu.com/s/1c1O5S1y 密码:q640

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是目前Unity最完整的本地化系统。 支持 Unity UI,Unity 2D,TextMesh Pro,NGUI,2D ToolKit,SVG导入器,标准组件 本地化 图像,文本,声音,字体,精灵,地图集,预制件,TextMeshes,下拉列表等。 自动翻译 内置支持Google Translator,可自动将所有标签本地化为任何语言。 Google Spreadsheets和CSV文件 链接外部电子表格,即使在游戏发布后,也会自动下载任何更改。 检测并修复错误 解析场景以查找丢失或未使用的翻译以及重复或类似的术语。 子对象翻译 设置辅助术语不仅可以更改文本和图像,还可以更改每种语言使用的字体和地图集。 回调和参数 可以修改翻译以使用语法语法插入分数,名称和游戏变量。 复数 每种语言的内置规则涵盖那些只需要单数/复数形式的规则,直到那些使用6种变体的规则。 从右到左语言 正确呈现RTL语言,支持换行和对齐。 保存内存 仅使用您正在使用的字符创建字体。链接您的AssetBundles以添加更多本地化内容。 简单高效 在一个位置编辑和预览所有翻译,然后在运行时仅加载当前语言。使用快速查找来访问它。 重复使用翻译 设置文本自动显示为大写,小写,上限,标题大小等。 在游戏动态翻译 Easy API在运行时翻译聊天消息和其他动态文本 应用程序名称和商店本地化 翻译游戏名称所有语言,并在Android / IOS商店中显示您的游戏支持哪些语言 简单但功能强大的编辑器 直观的检查员允许您预览,编辑,分类,创建,解析和过滤甚至大型来源。 编译时间检查 将翻译转换为脚本常量,以避免在访问代码时使用Typos。 Playmaker 可以 快速,轻松,强大地访问本地元素和交换语言并与之交互的几种操作?没问题! 立即获取I2本地化,让您的游戏为世界做好准备!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值