端末(st)に文字が正しく表示されません。

端末(st)に文字が正しく表示されません。

ターミナルにドイツ語のウムラウト(ä、、、)を入力すると(私はstを使用しており、Arch Linuxにあります)、表示されます。öロケールが正しく設定されているようです。ü$XTERMst-256color<ffffffff>

の出力はlocale次のとおりです。

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=de-DE.UTF-8
LC_CTYPE=de-DE.UTF-8
LC_NUMERIC="de-DE.UTF-8"
LC_TIME="de-DE.UTF-8"
LC_COLLATE="de-DE.UTF-8"
LC_MONETARY="de-DE.UTF-8"
LC_MESSAGES="de-DE.UTF-8"
LC_PAPER="de-DE.UTF-8"
LC_NAME="de-DE.UTF-8"
LC_ADDRESS="de-DE.UTF-8"
LC_TELEPHONE="de-DE.UTF-8"
LC_MEASUREMENT="de-DE.UTF-8"
LC_IDENTIFICATION="de-DE.UTF-8"
LC_ALL=

私はlocale.confただ設定

LANG="de-DE.UTF-8"
LC_CTYPE="de-DE.UTF-8"

私はlocale.genコメントがありませんde-DE.UTF-8。何が間違っている可能性がありますか?

答え1

実際のロケール名には下線言語コードと国コードの間、つまり次のようにする必要locale.confがあります。

LANG="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"

-現在は、アンダースコア()の代わりにマイナス記号()を使用しています_。ロケール仕様が無効であるため、システムは POSIX ロケールと US-ASCII 文字セットにのみ置き換えられます。

このLANG変数は他のすべてのロケールのデフォルト値を設定するので、単に設定してください。

LANG=de_DE.UTF-8

変数を使用して特定のカテゴリを上書きしない限り、LC_*すべてのカテゴリ別のロケール変数を同じ値に設定するのと同じです。LC_*

したがって、設定すると、その設定はすでに新しいデフォルトに設定されているため、LANG=de_DE.UTF-8必要ありません。ただし、翻訳されたエラーメッセージが気に入らず英語を維持したい場合は、LANG値を設定してLC_MESSAGESカテゴリのみをオーバーライドできます。LC_CTYPE=de_DE.UTF-8LANGLC_CTYPELC_MESSAGES=en_US.UTF-8

コマンド出力にもこの内容が反映されます。現在の設定と同じ(無効な)値localeに設定されているすべてのカテゴリ別変数が表示されます。LANG

LC_ALLすべてのロケールのマスターオーバーライドです。ローカライゼーションの影響を受ける可能性があるコマンド出力を解析するいくつかのパイプラインで最もよく見られます。ユーザーが使用するロケールに関係なく、スクリプト作成者が特定のロケールの出力解析のみを設計することで、パイプラインに接頭辞を付けたりLC_ALL=POSIX保証したりできます。LC_ALL=en_US.UTF-8

関連情報