[英]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 字體的更多信息。
基本上,我們可以在應用程序本身中提供ttf
或otf
文件,以便我們可以在我們的應用程序中使用字體,而不是依賴於 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.