Advertisement

关于Android app 国际化 中英文翻译的细节处理

阅读量:

导语:
最近一个项目上有要求完成app国际化,也就是如果系统语言是英文,那么你的app打开时就会自动读取string 中的字符串资源,自动完成匹配,以满足国际化需求,那么我们就按照步骤走,完成我们的app国际化道路。
步骤1:
建立相关资源文件夹:
我们要在value 文件夹下建相关的文件夹盛放app国际化资源,如图片,strings字符串文件,等等,规格是:** value-国家简写编号** :那么我们大中国的就是value-zh
那么文件结构就是:

这里写图片描述

步骤二是需要我们往不同的国际资源中录入/导入/导入资源,在确保文件名一致的前提下进行适配性处理,例如按照统一的命名规范.

复制代码
    //我们匹配汉语字符串资源在    value-zh 文件夹中strings文件下
    <string name="change_chanese">是否切换成汉语?</string>
    //在英语文件夹下我们要如此    value-en 文件夹中strings文件下
    <string name="change_chanese">Do you want to switch to Chinese?
    </string>

借助我们能够邀请专业人士协助完成国际化翻译工作

国家/地区 语言代码 国家/地区 语言代码

那么,在应用程序运行时使用value-zh(中国)、value-en(美国)的方式是如此类推。
最后我们需要通过代码实现切换:
我们的思路是利用SharedPreference存储在本地配置文件中,并且启动应用程序时完成必要的初始化操作。

上代码:

复制代码
      protected void switchLanguage(String language) {
    
        //设置应用语言类型
        Resources resources = getResources();
        Configuration config = resources.getConfiguration();
        DisplayMetrics dm = resources.getDisplayMetrics();
        if (language.equals("en")) {
            config.locale = Locale.US;
        } else {
            config.locale = Locale.SIMPLIFIED_CHINESE;
        }
        resources.updateConfiguration(config, dm);
    
        //保存设置语言的类型
        SharedPreferenceUtils.setParam(getApplicationContext(),"language", language);
    }

如何应用:

如何清空堆栈内的activity(跳转时候配置intent_flags并设置相应的标志位)

复制代码
    Intent intent = new Intent(A.this,Main.class)
    .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    //为保险起见,再一次杀掉进程                      android.os.Process.killProcess(android.os.Process.myPid());
    System.exit(0);

最后:
大功告成,我们的app国际化工作就分三步走完成啦!

全部评论 (0)

还没有任何评论哟~