游戏发布,语言本地化需要繁体中文和简体中文

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

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

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

原因分析:

语言            iOS返回语言            Application.systemLanguage

ios
简体中文 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;
}
}

有朋友问上面生命的的CurIOSLang函数怎么来的,是在Objective-C中定义好的,C#中声明引用,具体可以看文章最后的Unity的C#和ObjC数据交互

定义一个.mm文件,内容如下:

 extern char* cStringCopy(const char* string);

 extern "C"
{
// ios手机的当前语言 "en"、“zh"、“zh-Hans"、"zh-Hant"
const char* CurIOSLang()
{
NSArray *languages = [NSLocale preferredLanguages];
NSString *currentLanguage = [languages objectAtIndex:];
return cStringCopy([currentLanguage UTF8String]);
}
}

【Unity3D游戏开发】Application.systemLanguage无法区分简体中文和繁体中文 (二六)的更多相关文章

  1. 【Unity3D游戏开发】基础知识之Tags和Layers (三二)[转]

    Tags和Layers分别表示是Unity引擎里面的标签和层,他们都是用来对GameObject进行标识的属性,Tags常用于单个GameObject,Layers常用于一组的GameObject.添 ...

  2. [Unity3D]Unity3D游戏开发之飞机大战项目解说

    大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...

  3. [Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果

    大家好,我是秦元培.欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以立即抓紧时间来这里更新博客.博主本来计划在Unity3 ...

  4. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  5. 从一点儿不会开始——Unity3D游戏开发学习(一)

    一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...

  6. 从零开始Unity3D游戏开发【1 常用快捷键】

    Unity3D近两年起来的很快.自己对游戏一直很有兴趣,所以想找机会转游戏开发.目的之一是赚钱,目的之二是完成自己的小梦想. Unity3D的人才还是紧缺的,招聘网站上各个公司真敢拿着钱砸.让.NET ...

  7. Unity3D游戏开发之连续滚动背景

    Unity3D游戏开发之连续滚动背景 原文  http://blog.csdn.net/qinyuanpei/article/details/22983421 在诸如天天跑酷等2D游戏中,因为游戏须要 ...

  8. Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

    提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...

  9. [Unity3D]Unity3D游戏开发《反对》说到游戏(上)——目标跟踪

    朋友,大家好.我是秦培,欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 首先博主要自我反省,过了这么久才来更新博客,这段时间主要是在忙着写期末的作业,所以博主基本上没 ...

随机推荐

  1. PAT乙级 1018. 锤子剪刀布 (20)

    1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...

  2. Server2003系统上的内置服务器设置某类IP无法访问问题

    最近测试过程中遇到了一个很奇怪的现象,把服务器(测试产品)部署在Server2003系统的外网A上,把客户端(测试产品)部署在内网B,网络A,B用路由器相连,设置网络A为200.1.1.255,发现客 ...

  3. 【RoR win32】安装RoR

    在配置好ruby的win 7 命令行下运行, gem install rails 安装成功之后会收到提示,下面就可以用rails建立项目了. 为了提高“rails new”时“bundle insta ...

  4. IOC依赖注入简单实例

    转自:http://hi.baidu.com/xyz136299110/item/a32be4269e9d0c55c38d59e6 相信大家看过相当多的IOC依赖注入的例子. 但大家在没有明白原理的情 ...

  5. Android 二维码扫描框 加四个角及中间横线自动下滑

    红色为加四个角  黄色为扫描线自动下滑 /* * Copyright (C) 2008 ZXing authors * * Licensed under the Apache License, Ver ...

  6. android小功能:checkbox使用自己的背景点击切换背景

    xiazai_checkbox.xml <?xml version="1.0" encoding="utf-8"?> <selector xm ...

  7. Google Map: JavaScript API RefererNotAllowedMapError

    visite https://console.developers.google.com/apis/credentials and select the project you use. http:/ ...

  8. android 中通过代码创建控件

    package bvb.de.openadbwireless.circle; import android.annotation.TargetApi; import android.app.Activ ...

  9. andoid下的股票行情开发

    1.信息类 public class SinaStockInfo { /** * Sina股票数据接口 以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据 * 接 ...

  10. 不错的linux下通用的java程序启动脚本(转载)

    转自:http://www.cnblogs.com/langtianya/p/4164151.html 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包 ...