背景情報
Fedora 21でGNOME Shell 3.14.4を使用してソリューションをテストしましたが、他のバージョンにも適用できると考えています。
最初に理解することは、GNOMEデスクトップ環境がシステム全体のロケール定義をオーバーライドするため、の影響を受けないこと/etc/locale.conf
です。さらに、独自のロケール構成を持ち、システムまたはGNOME設定をまったく使用しないアプリケーションが存在する場合があります。このガイドでは、ニーズに合わせてロケール設定をカスタマイズする方法を説明します。GNOMEとシステムはロケールの観点から一貫性があります。
現在のロケールステータスの確認
システム全体の設定
以下からのFedora 21のシステム管理者ガイド:
システム全体のロケール設定は/etc/locale.conf
ファイルに保存され、初期起動時にsystemdデーモンによって読み取られます。で設定されたロケール設定/etc/locale.conf
は、個々のプログラムまたはユーザーが上書きしない限り、すべてのサービスまたはユーザーに継承されます。
現在のロケールステータスを確認するには、次を実行します。
$ localectl status
System Locale: LANG=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
VC Keymap: us
X11 Layout: us
GNOME設定
$ gsettings get org.gnome.system.locale region
'en_US.UTF-8'
GNOMEには1つの設定しかありません。ざっと見与えることによって、GNOMEコントロールセンターのソースコードを、ときと思われるset_localed_locale()
関数が呼び出されると、それはで定義されたものと同じロケールにすべて次のカテゴリ(LC_TIME、LC_NUMERIC、LC_MONETARY、LC_MEASUREMENT、LC_PAPER)を設定しますorg.gnome.system.locale region
。
カスタムロケールを作成しないと、異なるロケール設定を混在させることは不可能に思えますが、幸いなことに、それほど複雑なタスクではありません。
カスタムロケールの作成
説明する最も簡単な方法は、例によると思います。私の特定のケースでは、主にヘブライ語(he_IL)に基づいて、en_USからLC_NAME、LC_MESSAGES 、en_GBからLC_TIME(first_weekday
and を変更first_workday
)を使用したカスタムロケールが必要でした。
ロケール定義ファイルの取得
どのロケールを混在させるかを知っている必要があります。最初に、関連する定義ファイルを見つける必要があります。これはにあります/usr/share/i18n/locales/
。例に戻って、次のものが必要でした:he_IL、en_USおよびen_GB。自宅に作業フォルダーをセットアップし、必要なファイルをそこにコピーしました。
$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/
新しい定義ファイルの作成
私は自分のロケールをhc_ILと呼び、he_ILをベースとすることにしました。次の行は、新しいファイルの作成hc_IL
から内容でのhe_IL
文字列の出現すべて交換し、途中でhe_ILとファイル内のhc_IL。
$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL
新しい定義ファイルの変更
これで、新しいロケールをニーズに合わせてカスタマイズできます。新しく作成したファイル~/custom-locale/hc_IL
をお気に入りのテキストエディターで開きます。私はvimを使用しています(ロケール定義ファイルの適切な構文強調表示があります):
$ vim ~/custom-locale/hc_IL
お気に入りのエディターをまだ選択しておらず、vimがお茶ではない場合は、geditを使用できます:)
$ gedit ~/custom-locale/hc_IL
ファイル構造はそれほど複雑ではありません。基本的に、セクションから構成されます。ロケール(5) manページ:
ロケール定義には、ロケールカテゴリごとに1つの部分があります。各部分は、別の既存のロケールからコピーすることも、ゼロから定義することもできます。カテゴリーをコピーする必要がある場合、定義内の唯一の有効なキーワードは、コピーの後にコピーするロケールの名前が続くコピーです。
コピーの概念は非常に便利です。時間を節約し、結果のファイルは明確で簡潔です。たとえば、セクション全体をコピーする代わりに、次のことができます。
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
ロケール定義ファイルの完全なドキュメントには、次の方法でアクセスできます。
$ man 5 locale
ただし、既存のロケールを組み合わせたカスタムロケールを作成する場合は、すべての詳細を理解する必要はありません。
私の場合、次のカテゴリとキーワードを変更しました。
LC_IDENTIFICATION
title "Custom Hebrew locale"
source "mydomain.ws"
address "http:////www.mydomain.ws"
contact ""
email "admin@mydomain.ws"
tel ""
fax ""
language "Hebrew"
territory "Israel"
revision "1.0"
date "2015-04-21"
注:LC_IDENTIFICATIONセクションのすべての「category ..」行は、ファイル作成中にを使用して変更されています。そのため、もう触る必要はありません。sed
LC_TIME
en_GBからセクション全体をコピーし、週の最初の日と最初の就業日を示す行のみを変更しました。
first_weekday 1
first_workday 1
残りのカテゴリはそのままにしておくか、次のようにコンテンツをコピーディレクティブに置き換えました。
LC_NAME
copy "en_US"
END LC_NAME
これで、定義ファイルの準備ができました。ファイルを保存することを忘れないでください:)
新しいロケールのコンパイルとコピー
新しいロケールのコンパイルは、rootとして次のコマンドを使用するか、sudoを使用して行われます。hc_IL
ロケールに置き換えます:
$ sudo localedef -c -v -i hc_IL -f UTF-8 hc_IL.UTF-8
コンパイルが成功すると、コンパイルされたロケールデータがアーカイブファイルに追加されます/usr/lib/locale/locale-archive
。
新しいロケール定義ファイルをロケール定義ディレクトリにコピーします。hc_IL
ロケールに置き換えます:
$ sudo cp -v hc_IL /usr/share/i18n/locales/
新しいロケールの有効化
このステップでは、新しいロケールを使用するようにシステムとGNOMEを構成します。
システム全体の設定
/etc/locale.conf
ファイルをルートとして編集し、すべての行をLC_
新しいロケールに設定します。例えば:
LANG=en_US.UTF-8
LC_NUMERIC=hc_IL.utf8
LC_TIME=hc_IL.utf8
LC_MONETARY=hc_IL.utf8
LC_PAPER=hc_IL.utf8
LC_MEASUREMENT=hc_IL.utf8
GNOME設定
GNOMEで新しいロケールをアクティブにするには、次のコマンドを実行します。hc_IL
ロケールに置き換えます:
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
新しい設定の検証
最後のステップは、すべてが期待どおりに機能することを検証することです。すべての設定をリロードするには、再起動するのが一番簡単でした。
注:すべてがGNOME 3.14を搭載したFedora 21でテストされました。他のLinuxディストリビューションでは、追加または異なる手順が必要になる場合があります。
手順に問題がある場合はコメントしてください。