会爬楼梯的鱼 2019-12-12 19:15 采纳率: 0%
浏览 595

android 国际化的问题

在弄android国际化时遇到一点问题,部分手机语言和地区是分开修改的。
多语言切换,有中文简体,中文繁体,英文、跟随系统四个选项,
其中跟随系统发现问题:
一、系统语言和地区是一起修改的:
修改系统语言,APP内跟随系统语言没问题。
二、系统语言和地区是分开修改的
1.当修改系统语言但不修改地区时,比如:语言改为中文繁体,地区 中国
此时手机显示的是中文繁体,但是APP里获取的语言是 zh ,地区是 CN
我设置跟随系统语言就成了简体中文了;正常应该显示中文繁体的。
1.当不修改系统语言修改地区时,比如:语言为中文简体,地区 中国台湾
此时手机显示的是中文简体,但是APP里获取的语言是 zh ,地区是 TW
我设置跟随系统语言就成了繁体中文了;应该是显示中文简体的。

请问有哪位大佬知道怎么解决这个问题?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-28 22:01
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题可以通过使用Resources.getConfiguration()方法来解决。这个方法返回一个Configuration对象,它可以用来控制界面元素如何根据设备配置进行布局和渲染。

    首先,在你的AndroidManifest.xml文件中添加以下权限:

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    

    然后,在你的Activity或Fragment中调用Resources.getConfiguration()方法来获取当前的屏幕分辨率。

    public void setLocale(String language) {
        Configuration config = Resources.getSystem().getConfiguration();
        if (language.equals("zh")) {
            config.locale = new Locale("zh", "CN");
        } else if (language.equals("en")) {
            config.locale = new Locale("en", "US");
        } else if (language.equals("zh-Hant")) {
            config.locale = new Locale("zh", "TW");
        }
        Resources resources = getResources();
        // 设置新的配置
        resources.updateConfiguration(config, resources.getDisplayMetrics());
    }
    

    在这个例子中,我们首先获取了系统的配置,然后根据传入的参数设置了相应的语言和区域信息,并更新了屏幕的分辨率。

    请注意,你需要将上述代码中的语言值替换为你想要的语言值(例如"zh"表示简体中文,"en"表示英文等)。

    此外,如果你希望用户可以在不同的国家/地区之间自由切换,你可以考虑使用SharedPreferences来存储用户的偏好设置,这样他们就可以选择他们在不同地方使用的语言和区域。

    评论

报告相同问题?