Index: asp3_gr_sakura/trunk/tecsgen/tecslib/core/tecs_lang.rb
===================================================================
--- asp3_gr_sakura/trunk/tecsgen/tecslib/core/tecs_lang.rb	(revision 317)
+++ asp3_gr_sakura/trunk/tecsgen/tecslib/core/tecs_lang.rb	(revision 318)
@@ -6,59 +6,44 @@
 #   Copyright (C) 2008-2014 by TOPPERS Project
 #--
-#   ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
-#   ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹
-#   å¤ã»åé
-å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
-#   (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
-#       æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
-#       ã¹ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
-#   (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#       ç¨ã§ããå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨
-#       è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
-#       ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#   (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#       ç¨ã§ããªãå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
-#       ã¨ï¼
-#     (a) åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
-#         ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#     (b) åé
-å¸ã®å½¢æ
-ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«
-#         å ±åãããã¨ï¼
-#   (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
-#       å®³ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ããå
-è²¬ãããã¨ï¼
-#       ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç
-#       ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ãã
-#       å
-è²¬ãããã¨ï¼
+#   上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+#   ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#   変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#   (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#       権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#       スコード中に含まれていること．
+#   (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#       用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#       者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#       の無保証規定を掲載すること．
+#   (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#       用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#       と．
+#     (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#         作権表示，この利用条件および下記の無保証規定を掲載すること．
+#     (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#         報告すること．
+#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#       害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#       また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#       由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#       免責すること．
 #  
-#   æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
-ã
-#   ãã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç
-#   ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§
-#   ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã
-#   ã®è²¬ä»»ãè² ããªãï¼
+#   本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#   よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#   に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#   アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#   の責任を負わない．
 #  
-#   $Id: tecs_lang.rb 2061 2014-05-31 22:15:33Z okuma-top $
+#   $Id$
 #++
 
-#== è¨èªã«é¢ããå¤æ°ãè¨­å®
-# ã¡ãã»ã¼ã¸ãã¡ã¤ã«ã®èª­ã¿è¾¼ã¿ãè¡ã (èª­ã¿è¾¼ã¿ã«å¤±æããå ´åãããã©ã«ãã®æå­ã³ã¼ãã«å¤æ´ãã)
+#== 言語に関する変数を設定
+# メッセージファイルの読み込みも行う (読み込みに失敗した場合、デフォルトの文字コードに変更する)
 class TECS_LANG
-  # ããã·ã¥ã®ã¿ã°ã¯ case insensitive ã®ãããå¤§æå­ã®æå­åã¨ãã
+  # ハッシュのタグは case insensitive のため、大文字の文字列とする
   CHARSET_ALIAS = {
     "UJIS" => :eucJP,
     "UTF-8" => :utf8,
-    "EUCJP" => :eucJP,   # ä»¥ä¸ case insensitive ã«ãããã
+    "EUCJP" => :eucJP,   # 以下 case insensitive にするため
     "SJIS" => :sjis,
     "UTF8" => :utf8,
@@ -67,5 +52,5 @@
   LANG_ALIAS = {
     "C" => :en_US,
-    "EN_US" => :en_US,   # ä»¥ä¸ case insensitive ã«ãããã
+    "EN_US" => :en_US,   # 以下 case insensitive にするため
     "JA_JP" => :ja_JP
   }
@@ -75,6 +60,6 @@
   }
 
-  #=== LANG ã®ãã¼ã¹
-  #lang::String  "ja_JP.eucJP@cjknarrow", "C" ãªã©
+  #=== LANG のパース
+  #lang::String  "ja_JP.eucJP@cjknarrow", "C" など
   #RETURN:: [ :ja_JP, :eucJP, :cjknarrow ]
   def self.parse_lang( lang )
@@ -82,7 +67,6 @@
 
     lang_terri = $1.to_sym if $1 != nil && $1 != ""
-    # set_kcode_binary ã«ãããC.UTF-8 ã®ã¿ãç¹å¥æ±ãããå¿
-è¦ããªããªã£ã
-    # if lang_terri == :C then    # LANG=C.* ã¯ããã¹ã¦ 1 byte æå­ã³ã¼ãã¨ãã¦æ±ã
+    # set_kcode_binary により、C.UTF-8 のみを特別扱いする必要がなくなった
+    # if lang_terri == :C then    # LANG=C.* は、すべて 1 byte 文字コードとして扱う
     #  codeset = nil
     #  modifier = nil
@@ -94,9 +78,9 @@
   end
 
-  #=== lang, charset ã®å¥æè§£æ±ºããã³å¦¥å½æ§ã®ãã§ãã¯
-  #lang::Symbol    : :en_US, :ja_JP ãªã©
-  #charset::Symbol : :eucJP, :utf8 ãªã©
+  #=== lang, charset の別明解決および妥当性のチェック
+  #lang::Symbol    : :en_US, :ja_JP など
+  #charset::Symbol : :eucJP, :utf8 など
   #RETURN:
