2016-07-21 8 views
3

デバイスの向きの変更をユーザに通知するためにトーストメッセージを作成:トーストメッセージは翻訳されません。デフォルトの言語で表示のみ

if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, R.string.orientation_change, Toast.LENGTH_SHORT).show(); 
     recreate(); 
    } 

必要な時にメッセージが表示されますが、私のアプリの他の言語バージョンにR.string.orientation_changeテキストがデフォルトの言語で表示され、英語です。これは、エミュレータと実際のデバイスでそれぞれ同じ結果が確認されました。

トーストメッセージをローカライズする方法はありますか?

+1

これは役に立たないはずです...しかし、getResources()。getString(R.string.orientation_change)を代わりに使用しようとしましたか? Toastに表示されているテキストのみが失敗していますか? – W0rmH0le

+0

残念なことに同じ結果...トーストは表示されますが、ドイツ語でなければなりません。 – AbreQueVoy

+0

構造は正しい:プロジェクトをビルドする際にエラーがあり、Lintはデフォルトの文字列ファイルに 'translatable =" false "フラグが設定されていることに気付かなかった。 – AbreQueVoy

答えて

0

ハックのように感じるかもしれませんが、内部のトーストコードではなく、翻訳を行うためのリソースを手に入れます。あなたはこの構造以下、あなたがサポートする言語ごとに1つの文字列を提供する必要が

Toast.makeText(this, getResources().getString(R.string.orientation_change), Toast.LENGTH_SHORT).show(); 
+0

翻訳されたテキストは 'values'ディレクトリにあります。このメソッドは、そこのテキストを検索する必要がありますが、英語の値のみを取ります。 – AbreQueVoy

+0

valuesディレクトリはデフォルト言語を英語で表していませんか?値es(または他の言語)のディレクトリから文字列を表示させようとしていますか?たぶんあなたのstrings.xmlファイルが役立つ可能性があります。 – FishStix

+0

リントチェックに何か問題がありましたが、解決しました。答えとして投稿された要約を見てください。 – AbreQueVoy

1

MyProject/ 
    res/ 
     values/ 
      strings.xml 
     values-es/ 
      strings.xml 
     values-fr/ 
      strings.xml 

追加情報を、参照してください。https://developer.android.com/training/basics/supporting-devices/languages.html

+0

構造をチェックし、私の場合も同じように見えます。 – AbreQueVoy

+0

もちろんこれらすべてのXMLに翻訳されたテキストを入力しましたか?あなたのデフォルト言語がPLの場合は、** value-XX **フォルダを作成する必要があります。* XX *はテストしている言語の記号です。どのようにこのすべてをテストしているのでしょうか、モバイルの言語を変更してアプリを再起動しますか?ありがとうございました。 – statosdotcom

+0

あなたが指摘したすべての小切手は満たされていましたが、問題はLintでした - 私は答えとして要約を公開しましたので、確認してください。 – AbreQueVoy

2

は、それが固定ガット:

  1. プロジェクトをクリーンアップしました。
  2. プロジェクトを再度構築しました。

構築している間、私はあまりにも他の言語のために用意した値があったものの、translatable="false"パラメータは、次の英語で定義された値に設定されたことをエラーを受信しました。

何らかの理由で、Lintはそれを以前に見つけられませんでしたが、とにかく問題は解決されました。

あなたの努力に感謝します。

関連する問題