Android 多种情况下语言本地化

Android中的本地化又叫国际化主要设计一种适应于多种语言的程序过程。下面我们来了解一下两种不同情况下

的本地化。

 一.程序中实现本地化

首先介绍一下文件命名在Android工程的res目录下,通过定义特殊的文件夹名称就可以实现,比如我们的程序兼容 简体中文、日文、英文、法文和德文,常规的字符strings.xml保存的目录在values文件夹中,这里我们就需要定义 values-zh-rCN、values-ja、values、values-fr和values-de。

上面图所示命名,这里我就创建了一个简体的中文的本地化语言。系统默认情况下是使用 values的strings.xml内容的。

下面我们看下strings.xml内容方便理解:

上图显示的是系统的中文语言情况下的本地意思。

<string name="date_ago">ago</string><string name="date_after">after</string><string name="date_day">days</string><string name="date_month">months</string><string name="date_year">years</string><string name="date_minute">minutes</string><string name="date_1st">st quarter</string><string name="date_2nd">nd quarter</string><string name="date_3rd">rd quarter</string><string name="date_4th">th quarter</string><string name="date_hour">hours</string>

这个就是系统默认的values的string.xml的本地语言内容。我这里默认的是英语。

看了上面的图我想你应该知道如何创建这个文件了吧!下面我们来谈谈如何得到这个本地化的资源:

 Resources resources=context.getResources();String quarter=resources.getString(R.string.date_minute);Log.e("英语语言本地化","="+quarter);

这个是英文情况下的语言输出,你也可以对照前面我的本地化语言内容。下面我们看下输出:

下面看中文情况下的输出:

对了你只要改变你的测试机的本地语言就可以输出和我一样了。

二.架包下实现本地化

架包下实现本地化主要是靠ResourceBundle这个类说的简单点,这个类的作用就是读取资源属性文件(propertie
s),然后根据.properties文件的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定),然
后获取相应的properties文件的内容。
使用这个类,要注意的一点是,这个properties文件的名字是有规范的:一般的命名规范是: 自定义名_语言代码_
国别代码.properties,
如果是默认的,直接写为:自定义名.properties
比如:
myres_en_US.properties
myres_zh_CN.properties
myres.properties
 
