Open30

TMX14b 翻訳メモリXMLタグ定義仕様の翻訳

td-shitd-shi

TMX 1.4b Specification を自分用に翻訳(意訳か)予定.

この仕様書はLocalization Industry Standards Association [LISA] のものだが, Globalization and Localization Association [GALA] が Creative Commons Attribution 3.0 (CC BY 3.0) で受け継いで公開されているようだ.

翻訳メモリの仕様であり, かなり枯れている. 執筆翻訳のアプリケーションではまだ利用されているようだ. (Omega Tとか.)

td-shitd-shi

冒頭は用語集

  • OSCAR :: LISA分科会でOpen Standards for Container/Content Allowing Re-useの略称.
  • SGML :: SGMLはStandard Generalized Markup Languageの略. ISO規格(ISO-8879)であり, 構造化されたフォーマットを定義することができる. SGML自身はフォーマットを持たない. フォーマットを定義するためのルールセットである. SGMLのマークアップシステムは文書型定義ファイル(DTD)で定義される.
  • DTD :: SGML文書は関連付けされたDTDを持つ. DTDは文書構造規約を定義する.
  • UTC :: Coordinated Universal Time(協定世界時)の略.
  • XML :: XMLはExtensible Markup Language(拡張可能なマーク付け言語)の略. XMLはSGMLの簡略化された制限付きのサブセットである.

標準的な参考文献:

非標準的な参考文献:

td-shitd-shi

1. 導入

この文書ではTranslation Memory eXchange(TMX)フォーマットを定義する. TMXフォーマットの目的はツールや翻訳ベンダー間で交換される翻訳メモリデータを記述する標準的な方法を提供することである. その際,重要なデータはほとんど失われない.

TMXは2つのパートによって定義される:

  • コンテナのフォーマット指定(ファイル全体やエントリに関する情報を提供する上位要素). TMXにおいて,2つ以上の言語で書かれたテキストの整列したセグメントからなるエントリをTranslation Unit(翻訳単位, <tu>要素)と呼ぶ .
  • 翻訳メモリ・テキストのセグメントのコンテンツに対する低レベルのメタ・マークアップ・フォーマットの仕様. TMXにおいて,特定の言語で書かれた翻訳メモリ・テキストの個々のセグメントは1つの<seg>要素で示される. 詳細はContent Markupの章を見よ.

TMXは2つのレベルの実装を提供している:

  • Level 1(プレーンテキストのみ) - コンテナのみのサポート. それぞれの<seg>要素の中のデータはContent Markupを含まないプレーンテキストである. Level 1はデータがインラインコードを持たない(ソフトウェアメッセージのようなもの)なら十分に通用する. ドキュメントタイプフォーマットととしては不十分である.
  • Level 2(Content Markup) - コンテナとコンテンツのサポート. アプリケーションはTMX Content Markupを使用し,TMXレベル2もサポートしている他のツールがTMXドキュメントのみを使用して原文書の翻訳版を再作成できるようにする.

翻訳単位がどのように分割されているかについての情報は別のドキュメント(Segmentation Rules eXhange(SRX)ファイル)に記載されている.

詳細はLevel2実装の章を見よ.

td-shitd-shi

1.1. XML準拠

TMXはXML準拠である. また,日付・時刻,言語コード,国コードなど,さまざまなISO規格を採用している. 詳細は参考文献を見よ.

TMXファイルはエクスポート・ルーチンによって自動的に作成され,インポート・ルーチンによって自動的に処理されることを目的としている. TMXファイルはTMX DTDを明示的に参照しなくても処理可能な"整形式"のXML文書である. しかし,"有効な"TMXファイルはTMX DTDに準拠していなければならず,疑わしいTMXファイルは検証可能なXMLパーサーを使用してTMX DTDに対して検証する必要がある.

XMLの構文では大文字と小文字が区別されるため,XMLアプリケーションでは大文字と小文字の区別を定義する必要がある. TMXの全ての要素と属性名は**lowercase(小文字)**で定義されている.

TMX名前空間は "http://www.lisa.org/tmx14"である. 例えば, 別のXML文書でTMXを利用しようとすれば以下の形式になる:

<?xml version="1.0"?>
<myformat>
 <data>
  <tmx xmlns="http://www.lisa.org/tmx14"
       version="1.4">
   ... TMX data ...
  </tmx>
 </data>
</myformat>
td-shitd-shi

1.2. 文字エンコード

TMXファイルは常にUnicodeである. 3つのエンコード手段のいずれかが利用できる:

  • UTF-16 (16-bit files)
  • UTF-8 (8-bit files)
  • ISO-646 [a.ka. US-ASCII] (7-bit files)

全ての場合で,HTMLとは異なり,以下の5文字の実体参照しかできない:

  • &(&)
  • <(<)
  • >(>)
  • &aps;(')
  • "(")

7ビットのファイルでは拡張(非ASCII)文字は常に数字による文字参照で示される. 例:Ζor Ζ(GREEK CAPITAL LETTER DELTA).

すべてのXMLプロセッサはUTF-8とUTF-16のエンコーディングを受け入れなければならず,またUS-ASCIIはUTF-8のサブセットであるため,TMX文書ではXML宣言でのエンコーディング宣言を省略することができる. UTF-16ファイルは常にUnicode BOM(U+FEFF)から始まることに注意せよ.

td-shitd-shi

2. 全体構成

TMX文書は1つの<tmx>要素を根にしている. その要素は2つの要素, <header> と <body>を含む.

2.1. Header

<header> 要素は文書についてのメタデータを含む. <header>要素の<note> と <prop> 要素に属性を加えることで文書レベル情報を持つことができる. また,この要素には<ude> 要素を利用してユーザー定義の文字を記載することができる.

