ユーザーインターフェイスがオランダ語であるWebアプリケーションを作成しました。システムの日付と時刻のルーチンを使用して、アプリケーションで日付文字列をフォーマットします。ただし、システムがフォーマットする日付文字列は英語ですが、オランダ語で必要なため、システムのロケールを設定する必要があります。 Debianではどうすればよいですか?設定してみましたLC_ALL=nl_NL
しかし、効果がないようです:
$ date
Sat Aug 15 14:31:31 UTC 2009
$ LC_ALL=nl_NL date
Sat Aug 15 14:31:36 UTC 2009
私のUbuntuデスクトップシステムでLC_ALLを設定すると問題なく動作することを覚えています。これを機能させるために追加のパッケージをインストールする必要がありますか、それとも完全に間違っていますか?
/etc/default/locale
を編集して、内容を次のように設定します。
LANG="nl_NL.UTF-8"
以下を使用して、現在生成しているロケールを確認できます。
# locale -a
/etc/locale.gen
を編集し、有効にするロケールの行のコメントを外すと、さらに生成できます。次に、次のコマンドを実行して生成できます。
# locale-gen
サポートされているロケールのリストは/usr/share/i18n/SUPPORTED
にあります
Debian wiki で利用可能な詳細情報があります。
locales
パッケージをインストールする必要があるかもしれません。これにより、生成するロケールが尋ねられます。すでにインストールされている場合は、dpkg-reconfigure locales
を使用すると、より多くのロケールを生成できます。
他のほとんどの場合と同様に、ここでの回答は不完全です。いくつかの場所から情報をつなぎ合わせた後、(1)必要なロケールが利用可能であることを確認し(利用できない場合は生成し)、(2)ロケール関連の環境変数を目的のロケールに設定しました。
私の場合、私はDockerコンテナにen_US.UTF-8
をプログラムで(つまり非インタラクティブに)インストールする必要がありました。 ffは私が必要とするものを達成しましたが、インタラクティブなシェルでうまく機能するはずです。
apt-get update
# Install locales package
apt-get install -y locales
# Uncomment en_US.UTF-8 for inclusion in generation
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen
# Generate locale
locale-gen
# Export env vars
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc
同じシェルで、環境変数をすぐに有効にするには、source ~/.bashrc
を実行する必要があります。 locale
を呼び出すことにより、ロケールが正しく構成されていることを確認できます。
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
この件に関して多くのQ&Aエントリがありましたが、実際に役立ったのはほんのわずかです。クレジットの期日があるクレジット:
次のようにインストールされたLXCコンテナでは、これらの回答はどれもうまくいきませんでした。
_lxc-create -n sse-master -t download -n sse-master -- \
-d debian -r jessie --Arch i386
_
私は常に_locale-gen
_から次の出力を取得しました。つまり、ロケールを生成していません(リストされていない):
_$ Sudo locale-gen
Generating locales (this might take a while)...
Generation complete.
_
_dpkg-reconfigure locales
_を実行して一部のロケールを選択しても、期待どおりに_/etc/locale.gen
_が更新されませんでした。
ただし、そのファイルを手動で変更し、必要なロケールのコメントを外すと、_locale-gen
_が正常に機能し始めました。
_$ Sudo locale-gen
Generating locales (this might take a while)...
en_GB.UTF-8... done
en_US.UTF-8... done
Generation complete.
_
このように手動でロケールを生成することもできました:
_Sudo localedef -i en_US -f UTF-8 en_US.UTF-8
Sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8
_
しかし、これは恒久的な解決策ではありませんでした:_locale-gen
_オプションなしで_--keep-existing
_を実行すると、そのような手動で生成されたすべてのロケール、つまり_/etc/locale.gen
_にリストされていない(コメントされていない)すべてのロケールが削除されます。
Webアプリケーションの場合、システムのデフォルトを要求するよりも、プログラムの内部(-===-)でsetlocale()insideを使用する方が良い場合があります。ロケールは外部で適切に設定されます。それほど緩くないのはそのように終わります。
私と同じように、Ubuntu 14.04 LTSで/etc/locale.gen
ファイルがない場合は、/var/lib/locales/supported.d/local
に新しいロケールを追加して、次のコマンドを実行できます。
Sudo dpkg-reconfigure locales
この方法でフランス語(たとえば)ロケールを追加することもできます(/var/lib/locales/supported.d/local
を編集する代わりに):
Sudo locale-gen fr_FR fr_FR.UTF-8
ISO-8859-1
ロケールのUTF-8
およびfr_FR
コードセットを追加および生成し、最後に次のように入力します。
Sudo dpkg-reconfigure locales
仕事を終える
ただし、最初に必要な言語パックをインストールしておく必要があります。私のドイツ語ベースのVPSでは、プリインストールされた英語の言語パックはありませんでした。したがって、まず、それがインストールされていることを確認します。
aptitude install language-pack-en