Unity Android 之 获取系统语言的二种方式(中文区分简体、繁体、日文)

目录

Unity Android 之 获取系统语言的二种方式(中文区分简体、繁体、日文)

一、简单介绍

二、实现原理

三、注意事项

四、效果预览

五、实现步骤

六、关键代码

七、Android 代码附注:

八、android资源文件夹的写法规则: 语言缩写-国家地区缩写 语言缩写


一、简单介绍

整理一些在Unity上可以方便调用 Android 方法的一些接口脚本,便于后期开发使用。

本文介绍在Unity,调用Android的接口,获得当前系统的语言的方法,仅供参考。

二、实现原理

1、Unity 调用 Android 接口 Locale ,然后对应的获取相应的语言信息

2、local 获得方式的不同,解析语言的方式也就不同

三、注意事项

1、有一种方法,Android API 使用要求 21 或以上,所以打包 Android Apk 建议 Minimun API Level  为 21 及以上

四、效果预览

五、实现步骤

1、打开Unity ,新建一个空工程

2、在场景中添加脚本,GetSystemLanguageWrapper 编写代码获取系统

3、在工程中挂载测试脚本

4、运行场景,(打包到手机设备上运行)效果如上

六、关键代码

1、GetSystemLanguageWrapper.cs


using UnityEngine;/// <summary>
/// 获得系统设置语言的方法
/// </summary>
public class GetSystemLanguageWrapper
{// Unity Android 上下文private static AndroidJavaObject _unityContext;public static AndroidJavaObject UnityContext {get {if (_unityContext ==null){AndroidJavaClass unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");_unityContext = unityClass.GetStatic<AndroidJavaObject>("currentActivity");}return _unityContext;}}/// <summary>/// 获取系统语言/// 这种方法目前:不能区分中文简体繁体/// </summary>/// <returns>Chinese/English</returns>public static string GetSystemLanguage(){string systemLanguage;if (Application.platform == RuntimePlatform.Android){AndroidJavaClass localeClass = new AndroidJavaClass("java/util/Locale");AndroidJavaObject defaultLocale = localeClass.CallStatic<AndroidJavaObject>("getDefault");AndroidJavaObject usLocale = localeClass.GetStatic<AndroidJavaObject>("US");systemLanguage = defaultLocale.Call<string>("getDisplayLanguage", usLocale);}else{systemLanguage = Application.systemLanguage.ToString();}return systemLanguage;}/// <summary>/// 区分中文的简体繁体/// 情况分为2种:/// 1、///  String ZH = "zh";/// 中文简体/// String CN_HANS = "zh-Hans";/// 中文繁体/// String CN_HANT = "zh-Hant";/// 2、/// locale.toLanguageTag()/// 中国 zh-Hans-CN/// 台湾 zh-Hans-TW/// 澳门 zh-Hans-MO/// 香港 zh-Hans-HK/// </summary>/// <returns></returns>public static string GetSystemLanguage_STCN(){string systemLanguage;if (Application.platform == RuntimePlatform.Android){AndroidJavaObject locale = UnityContext.Call<AndroidJavaObject>("getResources").Call<AndroidJavaObject>("getConfiguration").Get<AndroidJavaObject>("locale");if (locale.Call<string>("getLanguage").Equals("zh")){if (locale.Call<string>("toLanguageTag").Equals("zh-Hans")){systemLanguage = "简体中文 " + locale.Call<string>("toLanguageTag");}else if (locale.Call<string>("toLanguageTag").Equals("zh-Hant")){systemLanguage = "繁体中文 " + locale.Call<string>("toLanguageTag");}else{ // 第二种简繁中文情况switch (locale.Call<string>("getCountry")){case "CN":systemLanguage = "简体中文 " + locale.Call<string>("toLanguageTag");break;default:systemLanguage = "繁体中文 " + locale.Call<string>("toLanguageTag");break;}}}else if (locale.Call<string>("getLanguage").Equals("ko")|| locale.Call<string>("getLanguage").StartsWith("ja")) {systemLanguage = "日文" + locale.Call<string>("toLanguageTag");}else {systemLanguage = "非中文 " + locale.Call<string>("toLanguageTag");}}else{systemLanguage = Application.systemLanguage.ToString();}return systemLanguage;}
}

