- English / Japanese
YAMultilingualMarkdownは、Yet Another Multilingual MarkdownをHTMLなど他の形式に変換するユーティリティです。
Yet Another Multilingual Markdown(記述形式)は、複数の言語を記述するために作られたMarkdownの方言です。YAMultilingualMarkdown(ツール)は、Yet Another Multilingual Markdown文書から指定された言語の内容だけを取り出しつつ、他の形式に変換します。
ya_multilingual_markdown [OPTIONS] [FILE]ya_multilingual_markdown --helpと入力すると、コマンドラインオプションの一覧が出力されます。
Convert Yet Another Multilingual Markdown to HTML and other formats
Usage:
ya_multilingual_markdown [OPTIONS] [FILE]
Options:
--output-format=FORMAT Output format
(html|kramdown|markdown)
(default: html)
--langs=LANG1,LANG2,... Languages to be included
(omitting this option implies all)
--heading-lang-sep=STRING Languages separator in headings
(default: " / ")
--lang-attr-name=STRING Attribute name for language
(default: lang)
--html-output-type=TYPE Output type for HTML output
(fragment|document)
(default: fragment)
--html-template-file=FILE HTML document template file in eRuby format
--html-link-suffixes=FROM:TO,...
Link suffixes to rewrite in HTML output
(default: .md:.html)
--show-default-html-template Show default HTML document template
--log-level=SEVERITY Log level
(unknown|fatal|error|warn|info|debug)
(default: warn)
--help Show help message
--version Show version
単純なYet Aonther Multilingual Markdown文書は次のようなものです(ファイル名は仮にsnow_white.mdとします):
# Schneeweißchen
{: lang="de"}
# Little Snow-white
{: lang="en"}
Es war einmal mitten im Winter,...
{: lang="de"}
Once upon a time in the middle of winter,...
{: lang="en"}(kramdownふうの(PHP Markdown Extraふうの)拡張構文({: name="value"})を使って、ブロック要素に属性を設定できます。)
言語関係のオプションを指定せずに実行すると、すべての言語が出力されます。
ya_multilingual_markdown snow_white.md出力の抜粋:
<h1><span lang="de">Schneeweißchen</span> / <span lang="en">Little Snow-white</span></h1>
<p lang="de">Es war einmal mitten im Winter,...</p>
<p lang="en">Once upon a time in the middle of winter,...</p>ウェブブラウザ上で想定される表示:
Schneeweißchen / Little Snow-white
Es war einmal mitten im Winter, ...
Once upon a time in the middle of winter, ...
--langs=enとオプションを指定すると、enという値のlang属性を持った要素(およびlang属性を持たない要素)だけが出力されます。
ya_multilingual_markdown --langs=en snow_white.md出力の抜粋:
<h1><span lang="en">Little Snow-white</span></h1>
<p lang="en">Once upon a time in the middle of winter, ...</p>ウェブブラウザ上で想定される表示:
Little Snow-white
Once upon a time in the middle of winter, ...
--langs=de,enとオプションを指定すると、deまたはenという値のlang属性を持った要素(およびlang属性を持たない要素)が出力されます。
ya_multilingual_markdown --langs=de,en snow_white.md出力の抜粋:
<h1><span lang="de">Schneeweißchen</span> / <span lang="en">Little Snow-white</span></h1>
<p lang="de">Es war einmal mitten im Winter,...</p>
<p lang="en">Once upon a time in the middle of winter,...</p>ウェブブラウザ上で想定される表示:
Schneeweißchen / Little Snow-white
Es war einmal mitten im Winter, ...
Once upon a time in the middle of winter, ...
文書のメタデータを、JekyllふうのYAMLフロントマターに記述できます。
YAMLフロントマター付きの単純なYet Aonther Multilingual Markdown文書は次のようなものです(snow_white_with_metadata.md):
---
title: Little Snow-white
author:
- Jacob Ludwig Karl Grimm
- Wilhelm Carl Grimm
meta:
- name: original title
content: Schneeweißchen
lang: de
- name: translator
content: Margaret Hunt
lang: en
---
...
(authorというキーは<meta name="author" .../>の省略形です。)
すべての言語を出力に含めてみましょう。
ya_multilingual_markdown snow_white_with_metadata.md出力の抜粋:
<title>Little Snow-white</title>
<meta name="author" content="Jacob Ludwig Karl Grimm" />
<meta name="author" content="Wilhelm Carl Grimm" />
<meta name="original title" content="Schneeweißchen" lang="de" />
<meta name="translator" content="Margaret Hunt" lang="en" />
<p>...</p>メタデータも言語に基づいてフィルタをかけることができます。
enだけを出力させてみましょう(結果的にdeを除外することになります)。
ya_multilingual_markdown --langs=en snow_white_with_metadata.md出力の抜粋:
<title>Little Snow-white</title>
<meta name="author" content="Jacob Ludwig Karl Grimm" />
<meta name="author" content="Wilhelm Carl Grimm" />
<meta name="translator" content="Margaret Hunt" lang="en" />
<p>...</p>--html-output-type=documentを指定すると、HTMLの断片ではなく完全なHTML文書が出力されます。
入力:
---
title: Little Snow-white
---
Once upon a time in the middle of winter, ...
コマンドライン:
ya_multilingual_markdown --html-output-type=document snow_white_with_title.md出力:
<!DOCTYPE html>
<html>
<head>
<title>Little Snow-white</title>
</head>
<body>
<p>Once upon a time in the middle of winter, ...</p>
</body>
</html>--html-template-file=FILEで指定するとカスタムテンプレートを使えます。テンプレートはeRuby形式で記述してください。ツールに内蔵されたデフォルトのテンプレートを表示させるには、--show-default-html-templateを使ってください。
gem install ya_multilingual_markdown
あるいは
git clone https://github.com/hisashim/ya_multilingual_markdown
cd ya_multilingual_markdown
rake install
実行時に必要なもの:
開発時に必要なもの(上記に加えて):
-
YAMultilingualMarkdownは、kramdownを土台にして作られてはいるものの、kramdownの拡張構文のうち、ごく一部分しかサポートしていません。
-
複数の言語を含む見出しについては、ALD(Attribute List Definition:属性リスト定義)を記述できるのは、各見出しの_後_だけです。
サポートされている記述方法:
# Schneeweißchen {: lang="de"} # Little Snow-white {: lang="en"}サポート外:
{: lang="de"} # Schneeweißchen {: lang="en"} # Little Snow-whiteこの制約により、比較的単純な仕組みで、一連の見出しの冒頭にも末尾にもidを記述できるようになっています。
{: #title} # Schneeweißchen {: lang="de"} # Little Snow-white {: lang="en"}# Schneeweißchen {: lang="de"} # Little Snow-white {: lang="en"} {: #title}
Yet Aonther Multilingual Markdownとその処理ツールは、翻訳書に適した原稿形式を求めて生まれました。
原文と訳文の両方が載った対訳形式のゲラ刷りがあると、訳者が作品を見直すときに役立ちます。原稿自体が一種の対訳形式になっていることも、原稿内を検索して編集するときに便利です。
ローカライゼーション/多言語化プロジェクトへの一般的で効果的なアプローチとして、翻訳されたテキストを原文とは別のファイルに収めるやり方がありますが、小規模なプロジェクトでは、複数の言語を単一のファイルに収められる形式も便利です。Yet Aonther Multilingual Markdownは、そのような形式と処理ツールの概念実証を開発する試みです。
-
Requirements for Japanese Text Layout(JLReq:日本語組版処理の要件)は、HTMLを利用した多言語文書の優れた例です。
-
軽量テキスト形式とその処理ツールで、複数言語を単一ファイルに収めることを可能とするもの(必ずしも対訳形式での出力を備えていたり目的としていたりするとは限らない):
このソフトウェアはMIT licenseに基づきライセンスされています。
次の方々に深く感謝します:
- Koichi Sasada:同氏が開発された原稿プリプロセッサから、多言語を扱える軽量なマークアップ形式のヒントを得ました。
- kramdownの開発陣
- Hisashi Morita - creator and maintainer