summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen'ichi Fukamachi <fukachan@fml.org>2018-09-17 14:01:32 +0900
committerKen'ichi Fukamachi <fukachan@fml.org>2018-09-17 14:01:32 +0900
commit8ab568ed41f749c51bcf0a3d91f5baa67178d55a (patch)
treee914415326befdb0cbfc64764698cfe2b35b82eb
parent1e86f8d1e8bdc03087cee627189768256dd2e605 (diff)
downloadfml8-8ab568ed41f749c51bcf0a3d91f5baa67178d55a.tar.gz
fml8-8ab568ed41f749c51bcf0a3d91f5baa67178d55a.tar.bz2
fml8-8ab568ed41f749c51bcf0a3d91f5baa67178d55a.zip
reviewed. alignment cosmetics.
-rw-r--r--fml/doc/ja/tutorial/module/nativelanguage.sgml75
1 files changed, 66 insertions, 9 deletions
diff --git a/fml/doc/ja/tutorial/module/nativelanguage.sgml b/fml/doc/ja/tutorial/module/nativelanguage.sgml
index 56739bf8..adf249bb 100644
--- a/fml/doc/ja/tutorial/module/nativelanguage.sgml
+++ b/fml/doc/ja/tutorial/module/nativelanguage.sgml
@@ -8,14 +8,65 @@
</title>
<para>
-&fml8; 内部では言語と文字コードに依存した変換処理が必要です。
-たとえば、JIS (ISO-2022-JP)と EUC の相互変換は随所で行なわれています。
-これはメールでは JIS コードが使われますが、
-プログラムでは EUC コードの方が扱いやすいためです。
+MLドライバ内部では言語と文字コードに依存した変換処理が必要です。
+<footnote>
+<para>
+初期の記録も、ここに残しておきます:
+MLドライバ内部では言語と文字コードに依存した変換処理が必要です。
+(初期設計段階での内部コードは EUC のため)
+たとえば、ISO-2022-JP と EUC の相互変換が随所で行なわれています。
+これはメールでは ISO-2022-JP が使われますが、
+(UNIX 上での)プログラム(開発)では EUC が扱いやすいためです。
+</para>
+</footnote>
+たとえば、
+フィルタ処理や Subject 書き換え、
+summary や log などに履歴を書き込む際が代表例です。
+</para>
+
+<para>
+基本となるデータフローは、
+(1) MIME Encode された文字列を一度 decode し、
+(2) Perl 内部表現
+<footnote>
+<para>
+現在の Perl 内部処理の基本は UTF-8 ベースの Perl 内部表現に変換し、
+文字ベースの処理を行った上で、
+バイトベースの文字列に戻すという考え方になっています。
+内部表現フラグを設定しない変数は、伝統的なバイト表現だと考えます。
+これにより後方互換性が保証されています。
+</para>
+</footnote>
+に変換したうえで、
+(3) なんらかの文字列処理をし、
+(4) ふたたび MIME Encode して外部出力可能な文字列に変換する、
+というものです。
+<screen>
+[操作概念例]
+
+$string->set();
+$string->mime_header_decode();
+$string->...処理...();
+$string->mime_header_encode();
+メールの内容を変更する…
+</screen>
+メールではなく、
+&fml8; システムとして summary や log ファイルへ記録を残す場合には、
+MIMEエンコードはしていないので、
+なんらかの文字コードを使うと決め打ちする必要があります。
+ここは従来と変わりません
+具体的には、
+対象ごとに定義されている
+(例: ログファイルは $log_file_charset_ja )
+変数にしたがい、文字の符号化を行います。
+日本語のデフォルト値は(互換性のため) EUC-JP です。
</para>
<para>
-本章では、言語依存の処理関数について解説します。
+本章では、
+言語依存処理関数について解説します。
+言語依存と言っても、日本語処理ではなく、
+日本語を使う文脈に依存した処理という表現が適切です。
</para>
<para>
@@ -23,7 +74,7 @@
<link linkend="message.nl">
『メッセージの他国語化』
</link>
-の章を参照して下さい。
+の章を参照してください。
</para>
@@ -33,7 +84,9 @@
</title>
<para>
-言語依存のクラス名は「クラス::Language::」となります。
+言語依存のクラス名は
+「クラス::Language::」
+となります。
これらの階層以下に言語依存モジュール群が配置されます。
</para>
@@ -44,9 +97,13 @@ FML::Language::Japanese::String.pm
Mail::Bounce::Language::Japanese.pm
</screen>
前者は、FML モジュール群のために、
-日本語依存の文字列処理関数を提供しています。
+日本語の文脈に依存した文字列処理関数
+(例: 日本語のメールでは引用に>を使う…)
+を提供しています。
後者は Mail::Bounce 階層以下のモジュールに対して、
-日本語に依存したエラーメール解析ルーチンを提供しています。
+日本語に依存したエラーメール解析ルーチン
+(例: 日本の特定の ISP が特殊なフォーマットのエラーメールを返す…)
+を提供しています。
</para>
</sect1>