2、TestGetSystemLanguageWrapper.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestGetSystemLanguageWrapper : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){Debug.Log(GetSystemLanguageWrapper.GetSystemLanguage());Debug.Log(GetSystemLanguageWrapper.GetSystemLanguage_STCN());}}

七、Android 代码附注:

package com.example.getsystemlanguage;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;import java.util.Locale;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);GeyLanguage();}void GeyLanguage(){Locale locale = getResources().getConfiguration().locale;// 获取当前系统语言String ZH = "zh";//中文简体String CN_HANS = "zh-Hans";//中文繁体String CN_HANT = "zh-Hant";//如果是中文if (locale.getLanguage().equals(ZH)) {//locale.toLanguageTag()//中国 zh-Hans-CN//台湾 zh-Hans-TW//澳门 zh-Hans-MO//香港 zh-Hans-HKif (locale.toLanguageTag().contains(CN_HANS)) {//简体Toast.makeText(this,"当前手机语言环境是 简体",Toast.LENGTH_LONG).show();} else if (locale.toLanguageTag().contains(CN_HANT)){//繁体Toast.makeText(this,"当前手机语言环境是 繁体",Toast.LENGTH_LONG).show();} else {switch (locale.getCountry()) {case "CN"://简体Toast.makeText(this,"当前手机语言环境是 简体",Toast.LENGTH_LONG).show();break;default:Toast.makeText(this,"当前手机语言环境是 繁体",Toast.LENGTH_LONG).show();break;}}} else {Toast.makeText(this,"当前手机语言环境是 不是中文",Toast.LENGTH_LONG).show();}}
}

八、android资源文件夹的写法规则: 语言缩写-国家地区缩写 语言缩写

