2012-01-02 30 views
4

私のアプリケーションでヘブライ語リソースをサポートしたい(デフォルトは英語)。 "res/values-iw/strings.xml"の下にヘブライ語リソースを割り当て、それをエミュレータでテストしました。結果は良かった - エミュレータ言語をヘブライ語に切り替えた後、私のアプリケーションでヘブライ文字列を見た。Androidエミュレータはヘブライ語リソースを正しく表示しますが、デバイスは正しく表示されません

デバイスの言語をヘブライ語に設定した後、デバイス(Samsung Galaxy S2)に表示されないという問題があります。私は英語の文字列を見続けていました。

どのようにそれを解決するためのアイデアですか?

ありがとうございます!

+0

同じ方法でドロアブルをローカライズするソリューションを見つけましたか?ローカリゼーションは、複製ソリューションを使用するとコストがかかります... –

答えて

4

してみてください。

Samsung Galaxy S2のOSは、他のAndroidデバイスとは異なるヘブライ語のロケールとリソースを扱うようです。 Androidは、互換性のためにヘブライ語には言語コード "iw"を使用していますが、サムスンはそれを言語コード "he"を使用するように変更したようですが、ISO 639-1によると間違いなく互換性はありません。詳細な情報については、Android issue 3639を参照してください。

効果があることRES内のリソース/ * - IW/が影響を受けたサムスンのデバイスにロードされていない、と回避策はのres/*で複製コピーを追加することである - 彼/

これを試してみてください、確認するには、次の

Locale loc = new Locale("iw"); 
Log.i(TAG, "locale language: " + loc.getLanguage()); 
Log.i(TAG, "display language: " + loc.getDisplayLanguage()); 

これは、両方の表示言語として「עברית」で、ギャラクシーS2上、通常のAndroidデバイス上の「IW」を印刷し、そして「彼」必要があります。私は、影響を受けるデバイスを所有していないため、これを自分でテストすることはできませんでした。

同じ問題の影響を受けるHacker's Keyboard issue 122を参照してください。

+0

あなたの返信ありがとうございます。これはAPI 10(2.3.3)でテストされました。関数getDisplayLanguage()とgetDisplayCountry()が正しい値を返しました。だから、それはS2の問題だけだと言っていますか?私はS1といくつかのHTCデバイスでそれをテストします。 –

+0

こんにちは、 この問題は、HTC、Galaxy S1、S2のいくつかのデバイスで確認しました。ルートアクセスを持つすべてのデバイスはヘブライ語のフォントを表示でき、ROMを変更していないすべての「純粋な」デバイスはヘブライ語を表示できません。同じルート上のもう一つの問題は、すべてのルートデバイスで広告が表示されず、ルート以外のデバイスで広告が表示されたことです。 –

+0

追加のフォルダ/ res/values-he/workedを置くことです! –

1

エミュレータのAndroidバージョンはSamsung Galaxy S2バージョンと同じですか?

デバイスのヘブライ語に移動した後に取得するロケール言語と国を確認してください。おそらくそれはiwではないでしょう。必要に応じてのres/xmlの-彼/などのために同じ、のres /値-彼/のres /値-IW/から、あなたのリソースの複製コピーを追加する

String lang = Locale.getLocale().getDisplayLanguage(); 
String country = Locale.getLocale().getDisplayCountry();