回答:
この回答では、オプションで既存のロケールをベースとして使用して、ロケールを完全にカスタマイズする方法を示します。この回答で使用されるロケールのタイプはi18n
タイプです。そのようなタイプのロケールは、回答の本文にある「ロケール」という言葉に言及するたびに暗示されます。
ロケールをカスタマイズするために最初に必要なことは、ロケールの形式を知ることです。このWebロケールエディタには、ロケール内のすべてのフィールドの包括的な説明がありますが、誰でもすぐに使用できるわけではありません。これが使用するガイドになります。
ロケールを操作するために必要な唯一のツールは
ディレクトリを作成し、そのロケールで行う作業に関連するすべてを保存することをお勧めします。
注:あなたが使用している場合、非共通の文字を、あなたは以下のスクリプトIの書き込みに問題を有していてもよいです。nassによってリンクされた代替スクリプトをご覧ください。
次のコードをファイルに保存します。このファイルは、システムによってpythonスクリプトとして識別されますが、これは1つなので大丈夫です。このガイドでは、スクリプトを呼び出したと想定していますencodestr
。
#!/usr/bin/python
def encode(string):
newstring = str()
for ch in string:
newstring += "<U%04X>" % ord(ch)
return newstring
if __name__ == '__main__':
import sys
print encode(sys.argv[1])
保存した後、ファイルの実行許可を与えます-これは便利です。これを行うには、nautilusを使用するか、端末からスクリプトを保存したディレクトリで次のコマンドを実行しますchmod +x encodestr
。
これで、同じディレクトリで実行することにより、このスクリプトをテストできます./encodestr hello
。に等しい出力が得られるはずです<U0068><U0065><U006C><U006C><U006F>
。
既存のロケールを変更するのが最も簡単なケースです。理想的には、ほぼ完全にニーズに合ったロケールを選択します。その場合、小さな変更を加えるだけで済みます。それを調整するには、ガイドを使用して、どのセクションを変更するか、どのように変更するかを知ることができます。インストールされているすべてのロケールはにありますが/usr/share/i18n/locales
、ガイドにはこれまでに作成されたほとんどすべてのロケールが含まれています。
ただし、ロケールを開いたときに最初に気付くのは、変な<UXXXX>
コードと同じくらい英語の単語を読むことです。これらのコードを作成できるようにする必要があります-これがencodestr
スクリプトの出番です。
変更する必要があるセクションがわかったら、セクションに含まれる各フィールドを知る必要があります。
たとえば、
LC_TIME
セクションにはフィールドt_fmt
、および他の多くが含まれます。各フィールドには、ガイドに独自の説明があります。
変更するフィールドがわかったので、ガイドをもう一度使用して、フィールドが受け入れる値を見つけます。
たとえば、フィールド
t_fmt
はテキストと共通のstrfmt変数を受け入れます。
変更するフィールドに何を書き込むかがわかったら、encodestr
スクリプトを介してテキストを実行し、エンコードされた同等のものを取得します。
注:すべてのフィールドをエンコードする必要はありません。必要に応じて既存のロケールを参照として使用してください。
たとえば
Time: %T
、t_fmt
フィールドに時間形式を使用する場合は、次を実行し./encodestr "Time: %T"
ます。これが返される<U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
のでt_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
、ロケールに行があります(もちろん、それぞれのセクションにあります)。
必要なすべてのフィールドを変更したら、ロケールを使用できるように、システムにロケールをインストールする必要があります。これについては、インストールセクションに進んでください。
一方を変更するのとは対照的に、カスタムロケールを作成するために使用できるもう一方の方法は、最初からそれを処理しています。再度ガイドを使用する場合、これはそれほど難しくありません。ただし、ここに役立つヒントがあります。実際のコピーアンドペーストメソッドを使用せずに、他のロケールからセクションをコピーできます。次の形式に従う必要があります。
LC_SECTION
copy "locale"
END LC_SECTION
LC_SECTION
変更するセクションはどこにあり、locale
そのセクションのコピー元のロケールです。
たとえば、英語のロケールで時刻形式をコピーする場合、このテキストはカスタムロケールファイルになります。
LC_TIME
copy "en_GB"
END LC_TIME
そして、それはあなたに多くの作業を節約し、参照されたロケールに加えられた変更があなたのものに反映されることを保証します。
以下に示す手順は最適ではないかもしれませんが、機能します。
ロケールをコンパイルします。パニックにならないでください!これには時間がかかりません。ただ、コマンドを実行し、ロケールの名前です。sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v
custom
ロケールを/usr/share/i18n/locales/
ディレクトリにコピーします。これを行うには間違いなくsudo特権が必要になりますが、カスタムロケールのファイル名を次のコマンドsudo cp locale /usr/share/i18n/locales/
で実行できlocale
ます。
でロケールを指定します/var/lib/locales/supported.d/
。たとえば、ファイル名/var/lib/locales/supported.d/asd
を作成し、行を追加しcustom UTF-8
ます。ここで、customはロケールの名前です。
magicコマンドを実行します。私は実際にこのコマンドが何をするのか正確には知りませんが、それは重要です。を実行しますsudo locale-gen
。最も可能性が高いのは、必要に応じて利用可能なロケールへの参照を生成することです。
ロケールを使用するようシステムに指示します。ロケールをシステム全体で使用する場合は、/etc/environment
ファイルを変更します。そうでない場合は、~/.profile
ファイル、または起動時にソースされた他のファイルを変更できます。後者の意味がわからない場合は心配しないでください~/.profile
。ファイルを使用してください。何を書かなければならないかを知るには、まずlocale
コマンドを実行します。それはのような項目でリストを発行する必要がありLANGUAGE
、LC_MESSAGES
、LC_CTYPE
および多くの他。あなたは、これは、別々の行に、(前のコマンドでリストされている)したいセクションごとに、書き込むSECTION="locale"
場所SECTION
セクションとされlocale
、カスタムロケールの名前。
たとえば、オランダの時間形式を使用するが、英語を使用する場合は、次のように記述します。
LANGUAGE="en_GB:en"
LC_TIME="nl_NL"
注:ロケール設定ごとに1つのロケールを使用する場合は、カスタムロケールの名前をLC_ALL="locale"
where に記述しlocale
ます。あなたはすべてのもののためではなく、言語のロケールを使用する場合は、書くことができますLANG="locale"
(もちろん、別の回線で)とLANGUAGE="locale":XX
場所をXX
希望する言語の2文字のコードです。
たとえば、オランダ語のロケールと英語を使用する場合、次を使用できます。
LANG="nl_NL"
LANGUAGE="nl_NL:en"
次回ログインすると、ロケールが使用中になります。これをテストするには、locale
コマンドを再度実行します。
このガイドの矛盾または虚偽の記述についてコメントしてください!
custom UTF-8
しなければならなかった。それ以外の場合は、リストに含まれません。/usr/share/i18n/SUPPORTED
sudo locale-gen
どのようなカスタマイズが必要かはわかりませんが、を使用していくつかのロケール変数を設定できます~/.locale
。たとえば、英語のメッセージを取得しますが、ドイツ語の時間などを使用するには
export LC_ALL=""
export LANG="en_GB.utf8"
export LC_CTYPE="de_DE.utf8"
export LC_NUMERIC="de_DE.utf8"
export LC_TIME="de_DE.utf8"
export LC_COLLATE="de_DE.utf8"
export LC_MONETARY="de_DE.utf8"
export LC_MESSAGES="en_GB.utf8"
export LC_PAPER="de_DE.utf8"
export LC_NAME="en_GB.utf8"
export LC_ADDRESS="de_DE.utf8"
export LC_TELEPHONE="de_DE.utf8"
export LC_MEASUREMENT="de_DE.utf8"
export LC_IDENTIFICATION="de_DE.utf8"
カスタムロケールの生成も可能です。たとえば、日付についてはこのガイドを参照してください。
en_US
のためにLC_NUMERIC
とde_DE
のためにLC_MONETARY
とLC_MEASUREMENT
あなたの他の副作用を与えますか?個人ロケールを生成するための新しいリンクも参照してください。
πμ
場合<U00CF><U0080><U00CE><U00BC>
、予想される文字の代わりに出力されます<U03C0><U03BC>
。これが機能するリンクです。