【Unity3D游戏开发】Application.systemLanguage无法区分简体中文和繁体中文 (二六)
游戏发布,语言本地化需要繁体中文和简体中文
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无法区分简体中文和繁体中文 (二六)的更多相关文章
- 【Unity3D游戏开发】基础知识之Tags和Layers (三二)[转]
Tags和Layers分别表示是Unity引擎里面的标签和层,他们都是用来对GameObject进行标识的属性,Tags常用于单个GameObject,Layers常用于一组的GameObject.添 ...
- [Unity3D]Unity3D游戏开发之飞机大战项目解说
大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...
- [Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果
大家好,我是秦元培.欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以立即抓紧时间来这里更新博客.博主本来计划在Unity3 ...
- Unity3D游戏开发初探—2.初步了解3D模型基础
一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...
- 从一点儿不会开始——Unity3D游戏开发学习(一)
一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...
- 从零开始Unity3D游戏开发【1 常用快捷键】
Unity3D近两年起来的很快.自己对游戏一直很有兴趣,所以想找机会转游戏开发.目的之一是赚钱,目的之二是完成自己的小梦想. Unity3D的人才还是紧缺的,招聘网站上各个公司真敢拿着钱砸.让.NET ...
- Unity3D游戏开发之连续滚动背景
Unity3D游戏开发之连续滚动背景 原文 http://blog.csdn.net/qinyuanpei/article/details/22983421 在诸如天天跑酷等2D游戏中,因为游戏须要 ...
- Unity3D游戏开发从零单排(四) - 制作一个iOS游戏
提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...
- [Unity3D]Unity3D游戏开发《反对》说到游戏(上)——目标跟踪
朋友,大家好.我是秦培,欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 首先博主要自我反省,过了这么久才来更新博客,这段时间主要是在忙着写期末的作业,所以博主基本上没 ...
随机推荐
- JSP-01-搭建Web应用环境
一.搭建Web应用环境 Tomcat 下载会有两种版本,安装版和解压版,这里以解压版为例 Web服务: 是实现“基于Web无缝集成”的目标而提出的全新概念,希望通过Web服务能够实现不同的系统之间的相 ...
- linux下奇怪的“重名”文件
是这样的,文件创建是通过远程命令来进行的. 就是在表单中输入命令,然后使用php的system来执行. 表单使用的是多行文本输入框. 可能某次使用 类似touch这种命令创建文件的时候多按了一次回车, ...
- html5,表格与框架综合布局
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 【py分析】
pyQuery pyQuery 是 jQuery 在 python 中的实现,能够以 jQuery 的语法来操作解析 HTML 文档,十分方便.使用前需要安装,easy_install pyquery ...
- Android SDK Manager更新报错
错误log: Fetching https://dl-ssl.google.com/android/repository/addons_list-.xml Fetched Add-ons List s ...
- SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划
我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...
- Openstack的用户登录流程
openstack的用户登录,需要获得集中权限. token 只需要提供用户名和密码即可获得,接口 http://public_url/tokens method:POST body:{"a ...
- viewpager viewpager+fragment
内页面 不单写页面 viewpager+布局 import java.util.ArrayList; import java.util.List; import android.os.Bundl ...
- 在CentOS 6 32/64 上安装 PPTP 方式 VPN 服务
网上有很多步骤, 讲了很多步骤,废话, 其实不如直接看代码, 而且也能直接运行,快速安装: rm -f /etc/pptpd.conf rm -f /etc/ppp arch=`uname -m` # ...
- 苹果系统直接读写 ntfs 磁盘
苹果系统对 ntfs 能读,但不能写. 方案1:修改 fstab 法 ======================================== 读写支持.在使用本教学文章之前,请先确定你没有安 ...