2.2. Body

<body>要素は翻訳単位<tu>の集合を持つ . この集合に順序はない.

各 <tu> それぞれの要素は少なくとも1つの翻訳単位変数, <tuv>要素を持つ. 各 <tuv> にはある言語のセグメントとそのセグメントに関連する情報が含まれている.

テキストはそれ自身が<seg> 要素に含まれる. また, 各<tuv>へ <note> と <prop> 特記情報を持つことを可能にする.

セグメントはマークアップコンテンツ要素を持てる. <bpt>, <ept>, <it>,と <ph> 要素は元のインラインコードを局所化することを可能にする. <hi> 要素は既存のインラインコードに関連しない拡張マークアップを追加することを可能にする. そして <sub>要素(局所化されたインラインコードで利用される)は組込みテキストの分割を可能にする.

Sample Documentの章にあるTMX文書の例を見よ.

td-shitd-shi

さて, 3章が実用上の要の要素と属性の列挙と説明である. しかし, 量が多いため一旦飛ばす.
軽く見たところ. 要素が2種, 構造要素とインライン要素があり, 属性はほぼこのTMX専用の属性だ.

td-shitd-shi

4. コンテンツマークアップ

4.1. 概要

各TMシステムでは, フォーマットをマークアップする方法が異なります. フォーマットは常に進化しており, 定期的に新しいフォーマットが導入されます. どのTMシステムでも, その時点で使用されている各フォーマットタグについて, 有限の説明を収集, 解釈, 普及, 維持しようとすることは不可能です.

これらのネイティブコードを扱う最善の方法は, それらがどこで始まりどこで終わるかを伝える特定の要素のセットでそれらを区切り, 場合によってはそれらが何であるかについての追加情報(太字, 斜体, 脚注など)を与えることです.

ネイティブコードは, 4つのカテゴリーに分類されます.

  1. 1つの命令を開始または終了するコードで, 開始関数と終了関数の両方が1つのセグメント内に表示されているもの. 例えば, ある範囲の単語の太字化を開始する指示を出した後, 同じセグメントで太字化を終了する指示を出すなどです.
  2. 1つの命令を開始または終了するコードで, 開始関数と終了関数の両方が1つのセグメントに含まれていないもの. 例えば, 文字を太くする指示は段落の最初の3つの文に適用されますが, 太字を消す指示は3つ目の文の最後にしか表示されないことがあります. その開始命令は第1セグメントに, 終了命令は第3セグメントにあります.
  3. 明示的な終了指示を必要としない自己完結型の機能を表すコード. 画像や相互参照トークンは, これらの独立したコードや, 未知の動作をするコードの例です.

また, TMXの語彙は, ネイティブコードの各カテゴリーをマークアップするための要素を提供します.

  1. <bpt>と<ept>要素は、同じ<seg>要素で始まり、同じ<seg>要素で終わる、ネイティブコードのペアのシーケンスを示しています.
  2. <it>要素は、おそらくセグメンテーションのためにパートナーから孤立しているペアのネイティブ・コードを示しています.
  3. <ph>要素は単独のネイティブ・コード、または識別できないネイティブ・コードを示します.

一連のネイティブコードの中でサブフローのテキストを区切るために, <sub>という追加要素が用意されています. 例えば, 脚注のテキストコンテンツが脚注マーカーコード内に定義されている場合, <sub>要素で目印をつけることができます.

例: コンテンツマークアップタグ無し:

Text in {\i italics}.

例: コンテンツマークアップタグあり:

Text in <bpt i="1" x="1" type="italic">{\i </bpt>italics<ept i="1">}</ept>.

このような仕組みにより, ツールは複数のレベルでマッチングを行うことができます.

  1. コードを無視する. セグメントに格納されているデータのコード部分は, TMX要素でしっかりと区切られているので, ツールはそれらを無視することができます. それは, 平文レベルでの作業に相当します. この方法は最も効率が悪いかもしれませんが, コードが邪魔をする場合よりも, ユニット間のマッチング結果が良くなります.
  2. コンテンツのマークアップタグとのマッチング. 2つ目のより効率的な方法は, TMXコンテンツのマークアップ要素を認識し, マッチング基準の一部として使用することです. このようなステップを踏むことで、より正確な情報を得ることができ、通常は実際のネイティブコード(<bpt>、<ept>、<it>、<ph>要素の内容)が何であるかを知る必要はありません.

例えば, 以下の4つのセグメントは, フォーマットコードだけが異なるものです.

Plain text: Special text
    RTF v1: {\b Special} text
    RTF v2: {\cf7 Special} text
      HTML: <B>Special</B> text

TMXのコンテンツマークアップタグと同じサンプル:

Plain text: Special text
    RTF v1: <bpt i="1" x="1">{\b </bpt>Special<ept i="1">}</ept> text
    RTF v2: <bpt i="1" x="1">{\cf7 </bpt>Special<ept i="1">}</ept> text
      HTML: <bpt i="1" x="1">&lt;B></bpt>Special<ept i="1">&lt;/B></ept> text
  • ネイティブコード(RTF, HTMLなど)はセグメントを使用する前に解析する必要はない:TMX要素では, コードとテキストを区別することができる.
  • ファイルフォーマット間の比較や, ソースのネイティブコードをターゲットに活用することができます. これにより, 翻訳されたテキストだけでなく, 元々異なるソースファイル形式であったとしても, 正しいフォーマットを活用することができます.
td-shitd-shi

4.2. インライン要素のルール

