簡體   English   中英

Android 國際化不適用於某些 Android 設備

[英]Android Internationalization not working for some Android devices

我有一個針對 SDK 版本 25 和最小 SDK 17 的 android 應用程序。這個應用程序應該有 4 種語言:法語斯瓦希里語英語基隆迪語

但是對於某些 android 設備,所有四種語言都可以正常工作,但對於其他一些語言,當用戶切換到基隆迪語之外,所有其他語言都可以正常工作。

這是我的代碼:

public class LanguageSwitcher extends AppCompatActivity {

    //Variables declaration
    private TextView bdi,en,fr,sw;

    private Resources res;
    private DisplayMetrics dm;
    android.content.res.Configuration conf;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_language_switcher);


        bdi = (TextView)findViewById(R.id.bdi); //Kirundi textview
        fr  = (TextView)findViewById(R.id.fr); //francais textview
        en  = (TextView)findViewById(R.id.en); //english textview
        sw  = (TextView)findViewById(R.id.sw); //swahili textview


        res = getResources();
        dm  = res.getDisplayMetrics();
        conf= res.getConfiguration();


        //getting the sharedPreferences 
        SharedPreferences sharedPreferences=getSharedPreferences("profile", Context.MODE_PRIVATE);

        String lang = sharedPreferences.getString("lang","");

        final SharedPreferences.Editor editor = sharedPreferences.edit();

        bdi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                conf.locale = new Locale("rn"); // API 17+ only.
                editor.putString("lang","rn");
                editor.apply();
                res.updateConfiguration(conf, dm);
                startActivity(new Intent(getApplicationContext(),Acceuil.class));
            }
        });
        fr.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                conf.locale = new Locale("fr"); // API 17+ only.
                editor.putString("lang","fr");
                editor.apply();
                res.updateConfiguration(conf, dm);
                startActivity(new Intent(getApplicationContext(),Acceuil.class));
            }
        });
        sw.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                conf.locale = new Locale("sw"); // API 17+ only.
                editor.putString("lang","sw");
                editor.apply();
                res.updateConfiguration(conf, dm);
                startActivity(new Intent(getApplicationContext(),Acceuil.class));
            }
        });
        en.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                conf.locale = new Locale("en"); // API 17+ only.
                editor.putString("lang","en");
                editor.apply();
                res.updateConfiguration(conf, dm);
                startActivity(new Intent(getApplicationContext(),Acceuil.class));
            }
        });
    }
}

我不知道我的代碼哪里錯了。 我需要你的幫助

我們可以使用自定義字體。 它們可以是可下載字體,也可以是 XML 中的字體

您可以使用此鏈接獲取有關如何在 Android 應用程序中集成 XML 字體的更多信息。

基本上,我們可以在應用程序本身中提供ttfotf文件,以便我們可以在我們的應用程序中使用字體,而不是依賴於 OEM 字體。

在此處輸入圖片說明

查看 Android 開發人員網站上的分步指南鏈接。

在 onCreate() 或 super.onCreate() 之前設置您的語言

我做了一些研究,發現與其他語言不同,基隆迪語資源應該在res/values-rn-rBI文件夾下,而不是res/values-rn文件夾下。 rn作為ISO 639-1語言代碼,就像 Android 和BI的任何其他語言一樣,該國家/地區(布隆迪)的ISO 3166-1 Alpha-2 代碼有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM