Android的国际化与本地化

简介: Android的国际化与本地化

internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n。 一般说明一个地区的语言时,用 语言_地区的形式,如 zh_CN, zh_TW.

  各国语言缩写 https://www.loc.gov/standards/iso639-2/php/code_list.php

  国家和地区简写 https://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html

  android 对i18n和L10n提供了非常好的支持。android没有专门的API来提供国际化,而是通过对不同resource的命名来达到国际化,同时这种命名方法还可用于对硬件的区分,如不同的新视屏用不同的图片。

  在eclipse的工程中,res目录有默认几项resource,如 drawable, layout,menu,values

  其余还有

  res/anim/ 用来放置动画

  res/xml/ 用来放置style theme等xml定义。

  res/raw/ 用来放置data数据

  我们引用这些resource时候,在java代码中是通过R.resource_type.resource_name的方式来使用,如 setTitle(R.string.main_title);

  还有一种是在xml中直接引用,如

< p>
  android:id ="@+id/hello_view"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/hello"
  />

  引用了名字为hello的字符串。当程序运行时,通过Resource类会装载strings.xml中名字为hello的字符串。但Resource类装载 strings.xml时会根据当前手机的设置来选择装载哪一个xml文件。这些手机设置有

  MCC and MNC, Language and region, Screen dimensions, Wider/taller screens, Screen orientation,Screen pixel density, Touchscreen type, SDK version,也就是说通过手机当前语言区域,屏幕的大小,屏幕像素,以及当前android sdk的版本号来选择。通过把strings.xml放置在以这些选项命名的文件夹下,Resource类就能正确的装载所需的字符串。

  我们以不同的local和region来做一次国际化,首先values表示默认的字符串,也即当Resource找不到匹配的资源时,默认使用 values文件夹下的资源,其余 drawable等资源也是同样的。

  当命名这些文件夹的名字时,不同的选项用-分开,而且次序必须和 andorid 文档中table 2 的次序一样

文件夹的命名必须都是小写字符,否则在一些大小敏感的文件系统中可能会出错,如果你用大写,eclipse的adt都会自动报错。小写字母r表示region的意思。 上图命名了中文简体和繁体以及默认选项,在strings.xml中除了字符串本身不一样,xml中定义该字符串的名字,id都是一样的。所以在代码或者xml中引用该资源时,只要引用名字即可或者id即可,程序启动时候Resource类回到相应的目录下去寻找正确的字符串(资源)

  通过在Settings中设置locale& Text 我们可以让Resource类来选择相应文件夹下的内容,

  选择英语时候结果如下,也即选择了 values下的strings.xml

  选择 chinese(china)时,也即选了 values-zh-rcn目录下的strings.xml

  选择 chinese(taiwan)时,也即选了 values-zh-rtw目录下的strings.xml

  其余手机的选项,像屏幕的像素等都可以建立相应得目录。

相关文章
|
自然语言处理 Android开发 图形学
修行Android Studio技巧到出神入化,快速涨薪-【国际化】、【JPG/PNG转WebP】、【代码折叠】篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
119 0
|
Android开发
【Android 安装包优化】资源打包配置 ( resources.arsc 资源映射表 | 配置国际化资源 )
【Android 安装包优化】资源打包配置 ( resources.arsc 资源映射表 | 配置国际化资源 )
301 0
【Android 安装包优化】资源打包配置 ( resources.arsc 资源映射表 | 配置国际化资源 )
|
Android开发
Android 本地化翻译插件,一键将你的 strings.xml 翻译为最多 104 种语言,告别手动复制黏贴
Android 本地化翻译插件,一键将你的 strings.xml 翻译为最多 104 种语言,告别手动复制黏贴
|
XML Android开发 数据格式
Android中的资源与国际化!
  今天给大家分享一下Android中的资源与国际化的问题,通常我们新建一个Android工程,目录结构如下图所示:   我们主要看一下layout与values目录,layout里的xml文件的我们应用使用布局的文件,values里的sring.xml是用来存放文字资源,一个key对应一个value值。
783 0
|
机器学习/深度学习 Android开发 索引
Android国际化:资源+初始化+系统适配
资源匹配 字符资源values、布局资源layout、图片资源drawable,都可以在文件夹后添加国家后缀,放对应语言的资源。则系统会根据设置的语言自动去找对应语言的资源,如果没有设置的系统语言资源,则会拿去拿默认资源(values、layout、drawable文件夹下)。
|
Android开发
Android 国际化
1. 应用内设置语言 @Override protected void onCreate(Bundle savedInstanceState) { super.
867 0
|
API Android开发 网络协议
Android 8.0 新特性之语言区国际化和隐私性
语言区域和国际化 Android 7.0引入了能指定默认类别语言区域的概念,某些API在使用默认的DISPLAY类别语言区域时,仍然使用的是不带参数Locale.getDefault()函数。
1360 0
|
Android开发 UED
Android 国际化
由于公司的项目是投放 google play store , 所以要做国际化。国际化遇到的两个大问题 字符串国际化 布局样式国际化   一:字符串国际化        解决这个问题很简单,在res目录下放不同国家的value文件夹,在相应文件夹里的 strings.xml 文件放对应的语言即可。
1034 0
|
Android开发 自然语言处理 数据格式
2.7、Android Studio使用翻译编辑器本地化UI
如果你的应用支持多语言,你需要合理的管理你的翻译的string资源。Android Studio 提供了翻译编辑器来使查看和管理翻译的资源更加容易。
802 0