Android应用的多语言支持的实现方法

软硬件环境

  1. Windows 10
  2. Android studio 2.3.2
  3. OTT BOx with android 5.1.1

前言

App开发测试完成后就面临着应用上架,除了国内的上架渠道,android阵营上架Google play我觉得是必不可少的。这样的话,中英文支持就成了必须的功能点了。本文就来实现这个功能。

设置不同语言的资源文件

如有必要,res文件夹下的像drawable、layout、values等都需要做不同语言的处理,这里仅以values为例

values-en和values-zh-rCN文件夹中的内容都一样values-en就是values-zh-rCN对应的英文翻译,如strings.xml文件内容如下

接下来就是如何使用对应资源,非常简答,以Toast为例

代码如下:

Toast.makeText(MainActivity.this, R.string.play_error, Toast.LENGTH_LONG).show();

系统当前的语言环境

这里仅处理中文、英文,如果还有其它语言,需要稍作修改

private boolean isZh() {
  Locale locale = getResources().getConfiguration().locale;
  String language = locale.getLanguage();
  if (language.endsWith("zh")) {
    return true;
  } else {
    return false;
  }
}

App内设置语言

//获取res资源对象
Resources resources = getResources();
//获取设置对象
Configuration config = resources.getConfiguration();
//获取屏幕参数:主要是分辨率,像素等
DisplayMetrics dm = resources.getDisplayMetrics();
//设置APP语言设置为英文
config.locale = Locale.ENGLISH;
//设置完以后要刷新Activity才能及时生效
resources.updateConfiguration(config, dm);

资源文件夹后缀

给出一个常用的语言文件夹命名列表,方便查询

