背景情報

背景情報

独自のカスタマイズを作成してここlocaleに配置し/etc/locale.conf、仮想コンソール(Ctrl + Alt + F2)にログインすると正常に適用されます。しかし、私のGnome3セッションでは、これらの変数は設定されていません。ターミナルアプリケーションには入れることができますが、.bashrcThunderbirdやPidginなどのグラフィックアプリケーションには役立ちません。

私は次のヒントに従おうとしています。シェル初期化でロケールを使用しないGNOMEセッションこのエラーをシミュレートしてもロケール - 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でカスタマイズを設定する方法を知っている人はいますか?

ベストアンサー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コントロールセンターのソースコードset_localed_locale()関数が呼び出されると、次のカテゴリ(LC_TIME、LC_NUMERIC、LC_MONETARY、LC_MEASURMENT、LC_PAPER)がすべてに設定されているようですorg.gnome.system.locale region

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


カスタムロケールの作成

たとえば、説明するのが最も簡単な方法だと思います。私の特別なケースでは、主にヘブライ語(力_IL)しかし、LC_NAME、LC_MESSAGESのソースは次のとおりです。zh_CNとLC_TIME(修正されたfirst_weekday合計first_workdayen_GB

ロケール定義ファイルのインポート

どのロケールを混在させたいかを知る必要があります。最初に見つけることができる関連定義ファイルを見つける必要があります/usr/share/i18n/locales/。例に戻り、次のものが必要です。力_ILzh_CNそしてen_GB。自宅に作業フォルダを設定し、必要なファイルをここにコピーしました。

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

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

自分の地域に電話することにしましたhc_ILそして取った力_IL基本的に。次の行は、その文字列内のすべての項目をhc_IL内容に置き換える新しいファイルを作成します。he_IL力_ILファイルにあります。hc_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)マニュアルページ:

ロケール定義には、各ロケールカテゴリのセクションがあります。各セクションは、他の既存のロケールからコピーするか、最初から定義できます。カテゴリをコピーする場合、定義で有効なキーワードは次のとおりです。コピーその後、コピーする必要があるロケール名が続きます。

コンセプトコピーとても便利です。時間が節約され、結果の文書が明確で簡潔になります。たとえば、セクション全体をコピーするのではなく、次のようにします。

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

    全部をコピーしました。en_GBそして、週の最初の日と最初の勤務日を表す行だけを修正します。

    first_weekday 1
    first_workday 1
    
  • 残りのカテゴリはそのままにするか、その内容を次に置き換えます。コピー手順は次のとおりです。

    LC_NAME
    copy "en_US"
    END LC_NAME
    

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

新しいロケールのコンパイルとコピー

次のコマンドを使用して新しいロケールのコンパイルを完了します。または使用Sudohc_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シェルとロケール依存アプリケーション(グラフィックスとコンソール)を使用して、新しいロケールで期待どおりに機能していることを確認してください。たとえば、LC_TIME をカスタマイズした場合は、date次のコマンドを実行して日付形式を確認できます。

    $ date +%x
    21/04/15
    

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

指示に問題がある場合はコメントを残してください。

おすすめ記事