当前位置: 首页 > news >正文

Android 多语言

0. Locale方法

Locale locale = LanguageUtils.getLocale("zh-Hans-CN");

执行如下方法返回字符串如下:

方法

英文下执行

中文下执行

备注

getLanguage()zhzh
getCountry()CNCN
getDisplayLanguage()zh中文
getDisplayCountry()CN中国
getDisplayName()zh (Hans,CN)中文 (简体中文,中国)
getISO3Language()zhozho传入不支持的字符串会发生Exception
getISO3Country()CHNCHN
getDisplayScript()Hans简体中文
getDisplayVariant()
getScript()HansHans
getVariant()
toLanguageTag()zh-Hans-CNzh-Hans-CN
toString()zh_CN_#Hanszh_CN_#Hans

1.数据库字段

Setting数据库字段:system_locales

Setting数据库取值:zh-Hans-CN 或者 zh-Hans-CN,en-US,chr-US,th-TH,dje-NE

说明:为一个值是代表当前值,多个值的时候如下如所示,代表可选语言(当前添加了5种,第一个值为当前语言,还可以点击添加语言继续添加)

2.获取当前语言:

public static Locale getCurrentLocale() {

    try {

        Locale configLocale = ActivityManager.getService().getConfiguration().getLocales().get(0);

        return configLocale != null ? configLocale : Locale.getDefault();

    catch (RemoteException e) {

        return Locale.getDefault();

    }

}

3 获取支持的语言

配置:frameworks/base/core/res/res/values/locale_config.xml

String[] locales =LocalePicker.getSupportedLocales(context);

Locale locale = Locale.forLanguageTag(newlanguage);

4.更新语言

public static void setLanguage(String language) {

    Locale locale = Locale.forLanguageTag(language);

    LocalePicker.updateLocale(locale);

}

//下面的方法不要使用

public static void setLanguageTest(String language) {

    Locale locale = new Locale(language);

    LocalePicker.updateLocale(locale);

}

添加权限

<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

说明:

setLanguage("zh")       OK, 原生设置中显示中文
setLanguageTest("zh")   OK, 原生设置中显示中文
setLanguage("zh-CN")    OK, 原生设置中显示中文(中国)
setLanguageTest("zh-CN")   Failed, 原生设置中显示und
setLanguage("zh-Hans-CN") OK, 原生设置中显示简体中文(中国)
setLanguageTest("zh-Hans-CN")   Failed, 原生设置中显示und

5. 支持的语言配置

overlay/frameworks/base/core/res/res/values/locale_config.xml

<resources>

    <string-array translatable="false" name="supported_locales">

        <item>zh</item>

        <item>en</item>

        ....

    </string-array>

</resources>

makefile

PRODUCT_LOCALES := \

        zh \

        en

PRODUCT_LOCALES 用于编译时确定哪些语言资源会被打包到 APK 中, locale_config.xml 用于运行时确定应用支持的语言。

两个配置都对应着应用在不同阶段所支持的语言,但起作用的时机不同。

相关文章:

  • 揭秘C++ String容器:字符串操作的艺术
  • php正则中的i,m,s,x,e分别表示什么
  • 大数据信用报告查询有哪些作用?哪个平台更好?
  • Go微服务: Nacos的搭建和基础API的使用
  • 云计算-使用Java访问S3 (Accessing S3 using Java)
  • 爬虫案例-亚马逊反爬流程分析梳理(验证码突破)(x-amz-captcha)
  • C# 集合(三) —— Stack/BitArray类
  • 【C语言回顾】编译和链接
  • 云部署最简单python web
  • 【SpringBoot】SpringBoot中防止接口重复提交(单机环境和分布式环境)
  • sqlites数据库读取,仅适用于数据少的数据库查询【改进版】
  • RedisTemplateAPI:List
  • 经常碰到的20个等待事件
  • Android firebase消息推送集成 FCM消息处理
  • I.MX6ULL Linux C语言开发环境搭建(点灯实验)
  • Android组件 - 收藏集 - 掘金
  • bearychat的java client
  • es6--symbol
  • ES6语法详解(一)
  • Git的一些常用操作
  • Java Agent 学习笔记
  • Javascript基础之Array数组API
  • Javascript设计模式学习之Observer(观察者)模式
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • PermissionScope Swift4 兼容问题
  • rc-form之最单纯情况
  • SQLServer之索引简介
  • Zsh 开发指南(第十四篇 文件读写)
  • 番外篇1:在Windows环境下安装JDK
  • 基于axios的vue插件,让http请求更简单
  • 简析gRPC client 连接管理
  • 你不可错过的前端面试题(一)
  • 前端之Sass/Scss实战笔记
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 如何设计一个比特币钱包服务
  • 温故知新之javascript面向对象
  • 我从编程教室毕业
  • 学习JavaScript数据结构与算法 — 树
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (原創) 未来三学期想要修的课 (日記)
  • (转载)(官方)UE4--图像编程----着色器开发
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .Net的DataSet直接与SQL2005交互
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .Net语言中的StringBuilder:入门到精通
  • @Autowired注解的实现原理