#if defined(W32) || defined(LNX)

   .国際化サポート。

      内部エラーメッセージは日本語環境以外では英語です。
      この項の議論はファイルのエンコーディングとその画面表示についてです。

      日本語については"日本語入力、コード変換" を参照。

      0x80<-->0xff を使用するSBCS言語ではLinuxコンソール版の場合
      罫線文字にならないように "OPT LINECH OFF"としてください。(1度コマンド入力すればOK)

      (注)ファイル名についてはWindowsのシステムコードページに対して変換不能になる
          可能性があるので使用しないほうが良いでしょう。

      Windowsでシステムの言語設定と異なる言語を使用するには、
        コンソール版はDOS窓のコードページ変更が必要です。
        ドイツ語などヨーロッパ言語の特殊文字(A-umlautなど)入力は
        "chcp 28591" あるいは "chcp 1252" と設定します。
        ともにISO-8859-1 で、1252 は 0x80-0x9fも割り当てあり。

        GUI版(wxe) では /C パラメータで 文字セットを指定て立ち上げます。ex) /C1252。
        そして、Setup ダイアログの文字セットを Other から選択指定してください。
        ISO-8859-1の場合は文字セットはANSIを選択してください。

        前提として、Windowsコントロールパネルで言語の追加と、言語バーでの言語選択の切り替えも必要となります。

      Linuxでは
        コンソール版はDOS窓(gnome-terminalなど)のコードページ設定が必要です。
        DOS窓の文字セット設定とLANG環境変数のUTF8有無は一致させてください。
        違っていると正しく表示されません。
        例えば LANG が UTF8 のとき gnome-terminalの文字セットが各国語の場合"?"入力になります。
        LANG が UTF8 でないとき gnome-terminalの文字セットが UTF8 のとき画面が乱れます。

        日本語キーボードからドイツ語などヨーロッパ言語の特殊文字(A-umlautなど)入力は
        キーボードマップの変更が必要です。
        SCIMの設定をするか DOS窓から"setxkbmap de"などとします。
        SCIM 設定は FC5 では システム->設定->個人設定->SCIM設定です。

        gxe/wxeの場合、フォントの選択によってはLigatureが発生します。
        Ligature とは 例えば fi, ff など隣接する文字の組み合わせによっては2文字を1文字表示にすることです。
        SetupダイアログのLigatureチェックボックスをOffにしておけば分離したまま表示します。
        Ligature を On にすると。カーソル表示位置と文字とが不一致になりますが
        xe では カーソル位置の表示文字はバイト位置の文字を表示します。
        "OPT LIGATURE" コマンド ないしは A+";" キーも使用できます。
          但し、コンソール版はUTF8ファイルのみが対象です。
          また、バイナリーモードで開いた時はリガチャー表示は行われません。
        言語によってはLigatureしないと意味がないそうで結合文字との組み合わせを試してください。
        結合文字の表示方法設定は "OPT UNICOMB" コマンドないしは A+":" キー。

      Alt+u キー(効かない場合はUTF SWKBDコマンド)はキーボード入力の扱いを
      UTF8<-->各国語 切り替えます。
      UTF8文字の扱いはUTF8サポートを参照。

      -----------------------------------------------------------------------

      以下は中国語(簡体/繁体)、韓国語 DBCSサポートの話です。

      CN,KRの入力と表示を確認しましたが私は字を認識することは出来ても理解できません
      (特にハングル文字)使用経験報告をお待ちしています。
      テストはWindows版はXP日本語環境でしか出来ていません。
      Linux版はFC5で言語をスィッチしてテストしました。
      いまのところUTF8エンコードファイルは扱えません。ロケールコードで解釈します。
      ロケールコードはトップメニューに表示されています。
      表示桁数は各国語コードでのバイト数です。
      Linuxの場合、
        GB18030の4桁DBCS, EUC の 3バイト補助漢字はタブパディング文字つきになります。
        パディング文字は TAB コマンドで表示ON/OFF切り替えられます。
        gxeでパディングの印刷の有無は WWScrPrtチェックボックスに従って制御します。
        3ないし4バイト文字をHex入力モード(C+F11でトグル)で入力する時は
        Hex入力モードは2バイトで転送するので2回に分けて入力してください。
        1バイトを転送するには"x"キーを使用します。

      XP日本語環境でC/K入力設定は以下のようにします。
        コントロールパネル-->地域と言語-->言語タブの詳細ボタン で言語を追加します。
        IMEも追加してください。詳細は Web をサーチしてください。
          例えば http://www2.yamanashi-ken.ac.jp/~yohnishi/pcinfo/windows_tips/international/win-cn-kr.html

        GUI版(wxe) では Setup ダイアログの CharSet で Other のところでコンボボックスから選択してください。
        コンボボックスになければテキストボックスに数字を入れてください。(wingdi.hを参照)
        FontStyleの変更も必要でしょう。

        コンソール版(xe)はコマンドプロンプトのプロパティを設定します。
        DOS窓左上のアイコンでなくデスクトップのアイコン状態のコマンドプロンプトを右クリック、
        オプションタブで現在のコードページを設定する。
        コードページを変更するとフォントも変わると思います。
        コードページを設定することで言語バーに追加したIMEが選択できるようになる。
        設定できない場合は CHCP コマンドを使用してください

        IME操作を若干。
           (コントロールパネル-->地域と言語-->言語タブの詳細ボタン-->キーの設定 で設定変更可能。)
           省略値は左Alt+Shiftで言語バーのIMEはスイッチする(GUI APPLはマウスで言語バー操作できます)
           韓国語 MS-IME2002     右Alt: 英数<-->ハングル。 Alt+^: 半角<-->全角英数
           簡体中国 PinYin       Shift: 変換<-->無変換。   Shift+Space: 半角<-->全角英数
                                 Ctrl+Space: 英数<-->漢字変換モード。
           繁体中国 Phonetic     同上

        Windows CodePage & Font
                 Charset on Setup dialog      CodePage     CmdPromptFont   IME
                 Japanese 128                 cp 932       MSGothic        MSIME 2002
                 hangul   129                 cp 949       GulimChe        MSIME 2002
                 GB2312   134                 cp 936       NSimSun         PinYin 2002
                 Big5     136                 cp 950       MingLiU         NewPhonetic

           Chaesetはwingdi.hに以下の定義があります。
                #define ANSI_CHARSET            0
                #define DEFAULT_CHARSET         1
                #define SYMBOL_CHARSET          2
                #define SHIFTJIS_CHARSET        128
                #define HANGEUL_CHARSET         129
                #define HANGUL_CHARSET          129
                #define GB2312_CHARSET          134
                #define CHINESEBIG5_CHARSET     136
                #define OEM_CHARSET             255

                #define JOHAB_CHARSET           130
                #define HEBREW_CHARSET          177
                #define ARABIC_CHARSET          178
                #define GREEK_CHARSET           161
                #define TURKISH_CHARSET         162
                #define VIETNAMESE_CHARSET      163
                #define THAI_CHARSET            222
                #define EASTEUROPE_CHARSET      238
                #define RUSSIAN_CHARSET         204

                #define MAC_CHARSET             77
                #define BALTIC_CHARSET          186

      Linux(FedoraCore5の場合)では以下のようにします。(JP106キーボード)
        デスクトップ-->管理-->言語 で言語を選択し、ログアウト/ログインします。
        Korean            : 半角/全角キー:IME 呼び出し
        Chinese(簡体中文) : 半角/全角キー:IME 呼び出し
        Chinese(繁体中文) : 半角/全角キー:IME 呼び出し

        尚、ターミナルエミュレータ(gnome-terminal,konsoleなど)で
        UTF8<-->非UTF8 Encodeingを変更した時は"export LANG=xxxx"で
        ローケール環境も変更してください。

      コマンドラインパラメータの追加。
        -C   :環境から決定されるもの以外を使用したいとき指定する。

              Windosw : Codepage。   ex) -c949  -cGerman_Germany.1252
                利用可能な値はxcv コマンドで見て下さい("xcv -List)
                Windowsコンソール版ではDOS窓のプロパティーでフォントが限定されるので
                指定変更すると文字が見えなくなるかもしれません。
                wxeではSetupダイアログでCharsetも合わせる必要があります。

                Windows から Linux/390 に ssh したとき UTF8 文字により
                画面が乱れます。
                "xe -cUS-ASCII" とし >0x80 文字を "." で表示するようにしてください。

              Linux  :Charset        ex) -cGBK, -ciso88591 -czh_CN.GB18030
                利用可能な値はxcv コマンドか iconv --listでListup。

                省略値はLANG環境変数がUTF8でない時はそこに指定された文字セットを使用します。
               例えばLANG="de_DE.iso8859"なら iso88591
                LANGがUTF8のときは以下のように国コードから決めています。左から使用可能なものを選択します
                    zh_CN :GB18030,GBK,GB2312
                    ko_KR :UHC,EUC-KR
                    ja_JP :eucjp

                但し全画面コンソールの場合はiconvがサポートしていれば "ISO88591",
                いなければ "C" とします。

                これ以外の国の場合は国コードだけでsetlcaleしnl_langinfoで求めます。
                このsetlocaleが失敗したらiso88591を使います。

                Axe では ICU を使用します
                    zh_CN :"GB18030","GBK","GB2312"
                    ko_KR :"korean","EUC-KR"
                    ja_JP :"EUC-JP"
                    zh_TW :"Big5-HKSCS","Big5"
                    その他:"ISO-8859-1"

                gxeではGTKからの入力はutf8です、gxeはこの指定のCharsetにiconv変換し、
                表示もこのCharserからutf8変換します。
                xeコンソール版では入力はターミナルエミュレータが変換したものを受け取ります。
                xeはターミナルエミュレータのChaesetをsetlocale(LANG環境変数)で検知します。
                (それがUTF8の場合別の方法でロケールコードを判定します。)
                xeはsetlocaleのCharsetからこの指定のCharsetに変換します。
                表示もこのCharserからucs変換しncurseswで出力します。
                例。"あ" は EUC-JPでは 0xa4a2 で EUC-KR では 0xaaa2 です
                    IME窓で"a"キー,Enterキーを押した場合。

                                           IMEからの入力       表示
                   ----------------------  ----------------    ------
                   EUC-JP.UTF8 + -cEUC-KR  aaa2("A" by KR)     "あ"
                   EUC-JP      + -cEUC-KR  a4a2("A" by JP)     "xx"

                   "xx"はハングル文字(SJISでは表示できません),発音は "?k"らしい。
                   (xeコンソール版では空白で表示されることもあります。)

        -Yw  : Windows版Test用。コンソール版ではCN/KRではWideChar用APIを使用するが
               (Kbd入力がUCS(cv to UTF8)コードになる)
               JP でもWideCharAPIを使用してキーボード/画面描写をする。
        -Nm  : LinuxでキーボードエンコーディングがUTF8のとき
               あるいはWindows版で /Ym を指定した時、
               UTF8入力をロケールコードマルチバイトに変換せずにUTF8コードのまま受け取る。

#endif // W32 || LNX