android资源文件夹的写法规则: 语言缩写-国家地区缩写 语言缩写藏语:bo_CN en英文 en_US英文 (美国) ar阿拉伯文 ar_AE阿拉伯文 (阿拉伯联合酋长国) ar_BH阿拉伯文 (巴林) ar_DZ阿拉伯文 (阿尔及利亚) ar_EG阿拉伯文 (埃及) ar_IQ阿拉伯文 (伊拉克) ar_JO阿拉伯文 (约旦) ar_KW阿拉伯文 (科威特) ar_LB阿拉伯文 (黎巴嫩) ar_LY阿拉伯文 (利比亚) ar_MA阿拉伯文 (摩洛哥) ar_OM阿拉伯文 (阿曼) ar_QA阿拉伯文 (卡塔尔) ar_SA阿拉伯文 (沙特阿拉伯) ar_SD阿拉伯文 (苏丹) ar_SY阿拉伯文 (叙利亚) ar_TN阿拉伯文 (突尼斯) ar_YE阿拉伯文 (也门) be白俄罗斯文 be_BY白俄罗斯文 (白俄罗斯) bg保加利亚文 bg_BG保加利亚文 (保加利亚) ca加泰罗尼亚文 ca_ES加泰罗尼亚文 (西班牙) ca_ES_EURO加泰罗尼亚文 (西班牙,Euro) cs捷克文 cs_CZ捷克文 (捷克共和国) da丹麦文 da_DK丹麦文 (丹麦) de德文 de_AT德文 (奥地利) de_AT_EURO德文 (奥地利,Euro) de_CH德文 (瑞士) de_DE德文 (德国) de_DE_EURO德文 (德国,Euro) de_LU德文 (卢森堡) de_LU_EURO德文 (卢森堡,Euro) el希腊文 el_GR 希腊文 (希腊) en_AU英文 (澳大利亚) en_CA 英文(加拿大) en_GB 英文 (英国) en_IE英文 (爱尔兰) en_IE_EURO英文 (爱尔兰,Euro) en_NZ英文 (新西兰) en_ZA英文 (南非) es 西班牙文 es_BO西班牙文 (玻利维亚) es_AR西班牙文 (阿根廷) es_CL西班牙文 (智利) es_CO西班牙文 (哥伦比亚) es_CR西班牙文 (哥斯达黎加) es_DO西班牙文 (多米尼加共和国) es_EC西班牙文 (厄瓜多尔) es_ES西班牙文 (西班牙) es_ES_EURO西班牙文 (西班牙,Euro) es_GT西班牙文 (危地马拉) es_HN西班牙文 (洪都拉斯) es_MX西班牙文 (墨西哥) es_NI西班牙文 (尼加拉瓜) et爱沙尼亚文 es_PA西班牙文 (巴拿马) es_PE西班牙文 (秘鲁) es_PR西班牙文 (波多黎哥) es_PY西班牙文 (巴拉圭) es_SV西班牙文 (萨尔瓦多) es_UY西班牙文 (乌拉圭) es_VE西班牙文 (委内瑞拉) et_EE爱沙尼亚文 (爱沙尼亚) fi芬兰文 fi_FI芬兰文 (芬兰) fi_FI_EURO芬兰文 (芬兰,Euro) fr法文 fr_BE 法文(比利时) fr_BE_EURO法文 (比利时,Euro) fr_CA法文 (加拿大) fr_CH法文 (瑞士) fr_FR法文 (法国) fr_FR_EURO法文 (法国,Euro) fr_LU法文 (卢森堡) fr_LU_EURO法文 (卢森堡,Euro) hr克罗地亚文 hr_HR克罗地亚文 (克罗地亚) hu匈牙利文 hu_HU匈牙利文 (匈牙利) is冰岛文 is_IS冰岛文 (冰岛) it意大利文 it_CH意大利文 (瑞士) it_IT意大利文 (意大利) it_IT_EURO意大利文 (意大利,Euro) iw希伯来文 iw_IL希伯来文 (以色列) ja日文 ja_JP日文 (日本) ko朝鲜文 ko_KR朝鲜文 (南朝鲜) lt立陶宛文 lt_LT立陶宛文 (立陶宛) lv拉托维亚文(列托) lv_LV拉托维亚文(列托) (拉脱维亚) mk马其顿文 mk_MK马其顿文 (马其顿王国) nl荷兰文 nl_BE荷兰文 (比利时) nl_BE_EURO荷兰文 (比利时,Euro) nl_NL荷兰文 (荷兰) nl_NL_EURO荷兰文 (荷兰,Euro) no挪威文 no_NO挪威文 (挪威) no_NO_NY挪威文 (挪威,Nynorsk) pl波兰文 pl_PL波兰文 (波兰) pt葡萄牙文 pt_BR葡萄牙文 (巴西) pt_PT葡萄牙文 (葡萄牙) pt_PT_EURO葡萄牙文 (葡萄牙,Euro) ro罗马尼亚文 ro_RO 罗马尼亚文 (罗马尼亚) ru俄文 ru_RU 俄文 (俄罗斯) sh塞波尼斯-克罗地亚文 sh_YU塞波尼斯-克罗地亚文 (南斯拉夫) sk斯洛伐克文 sk_SK斯洛伐克文 (斯洛伐克) sl斯洛文尼亚文 sl_SI斯洛文尼亚文 (斯洛文尼亚) sq阿尔巴尼亚文 sq_AL阿尔巴尼亚文 (阿尔巴尼亚) sr塞尔维亚文 sr_YU塞尔维亚文 (南斯拉夫) sv瑞典文 sv_SE瑞典文 (瑞典) th泰文 th_TH泰文 (泰国) tr土耳其文 tr_TR土耳其文 (土耳其) uk乌克兰文 uk_UA乌克兰文 (乌克兰) zh中文 zh_CN中文 (中国) zh_HK中文 (香港) zh_TW中文 (台湾)

