Debianでロケールをインストール/変更する方法は?


65

ユーザーインターフェイスがオランダ語である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を設定しても問題なく動作することを覚えています。この作業を行うために追加のパッケージをインストールする必要がありますか、それともまったく間違っていますか?


サーバーに割り当てられたIPアドレスに基づいてこれを自動的に行う方法はありますか?
スクープ

回答:


72

/etc/default/locale内容を編集して設定します:

LANG="nl_NL.UTF-8"

以下を使用して、現在生成されているロケールを確認できます。

# locale -a

/etc/locale.gen有効にするロケールの行を編集およびコメント解除することで、さらに生成できます。次に、実行してそれらを生成できます:

# locale-gen

サポートされているロケールのリストは、次の場所にあります。 /usr/share/i18n/SUPPORTED

Debian wikiにはさらに多くの情報があります


9
/ var / lib / belocs / listは存在しません。代わりに/etc/locale.genを編集するか、dpkg-reconfigureロケールを実行する必要があります。
pgs

locale-genを説明するためにこの回答を+1しますが、前のコメントによると、私のシステムには/ var / lib / belocs / listなどのファイルはありません
11

この答えを見つけるのに5時間かかりましたが、完璧になりました。また、エイリアスを作成することができます:en_USのUTF-8と語it_IT UFT-8は、私はあなたがロケールに依存PHPコードを持っている場合は偉大である、デフォルトではUTF-8で私のロケールを持つことが許さ
CEC

/ etc / default / localeの内容を編集および設定できるコマンドまたはパッケージはありますか?
カールモリソン

以下のCzarの回答をご覧ください。次のようにすることができます:sed -i 's / ^#*(en_US.UTF-8)/ \ 1 /' /etc/locale.gen
Tobias Gaertner

66

localesパッケージをインストールする必要がある場合があります。これにより、生成するロケールが尋ねられます。既にインストールされているdpkg-reconfigure locales場合は、より多くのロケールを生成できます。


これはロケールのみを生成し、システムのデフォルトを設定しません。
デビッドパシュリー

16
いいえ、dpkg-reconfigureロケールの最後の質問は、デフォルトのロケールを選択することです。
-pgs

2
のように実行する必要がありsudoましたsudo dpkg-reconfigure locales
アレックスヤーシャ

sshを介してアクセスするサーバーの場合、ロケールに関するDebian wikiページでは、デフォルトのロケールをのままにしておくことをお勧めしますNONE
ポールルージュ

1
これはまさに私が必要としていたものでした。ほんの数回のキーストロークですべてのロケールをインストールしました。どうもありがとうございます!
aexl

11

ここでの回答は、他のほとんどの場合と同様に不完全です。いくつかの場所から情報をつなぎ合わせた後、(1)必要なロケールが使用可能であることを確認し(使用可能でない場合は生成する)、(2)ロケール関連の環境変数を目的のロケールに設定することでした。

私の場合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、env変数がすぐに有効になるようにする必要があります。を呼び出すことで、ロケールが正しく構成されていることを確認できます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エントリがありましたが、実際に役立ったのはごくわずかです。クレジットが支払われるクレジット:


6

これらの答えはどれも、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ます。


3

Webアプリケーションの場合は、システムのデフォルトロケールを外部で適切に設定することを要求するよりも、プログラム内でsetlocale()を使用する方が適切な場合があります。そのようにルーズエンドが少なくなります。


1
システムに必要なロケールがない場合、動作しませんsetlocale
ゴッドファーザー

1

ただし、最初に必要な言語パックをインストールする必要があります。ドイツ語ベースのVPSには、事前にインストールされた英語の言語パックはありませんでした。そのため、最初にインストールされていることを確認します。

aptitude install language-pack-en

1

私のように、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-1UTF-8コードセットを追加して生成し、fr_FR最後に入力するには:

sudo dpkg-reconfigure locales

仕事を終える

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