2017-04-20 7 views
3

文字列ファイルを適切な値のフォルダに保存して言語を変更することもできます。アンドロイドアプリケーション全体で言語を変更

enter image description here

どのように私は、Webサービスから取得していたデータを変換することができますか?これを実現するライブラリがありますか?

+1

Google translate apiを使用できますが、無料ではありません。 –

+1

あなたのアプリからウェブサービスに何らかのフラグを渡して、あなたがあなたのアプリを使う言語を教えて、指定された言語のデータを返すようにしてください。 –

答えて

3

あなたがアンドロイドを使用して、Webサービスによって返されたデータを変換することはできませんが、後述するように残りのためのアプリを言語を変更することができます。

するTry再作成活動changeLocaleメソッドを呼び出した後。 Configuration.locale =ロケールがAPI> = 21以下のコードを使用することができますで廃止されたよう

changeLocale("ar"); 

private void changeLocale(String lang) { 
    updateConfiguration(activity, lang); //lang = "en" OR "ar" etc 

    activity.recreate(); 
} 

public static void updateConfiguration(Activity activity, String language) { 
    Locale locale = new Locale(language); 
    Locale.setDefault(locale); 

    Configuration configuration = new Configuration(); 
    configuration.locale = locale; 

    Resources resources = activity.getBaseContext().getResources(); 
    resources.updateConfiguration(configuration, resources.getDisplayMetrics()); 
} 
+0

これはウェブサービスから受け取った言語を変更しません?私は正しい? –

+0

Webサービスからのデータを意味しますか?オフコース、Webサービスから返されるデータはサーバーによって翻訳される必要があります。 – Pehlaj

+0

これをどのようにしてアンドロイドエンドから達成できますか? –

2

ウェブサービス応答翻訳のためには、i18Next

I18Next i18next = I18Next.getInstance(); 
Loader loader = i18next.loader(); 
loader.load(); 
loader.lang(String lang); 
2

を使用することができます。

public void setLocale(Context context,String lang){ 
    Locale[] locales = Locale.getAvailableLocales(); 
    // print locales 
    boolean is_supported=false; 
    //check if the intended locale is supported by device or not.. 
    for (int i = 0; i < locales.length; i++) { 
     if(lang.equals(locales[i].toString())) 
     { 
      is_supported=true; 
      break; 
     } 
     Log.e("Languages",i+" :"+ locales[i]); 
    } 
if(is_supported) { 
     Locale myLocale = new Locale(lang); 
     Resources res = context.getResources(); 
     DisplayMetrics dm = res.getDisplayMetrics(); 
     Configuration conf = res.getConfiguration(); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
      conf.setLocale(myLocale); 
     } else { 
      conf.locale = myLocale; 
     } 
     res.updateConfiguration(conf, dm); 
    }else{ 
     //do something like set english as default 
    } 

今呼び出すことによって、あなたのコード内でこの機能を使用します。

setLocale("hi"); 

あなたは()

再作成を呼び出すことによって、あなたのアクティビティ画面をリロードする必要があります。

あなたのアクティビティには、

関連する問題