背景情報

背景情報

私は独自のカスタム を作成しlocale、それを に配置しました/etc/locale.conf。仮想コンソールにログインすると (Ctrl+Alt+F2)、正常に有効になります。ただし、Gnome3 セッションでは、これらの変数は設定されていません。ターミナル アプリケーションの場合は、それらを に配置するだけで済みます.bashrcが、Thunderbird や Pidgin などのグラフィカル アプリケーションでは役に立ちません。

私は以下のヒントに従うようにしました:シェル初期化のロケール設定は GNOME セッションでは使用されませんそして、バグをエミュレートしましたロケール - ArchWikiファイルを作成することで.pam_environment、設定localeは Gnome3 によって設定されたもののままです。Gnome 設定には設定ダイアログがありますが、設定できるのは事前定義されたlocale組み合わせの非常に限られたセットのみで、カスタマイズする方法はありません。

ホームディレクトリ内の関連ファイル:

user@localhost:~$ ls -lah .dmrc .pam_environment .session .xsession .xsessionrc
lrwxrwxrwx. 1 user user 16 12. Jun 08:57 .dmrc -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 11. Jun 20:23 .pam_environment -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 12. Jun 09:09 .session -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 12. Jun 09:07 .xsession -> /etc/locale.conf
lrwxrwxrwx. 1 user user  9 13. Jun 11:22 .xsessionrc -> .xsession
-rw-rw-r--. 1 user user 66 13. Jun 11:13 .profile

user@localhost:~$ cat .profile 
source /etc/locale.conf

内容/etc/locale.conf

LANG="en_US.utf8"
LC_TIME="de_MY.utf8" # NB: de_MY
LC_MONETARY="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"

localeGnome3 でカスタム s を設定する方法を知っている人はいますか?

答え1

背景情報

私は、GNOME Shell 3.14.4 を搭載した Fedora 21 でこのソリューションをテストしましたが、他のバージョンにも適用できると思います。

最初に理解しておくべきことは、GNOME デスクトップ環境はシステム全体のロケール定義を上書きするため、 の影響を受けないということです/etc/locale.conf。さらに、独自のロケール設定を持ち、システムや GNOME の設定をまったく使用しないアプリケーションが存在する可能性があります。このガイドでは、ニーズに合わせてロケール設定をカスタマイズする方法と、ロケールの観点から GNOME とシステムの一貫性を保つ方法について説明します。


現在のロケールステータスの確認

システム全体の設定

からFedora 21 システム管理者ガイド:

システム全体のロケール設定はファイルに保存され/etc/locale.conf、起動時に読み込まれます。システムデーモン。 で構成されたロケール設定は、/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-control-center のソースコードset_localed_locale()関数が呼び出されると、次のすべてのカテゴリ (LC_TIME、LC_NUMERIC、LC_MONETARY、LC_MEASUREMENT、LC_PAPER) が で定義されている同じ 1 つのロケールに設定されるようですorg.gnome.system.locale region

カスタム ロケールを作成せずに異なるロケール設定を混在させることは不可能に思えますが、幸いなことに、それほど複雑な作業ではありません。


カスタムロケールの作成

最も簡単な説明方法は例を挙げることだと思います。私の場合は、主にヘブライ語に基づいたカスタムロケールが必要でした(彼_IL)ただし、LC_NAME、LC_MESSAGESはja_JP 日本語およびLC_TIME(およびを変更したfirst_weekdayものfirst_workdayja_JP

ロケール定義ファイルの取得

どのロケールを混在させたいか考えておく必要があります。まず、関連する定義ファイルを見つける必要があります/usr/share/i18n/locales/。このファイルは にあります。私の例に戻ると、次のものが必要でした。彼_ILja_JP 日本語そしてja_JP自宅に作業フォルダを設定し、必要なファイルをそこにコピーしました。

$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/

新しい定義ファイルの作成

私は自分の地元に電話することにした翻訳:そして彼_ILhc_ILを基礎として、次の行は、からの内容を含む新しいファイルを作成しhe_IL、途中で文字列のすべての出現を置き換えます。彼_ILファイル内に翻訳:

$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL

新しい定義ファイルの変更

これで、新しいロケールを必要に応じてカスタマイズできます。新しく作成したファイルを~/custom-locale/hc_ILお気に入りのテキストエディタで開きます。ヴィム(ロケール定義ファイルには適切な構文強調表示があります):

$ vim ~/custom-locale/hc_IL

まだお気に入りのエディターを選んでいない方やヴィム彼らの好みではない、使用できる編集:)

$ gedit ~/custom-locale/hc_IL

ファイル構造はそれほど複雑ではありません。基本的に、セクションで構成されています。ロケール(5)マニュアルページ:

ロケール定義には、ロケールカテゴリごとに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      "[email protected]"
    tel        ""
    fax        ""
    language   "Hebrew"
    territory  "Israel"
    revision   "1.0"
    date       "2015-04-21"
    

    注記:全ての "カテゴリー..「行」のLC_IDENTIFICATIONセクションは、 を使用してファイル作成中に変更されていますsed。 そのため、これ以上変更する必要はありません。

  • LC_TIME

    私は以下のセクション全体をコピーしましたja_JP週の最初の曜日と最初の就業日を示す行のみを変更しました。

    first_weekday 1
    first_workday 1
    
  • 残りのカテゴリーはそのままにするか、内容をコピー指令は次のようになります:

    LC_NAME
    copy "en_US"
    END LC_NAME
    

これで定義ファイルが完成しました。ファイルを保存するのを忘れないでください :)

新しいロケールをコンパイルしてコピーする

新しいロケールのコンパイルは次のコマンドを使用して行われます。または使用須藤.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 Shell とロケールに依存するアプリケーション (グラフィカルおよびコンソール) を使用して、新しいロケールで期待どおりに動作することを確認します。たとえば、LC_TIME をカスタマイズした場合は、次のdateコマンドを実行して日付形式を検証できます。

    $ date +%x
    21/04/15
    

注記:すべては GNOME 3.14 を搭載した Fedora 21 でテストされました。他の Linux ディストリビューションでは、追加の手順や異なる手順が必要になる場合があります。

手順に問題がある場合はコメントしてください。

関連情報