精华内容
下载资源
问答
  • 关于Android应用实现多语言切换,有好几种办法,网上也搜到很多资料,这里有个简单有效的办法。步骤如下:在资源文件中新建一个文件夹values-en,在里面新建一个strings.xml,把默认values文件夹中的strings.xml中的...

    关于Android应用实现多语言切换,有好几种办法,网上也搜到很多资料,这里有个简单有效的办法。

    步骤如下:

    在资源文件中新建一个文件夹values-en,在里面新建一个strings.xml,把默认values文件夹中的strings.xml中的内容拷贝一份到values-en中的strings.xml,再把该文件夹中的中文内容转换为英文,例如设置转换为set

    然后在主Activity中添加一个方法

    代码如下:

    public void switchLanguage(Locale locale) {

    Configuration config = getResources().getConfiguration();// 获得设置对象

    Resources resources = getResources();// 获得res资源对象

    DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。

    config.locale = locale; // 简体中文

    resources.updateConfiguration(config, dm);

    }

    然后再在OnCreate函数中调用(也必须在OnCreate函数中调用才行)

    例如:

    switchLanguage(Locale.getDefault());  或  switchLanguage(Locale.US);

    最后需要注意的是:还需要在AndroidManifest.xml文件中要配置两个地方:

    1、在对应activity节点中加上这个属性: android:configChanges="locale"

    2、添加权限: 

    展开全文
  • 现在很多App内都具备了多语言切换的功能,今天的内容就是实现这个功能,效果如下: 话不多说,直接上步骤 一.准备一个string.xml文件,里面随便准备一些中文字符串 <resources> <str

    本文地址:https://blog.csdn.net/qq_40785165/article/details/113901406,转载需附上此地址

    大家好,我是小黑,一个还没秃头的程序员~~~

    只要以积极的心态去观察、去思考,就会发现,事情远没有想像中的那样困难。

    现在很多App内都具备了多语言切换的功能,今天的内容就是实现这个功能,效果如下:

    话不多说,直接上步骤

    一.准备一个string.xml文件,里面随便准备一些中文字符串

    <resources>
        <string name="app_name">多语言翻译案例</string>
        <string name="str1">你好</string>
        <string name="str2">我是</string>
        <string name="str3">多语言</string>
        <string name="str4">翻译</string>
        <string name="str5">切换成中文</string>
        <string name="str6">切换成英文</string>
        <string name="str7">切换成法语</string>
        <string name="str8">跳转到下个页面</string>
    </resources>

    二.在AndroidStudio中安装一个插件,搜索“AndroidLocalize”,这个插件是用来翻译文本资源文件的,在string.xml文件上右键选择转换语言,选择想要的语言即可,之后就会自动生成不同语言的资源文件,      如图所示

     

    三:编写代码进行切换,这里只贴出主要代码,其他代码想要的可以去下载源代码查看:https://gitee.com/fjjxxy/multi-language-demo.git

    切换语言是通过修改Locale属性进行修改语言的,这里有个地方需要注意,如果你只是单纯的切换语言,之前没有finish的页面还是会保留原来的语言,所以你也可以对所有的activity进行堆栈管理,将所有的activity进行重新创建(recreate),即可将原先的页面的语言一并更新,下面分别是两种做法的代码

    /**
         * 这个方法虽然更新了资源但是只能以后的界面生效,之前没有finish的页面还是保留原来的语言
         *
         * @param locale
         * @param context
         */
        public static void shiftLanguage(Locale locale, Context context) {
            Resources resources = context.getResources();
            Configuration config = resources.getConfiguration();
            DisplayMetrics dm = resources.getDisplayMetrics();
            config.locale = locale;
            resources.updateConfiguration(config, dm);
    
        }
     private void changeAllActivitysLanguage(Locale locale) {
            //使用堆栈管理器进行遍历重新创建
            Stack<Activity> allActivityStacks = AppManager.getInstance().getAllActivityStacks();
            for (Activity allActivityStack : allActivityStacks) {
                shiftLanguage(locale, allActivityStack, this);
            }
        }
        /**
         * 这个方法是为了让全部的activity都修改语言
         *
         * @param locale
         * @param activity
         * @param context
         */
        public static void shiftLanguage(Locale locale, Activity activity, Context context) {
            Resources resources = context.getResources();
            Configuration config = resources.getConfiguration();
            DisplayMetrics dm = resources.getDisplayMetrics();
            config.locale = locale;
            resources.updateConfiguration(config, dm);
            if (!(activity instanceof SecondActivity)) {
                activity.recreate();
            }
    
        }

    将相关的Locale参数传入方法中即可,例如

    mTvChangeToChinese.setOnClickListener(v -> shiftLanguage(Locale.CHINESE,this))

    到此,Android应用多语言切换的功能也就完成了,还是很简单的,这里就更加得注意平时的编码习惯了,尽量把字符串都放到资源文件中,方便以后进行切换语言,最后,也希望喜欢我文章朋友们可以帮忙点赞、收藏、评论,也可以关注一下,如果有问题可以在评论区提出,谢谢大家的支持!

    展开全文
  • value 文件夹下(例如 value 、value-en、values-zh-rTW 文件夹)添加不同语言的string.xml文件中文的string.xml文件翻译成英文的string.xml文件 http://fanyi.youdao.com/translate//根据系统语言设置应用语言private...

    在不同的 value 文件夹下(例如 value 、value-en、values-zh-rTW 文件夹)添加不同语言的 string.xml 文件

    中文的string.xml文件翻译成英文的string.xml文件  http://fanyi.youdao.com/translate

    //根据系统语言设置应用语言

    private Resources resources;

    private Configuration config;

    private DisplayMetrics dm;

    在app的入口(application)的oncreate方法中调用此方法

    public void setlanguage()

    {

    //获取系统当前的语言

    String able= getResources().getConfiguration().locale.getLanguage();

    resources =getResources();//获得res资源对象

    config = resources.getConfiguration();//获得设置对象

    dm = resources.getDisplayMetrics();

    //根据系统语言进行设置

    if (able.equals("zh")) {

    config.locale = Locale.SIMPLIFIED_CHINESE;

    resources.updateConfiguration(config, dm);

    }

    else if(able.equals("en"))

    {

    config.locale = Locale.US;

    resources.updateConfiguration(config, dm);

    }

    }

    通过设置手机系统的语言改变AndroidApp的语言

    展开全文
  • 不过这个语言的切换 依赖于系统的的语言设置,见图 也依赖apk本身values多国语言的资源配置,en代表英文,zh代表中文 通常来说,在android系统上实现功能,最好的借助系统提供的api,如果没有明确的api,则想办法...

    微信中可以动态设置,apk的语言版本,最近尝试实现了这个功能。

    我们知道,android本身就支持多国语言版本的。

    不过这个语言的切换 依赖于系统的的语言设置,见图

    0818b9ca8b590ca3270a3433284dd417.png

    也依赖apk本身values多国语言的资源配置,en代表英文,zh代表中文

    0818b9ca8b590ca3270a3433284dd417.png

    通常来说,在android系统上实现功能,最好的借助系统提供的api,如果没有明确的api,则想办法曲线救国。

    实际上本博客内提供的实现方法,就是一个曲线救国的方式,下面就介绍下他的核心思路。

    1.在values中配置相应的 语言资源

    2.更改当前系统Configuration的配置信息

    3.指定的控件重新加载 语言资源

    第一步,大家都会,不多做介绍

    第二步,直接上代码

    // 刷新显示配置-

    public void refreshTheLanguage() {

    // 得到SharedPreferences中存储的 语言配置信息

    String str = getLanguage();

    Resources localResources = this.context.getResources();

    // 判断 系统配置设置的 国家语言 是否和 SharedPreferences中存储的 一致

    if (!localResources.getConfiguration().locale.getLanguage().equals(str)) {

    // 得到系统配置信息类

    Configuration localConfiguration = context.getResources()

    .getConfiguration();

    // 创建Locale类(简单理解为 所在地区 类)

    Locale localLocale = new Locale(str);

    // 设置默认地区信息

    Locale.setDefault(localLocale);

    // 将系统配置中的 地区信息 重新赋值为 自行设置的

    localConfiguration.locale = localLocale;

    DisplayMetrics localDisplayMetrics = localResources

    .getDisplayMetrics();

    // 更新系统的配置信息

    localResources.updateConfiguration(localConfiguration,

    localDisplayMetrics);

    }

    }第三步,view重新加载values资源即可

    language.setText(R.string.language);

    以微信为例子,设置语言的activity 肯定是 5级界面,到这来就涉及到 activity 和 activity之间 通信的问题。

    方案有2种,1.广播, 2.使用观察者模式

    我个人比较喜欢第二种,觉得观察者模式更轻一些。

    1.创建一个被观察者

    import java.util.Observable;

    public class SwitchLanguageObservable extends Observable {

    @Override

    public void notifyObservers() {

    setChanged();

    super.notifyObservers();

    }

    @Override

    public void notifyObservers(Object data) {

    setChanged();

    super.notifyObservers(data);

    }

    }

    2.创建一个观察者,并提供回调方法

    import java.util.Observable;

    import java.util.Observer;

    public class SwitchLanguageObserver implements Observer {

    private ObserverChange mObserverChange;

    public SwitchLanguageObserver(Observable simpleObservable) {

    simpleObservable.addObserver(this);

    }

    @Override

    public void update(Observable observable, Object data) {

    if (mObserverChange != null) mObserverChange.observerChange();

    }

    public void setOnObserverChange(ObserverChange observerChange) {

    this.mObserverChange = observerChange;

    }

    public interface ObserverChange {

    public void observerChange();

    }

    3.将被观察 设置为全局对象,方便其他的activity调用

    import com.example.demo.utils.LanguageSettingUtil;

    import com.example.demo.utils.SwitchLanguageObservable;

    import android.app.Application;

    public class TestApplication extends Application {

    /**

    * 语言设置工具类

    * */

    private LanguageSettingUtil languageSetting;

    /**

    * 语言设置 被观察对象

    * */

    private SwitchLanguageObservable switchLangObs;

    @Override

    public void onCreate() {

    super.onCreate();

    // 注册 切换语言 工具类

    LanguageSettingUtil.init(this);// 初始化

    languageSetting = LanguageSettingUtil.get();// 检查是否已经初始化

    switchLangObs = new SwitchLanguageObservable();

    }

    public LanguageSettingUtil getLanguageSetting() {

    return languageSetting;

    }

    public SwitchLanguageObservable getSwitchLangObs() {

    return switchLangObs;

    }

    }

    4.能够切换语言的view,进行注册

    language = (TextView) findViewById(R.id.language);

    TestApplication app = (TestApplication) getApplication();

    obs = app.getSwitchLangObs();

    obser = new SwitchLanguageObserver(obs);

    obser.setOnObserverChange(new ObserverChange() {

    @Override

    public void observerChange() {

    language.setText(R.string.language);

    }

    });

    5.被观察的对象,进行注册

    import com.example.demo.utils.LanguageSettingUtil;

    import com.example.demo.utils.SwitchLanguageObservable;

    import android.app.Activity;

    import android.os.Bundle;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.TextView;

    public class SwitchLanguageActivity extends Activity implements OnClickListener {

    private LanguageSettingUtil languageSetting;

    private TextView switchCh, switchEn;

    private SwitchLanguageObservable obs;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_switch_language);

    TestApplication app = (TestApplication) getApplication();

    switchCh = (TextView) findViewById(R.id.switch_ch);

    switchEn = (TextView) findViewById(R.id.switch_en);

    switchCh.setOnClickListener(this);

    switchEn.setOnClickListener(this);

    languageSetting = app.getLanguageSetting();// 检查是否已经初始化

    obs = app.getSwitchLangObs();

    }

    @Override

    protected void onDestroy() {

    super.onDestroy();

    }

    @Override

    public void onClick(View view) {

    switch (view.getId()) {

    case R.id.switch_ch:

    languageSetting.saveLanguage("zh");

    LanguageSettingUtil.get().refreshLanguage();// 刷新

    obs.notifyObservers();

    finish();

    break;

    case R.id.switch_en:

    languageSetting.saveLanguage("en");

    LanguageSettingUtil.get().refreshLanguage();// 刷新

    obs.notifyObservers();

    finish();

    break;

    default:

    break;

    }

    }上面的例子可以 看出代码步骤。

    设置语言信息

    languageSetting.saveLanguage("zh");刷新系统配置信息

    LanguageSettingUtil.get().refreshLanguage();

    被观察者发生变化

    obs.notifyObservers();

    观察者回调接口的实现方法,实现方法中重新设置了string信息

    obser.setOnObserverChange(new ObserverChange() {

    @Override

    public void observerChange() {

    language.setText(R.string.language);

    }

    });

    然后app内 动态切换语言,就实现了。

    源码链接http://download.csdn.net/detail/tianya19871987/8600969

    展开全文
  • 本文中的方法实现的是应用中切换语言后跳转到应用首页,但是需要CLEAR_TASK和NEW_TASK,注意首页的 launchMode设置成singleTask。切换语言关键代码public void changeLanguage() {Resources resources = ...
  • 从Android 7.0(API级别24)开始,用户可以在其设备上设置首选语言(来源:LocaleList API).我的问题是我的应用程序不尊重... French在Android应用程序中,我支持两种语言(默认情况下为fr):values/strings.xml (English...
  • 本年5月,谷歌在I/O大会上宣告,Kotlin编程言语成为其Android使用程序开发人员的首选言语。Kotlin是一种面向现代多平台使用程序的编程言语,成为谷歌开发Android使用程序的首选言语后,许多开发人员逐渐地从Java转向...
  • 在app内有时候需要用户手动切换语言,以适应不同的使用场景,正常来说如果做了语言适配的话,app语言会跟随系统语言进行自动适配。但有时候希望在app内进行语言选择和设置。设置app的语言环境,直接上代码/*** 修改...
  • 语言设置只针对本app,并在下次启动应用时保留前一次启动设置。切换语言代码:sharePreferences存入设置语言:SharencessharedPreferences=getActivity().getSharedPrefeivity().getPackageName(),0);...
  • 需要完成的功能是点击指定按钮后修改系统语言,并让应用跟随系统切换语言privatevoidswitchLanguage(){IActivityManageram=ActivityManagerNative.getDefault();Configurationconfig=null;try{config=am.get...
  • 最近做的一个升级应用,在下载升级包的过程中又有一个toast类型的dialog悬浮在屏幕右上角,这个时候切换系统语言会出现问题。当主屏幕为升级应用时,切换系统语言升级应用重启,而重启后并不能自动断点续传切换前的...
  • Android应用内切换语言

    2021-06-09 10:01:58
    最近接触到Android 应用内切换语言的问题,研究了两天,做个记录先。实现了中文,英文,泰语的切换。测试机器 Nexus5(Android p),HUAWEI荣耀9青春版(8.0.0),XIAOMI mi 4LTE(6.0.1)。看下效果language.gif完整的例子...
  • 我正在研究Android应用程序的全球化。 我必须提供从应用程序中选择不同区域设置的选项。 我在我的活动(HomeActivity)中使用以下代码,其中我提供了更改区域设置的选项Configuration config = new Configuration(); ...
  • 一般说明一个地区的语言时,用 语言_地区的形式,如 zh_CN, zh_TW.android 对i18n和L10n提供了非常好的支持。android没有专门的API来提供国际化,而是通过对不同resource的命名来达到国际化,同时这种命名方法...
  • 最近项目中用用到语言切换功能,第一想到的就是资源文件,没错。在资源文件中新建一个文件夹values-en,在里面新建一个strings.xml,把默认values文件夹中的strings.xml中的内容Copy至values-en中的strings.xml,再...
  • 很久以前golang就支持开发android上的动态库及应用了,golang的环境搭建就不说了,直接从gomobile开始软件依赖golang, gomobile, jdk,android sdkgomobilegomobile就是一个可以利用golang来开发android上本地应用及...
  • package ...import android.app.Activity;import android.content.Intent;import android.content.SharedPreferences;import android.preference.PreferenceManager;import android.text.TextUti...
  • 针对这个问题,自己作为开发人员,在开发完后还是没注意去自测这方面,而后是我们测试人员百无聊赖的找BUG然后找出这样的问题。...二:先仔细查看自己应用各界面的每个控件设置的字体大小,找到对应d...
  • 前言:网上有很多安卓内多语言切换的文章,我也看了一些,很多都千篇一律,而且还是有问题,我就自己重新改了一下。整好分享给各位同学,废话不多说,我们正式开始效果图QQ截图20200823185850.pngQQ截图...
  • 您无法使用Android翻译Web服务返回的数据,但可以更改语言以便在应用程序中休息,如下所述:调用changeLocale方法后尝试重新创建活动.changeLocale("ar");private void changeLocale(String lang) {update...
  • 使用 lua 来构建跨平台原生应用有许多好处,比如 lua 语言简洁高效,可移植性好, Lua虚拟机极为轻量,仅占用200到300k的内存空间,且速度极快。演示写一个简单的代码演示一下。新建一个 lua 文件,叫做 view.lua, ...
  • 一般就是中文跟英文应用名称切换 在以下目录中新建values-en和valuse-cn文件夹 valuse文件夹中的strings.xml文件中的app_name会被Unity中自己设置的ProductName替换 values-zh中strings.xml中的内容如下: <...
  • Android对国际化与多语言切换已经做得不错了,一个应用只要命名相应语系的values-[language]文件夹,通过“设置”→“语言&键盘”→“选择语言”即可实现应用多种语言的切换。 但如何在应用里自己实现?搜索过...
  • 您可以使用以下代码 . 例如,下面给出的函数可以放在扩展Application类的类中 . public class My... } 在您的情况下,您很快就可以使用 getAppLanguage() ,然后检查公共变量 APP_LANG 以获取当前使用的语言 .
  • 我希望我的应用程序支持三种语言西班牙语,葡萄牙语和英语。 并选择在app中选择语言。我已经做了1)3个可绘制的文件夹drawable-es,drawable-pt,drawable。2)3个值文件夹值-es,values-pt,values。根据语言更改...
  • 切换方法public void updataLanguage(String s){SharedPreferences sp =getSharedPreferences("语言",MODE_PRIVATE);String language;if(s.equals("")){language=sp.getString("name","zhCN");}else{language=s;}...
  • 计划按以下的内容更新简单 UI关于开发一个应用,要有自己的应用名(显示用),和包名(真正唯一的应用名),简单说一台 Android 手机中所有应用的包名是唯一的,如果新安装的应用包名和已安装的应用重复则只能替换安装...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 204,798
精华内容 81,919
关键字:

安卓应用语言