24

私のアプリは、英語とドイツ語の2つの言語のみをサポートしています。だから私は言語文字列のためのそのようなフォルダ構造を持っています:

myproject / res / values / strings.xml

myproject / res / values-de / strings.xml

Lintチェックを実行すると、不足している言語について多くの警告が表示されます。これは、アプリがサポートする必要がないことを示しています。

「some_string」は、af、am、ar、be、bg、ca、cs、da、el、en-rGB、es、es-rUS、et、fa、fi、fr、hi、hr、hu、inでは翻訳されません。 、it、iw、ja、ko、lt、lv、ms、nb、nl、pl、pt、pt-rPT、ro、ru、sk、sl、sr、sv、sw、th、tl、tr、uk、vi 、zh-rCN、zh-rTW、zu

この警告により、どの文字列がドイツ語に翻訳されていないかを理解するのが非常に困難になります。この文字列にはドイツ語への翻訳がないことを理解するために、各警告を調べて「de」記号を検索する必要があります。

だから私の質問は簡単です-どうすればLintに2つの言語だけをチェックするように指示できますか?

4

3 に答える 3

40

更新:Gradleによってインポートされる言語を制限できます!Cyril Mottierは、サポートするリソースを指定できると指摘しています。

Android Gradle Plugin 0.7以降、アプリケーションが処理する構成に関する情報をビルドシステムに渡すことができます。これは、resConfigおよびresConfigsフレーバーとデフォルトの構成オプションのおかげで行われます。以下のDSLは、アプリが管理するリソース構成と一致しないリソースをaaptがパッケージ化するのを防ぎます。

defaultConfig {
    // ...
    resConfigs "en", "de", "fr", "it"
}

詳細はこちらAPKをDietAndroidに配置する(ページでresConfigを検索してください)


ビルドパスにプロジェクトを追加すると、それらのプロジェクトに追加されたすべての言語がプロジェクトに浸透するようです。「google-play-services_lib」プロジェクトなど、私が「サポート」した40以上の言語をプロジェクトに追加しました。これが、デフォルトのスペイン語(values-es)リソースフォルダーしかないにもかかわらず、(上記のエラーと同様の)クレイジーなlintエラーが発生した理由です。

解決策は、サポートしていないリソースファイル/フォルダーを外部/インポートされたプロジェクトから削除することです。google-play-services_libプロジェクトのvalues/values-esフォルダーを除くすべてを削除した後、非ターゲット言語のlint警告が消えました。後日、これらの言語/地域のサポートを追加したい場合に備えて、リソースファイルのバックアップを必ず取っておいてください。

お役に立てれば。私は問題をどのように表現するかを理解しようとして、数日間、テーブルとSOとGoogleのいたるところに頭をぶつけていました。それから私はついに、両方とも翻訳された私の2つのプロジェクト、つまり図書館プロジェクトの違いが何であるかを理解しました。

私は言語x/y / zのみをサポートし、残りは無視するようにプロジェクトに伝える方法があればいいのにと思います。

于 2013-02-21T22:36:51.120 に答える
8

ここで同じ問題。

バグレポートを作成しました。お気軽にスターを付けてください

http://code.google.com/p/android/issues/detail?id=50525

これは、ADT21.1のリリース以降に発生しました。

私はそれの回避策を知りません(編集:以前は回避策を見つけましたが、間違ったファイルを見ました、ups)

于 2013-02-21T10:02:39.877 に答える
0

Googleライブラリサービスが含まれているため、同じ問題が発生します...

今のところ、これが私の解決策です。

  1. 含まれているすべてのライブラリを削除します
  2. lintを適用します
  3. エラーを修正する
  4. すべてのライブラリを再度追加します
于 2013-03-11T12:25:34.240 に答える