Unity Android 之 获取系统语言(手机设备设置的系统语言)的二种方式(中文区分简体、繁体、日文)相关推荐

  1. Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法)

    Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法) 目录 Unity Android 之 应用打开手机的指定网 ...

  2. android app 手机号码,android 安卓APP获取手机设备信息和手机号码的代码示例 .

    下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个andro ...

  3. android 设置系统铃声设置在哪里,安卓手机自定义设置的系统铃声通用方法

    安卓手机自定义设置的系统铃声通用方法 安卓手机自定义设置的系统铃声通用方法 很多使用安卓系统手机的新手,不知道怎么设置自己下载的铃声,以前发过一篇老方法,但是不怎么完美.现在给大家分享一种新方法.如下 ...

  4. linux设置开机自启服务,linux设置服务开机自启动的三种方式

    linux设置服务开机自启动的三种方式 这里介绍一下linux开机自动启动的几种方法,共计3种,大家可以借鉴一下!经验里面以centos 5.3系统为例! 方法1:.利用ntsysv命令进行设置,利用 ...

  5. Easyui combobox设置值和文本的几种方式和问题

    Easyui combobox设置值和文本的几种方式和问题 1.在Easyui 帮助文档中,我们可以看到combobox是继承自combo,combo中有两上方法:setText.setValue. ...

  6. SpringSecurity用户认证设置用户名和密码的三种方式

    文章目录 SpringSecurity用户认证设置用户名和密码的三种方式 首先明白几个单词的意思: SpringSecurity默认的用户认证 1.通过配置文件进行用户认证 2.通过配置类进行用户认证 ...

  7. android 安卓APP获取手机设备信息和手机号码的代码示例

    下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个andro ...

  8. android app 手机号码,android 安卓APP获取手机设备信息和手机号码的代码示例

    下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个andro ...

  9. Android如何固定ip,手机怎么设置固定网关IP

    手机怎么设置固定网关IP 安卓手机设置固定IP地址方法1 首先找到手机的"设置"点击进入 然后找到"WLAN"点击进入 再找到准备连接的无线,点击无线名称进行自 ...

最新文章

  1. linux先运行后面指令,Linux基础命令(6)
  2. Android性能优化之渲染篇(一)
  3. PHP的异常处理异常捕获错误类
  4. C#微信公众号开发系列教程五(接收事件推送与消息排重)
  5. Django:ORM模型类,字段选项,Meta内部类,常见问题处理
  6. 问题:动态变换video标签source的src不起作用
  7. 游戏社交不足怎么办? 游戏发行中的社交化运营经验分享
  8. 汽车电子_EMC测试_RE试验整改
  9. java课程 教 学小结_Java私塾中级课程学习感受和小结3
  10. qt.qpa.plugin: Could not find the Qt platform plugin “xcb“ i
  11. 水电站计算机监控作用,计算机监控系统在水电站中的应用
  12. 网站机房:DDOS防火墙在企业机房中的应用介绍
  13. 如何启动联想计算机的休眠模式,如何设置休眠、待机、睡眠
  14. css background动态图片,CSS3 background-position定位背景图片动画效果
  15. 明翰英语教学系列之雅思写作篇V0.2(持续更新)
  16. Grad-CAM源码保姆级讲解(pytorch)
  17. 网络安全ctf比赛/学习资源整理,解题工具、比赛时间、解题思路、实战靶场、学习路线,推荐收藏!...
  18. pyqt win32发送QQ消息
  19. 吗咿呀嘿-用js来搞个简单的人脸识别
  20. (MATLAB)一元线性回归和多元线性回归

热门文章

  1. 软件测试需要学什么?
  2. 视频行业风云变幻 PPTV半年“功力”猛增
  3. 如何在iPhone上绘制出一个笑脸
  4. 分析网页 JavaScript Bundles 的几种方法
  5. 海空神佛的虚伪[注意]
  6. python 小说 云_小说python何时使用生成器
  7. javabean是什么?
  8. MADDPG:Multi-Agent Actor-Critic for Mixed Cooperative MPE:Multi-Agent Particle Environment
  9. 爬取大众点评南京美食
  10. 稻霄的故事-金酒壶酒坊