-  #  [ lang, charset, result ]::ããresult = false ã®å ´å lang, charset ã¯ä¸é©å
+  #  [ lang, charset, result ]::　　result = false の場合 lang, charset は不適切
   def self.resolve_alias_and_check( lang, charset )
     if LANG_ALIAS[ lang.to_s.upcase ] then
@@ -122,6 +106,6 @@
   end
 
-  #=== codepage ãåãåºã
-  #codepage ã¯3ï½5æ¡ã®æ´æ°ã¨ãã¦ä»®å®
+  #=== codepage を取り出す
+  #codepage は3～5桁の整数として仮定
   def self.get_win_codepage
     cmd_pipe = IO.popen('cmd /c chcp','r')
@@ -132,5 +116,5 @@
   end
 
-  #=== codepage ãã LANG ã®è¨­å®æå­åã«å¤æ
+  #=== codepage から LANG の設定文字列に変換
   def self.codepage_to_lang cp
     if cp == "932" then
@@ -141,16 +125,16 @@
   end
 
-  #=== è¨èªãæå­ã³ã¼ãã«é¢ããå¤æ°ãè¨­å®
-  # ä»¥ä¸ã®é ã«ãã§ãã¯ãããä¸çªæå¾ã«è¨­å®ãããå¤ãæ¡ç¨ããã
-  #   ã»ããã©ã«ã
-  #   ã»codepage  (exerb çã§ TERM æªè¨­å®ã¾ãã¯ TERM=cygwin ã®å ´åã®ã¿)
-  #   ã»LANG ç°å¢å¤æ°
-  #   ã»TECSGEN_LANG ç°å¢å¤æ°
-  #   ã»TECSGEN_FILE_LANG ç°å¢å¤æ° (ãã¡ã¤ã«ã®æå­ã³ã¼ãã®ã¿)
-  #   ã»-k ãªãã·ã§ã³ (ãã¡ã¤ã«ã®æå­ã³ã¼ãã®ã¿)
+  #=== 言語、文字コードに関する変数を設定
+  # 以下の順にチェックされ、一番最後に設定された値が採用される
+  #   ・デフォルト
+  #   ・codepage  (exerb 版で TERM 未設定または TERM=cygwin の場合のみ)
+  #   ・LANG 環境変数
+  #   ・TECSGEN_LANG 環境変数
+  #   ・TECSGEN_FILE_LANG 環境変数 (ファイルの文字コードのみ)
+  #   ・-k オプション (ファイルの文字コードのみ)
   def self.set_lang_var
 
     if $IN_EXERB && ( ENV[ 'TERM' ] == nil || ENV[ 'TERM' ] == "cygwin" ) then
-      # exerb çã§ç«¯æ« cygwin ã®æã¯ codepage ã®ã¿ãè¦ã
+      # exerb 版で端末 cygwin の時は codepage のみを見る
       cp = get_win_codepage
       lang = codepage_to_lang cp
@@ -160,6 +144,6 @@
 
     elsif ENV[ 'LANG' ]then
-      # é exerb çã§ã¯ LANG ç°å¢å¤æ°ãè¦ã
-      # cygwin console ã§ã¯ codepage ã«å¾ã£ã¦åºåããæ¹ãå¹³åãªãã
+      # 非 exerb 版では LANG 環境変数を見る
+      # cygwin console では codepage に従って出力した方が平和なため
 
       $LANG_FILE, $CHARSET_FILE, *dum = self.parse_lang( ENV[ 'LANG' ] )
@@ -181,5 +165,5 @@
   end
 
-  #=== -k ãªãã·ã§ã³ãããã¡ã¤ã«ç¨ã®è¨èªãæå­ã³ã¼ãå¤æ°ãè¨­å®
+  #=== -k オプションからファイル用の言語、文字コード変数を設定
   def self.set_lang_by_option
     if $kcode == nil
@@ -211,10 +195,9 @@
   end
 
-  #=== Kconv ã¯ã©ã¹ç¨ã®å¤æ°ãè¨­å®
-  # è¨èªæ
-å ±ãã Kconv ã«é¢ããå¤æ°ãè¨­å®
+  #=== Kconv クラス用の変数を設定
+  # 言語情報から Kconv に関する変数を設定
   def self.set_kconv_var
 
-    # æå­ã³ã¼ãã®è¨­å®
+    # 文字コードの設定
     case $CHARSET_FILE           # string: "EUC" | "SJIS" | "NONE" | "UTF8"
     when :eucJP
@@ -251,13 +234,13 @@
     end
 
