"LANGUAGE"ロケール変数 - 英語をデフォルトの言語に設定するには? gettextにバグがありますか?

"LANGUAGE"ロケール変数 - 英語をデフォルトの言語に設定するには? gettextにバグがありますか?

「LANGUAGE」変数はデフォルトの言語を設定する必要があり、言語セットを指定するために使用できます。最初の(以前の)メッセージが利用できない場合は、次の言語が使用されます。

たとえば(文字を取得例)「sv:de」変数値を持つプログラムは、メッセージをスウェーデン語で表示し、そのテキストがない場合はドイツ語で表示します。

英語を基本言語として使用し、他の言語(ロシア語など)を補助言語として使用したいと思います。

export LANGUAGE=en:ru; blabla
blabla: команда не найдена
        ^^^^^^^^^^^^^^^^^^
**Russian error message used**

さて、別のコマンドを試してみましょう。

export LANGUAGE=ru:en; blabla
blabla: команда не найдена
        ^^^^^^^^^^^^^^^^^^
**Russian error message used again**

つまり、英語をどこに指定しても、常に優先順位が最も低く、その言語にメッセージが定義されている場合は、指定された他の言語でメッセージが表示されます。

質問:英語を基本言語として、他の言語を補助言語として指定する方法は? LANGUAGE変数はどうなりましたか?

PS 'LC_MESSAGES'はもちろん英語のロケールに設定されます。

答え1

のようにこれ問題は、ほとんどのプログラムに「英語」ロケールがないが、デフォルト(「C」)ロケールと英語のメッセージを使用することです。したがって、英語を好む言語を使用するには、リストの英語ロケールの後に「C」ロケールを追加する必要があります。私の場合、「言語」は次のようになります。

LANGUAGES=en:C:ru


これは、「英語を使用してからデフォルト値を使用してからロシア語を使用する」という意味です。したがって、英語ロケールを持たないすべてのプログラム(英語ロケールをデフォルトロケールとして使用するため)は、デフォルトロケールに置き換えられます。
デフォルトのロケールは常に存在し、ロシア語のロケールは選択されていないため、「デフォルト」の後にロシア語のロケールを指定しても効果がないと考えることができます。これは本当です。ただし、一部のプログラム(ブラウザやテキストエディタなど)は、「LANGUAGES」変数を使用して、ユーザーが使用する言語のリスト(HTMLページが要求された言語やスペルチェックに使用される言語)を取得します。 )、この場合は言語リストでロシア語が優先されます。不要ではありません。

答え2

LANGUAGE変数だけを責める理由はありません。まず、localeプログラムの出力を見て、さまざまなことを担当する多くの変数があることに注意する必要があります。したがって、英語でメッセージを受け取るには変数を変更してくださいLC_MESSAGES

LC_MESSAGES=C type test
test is a shell builtin

type test
test встроена в оболочку

関連情報