<bpt>、<ept>、<it>、<ph>要素を使用する際のルールは以下の通り:

  1. セグメント内で対応する閉じるタグがある各タグの開始には<bpt>を使用する.
  2. <ept>は、セグメント内で対応する開始タグを持つ各タグを閉じるために使用する.
  3. セグメント内に対応する閉じるタグや開始タグがないコードの開閉には<it>を使用する. 場合によっては, セグメント化されているために, 同じセグメント内に対応する閉じるタグや開始タグがない開始タグや閉じるタグがあるかもしれない. これらのタグを局所化するために<it>を使用する. <it>には必須属性posがあり、孤立したタグが開始タグか閉じるタグかに応じて、"begin "または "end "に設定する必要がある.
  4. 独立したタグには<ph>を使用する. 単体コードとはxmlの空要素のようにペアの開閉ではないタグである.

例:

The <bpt i="1" x="1">&lt;i></bpt><bpt i="2" x="2">&lt;b></bpt>
big<ept i="2">&lt;/b></ept> black<ept i="1">&lt;/i></ept> cat.

The icon <ph x="1">&lt;img src="testNode.gif"/></ph> represents
a conditional node.
td-shitd-shi

4.3. Level 2 実装

TMX Level 2の定義は以下の通りです.

  • 想定:
    • セグメンテーションは曖昧ではありません. (例えば, 各段落は1つの文章です).
    • 翻訳されたセグメントは原文セグメントよりもタグの数が多かったり少なかったりすることはありません. (タグの追加, 削除はありません).
    • タグ <hi> と <sub> はすべてのセグメントから取り除かれている.
  • 付与:
    • インラインコードを含むオリジナルのドキュメント(例えばHTMLファイル)をXYZツールで翻訳したものです.
    • その文書の翻訳メモリはTMXレベル2で保存されており、必要に応じて<bpt>、<ept>、<it>、<ph>要素を使用する. Level 2準拠文書では、<ut>の使用は認められない.

ツールXYZがTMXレベル2エクスポートに対応しているのは, TMXレベル2インポートに準拠したツールが, ツールXYZで作成されたTMXドキュメントを読み込み, テキストやインラインコードを失うことなく, 翻訳されたドキュメントを再作成できる場合です.

ツールXYZは, TMX Level 2 エクスポートに対応したツールで作成されたTMX Level 2ドキュメントをツールXYZにインポートすることで, テキストやインラインコードを失うことなく, 翻訳されたドキュメントを再作成することができるTMX Level 2 インポートに対応しています.

インポートとエクスポートの両方の機能を提供するツールは, TMXレベル2に準拠するために, TMXレベル2インポートとTMXレベル2エクスポートの両方をサポートする必要があります.

適合性検査はオリジナル文書とそれに対応するTMXレベル2ファイルのセットを使用し, 各テストファイルに対して以下の手順を実行することで行うことができます.

インポート:

  1. 与えられた元のファイル(ImportTestN.ext)に対応するモデルTMXファイル(ImportTestN.tmx)をツールで読み込みます.
  2. インポートしたTMを使って, オリジナルのドキュメント(ImportTestN.ext)を翻訳します.
  3. ツールで翻訳されたファイルと, モデルで翻訳されたファイル(ImportTestN_LANG.ext)を比較します.

エクスポート:

  1. 元のファイル(ExportTestN.ext)をツールで翻訳します.
  2. 対応するTMXレベル2ドキュメントをエクスポートします(例:ExportTestNTool.tmx).
  3. TMXCheckを使用して, ツールのTMXドキュメント(ExportTestNTool.tmx)を検証し, 対応するモデルのTMXファイル(ExportTestN.tmx)と比較します. この比較を行う:
    1. モデルのTMXドキュメントの各原文セグメントに対して, ツールのTMX文書に完全に一致する原文セグメントがあることを確認する. 2つのTMXレベル2セグメントが, 以下の場合は同一です.
    • この2つは同一の文字配列を持ち, 同じ順序で並んでいます.
    • これらは、同じ数のインライン要素を持ち、同じ順序、同じ種類(<bpt>、<ept>など)で構成されています.
    1. ツールのTMでマッチした原文セグメントごとに, インラインコードが正しく変換される対象セグメントがあるかどうかを検証します. インライン・コードは以下の場合に正しく変換される:
    • 原文セグメントで与えられた属性x(<ept>要素の場合は対応する<bpt>の属性x)を持つ各要素が対象セグメントで一致する要素を持つ場合.

TMXCheck, テストファイル一式, 詳細なプロセス文書を含むCompliance Kitを提供することで, 誰でも特定のツールの適合性を検証することができます.

td-shitd-shi

5. その他

5.1. 分類 <tu> 要素

複数の<tu>要素が1つの論理グループに属していることを示したい場合,そのグループを構成する各<tu>に対して<prop>要素を指定することができる.
TMXは順序の概念を実装していない. <tu>要素の順序が関係する場合はtuid属性や<prop>要素を使って反映させることができる.

例:

<tu>
 <prop type="group">1</prop>
 <tuv xml:lang="en"><seg>First segment</seg><tuv>
 <tuv xml:lang="fr"><seg>Premier segment</seg><tuv>
</tu>
<tu>
 <prop type="group">1</prop>
 <tuv xml:lang="en"><seg>Second segment</seg><tuv>
 <tuv xml:lang="fr"><seg>Second segment</seg><tuv>
</tu>
TMX does not implement the notion of order. If the order of the <tu> elements is relevant, you may want to use the tuid attribute or a <prop> element to reflect it. For example:

<tu>
 <!-- Group 1, first item -->
 <prop type="group">1-1</prop>
 <tuv xml:lang="en"><seg>First segment</seg><tuv>
 <tuv xml:lang="fr"><seg>Premier segment</seg><tuv>
