場合によっては、ロケール アーカイブ ファイル (/usr/lib/locale/locale-archive) に、使用したいロケールが含まれていないことがあります。この場合、新しいロケール ファイルを作成するか、次の方法で既存のロケールからロケールをコンパイルする必要があります。
# localedef -f [charmapfile] -i [inputfile] [outputpath]
例:
# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS
警告メッセージ「ASCII 互換ではありません。ロケールは ISO C に準拠していません」 」は無視できます。上記のコマンドの実行時に警告メッセージが表示された場合でも、このコマンドは適切なロケールを提供できます。このメッセージは、「一部の文字 (ASCII をあなたが言及したロケールに変換することによって提供される) が、UCS-4 に変換されるコードと等しくない」ことを意味します。たとえば、'\' と '^' は、UCS-4 非互換の典型的な文字です ('\' は 0x00a5 であり、'^' は UCS-4 では 0x203e ですが、'\' は 0x5c であり、'^' は 0x203e です。 ASCII で 0x7e)
新しいロケール ja_JP.SJIS を使用できるようになりました。ロケールが locale-archive に適用されているかどうかは、次の方法で確認できます:
# localedef --list
リストされたロケールは小文字で、実際のロケール名とは異なる場合があります。新しいロケールでは、テキスト文字処理規則が変更される可能性があることに注意してください。この場合、locale-archive からロケールを削除する必要がある場合があります:
# localedef --delete-from-archive [existent_locale_listed_in_localedef--list]