【问题标题】:How to change the language of my application based on the language of the keyboard?如何根据键盘的语言更改我的应用程序的语言?
【发布时间】:2026-02-25 17:05:02
【问题描述】:

我正在开发一个安卓应用程序。在该应用程序中获取用户 android 设备的键盘语言。如果用户键盘是法语,那么整个应用程序字体应该变成法语。

我曾尝试过以下演示示例。

在值->字符串中

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Localizationdemo</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
</resources>

在值-fr->字符串中

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mon Application</string>
    <string name="hello_world">Bonjour le monde !</string>
</resources>

但我只会得到英文“Hello world”,而我的键盘是法语。

【问题讨论】:

    标签: android localization


    【解决方案1】:

    希望你已经在你的代码中写了这些行

    Locale locale = new Locale("FR");
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getApplicationContext().getResources().updateConfiguration(config, null);
    

    因为当您将本地语言设置为 fr 时,如果您将其设置为 it,它将从 Values-fr 中获取与其他语言相同的字符串> 它会认为你是当地语言的斜体和等。

    注意:如果您的设备可能不兼容所有语言,在这种情况下,您需要使用外部 ttf

    【讨论】:

    • Nup 我应该在哪里编写此代码?我的意思是在 onCreate 事件中?
    • 如果你有任何改变语言的按钮,把它写在那里,否则在启动器活动中创建
    • 我的意思是说如果我想支持我的设备 5 语言该怎么办。中国语、俄语、日语、印地语和英语
    • 首先,您需要为每种语言维护不同的字符串 xml 文件,并且您的应用程序需要要求用户选择一种语言,根据您的选择,您可以更改 Locale("-- -");动态值,而且事情,一旦用户选择了您需要刷新当前活动的语言,否则在当前活动中将永远不会发生更改,也有可能所有设备将永远不会支持多语言,所以最好看看 ttf引擎
    • 但以我的方式,我要求应用程序自动检测用户手机中选择的语言并以该语言启动。有可能吗?
    【解决方案2】:

    您设备的语言是什么?如果您只更改键盘语言,它将不起作用。 尝试将设备设置为法语。

    【讨论】:

    • 我的设备语言是英语。但我想通过用户更改键盘语言来更改我的应用程序语言
    • 哦,我明白了,在那种情况下,Sainath Patwary karnate 给出了正确答案