2016-08-25 13 views
0

私はデフォルトでドイツ語と英語で翻訳されたアプリを持っていると仮定します。現在、フランス語のロケールを持つデバイスで開かれています。フランス語の翻訳はありませんので、アプリは英語にフォールバックします。どのようにしてその言語を判断できますか?私はシステム言語を意味するのではなく、活発に表示されるものです。私はthat postを見つけました。これはすばらしい回避策ですが、より良い方法がありますか?Androidで表示される言語を確認する方法

サーバーから適切な言語のデータを要求する必要があり、アプリケーションが使用する言語とは異なる言語でデータを取得するのは意味がありません。

その他の考え: 文字列ごとに言語のフォールバックが処理されるため、表示言語の内容を明確に定義できないなどの方法はありません。例えば。文字列の50%が翻訳され、50%がフォールバックにデフォルト設定されている場合、表示言語はどうなりますか?しかし少なくとも、少なくとも1つの翻訳がある最初のフォールバック言語を少なくとも私たちに教える方法があれば、いいでしょう。

ヒント、考え、経験を歓迎します!

編集:string.xmlをファイル:私は、私の記憶が正しければ一つだけのフォールバックがあるプログラムで

答えて

0

表示される言語を取得する必要があります。あなたのアプリがデバイスのロケールを取得し、1つの文字列が正しいローカライズされたファイル内の対応する文字列のためのアプリ検索に存在しない場合string.xmlをファイル

  • 対応で文字列を検索

    • :ということ メインstring.xmlをファイルにメインstring.xmlをファイル
    • (デバイスのロケールに対応する)全体をローカライズされたファイルが存在しない場合は、アプリのフォールバックを直接

    アプリで使用している言語ではありません装置に必要なものne。あなたはだから私は唯一のアクティブなロケール(デバイス1またはアプリ1)が常にあると思い

    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    android.content.res.Configuration conf = res.getConfiguration(); 
    conf.locale = new Locale(lang.toLowerCase()); 
    res.updateConfiguration(conf, dm); 
    

    このコードでアプリのロケールを変更することができれば、そのアプリがメインstring.xmlをファイルにのみフォールバックすることができますアクティブなロケールの文字列リソースが存在しません。

  • +0

    実際には、Android 7にはいくつかのフォールバックがあります。こちらをご覧ください:https://developer.android.com/guide/topics/resources/multilingual-support.html – iridic

    +0

    ああ、この改善を読んだことはありません!興味深い機能、ありがとう – firegloves

    関連する問題