</tu>
<tu>
 <!-- Group 1, second item -->
 <prop type="group">1-2</prop>
 <tuv xml:lang="en"><seg>Second segment</seg><tuv>
 <tuv xml:lang="fr"><seg>Second segment</seg><tuv>
</tu>

<tu> または <tuv> 要素がどのようにグループ化されているかを追跡することはTMXの元々の設計の一部ではない.

td-shitd-shi

アペンディクスがA~Eまである. しかし, Aのみを記する. Bはversion 15 へのリンクだったようだが切れていることによる. Cは13からの変更差分であるが, そもそも13を得る必要はない. D(用語)とE(参考文献)は冒頭に記述済み.

td-shitd-shi

A. TMX文書の例 Sample Document

表現方法は以下の通り. 各要素の出現回数や, 要素内で属性が必須かどうかの制限を示している. [1]

  • 必須項目はBOLD.
  • _ITALIC_では, 0回または1回指定できる項目がある.
  • 0回, 1回, または複数回指定できる項目はNORMAL.

このTMXドキュメントの例では, インデントは読みやすくするためだけのものであり, 様々な可能性を示すために異なるタイプの表記が混在しています.

<?xml version="1.0"?>
<!-- Example of TMX document -->
<tmx version="1.4">
 <header
  creationtool="XYZTool"
  creationtoolversion="1.01-023"
  datatype="PlainText"
  segtype="sentence"
  adminlang="en-us"
  srclang="EN"
  o-tmf="ABCTransMem"
  creationdate="20020101T163812Z"
  creationid="ThomasJ"
  changedate="20020413T023401Z"
  changeid="Amity"
  o-encoding="iso-8859-1"
 >
  <note>This is a note at document level.</note>
  <prop type="RTFPreamble">{\rtf1\ansi\tag etc...{\fonttbl}</prop>
  <ude name="MacRoman" base="Macintosh">
   <map unicode="#xF8FF" code="#xF0" ent="Apple_logo" subst="[Apple]"/>
  </ude>
 </header>
 <body>
  <tu
   tuid="0001"
   datatype="Text"
   usagecount="2"
   lastusagedate="19970314T023401Z"
  >
   <note>Text of a note at the TU level.</note>
   <prop type="x-Domain">Computing</prop>
   <prop type="x-Project">P&#x00E6;gasus</prop>
   <tuv
    xml:lang="EN"
    creationdate="19970212T153400Z"
    creationid="BobW"
   >
    <seg>data (with a non-standard character: &#xF8FF;).</seg>
   </tuv>
   <tuv
    xml:lang="FR-CA"
    creationdate="19970309T021145Z"
    creationid="BobW"
    changedate="19970314T023401Z"
    changeid="ManonD"
   >
    <prop type="Origin">MT</prop>
    <seg>donn&#xE9;es (avec un caract&#xE8;re non standard: &#xF8FF;).</seg>
   </tuv>
  </tu>
  <tu
   tuid="0002"
   srclang="*all*"
  >
   <prop type="Domain">Cooking</prop>
   <tuv xml:lang="EN">
    <seg>menu</seg>
   </tuv>
   <tuv xml:lang="FR-CA">
    <seg>menu</seg>
   </tuv>
   <tuv xml:lang="FR-FR">
    <seg>menu</seg>
   </tuv>
  </tu>
 </body>
</tmx>
脚注
  1. しかし, ここに転記している以上もう元の表現は失われている. ↩︎

td-shitd-shi

さて残るは3章のみだが, どうまとめたものか.

td-shitd-shi

まずはそれぞれの冒頭を抜き出し. その後個々をまとめる.

3. 詳細仕様

3.1. 要素

TMXの要素は2つのカテゴリーに分割される. 構造要素(コンテナ)とインライン要素(コンテンツマークアップ)だ.

インライン要素はセグメントの中に現れることのできる要素である. <hi> と<sub>要素を除いて, これらはすべてテキストではなくセグメント内に存在するフォーマットやコントロールタグを囲んだり置き換えたりする. 詳細はContent Makupの章を見よ.

  • 構造要素
    • <body>, <header>, <map/>, <note>, <prop>, <seg>, <tmx>, <tu>, <tuv>, <ude>
  • インライン要素
    • <bpt>, <ept>, <hi>, <it>, <ph>, <sub>, <ut>

3.2. 属性

この章ではTMX要素に利用されるさまざまな属性を列挙する.

  • TMX属性
    • adminlang, assoc, base, changedate, changeid, code, creationdate, creationid, creationtool, creationtoolversion, datatype, ent, i, lastusagedate, name, o-encoding, o-tmf, pos, segtype, srclang, subst, tuid, type, unicode, usagecount, version
  • XML名前空間属性
    • xml:lang
td-shitd-shi

<body>

Body - この要素はメインデータを包んでいる. メインデータはファイル内の<tu>要素のセットで構成される.

  • 必須属性: 無し.
  • 補助属性: 無し.
  • 内容: 0以上の <tu> 要素.

<header>

File header - この要素はドキュメント全体に関わる情報を持つ.

  • 必須属性: creationtool, creationtoolversion, segtype, o-tmf, adminlang, srclang, datatype.
  • 補助属性: o-encoding, creationdate, creationid, changedate, changeid.
  • 内容: 0以上の <note>, <ude>, or <prop> 要素は順序を持たない.

<map/>

Map - この要素はユーザー定義文字とそのプロパティの一部を指定するために使用される.

  • 必須属性: unicode.
  • 補助属性: code, ent and subst.
    • これらの属性のうち,少なくとも1つを指定する必要がある.
    • code属性を指定した場合, その親<ude>要素がbase属性に指定されなければならない.
  • 内容: 空.

<note>

Note - この要素はコメントに利用される.

  • 必須属性: 無し.
  • 補助属性: xml:lang, o-encoding.
  • 内容: テキスト.

<prop>

Property - この要素は親要素(または,<header>要素内で使用されている場合はドキュメント)の様々なプロパティを定義するために使用される. これらのプロパティは標準では定義されていない.

<prop>要素の内容を処理する責任はすべてツールにあるので、どのようにでも使用することができる. 例えば, コンテンツは,単純なテキストだけでなく,ツールが解析できる命令のリストでもよい.

<prop type="user-defined">name:domain value:Computer science</prop>
<prop type="x-domain">Computer science</prop>

使用するプロパティの種類と値を公開するのは各ツール提供者の責任である. ツールが公開されていないプロパティタイプをエクスポートする場合,その値は接頭辞"x-"で始めるべき.

  • 必須属性: type.
  • 補助属性: xml:lang, o-encoding.
  • 内容: ツール依存.
td-shitd-shi

<seg>

Segment - この要素は与えられたセグメントのテキストを持つ. 長さに制限は無い. <seg> 要素では全ての空白,改行文字が有意となる.

  • 必須属性: 無し.
  • 補助属性: 無し.
  • 内容:
    • テキストデータ(先頭または末尾のホワイトスペース文字なし)
    • 0以上の次の要素: <bpt>, <ept>, <it>, <ph>,と <hi>.
    • これらはどのような順序でもよいが各 <bpt>要素にはそれに対応する<ept>要素を持たねばならない.

<tmx>

TMX document - この要素は文書の別の要素を包んでいる.

  • 必須属性: version.
  • 内容: 1つの<header>要素に続いて, 1つの<body>要素.

<tu>

Translation unit - この要素は与えられた翻訳単位データを持つ.

  • 必須属性: 無し.
  • 補助属性: tuid, o-encoding, datatype, usagecount, lastusagedate, creationtool, creationtoolversion, creationdate, creationid, changedate, segtype, changeid, o-tmf, srclang.
  • 内容: 0以上の <note>, or <prop> (どのような順序でもよい)に続いて 1以上の <tuv> 要素.
    • 論理的には完全な翻訳メモリ・データベースには少なくとも2つの<tuv>要素が含まれる.

<tuv>

Translation Unit Variant - この要素は,与えられた言語である,とテキストを定義する.

  • 必須属性: xml:lang.
  • 補助属性: o-encoding, datatype, usagecount, lastusagedate, creationtool, creationtoolversion, creationdate, creationid, changedate, changeid, o-tmf.
  • 内容: 0以上の <note>, or <prop> (どのような順序でもよい)に続いて1つの<seg>要素.
td-shitd-shi

<ude>

Use-Defined Encoding - この要素はユーザー定義の文字のセットを指定するために使用され,オプションとしてUnicodeからユーザー定義のエンコーディングへのマッピングを指定することができる.

  • 必須属性: name.
  • 補助属性: base(もし1以上の<map/>要素がcode属性を持つなら必須)
  • 内容: 1以上の<map/>要素.
td-shitd-shi

<bpt>

Begin paired tag - 要素はネイティブ・コードのペア・シーケンスの始まりを区切るために使用される. 各<bpt>には、セグメント内に対応する<ept>要素があります.

  • 必須属性: i.
  • 補助属性: x, type.
  • 内容: タグ(データ), 0以上の<sub>要素.

<ept>

End paired tag - 要素は一対のネイティブ・コードの終わりを区切るために使われる. 各<ept>にはセグメント内に対応する<bpt>要素がある.

  • 必須属性: i.
  • 補助属性: 無し.
  • 内容: タグ(データ), 0以上の<sub>要素.

<hi>

Highlight - この要素は専門用語の単位,固有名詞,変更してはいけない項目など,特別な意味を持つテキストのセクションを区切ります. 様々な処理に利用できる. 例えば, 機械翻訳ツールに翻訳してはいけない固有名詞を示すために使用したり,専門用語の検証で文法チェック後に疑わしい表現にしるしをつけたりできる.

  • 必須属性: 無し.
  • 補助属性: x, type.
  • 内容: テキストデータ,0以上の次の要素: <bpt>, <ept>, <it>, <ph>,と <hi>.
    • これらはどのような順序でもよいが, 各<bpt>要素にはそれに対応する<ept>要素を持たねばならない.
td-shitd-shi

<it>

Isolated tag - この要素はセグメント内で対応する終了/開始を持たないタグの一連の開始/終了を区切るために使用される.

  • 必須属性: pos.
  • 補助属性: x, type.
  • 内容: タグ(データ), 0以上の<sub>要素.

<ph>

Placeholder - この要素はセグメント中の独立したタグの連なりを区切ることに利用される.

  • 必須属性: 無し.
  • 補助属性: x,type,assoc.
  • 内容: タグ(データ), 0以上の<sub>要素.

<sub>

Sub-flow - この要素は一連のコード中のsub-flowテキストを区切ることに利用される. 例えば:HTMLのアンカー要素の中に脚注の定義やタイトルのテキストを入れることができる.

以下にいくつかの例を示す(翻訳可能なテキストには下線,sub-flowは太字 [1]):

RTF脚注のRTF原文:

<u>Elephants</u>{\cs16\super \chftn {\footnote \pard\plain
\s15\widctlpar \f4\fs20
{\cs16\super \chftn }<u>An elephant is a very
large animal.</u>}}<u> are big.</u>

RTF脚注のコンテンツマークアップ付きTMX:

<u>Elephants</u><ph type="fnote">{\cs16\super \chftn {\footnote \pard\plain
\s15\widctlpar \f4\fs20
{\cs16\super \chftn } <sub><u>An elephant is a very
large animal.</u></sub>}}</ph><u> are big.</u>

RTFインデックスマーカーのRTF原文:

<u>Elephants</u>{\pard\plain \widctlpar
\v\f4\fs20 {\xe {<u>Big animal</u>\bxe }}}<u> are big.</u>

RTFインデックスマーカーのコンテンツマークアップ付きTMX:

<u>Elephants</u><ph type="index">{\pard\plain \widctlpar
\v\f4\fs20 {\xe {<sub><u>Big animal</u></sub>\bxe }}}</ph><u> are big.</u>

HTML要素のなかの属性テキストのHTML原文:

<u>See the </u><A TITLE="<u>Go to Notes</u>"
HREF="notes.htm"><u>Notes</u></A><u> for more details.</u>

HTML要素のなかの属性テキストのコンテンツマークアップ付きTMX:

<u>See the </u><bpt i="1" type="link">&lt;A TITLE="<sub><u>Go to Notes</u></sub>"
HREF="notes.htm"></bpt><u>Notes</u><ept i="1">&lt;/A></ept><u> for more details.</u>

サブフローはセグメンテーションに関連しており, あるツールがメインのセグメント内でサブフローを使用し, 別のツールがサブフローのテキストを独立したセグメントとして抽出した場合, 相互運用性の問題を引き起こす可能性があることに注意してください.

  • 必須属性: 無し.
  • 補助属性: datatype, type.
  • 内容: テキストデータ,0以上の次の要素: <bpt>, <ept>, <it>, <ph>,と <hi>.
    • これらはどのような順序でもよいが, 各<bpt>要素にはそれに対応する<ept>要素を持たねばならない.

<ut>

Unknown Tag - この要素はセグメント内の未知のコードのシーケンスを区切るために使用される.

廃止された要素 である. 代わりにどのインライン要素を使用するかは"インライン要素のルール"で説明したガイドラインを参照せよ.

  • 必須属性: 無し.
  • 補助属性: x.
  • 内容: タグ(データ), 0以上の<sub>要素.
脚注
  1. しかし, 転記の際に表現の情報は失われた ↩︎

td-shitd-shi

ここまでが構造, つまりタグ. ここからが属性, つまりタグのオプション.

td-shitd-shi

adminlang

Administrative language - 管理用および情報提供用の要素である<note>および<prop>のデフォルト言語を指定します.

  • 値説明: 言語コードは[RFC 3066]で記述される. 他のTMX属性と異なり,管理用の値は大文字小文字を区別しない.
  • デフォルト値: 未定義.
  • 利用: <header>.

assoc

Association - 前後のテキストと<ph>の関連を示す.

  • 値説明:
    • p : 要素の前に連想されるテキスト
    • f : 要素の後ろに連想されるテキスト
    • b : どちらでも連想されるテキスト
  • デフォルト値: 未定義.
  • 利用: <ph>.

base

Base encoding - <ude>要素の再マッピングの基準となるエンコーディングを指定します.

  • 値説明: [IANA]の"文字セット識別子"の内1つが推奨される.
  • デフォルト値: 未定義.
  • 利用: <ude>.

changedate

Change date - 要素の最後の変更を行った日時を指定する.

  • 値説明: [ISO 8601]フォーマットに従う. 推奨されるパターンYYYYMMDDThhmmssZ. これはYYYYは西暦4桁, MMは月2桁, DDは日付2桁, hhは時2桁, mmは分2桁, ssは秒2桁, そしてZはUTC時間指示子である. 下記に例を示す.
  • デフォルト値: 未定義.
  • 利用: <header>, <tu>, <tuv>.
date="20020125T210600Z"
> is January 25, 2002 at 9:06pm GMT
> is January 25, 2002 at 2:06pm US Mountain Time
> is January 26, 2002 at 6:06am Japan time

changeid

Change identifier - 最後に要素を変更したユーザーIDを指定する.

  • 値説明: テキスト.
  • デフォルト値: 未定義.
  • 利用: <header>, <tu>, <tuv>.

code

Code - ユーザー指定のエンコードと <map/>で与えられるunicode文字に相当するcode-pointを指定する.

  • 値説明: "#x"前置子をつけた16進数. 例:code="#x9F".
  • デフォルト値: 未定義.
  • 利用: <map/>.

creationdate

Creation date - 要素の作られた日付を指定する.

  • 値説明: [ISO 8601]フォーマットに従う. 指定の方法はchangedate属性と同じ
  • デフォルト値: 未定義.
  • 利用: <header>, <tu>, <tuv>.

creationid

Creation identifier - 要素を作成したユーザーIDを指定する.

  • 値説明: テキスト.
  • デフォルト値: 未定義.
  • 利用: <header>, <tu>, <tuv>.

creationtool

Creation tool - TMX文書を作成したツールを識別する. 標準では指定しなくてもよい,しかし各ツール提供者は識別用テキストを公開すべきである.

  • 値説明: テキスト.
  • デフォルト値: 未定義.
  • 利用: <header>, <tu>, <tuv>.
td-shitd-shi

datatype

Data type - 要素に含まれているデータのタイプを指定する. 型に依存すれど, データへ異なる処理を適用できるかもしれない.

  • 値説明: テキスト. データタイプ属性への推奨値は以下の通り(このリストは大雑把なもんだ):
    • "unknown" = undefined (default)
    • "alptext" = WinJoust data.
    • "cdf" = Channel Definition Format.
    • "cmx" = Corel CMX Format.
    • "cpp" = C and C++ style text.
    • "hptag" = HP-Tag.
    • "html" = HTML, DHTML, etc.
    • "interleaf" = Interleaf documents.
    • "ipf" = IPF/BookMaster.
    • "java" = Java, source and property files.
    • "javascript" = JavaScript, ECMAScript scripts.
    • "lisp" = Lisp.
    • "mif" = Framemaker MIF, MML, etc.
    • "opentag" = OpenTag data.
    • "pascal" = Pascal, Delphi style text.
    • "plaintext" = Plain text.
    • "pm" = PageMaker.
    • "rtf" = Rich Text Format.
    • "sgml" = SGML.
    • "stf-f" = S-Tagger for FrameMaker.
    • "stf-i" = S-Tagger for Interleaf.
    • "transit" = Transit data.
    • "vbscript" = Visual Basic scripts.
    • "winres" = Windows resources from RC, DLL, EXE.
    • "xml" = XML.
    • "xptag" = Quark XPressTag.
  • デフォルト値: "unknown".
  • 利用: <header>, <tu>, <tuv>,<sub>.

ent

Entity - <map/>要素で与えらて定義された文字の実名を指定する.

  • 値説明: ASCII文字例:ent="copy".
  • デフォルト値: 未定義.
  • 利用: <map/>.

i

Internal matching - i属性は<bpt>要素と<ept>要素のペアリングに使われる. このメカニズムは重複する可能性のあるコードの範囲をマークアップするためのサポートをTMXに提供する. このような構造はあまり使用されないがいくつかのフォーマットではそれが可能である. 例えば次のようなHTMLセグメントは厳密には正しくないけれど, いくつかのHTMLエディタで受け入れられ, 通常はブラウザで正しく解釈されます.

<B>Bold <I>Bold and Italic</B> Italics</I>

TMXのコンテンツマークアップでは, <ept> 要素はタイプを持たないので,次のセグメントで示されるように,どのコードのシーケンスを閉じるのかを知るのは難しいだろう. 正しくないマークアップを持つTMX:

<bpt>&lt;B></bpt>Bold,
<bpt>&lt;I></bpt>Bold+Italic<ept>&lt;/B></ept>,
Italic<ept>&lt;/I></ept>

i属性は、どの<ept>がどの<bpt>を閉じるかを指定するために使用される. 正確なコンテンツマークアップを持つTMX:

<bpt i="1" x="1">&lt;B></bpt>Bold,
<bpt i="2" x="1">&lt;I></bpt>Bold+Italic<ept i="1">&lt;/B></ept>,
Italic<ept i="2">&lt;/I></ept>
  • 値説明: 数値. 与えられた<seg>要素内の各<bpt>に対して一意でなければならない.
  • デフォルト値: 未定義.
  • 利用: <bpt>, <ept>.
td-shitd-shi

lastusagedate

Last usage date - <tu>または<tuv>要素の内容が元の翻訳メモリ環境で最後に使用された時期を指定する.

  • 値説明: [ISO 8601]フォーマットに従う. フォーマットはchangedate属性と同じ.
  • デフォルト値: 未定義.
  • 利用: <tu>, <tuv>.

name

Name - <ude>要素の名前を指定する. この値は規格では定義されていないがツール提供者は使用する値を公開する必要がある.

  • 値説明: テキスト.
  • デフォルト値: 未定義.
  • 利用: <ude>.

o-encoding

Original encoding - Encodingの章で述べたようにTMX文書はすべてUnicodeである. しかし, 内部変換を目的に元の(Unicode前の)encodeを知れることはときに有用である. o-encoding属性はUnicodeでない,もしくは選択したencodeへ再変換するような場合に指定する.

  • 値説明: [IANA]の"文字セット識別子"の内1つが推奨される.
  • デフォルト値: 未定義.
  • 利用: <header>, <tu>, <tuv>, <note>, <prop>.

o-tmf

Origina translation memory format - TMX文書かセグメントが生成された翻訳メモリファイルフォーマットを指定する.

  • 値説明: テキスト.
  • デフォルト値: 未定義.
  • 利用: <header>, <tu>, <tuv>.

pos

Position - 孤立したタグ<it>が開始タグなのか終了タグなのかを示す.

  • 値説明: "begin", "end".
  • デフォルト値: 未定義.
  • 利用: <it>.

segtype

Segment type - <tu>要素で使用するセグメンテーションの種類を指定する. <tu>要素にsegtype属性が指定されていない場合は<header>要素で定義されているものが使用される.
"block"の値はセグメントが他の値のいずれにも対応していない場合に使用される. 例えば複数のパラグラフからなる章を一つの<tu>に格納する場合などに使用されます.

<tu segtype="block">
 <prop type="x-sentbreak">$#$</prop>
 <tuv xml:lang="en"><seg>This is the first paragraph of a big section.$#$
This is the second paragraph.$#$This is the third.</seg></tuv>
</tu>

上記の例では"x-sentbreak"というプロパティでテキストブロック内の文章の区切りを示すためのトークンを定義しています. そのため, 必要に応じてセグメントを小さな単位に簡単に分割することができます. この仕組みを使って多くの他の方法を推測することができる.
TMXファイルには移植性を最大限に高めるために, 文レベルのセグメンテーションを含めることができます. したがって, 上記のような特定の独自の方法は使用せずに文レベルのセグメンテーションを使用することをお勧めします.
テキストをどのようにセグメント化したかというルールはSegmentation Rules eXchange (SRX) ドキュメントで伝えることができます.

  • 値説明: "block", "paragraph", "sentence", "phrase "のいずれか.
  • デフォルト値: 未定義.
  • 利用: <header>, <tu>.

srclang

Source language - 原文テキストの言語を指定する. つまり原文セグメントを保持する<tuv>はそのxml:lang属性にsrclangと同じ値が設定される. (ただし, srclangが「all」に設定されている場合を除く). <tu>要素にsrclang属性が指定されていない場合は<header>要素で定義されているsrclang属性が使用されます.

  • 値説明: [RFC 3066]に記載されている言語コード, またはソース言語として任意の言語を使用できる場合には値「all」を指定します. 他のTMX属性とは異なり, srclangの値は大文字小文字を区別しません.
  • デフォルト値: 未定義.
  • 利用: <header>, <tu>.

subst

Substitution text - 与えられた<map/>要素で定義された文字の代替文字列を指定する.

  • 値説明: テキストはASCIIである. 例:著作権表示のための subst="(c)".
  • デフォルト値: 未定義.
  • 利用: <map/>.

tuid

Translation unit identifier - <tu>要素の識別子を指定する. その値は規格では定義されていない(ユニークかそうでないか, 数字か英数字か, など).

  • 値説明: 空白の無いテキスト.
  • デフォルト値: 未定義.
  • 利用: <tu>.
td-shitd-shi

type

Type - <prop>、<bpt>、<ph>、<hi>、<sub>、<it>の各要素が表すデータの種類を指定する.

"index" = 索引 "date" = 日付 "time" = 時刻 "fnote" = 脚注 "enote" = 終端 "alt" = 代替テキスト "image" = 画像 "pb" = 改ページ "lb" = 改行 "cb" = 新規列 "inset" = 挿入

  • 値説明: テキスト. 属性が使用される要素に依存します.
    • type属性の推奨値は<bpt>と<it>で使用される場合, 以下の通り(完全ではない):
    • "bold" = 太字.
    • "color" = 色変更.
    • "dulined" = 二重下線.
    • "font" = フォント変更.
    • "italic" = イタリック(斜字体).
    • "link" = リンクテキスト.
    • "scap" = 添字.
    • "struct" = XML/SGML 構造体.
    • "ulined" = 下線.
    • type属性の推奨値は<ph>で使用される場合, 以下の通り(完全ではない)::
    • "index" = 索引.
    • "date" = 日付.
    • "time" = 時刻.
    • "fnote" = 脚注.
    • "enote" = 終端.
    • "alt" = 代替テキスト.
    • "image" = 画像.
    • "pb" = 改ページ.
    • "lb" = 改行.
    • "cb" = 新規列.
    • "inset" = 挿入.
  • デフォルト値: 未定義.
  • 利用: <prop>, <bpt>, <ph>, <hi>, <sub>, <it> .

unicode

Unicode code-point - <map/>要素のUnicode文字値を指定します.

  • 値説明: 有効なUnicode値(Private Use areaの値を含む)を16進数で指定します. 例:unicode="#xF8FF".
  • デフォルト値: 未定義.
  • 利用: <map/>.

usagecount

Usage count - <tu>または<tuv>要素の内容が元のTM環境でアクセスされた回数を指定する.

  • 値説明: 数値.
  • デフォルト値: 未定義.
  • 利用: <tu>, <tuv>.

version

TMX version - version属性は、ドキュメントが準拠しているTMXフォーマットのバージョンを示します.

  • 値説明: 固定テキスト:<メジャーバージョン>.<マイナーバージョン> 例:version="1.4".
  • デフォルト値: "1.4"
  • 利用: <tmx>.

x

External matching - x属性は与えられた<tu>要素の各<tuv>要素間のインライン要素<bpt>、<it>、<ph>、<hi>をマッチさせるために使用される. この仕組みにより翻訳構文の関係でコードの出現順序が異なる場合でも原文と訳文の間で同盟関係にあるコードをペアにすることが容易になる. なお, <ept>要素は対応する<bpt>要素のx属性に基づいて照合される. 例:

<seg>The <bpt i="1" x="1">{\b </bpt>black<ept i="1">}</ept>
 <bpt i="2" x="2">{\i </bpt>cat<ept i="2">}</ept> eats.</seg>

<seg>Le <bpt i="1" x="2">{\i </bpt>chat<ept i="1">}</ept>
 <bpt i="2" x="1">{\b </bpt>noir<ept i="2">}</ept> mange.</seg>
  • 値説明: 数値.
  • デフォルト値: 未定義.
  • 利用: <bpt>, <it>, <ph>, <hi>.

xml:lang

Language - The xml:lang attribute specifies the locale of the text of a given element.

  • 値説明: 言語コードは[RFC 3066]で記述される. この宣言値はxmlの別のインスタンスで上書きされない限り, 指定された要素のコンテンツ内のすべての要素に適用されると考えられる. lang属性は他の属性と異なり, 大文字小文字を区別しません. 詳しくはxmlの項をご覧ください.lang in the XML specification, and the erratum E11 (which replaces RFC 1766 by RFC 3066).
  • デフォルト値: 未定義.
  • 利用: <tuv>, <note>, <prop>.
td-shitd-shi

一応これで, 全域に渡っての翻訳は完了した. さて, スクラップのまま燻らせておくかどうか.

td-shitd-shi

まとめ直すなら, 本か. これを一枚の記事に収めるのは難しそうだ. gitのときの二の舞になる.

td-shitd-shi

とは言え, ついでの情報.

  • UTX : Universal Terminology eXchange : 一般社団法人アジア太平洋機械翻訳協会より. 辞書フォーマットの一つ. UTX 1.20仕様書
  • Stardict file format :: 辞書のファイルフォーマットを調べていくと, どうしてもこれがちらついてくる. どうやらかつての辞書アプリのファイルフォーマットのようだ. 当時はなんか権利関係について述べられているものがあるから, 少なくとも一旦は表から消えたのではなかろうか.
td-shitd-shi

dict serverとかdict protocol とかもあるけれど, 日本語的な実例を見つけられない. RFCに載ってるから無いこたないはずだが.