当在中文操作系统下,如果myres_zh_CN.properties、myres.properties两个文件都存在,则优先会使用myres_zh_CN.properties,当myres_zh_CN.properties不存在时候,会使用默认的myres.properties。   
下面看下文件名:
放到src的根目录下面(必须这样,或者你放到自己配置的calsspath下面
     默认下的local.properties本地资源内容:
date_ago=ago
date_after=after
date_day=days
date_month=months
date_year=years
date_minute=minutes
date_1st=st quarter
date_2nd=nd quarter
date_3rd=rd quarter
date_4th=th quarter
date_hour=hours
本地语言在中文的情况下资源:
date_ago=\u524d
date_after=\u540e
date_day=\u5929
date_month=\u6708
date_year=\u5e74
date_minute=\u5206
date_1st=\u5b63\u5ea6
date_2nd=\u5b63\u5ea6
date_3rd=\u5b63\u5ea6
date_4th=\u5b63\u5ea6
date_hour=\u5c0f\u65f6

这里你可能会问了为什么用unix编码??

下面我介绍一下:
资源文件都必须是ISO-8859-1编码,因此,对于所有非西方语系的处理,都必须先将之转换为Java Unicode Escape格式。如果你打中文的话,那就是乱码了。不知道如何对应转码的就用这个网站:

http://javawind.net/tools/native2ascii.jsp?action=transform

最后我们来介绍一下如何代码实现:

<span style="white-space:pre"> </span>Locale locale=Locale.getDefault();//这个对象表示了特定的地理ResourceBundle bundle=ResourceBundle.getBundle("local", locale);String dataSize = bundle.getString("date_ago");

这个dataSize就是我们想要的结果,具体我就不打印了。希望这个对大家的学习有帮助。

Java实现多种情况下语言本地化相关推荐

  1. 博图SCL编程——多种情况下的开关阀控制

    博图Tia Portal学习教程目录 设备介绍 我们以普通电动开关阀为例,一般至少会有开启.关闭.开启到位反馈.关闭到位反馈4个信号,如下图. 也有一些会更加丰富一点,例如这款西门子的电动风阀执行器, ...

  2. 【二分法】多种情况下的边界条件,区间选择汇总,小结

    1 二分法 参考: <算法通关之路> labuladong的算法小抄 1.1 二分查找 二分查找又称折半搜索算法,狭义来讲,二分查找是一种在有序数组查找某一特定元素的搜索算法:广义来讲,将 ...

  3. 博图——多种情况下的开关阀控制

    设备介绍 我们以普通电动开关阀为例,一般至少会有开启.关闭.开启到位反馈.关闭到位反馈4个信号,如下图. 也有一些会更加丰富一点,例如这款西门子的电动风阀执行器,除了正常的正反转和开/关到位信号,还有 ...

  4. 无源码情况下动态调试混淆的java程序

    逆向工程JAVA通常是非常简单的,因为优秀的JAVA二进制反编译器已经存在多年.类似于jd-gui工具和恢复java二进制文件源代码功能也做的非常出色的.在这种情况下我们需要动态调试java反编译ja ...

  5. java异步处理_SpringBoot异步开发之异步请求,在高并发的情况下,提高性能

    何为异步请求 在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理.如果一个请求需要进行IO操作,比如 ...

  6. java 抽象类与接口区别是什么_JAVA中抽象类与接口的区别,分别在什么情况下使用它们...

    在网上看到很多人问关于"抽象类与接口的区别",因此本人想通过自己多年对JAVA开发的经验来总结一下抽象类与接口的区别以及分别在什么情况下使用它们. 在Java语言中, abstra ...

  7. Java 7:在不丢失数据的情况下关闭NIO.2文件通道

    关闭异步文件通道可能非常困难. 如果您将I / O任务提交到异步通道,则需要确保正确执行了任务. 实际上,出于多种原因,这对于异步通道可能是一个棘手的要求. 默认的通道组使用守护进程线程作为工作线程, ...

  8. 学会java足够开发app吗_请问如何两个月内在不懂java 的情况下学会开发app?

    泻药 问题让我有点恍惚: 1.首先Java不是开发APP的唯一语言,Android可以用Java开发,iOS用的是OC或者Swift. 2.开发app的方法不止原生开发这一种,有混合开发(即原生+we ...

  9. java在gc正常工作的情况下_Java GC的工作原理

    一 ,GC的概要: JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在 Java 虚拟机启动时创建,非堆内存(Non-heap Memory)是在JVM堆之外的内存. 简单来说 ...

最新文章

  1. C语言memset函数详解(Linux下和windows下的差异)
  2. 黄聪:百度知道中对HTML字符实体、字符编号,开头字符的使用
  3. Vue3.0 组合式 API 分析与实践
  4. 【渝粤教育】国家开放大学2019年春季 1260软件工程 参考试题
  5. 从零实现Vue的组件库(零)- 基本结构以及构建工具
  6. ubuntu15.04安装wps-office的64位版
  7. Win10+caffe+CUDA9.1+vs2013+Matlab2018b+GPU环境,跑通faster_rcnn-master
  8. 安装无线网卡后,显示网络电缆被拔出?
  9. 解决vscode下载很慢的问题
  10. 什么是Pagerank?Pagerank算法介绍与计算公式
  11. PPT计时软件(可手动、可自动,支持OFFICE、WPS)
  12. HarmonyOS APP 开发入门
  13. 微信小说小程序源码-附带采集
  14. 这个超级好哎 vector 容器的 怕失效
  15. xlwings设置单元格格式为文本-改正身份证显示问题+excel单元格设置为文本为何还要双击
  16. java判断南北纬度的分界线_中国地理之南北分界线标志园,就在江苏淮安,是南是北一看便知...
  17. KNIME的数据库连接
  18. 2020年数学建模国赛C题完整代码下载链接处
  19. 传奇服务器需要什么配置?传奇服务器租用价格表
  20. mysql5.7 树遍历_Mysql5.7 存储过程 遍历select结果集并进行其他操作

热门文章

  1. lorawan在嵌入式系统中的实现--节点端(一)--SX1278介绍
  2. 蓝牙最新版本6.0_手机蓝牙连接汽车放歌。放30秒就没声音了是什么坏了?
  3. 新款任天堂Switch《游戏机专业投屏充电底座带网口方案》LDR6023B+AX88179
  4. maching learning入门(三)
  5. 佳能Canon imageRUNNER ADVANCE C5535 驱动
  6. 2013汇总计算 广联达gcl_GCL2013广联达
  7. Linux安装JDK8详细图文教程
  8. 输出每行坐标的的c语言算法,C语言输出空心菱形的实现
  9. Vidmore Video Converter for mac(Mac视频转换器)
  10. Spring-Web(一) RestTemplate使用与源码浅析