中文(中国):values-zh-rCN
中文(台湾):values-zh-rTW
中文(香港):values-zh-rHK
英语(美国):values-en-rUS
英语(英国):values-en-rGB
英文(澳大利亚):values-en-rAU
英文(加拿大):values-en-rCA
英文(爱尔兰):values-en-rIE
英文(印度):values-en-rIN
英文(新西兰):values-en-rNZ
英文(新加坡):values-en-rSG
英文(南非):values-en-rZA
阿拉伯文(埃及):values-ar-rEG
阿拉伯文(以色列):values-ar-rIL
保加利亚文: values-bg-rBG
加泰罗尼亚文:values-ca-rES
捷克文:values-cs-rCZ
丹麦文:values-da-rDK
德文(奥地利):values-de-rAT
德文(瑞士):values-de-rCH
德文(德国):values-de-rDE
德文(列支敦士登):values-de-rLI
希腊文:values-el-rGR
西班牙文(西班牙):values-es-rES
西班牙文(美国):values-es-rUS
芬兰文(芬兰):values-fi-rFI
法文(比利时):values-fr-rBE
法文(加拿大):values-fr-rCA
法文(瑞士):values-fr-rCH
法文(法国):values-fr-rFR
希伯来文:values-iw-rIL
印地文:values-hi-rIN
克罗里亚文:values-hr-rHR
匈牙利文:values-hu-rHU
印度尼西亚文:values-in-rID
意大利文(瑞士):values-it-rCH
意大利文(意大利):values-it-rIT
日文:values-ja-rJP
韩文:values-ko-rKR
立陶宛文:valueslt-rLT
拉脱维亚文:values-lv-rLV
挪威博克马尔文:values-nb-rNO
荷兰文(比利时):values-nl-BE
荷兰文(荷兰):values-nl-rNL
波兰文:values-pl-rPL
葡萄牙文(巴西):values-pt-rBR
葡萄牙文(葡萄牙):values-pt-rPT
罗马尼亚文:values-ro-rRO
俄文:values-ru-rRU
斯洛伐克文:values-sk-rSK
斯洛文尼亚文:values-sl-rSI
塞尔维亚文:values-sr-rRS
瑞典文:values-sv-rSE
泰文:values-th-rTH
塔加洛语:values-tl-rPH
土耳其文:values--r-rTR
乌克兰文:values-uk-rUA
越南文:values-vi-rVN

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android 判断当前语言环境是否是中文环境

    话不多说,请看代码: public static boolean isZh(Context context) { Locale locale = context.getResources().getConfiguration().locale; String language = locale.getLanguage(); if (language.endsWith("zh")) return true; else return false; } PS: android判断当前系统用的

  • android动态设置app当前运行语言的方法

    android开发中有时候碰到切换语言的需求,这时候需要通过代码动态改变当前运行语言. package com.example.androidtest; import java.util.Locale; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.res.Configuration; import android.conte

  • Android实现app应用多语言切换功能

    最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成,下次重新打开 App ,也是用户设置的语言. 2. 实现步骤  1). 添加多语言文件  在不同的 value 文件夹下(例如 value .value-en.values-zh-rTW 文件夹)添加不同语言的 string.xml 文件,我们的项目添加了英文.简体中文.繁体中文三种语言,如下图所示

  • Android编程实现动态支持多语言的方法

    本文实例讲述了Android编程实现动态支持多语言的方法.分享给大家供大家参考,具体如下: 资源文件values/strings.xml中添加 <string name="current_language">English</string> <string name="test">test</string> 创建values-en文件夹,添加资源文件 strings.xml: <resources> <

  • Android实现应用内置语言切换功能

    一.需求 有时候应用需要在内部切换语言但又不影响系统的语言,比如是应用现在是中文的,系统语言也是中文的,我把应用的切换成英文显示后系统语言还是中文的,系统语言切换后也不会被改变,还有就是有些机的系统是被改造精简过的,比如有些国产机的系统的语言就被精简剩中文和英文.支付宝.微信.Top Story都有在应用内部设置语言切换这样的功能. 二.实现效果 先看看实现效果吧. 三.实现 (一)添加多种语言的资源文件夹及文件 我这默认是英语再添加了个俄文(Google翻译的)和中文. values/stri

  • Android 系统语言切换监听和设置实例代码

    最近项目上产品经理提了个需求,要求关闭语言国际化,不管手机系统设置那个国家的语言,都要显示汉语,好吧,既然有需求,那就做吧.但是项目中已经有英文的配置了,且是作为默认String提供的,这么多翻译好的文字,直接删除掉替换成中文为默认String又感觉弃之可惜.故网上Google下解决方案.就开始往下看吧. 一.代码中动态设置应用显示语言(手动控制使用values-zh-rCN下字符串) 这个方法是通过改变Resource中的配置来实现的,代码如下: public static void init

  • Android实现系统语言切换功能

    简单介绍下这个需求的缘由,这段时间因公司业务需要,其中有一项"设置系统语言"功能,就是在使用APP的过程中,动态的去切换整个Android机器的语言,具体参照手机设置页面有语言切换功能.起初想来是很简单的事情嘛,不就是个简单的资源国际化嘛,strings.xml资源文件一整还不给OK?真正动起手来就真不是这么一回事了,国际化是没问题,但是怎样能更改所有页面的文字资源呢,这是一个问题.下面介绍下网上找的几个方案. 一.API欺骗 烧制到手机中的android.jar包含了Android所

  • Android app应用多语言切换功能实现

    本文实例为大家分享了Android app应用实现多语言切换功能,供大家参考,具体内容如下 1.添加多语言文件 在不同的 value 文件夹下(例如 value .value-en.values-zh-rTW 文件夹)添加不同语言的 string.xml 文件,我们的项目添加了英文.简体中文.繁体中文三种语言,如下图所示: Project模式: Android模式: 其中英文需要翻译,繁体如果没有专门翻译的话,可以找个简繁转换网站,直接将简体中文转成繁体中文,推荐一个网站: http://www

  • Android 各国语言缩写及简称详细介绍

    android资源文件夹的写法规则: 语言缩写-国家地区缩写 语言缩写请参阅: 国家地区缩写 en 英文 en_US 英文 (美国) ar 阿拉伯文 ar_AE 阿拉伯文 (阿拉伯联合酋长国) ar_BH 阿拉伯文 (巴林) ar_DZ 阿拉伯文 (阿尔及利亚) ar_EG 阿拉伯文 (埃及) ar_IQ 阿拉伯文 (伊拉克) ar_JO 阿拉伯文 (约旦) ar_KW 阿拉伯文 (科威特) ar_LB 阿拉伯文 (黎巴嫩) ar_LY 阿拉伯文 (利比亚) ar_MA 阿拉伯文 (摩洛哥) a

  • Android应用的多语言支持的实现方法

    软硬件环境 Windows 10 Android studio 2.3.2 OTT BOx with android 5.1.1 前言 App开发测试完成后就面临着应用上架,除了国内的上架渠道,android阵营上架Google play我觉得是必不可少的.这样的话,中英文支持就成了必须的功能点了.本文就来实现这个功能. 设置不同语言的资源文件 如有必要,res文件夹下的像drawable.layout.values等都需要做不同语言的处理,这里仅以values为例 values-en和valu

  • Android中WebView控件支持地理位置定位方法

    Android WebView从assets中加载html5页面,实现地理位置定位,有需要的朋友可以参考下. 今天调研一个html5页面的定位问题,发现在手机浏览器上html5是可以实现定位的,但是在webview中就无法定位了.而我居然以为html5的地理定位在webview中不可行. html5页面内容如下: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.o

  • 详解Android开发中硬件加速支持的使用方法

    Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑,但是会多消耗一些内存.       开启或关闭硬件加速:       由于硬件加速自身并非完美无缺,所以Android提供选项来打开或者关闭硬件加速,默认是关闭.可以在4个级别上打开或者关闭硬件加速:       Application级别:<applicationandroid:hardwareAccelerated="true" ...>  

  • Android Mms之:深入MMS支持

    Composing and editingMMS在Android Mms应用里面的具体实现形式,或数据结构是SlideshowModel,它是一个每个节点为SlideModel的ArrayList,SlideModel是一个Model的List,也就是它可以接收任何Model的子类,Audio,Video,Image和Text都可以放到SlideModel上面.SlideModel主要用于管理其上面的各个媒体,比如它们的布局,它们的播放控制,而SlideshowModel主要用于管理所有的附件,

  • 为Android添加一门新语言的解决办法

    虽然Android从2.3开始已经支持50种以上的语言,但是不是每种语言都有字体可以显示.遇到一个新需求,有客户要求对hindi语言的支持.于是上网找了一些资料,发现网上介绍的大部分是如何替换默认字体,就是替换./frameworks/base/data/fonts/DroidSansFallback.ttf,但是替换完之后,中文就无法正常显示.其实只要有下面几个步骤,就可以实现新曾加一种语言的显示支持:1. 需要有可以显示hindi语言的字体,我在网上下载了一个:DroidHindi.ttf2

  • Android轻松实现多语言的方法示例

    本文介绍了Android轻松实现多语言的方法示例,分享给大家,具体如下: 1.创建多语言包 2.首先在onCreate方法中调用此方法查看上一次保存的是什么语言 public void setLanguage() { //根据读取到存放在sp里面的数据 进行设置 Configuration configuration = getResources().getConfiguration(); SharedPreferences sharedPreferences = getSharedPrefer

  • Android NDK开发(C语言基本数据类型)

    目录 1.C 语言包含的数据类型 2.C语言的基本数据类型 3.示例代码 1.C 语言包含的数据类型 如下图所示: 2.C语言的基本数据类型 short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 格式化输出的时候: int %d short %d long %ld float %f double %lf char %c %x 十六进制 %o 八进制 %s 字符串 %p一般以十六进制整数方式输出指针的值,附加前缀0x 在32 位的系统上s

  • Android NDK开发(C语言-文件读写)

    目录 1.文件读写 1.1打开文件 1.2关闭文件 1.3读取文件 1.4写入文件 1.5读写二进制I/O文件 1.6获取文件的大小 1.7文本简单加密.解密 1.8二进制文件简单加解密 1.文件读写 一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节.C 语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件. 1.1打开文件 我们可以使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FI

  • Android NDK开发(C语言--联合体与枚举)

    目录 1.联合体 1.1定义共用体 1.2共用体占用的内存应足够存储共用体中最大的成员. 1.3联合变量任何时刻只有一个变量存在,最后一次赋值有效 1.4JNI头文件中的联合体 2.枚举 1.联合体 共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置的有效方式. 1.1定义共用体 为了定义共用体,您必须使用 union 语句,方式与定义结构类似.union 语句定义了一个新的

  • Android NDK开发(C语言字符串)

    目录 1.C语音的字符串有两种 1.1字符数组 1.2字符指针 2.字符串常用的方法 2.1strcpy字符串拼接 2.2strchr字符串中查找字符 2.3strchr字符串中查找字符 2.4更多用法... 1.C语音的字符串有两种 1.1字符数组 数组可以修改其中某一个值,不可以整体赋值. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <Windows.h&g

随机推荐