您的位置:首页 > 移动开发 > Unity3D

【Unity游戏开发之十二】Application.systemLanguage无法区分简体中文和繁体中文

2015-12-12 19:26 525 查看
游戏发布,语言本地化需要繁体中文和简体中文

iOS8版本之前没问题,iOS9上无法正常识别这两种语言

原因是在iOS9上,Unity通过Application.systemLanguage返回的简体中文和繁体中文都是SystemLanguage.Chinese,真尼玛坑爹啊,摔手机砸电脑~

亲测Unity 5.2.1、Unity 5.3都有这个问题,Unity更新日志中都没有见这方面消息,不知是没人重视还是没人提~

原因分析:

语言			iOS返回语言			Application.systemLanguage

ios 7
简体中文			zh-Hans				ChineseSimplified
繁体中文			zh-Hans				ChineseSimplified

ios 8.1
简体中文			zh-Hans				ChineseSimplified
繁体中文(香港)		zh-HK				ChineseTraditional
繁体中文(台湾)		zh-Hant				ChineseTraditional

ios 9.1
繁体中文			zh-Hant-CN			Chinese			
简体中文			zh-Hans-CN			Chinese
繁体中文(香港)		zh-HK				ChineseTraditional
繁体中文(台湾)		zh-TW				Chinese


可见苹果在iOS9上都做了什么鬼处理......

解决方法:

如果Application.systemLanguage返回的是chinese,直接通过C#调用ObjC函数获得当前iOS系统语言进行纠正

using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;

public class ComManager
{
	[DllImport("__Internal")]
	// ios手机的当前语言 "en"、“zh"、“zh-Hans"、"zh-Hant"
	private static extern string CurIOSLang();

	/**
		获得校正后的系统语言
		因为ios9调整了系统语言,简体中文和繁体中文在ios9上Application.systemLanguage获取的值都是Chinese
		无法区分简体中文和繁体中文

		ios 7
		简体				zh-Hans
		繁体				zh-Hant

		ios 8.1
		简体中文			zh-Hans				ChineseSimplified
		繁体中文(香港)		zh-HK				ChineseTraditional
		繁体中文(台湾)		zh-Hant				ChineseTraditional

		ios 9.1
		简体中文			zh-Hans-CN			Chinese
		繁体中文(香港)		zh-HK				ChineseTraditional
		繁体中文(台湾)		zh-TW				Chinese
	**/
	public static SystemLanguage GetSystemLanguage()
	{
		SystemLanguage lang = Application.systemLanguage;
		if (Application.platform == RuntimePlatform.IPhonePlayer)
		{
			if (lang == SystemLanguage.Chinese) {
				string name = CurIOSLang();
				if (name.StartsWith("zh-Hans")) {
					return SystemLanguage.ChineseSimplified;
				}

				return SystemLanguage.ChineseTraditional;
			}
		}

		return lang;
	}
}


相关资料:

Unity的C#和ObjC数据交互 /article/3589231.html

iOS获得当前系统语言 /article/3589234.html

【Unity语言国际化】多语言缩写对应表 /article/3589214.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: