ロケールのサポート

Note: 作者:Oleg Bartunov。 ロケールとロシア語サポートに関する詳細は、 Oleg の Web ページを参照のこと。

ロシアのモスクワにある、とある会社のプロジェクトをやっていた 時のこと。私は postgresql がこの国のアルファベットをサポート していないという問題にぶち当たってしまいました。どうにかなら ないかといろいろ探し回ったあげく、自分でロケールのサポートを 開発しようと思い立ちました。私は C プログラマではありません が、Perl(のデバッグ)と glimpse をやったおかげで、 すでにロケールのプログラミングの経験がありました。 Postgres のソースツリーを追いかけ始めて何日かた ったとき、src/backend/utils/adt/varlena.c と src/backend/main/main.c にちょっとばかりの修正をかけたのです が、そのときにやりかたが分かったのです!私は LC_CTYPE LC_COLLATE のみのサポートを行ったの ですが、その後別の人が LC_MONETARY をサポート しました。このパッチに関して非常にたくさんの方からメッセージ をいただいたので、これを開発チームに送ることを決心しました。 そしてこれは(私にとっては驚きですが)、Postgres の配布物に取り込まれることになりました。

時々、自分たちの言語に関するロケールがうまく動かないと文句を 言う人がいますが、これは以下のミスに起因することが多いのです:

利点は何でしょう?

自国語アルファベットを含む文字列に対して ~* や order by 演算子が使えます。非英語圏のユーザにとっては必須の機能でしょ う。ロケール機能を使いたくなければ、USE_LOCALE 環境変数を未 定義にするだけですみます。

欠点は何でしょう?

ロケールには明らかな欠点があります。その速度です!このため、 本当に使いたいときにのみロケールを使うようにしてください。