-    $KCODE_TECSGEN = "UTF8"      # string: "EUC"  ãã®ãã¡ã¤ã«ã®æå­ã³ã¼ãï¼ãªãã·ã§ã³ã§ã¯ãªãå®æ°ï¼
+    $KCODE_TECSGEN = "UTF8"      # string: "EUC"  このファイルの文字コード（オプションではなく定数）
     $KCONV_TECSGEN = Kconv::UTF8 # const: 
-    set_kcode $KCODE_TECSGEN     # ãã®ãã¡ã¤ã«ã®æå­ã³ã¼ããè¨­å®
-  end
-
-  #=== ä¸æçã« KCODE ã BINARY ã«å¤æ´ãã
-  # EUC ã UTF8 ã§èª­ã¿è¾¼ãã å ´åã«æå­åºåããèª¤ãåé¡ã®å¯¾å¿
-  # ã³ã¡ã³ãã®èª­ã¿é£ã°ããèª¤ãç¹ãåé¡
-  # ãã ããSJIS ã®å ´åã¯ãã¨ã¹ã±ã¼ãæå­ã®åé¡ããããããå¤æ´ããªã
+    set_kcode $KCODE_TECSGEN     # このファイルの文字コードを設定
+  end
+
+  #=== 一時的に KCODE を BINARY に変更する
+  # EUC を UTF8 で読み込んだ場合に文字区切りを誤る問題の対応
+  # コメントの読み飛ばしを誤る点が問題
+  # ただし、SJIS の場合は、エスケープ文字の問題があるため、変更しない
   def self.set_kcode_binary
 
@@ -273,6 +256,5 @@
   end
 
-  #=== ä¸æçãªã KCODE ã®å¤æ´ãå
-ã«æ»ã
+  #=== 一時的なあ KCODE の変更を元に戻す
   def self.reset_kcode
     set_kcode $KCODE_BACK
@@ -280,10 +262,10 @@
 
   #####
-  # $LANG_FILE        è¨èª (C ã¯ en_US ã«å¤æããã)
-  # $LANG_CONSOLE     è¨èª (C ã¯ en_US ã«å¤æããã)
-  # $CHARSET_FILE     ãã¡ã¤ã«ã®æå­ã³ã¼ã
-  # $CHARSET_CONSOLE  ã³ã³ã½ã¼ã«æå­ã³ã¼ã
-
-  # ããã©ã«ãã®è¨­å®ï¼æ­£è¦åæ¸ã¿ã®ãã¨ï¼
+  # $LANG_FILE        言語 (C は en_US に変換される)
+  # $LANG_CONSOLE     言語 (C は en_US に変換される)
+  # $CHARSET_FILE     ファイルの文字コード
+  # $CHARSET_CONSOLE  コンソール文字コード
+
+  # デフォルトの設定（正規化済みのこと）
   $LANG_FILE_DEFAULT  = :en_US
   $CHARSET_FILE_DEFAULT = nil
@@ -296,11 +278,11 @@
   $CHARSET_CONSOLE = $CHARSET_CONSOLE_DEFAULT
 
-  # -k ã§æå®å¯è½ãªã³ã¼ã
+  # -k で指定可能なコード
   $CODE_TYPE_ARRAY = [ "euc", "sjis", "none", "utf8" ]
 
-  # è¨èªãæ±ºå®ãã
+  # 言語を決定する
   self.set_lang_var
 
-  # è¨èªãã³ã¼ãã®ãã§ãã¯ã¨æ­£è¦å
+  # 言語、コードのチェックと正規化
   lang_file, charset_file, res =
     self.resolve_alias_and_check( $LANG_FILE, $CHARSET_FILE )
@@ -316,5 +298,5 @@
   end
 
-  # ã¡ãã»ã¼ã¸ã¢ã¸ã¥ã¼ã«ãã­ã¼ã
+  # メッセージモジュールをロード
   if require_tecsgen_lib( "tecslib/messages/messages_console_#{lang_console}.rb", false ) == false then
     require_tecsgen_lib( "tecslib/messages/messages_console_#{$LANG_CONSOLE_DEFAULT}.rb" )
@@ -330,5 +312,5 @@
   end
 
-  # Kconv ã¯ã©ã¹ã®ããã®å¤æ°ãè¨­å®
+  # Kconv クラスのための変数を設定
   self.set_kconv_var 
 
@@ -337,5 +319,5 @@
   dbgPrint "Ruby19_File_Encode=#{$Ruby19_File_Encode}\n"
 
-  #=== åä½ãã¹ãå®è¡
+  #=== 単体テスト実行
   if $unit_test then
     print "unit test: set_lang_var\n"
@@ -350,6 +332,6 @@
 end
 
-#= Console ã¯ã©ã¹
-# æå­ã³ã¼ããå¤æãã
+#= Console クラス
+# 文字コードを変換する
 class Console
   def self.print str
