Gnome3でカスタムロケールを設定する(Fedora 20)


15

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

私はこれらのヒントに従うことを試みました:GNOMEセッションで使用されないシェル初期化のロケール設定、およびファイルを作成することでLocale-ArchWikiのバグをエミュレートしました.pam_environmentが、localesはまだ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 を設定する方法を知っていますか?

回答:


9

背景情報

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_weekdayand を変更first_workday)を使用したカスタムロケールが必要でした。

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

どのロケールを混在させるかを知っている必要があります。最初に、関連する定義ファイルを見つける必要があります。これはにあります/usr/share/i18n/locales/。例に戻って、次のものが必要でした:he_ILen_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 Shellおよびロケール依存のアプリケーション(グラフィカルおよびコンソール)を使用して、新しいロケールで期待どおりに動作することを確認します。たとえば、LC_TIMEをカスタマイズした場合、dateコマンドを実行して日付形式を検証できます。

    $ date +%x
    21/04/15
    

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

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


これは、Cinnamonを使用してFedora 22で動作することを確認できます。ほとんどの場合、GNOMEでも動作します。
-Dee'Kej

1
彼らが本当に一生懸命努力すれば、カスタムロケールの設定を少しだけ難しくすることができると確信しています。
ヘイッキ

私はGNOMEが大好きですが、これはばかげています。少なくとも、パワーユーザーが自分のロケール設定を希望どおりに設定できるようにしてください。...私はほとんどの事のための米国のロケールをしたいが、私のプリンタはA4用紙を使用しています
static_rtti
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.