Android Studioでデフォルト言語を設定できない


8

Android Studioで未翻訳の文字列に関する警告が表示されます-これは、英語に翻訳されていないことを示しています。これは、「en-rGB」リソースフォルダーがあるためです。しかし、lintの指示に従ってデフォルトの言語を指定しようとしましたが、これはうまくいきませんでした。

次のstrings.xmlファイルがあります。

values/strings.xml

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:locale="en">

    <string name="string1">Howdy</string>
    <string name="string2">Howdy</string>
</resources>

values-en-rGB/strings.xml

<resources>

    <string name="string1">Hello</string>
</resources>

values-fr/strings.xml

<resources>

    <string name="string1">Bonjour</string>
    <string name="string2">Bonjour</string>
</resources>

values-fr-rCA/strings.xml

<resources>

    <string name="string2">Bonjour</string>
</resources>

期待される結果:警告は表示されないはずです。両方の文字列が英語とフランス語の両方に翻訳されます

実際の結果:Lintはstring2について英語に翻訳されていないと警告します。

注:fr-rCAは、地域的なものではないことを示すために含めています。「地域化されていない」フランス語に翻訳されている限り、フランス語カナダ人に翻訳する必要がないことは嬉しいことです。この場合、すでにフランス語に翻訳されているため、カナダ・フランス語に翻訳されていなくても、string1について警告しません。

メインのリソースフォルダーを英語(values-en)に変更できません。デフォルトのリソースがないというエラーが発生します。それは本当です。

他の言語を追加する予定であり、含めた他の言語に翻訳されていない文字列に対して警告を表示したいので、一般的に警告を抑制したくありません。

私が求めているのは、lintにデフォルトの言語を通知する正しい方法です。「翻訳が不完全です」という警告の指示に従ってそれを行いました。

リソースファイルのルート要素にtools:locale = "languageCode"を指定することで、lint(およびその他のツール)にres / values /フォルダーのデフォルト言語を指定できます。(ツール接頭辞は、名前空間宣言http://schemas.android.com/toolsを指します 。)

しかし、これはうまくいかないようです。私はそれを間違っていますか、これはlintの問題ですか?


デフォルトの文字列が2つあるのは奇妙ですが、各文字列の1つだけが別の地域の言語に翻訳されます。en-rGB値にstring2を追加しないと、エラーがスローされると思います。
C.Schone

1
@ C.Schoneが言ったことの2番目。それらが同じになるので、デフォルトのstring2をen-rGBにコピーするだけで、警告が出ます。私が翻訳に取り掛かる最善の方法は、値が翻訳を必要とするかどうかにかかわらずstrings.xml、すべてのファイルがデフォルトとしてすべてのエントリを持っていることですvalues/strings.xml
ahasbini

1
@ahasbini デフォルトのstring2をen-rGBにコピーするだけです。これは、1つの文字列とそれを必要とする他の1つの言語だけなので、ここでは簡単です。100個の文字列と20言語を想像してみてください
Tim

imho、私はまだdiffツールを使ってそれをするでしょう。最終的にすべてのエントリがすべての文字列ファイルに存在する必要があるため、すべてのファイルでエントリを名前(値ではなく)で並べ替え、次にdiffツールを使用して、デフォルトファイルと言語固有のファイルの両方を用意します。開いて欠落しているエントリを見つけ、デフォルト値でコピーします。そうするための小さなコードを書くこともできますが、私はこれを1回だけと見なすため、WinMergeなどの既製のdiffツールを使用してそれを行います
ahasbini

すべてのエントリがすべての文字列ファイルに存在する必要があります。デフォルトのファイルにすべての文字列を含める必要があります
Tim

回答:


6

バグです:https : //issuetracker.google.com/issues/142590628

自動コピー:私はあなたのための修正プログラムを持っているvalues/strings.xmlvalues-enフォルダ

1.values-enフォルダーを作成する

2.に貼り付けますapp/build.gradle

task copyEnResource {
    copy {
        from ('src/main/res/values/strings.xml')
        into ('src/main/res/values-en/')
    }
}

preBuild.dependsOn copyEnResource

デモ:

Android Studioの翻訳に関する問題


よろしくお願いします。これは、ビット不格好ですが、限り、それは自動化されていますように私はそれがあまりにも保守性の問題のすべきではないと思います
richjhart

ようやくこれを試してみました-うまく
いきました
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.