Open takekawa opened 11 years ago
openstack-docs にメールを流してみました。
% の後ろにスペースがあるのは、Conversion Specifier として有効なので、原文の方でエスケープする必要があるということになりました。確かに "% 5d" というのは有効な書式です。
近いうちに、原文を POT に変換するときに、% は %% か % にエスケープされるようにしてもらうことになりました。
調査および調整ありがとうございます。 手が回っておらず、私自身は落としどころを見出せていませんでした。。。 原文を修正するということで了解しました。
今回のようなDocBookの場合、XML構文のため % そのものを使用しないようにするには、% を使用する必要があると思います。XMLでは%が特殊文字ではなく、%をエスケープできないためです。 同じ PO ファイルでも、アプリケーション翻訳 (gettext) の場合、fprintf 構文(?)を使用するため、% が特殊文字になり、%そのものを表示するために %% を使用する必要があるようです。逆に、アプリケーションの場合、% だと期待する結果にならないと思います
少し補足させて下さい。 修正する原文は POT ファイル(原文)の方になります。
4つの文書が存在します : XML 文書(原文)、POT ファイル(原文)、PO ファイル(翻訳)、XML 文書(翻訳) 今回の % の話では、XML←→PO/POT の変換スクリプトで % のエスケープを行います。 ・XML 文書(原文)、XML文書(翻訳)では % のエスケープはなし。 ・POT ファイル(原文)に変換する際に、% のエスケープを行う。 ・PO ファイル(翻訳)でも % のエスケープは行われた状態になる。 ・XML文書(翻訳)を生成する際には、% のエスケープを考慮しながら変換を行う。
以下、コメントです。
今回のようなDocBookの場合、XML構文のため % そのものを使用しないようにするには、 % を使用する必要があると思います。XMLでは%が特殊文字ではなく、%をエスケープできないためです。 同じ PO ファイルでも、アプリケーション翻訳 (gettext) の場合、fprintf 構文(?)を使用するため、 % が特殊文字になり、%そのものを表示するために %% を使用する必要があるようです。
はい、その通りだと思います。
逆に、アプリケーションの場合、% だと期待する結果にならないと思います
この「アプリケーションの場合」というのがどういうものか理解できませんでした。
補足ありがとうございます。やっと理解できました。正しい対処の気がします。 xml2po自体の機能なのかどうかわかりませんが、xml2poが持っていてほしい機能ですね。
逆に、アプリケーションの場合、% だと期待する結果にならないと思います この「アプリケーションの場合」というのがどういうものか理解できませんでした。
一般的なアプリケーション(virshコマンドなど)翻訳の場合ということです。今回とは関係ない話をしてややこしくしてしまい、申し訳ないです。
~~~以下、余談 私が発行したissueやコメントが、いつのころからか、自分以外の人から参照できない状態になっていたようですが、見えるようになってよかったです。 昨日発覚したのですが、私のアカウントが非公開になっていたようです。アカウントの作り直しにより復旧(?)したようです。
https://www.transifex.com/projects/p/openstack-manuals-i18n/translate/#ja/openstack-ops/11981114?file=ch_ops_log_monitor.xml
の翻訳文に%i%fを入力しないと、「翻訳文に「% f」がありません。」というエラーが発生します。
https://www.transifex.com/projects/p/openstack-manuals-i18n/translate/#ja/openstack-ops/11981122?file=ch_ops_log_monitor.xml
も%oを入力しないと「翻訳文に「% o」がありません。」というエラーが発生します。
transifxがconversion specifierとして誤認識しているということですが、修正、もしくは、回避方法を考える必要があります。