Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Transifex] 翻訳文に「% f」がありません。 というエラーが発生する #5

Open
takekawa opened this issue May 2, 2013 · 5 comments

Comments

@takekawa
Copy link
Member

takekawa commented May 2, 2013

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として誤認識しているということですが、修正、もしくは、回避方法を考える必要があります。

@amotoki
Copy link
Member

amotoki commented May 7, 2013

openstack-docs にメールを流してみました。

@amotoki
Copy link
Member

amotoki commented May 18, 2013

% の後ろにスペースがあるのは、Conversion Specifier として有効なので、原文の方でエスケープする必要があるということになりました。確かに "% 5d" というのは有効な書式です。

近いうちに、原文を POT に変換するときに、% は %% か % にエスケープされるようにしてもらうことになりました。

@ghost ghost assigned amotoki May 18, 2013
@ghost
Copy link

ghost commented May 19, 2013

調査および調整ありがとうございます。
手が回っておらず、私自身は落としどころを見出せていませんでした。。。
原文を修正するということで了解しました。

今回のようなDocBookの場合、XML構文のため % そのものを使用しないようにするには、% を使用する必要があると思います。XMLでは%が特殊文字ではなく、%をエスケープできないためです。
同じ PO ファイルでも、アプリケーション翻訳 (gettext) の場合、fprintf 構文(?)を使用するため、% が特殊文字になり、%そのものを表示するために %% を使用する必要があるようです。逆に、アプリケーションの場合、% だと期待する結果にならないと思います

@amotoki
Copy link
Member

amotoki commented May 20, 2013

少し補足させて下さい。
修正する原文は POT ファイル(原文)の方になります。

4つの文書が存在します : XML 文書(原文)、POT ファイル(原文)、PO ファイル(翻訳)、XML 文書(翻訳)
今回の % の話では、XML←→PO/POT の変換スクリプトで % のエスケープを行います。
・XML 文書(原文)、XML文書(翻訳)では % のエスケープはなし。
・POT ファイル(原文)に変換する際に、% のエスケープを行う。
・PO ファイル(翻訳)でも % のエスケープは行われた状態になる。
・XML文書(翻訳)を生成する際には、% のエスケープを考慮しながら変換を行う。

以下、コメントです。

今回のようなDocBookの場合、XML構文のため % そのものを使用しないようにするには、
% を使用する必要があると思います。XMLでは%が特殊文字ではなく、%をエスケープできないためです。
同じ PO ファイルでも、アプリケーション翻訳 (gettext) の場合、fprintf 構文(?)を使用するため、
% が特殊文字になり、%そのものを表示するために %% を使用する必要があるようです。

はい、その通りだと思います。

逆に、アプリケーションの場合、% だと期待する結果にならないと思います

この「アプリケーションの場合」というのがどういうものか理解できませんでした。

@ghost
Copy link

ghost commented May 20, 2013

補足ありがとうございます。やっと理解できました。正しい対処の気がします。
xml2po自体の機能なのかどうかわかりませんが、xml2poが持っていてほしい機能ですね。

逆に、アプリケーションの場合、% だと期待する結果にならないと思います
この「アプリケーションの場合」というのがどういうものか理解できませんでした。

一般的なアプリケーション(virshコマンドなど)翻訳の場合ということです。今回とは関係ない話をしてややこしくしてしまい、申し訳ないです。

~~~以下、余談
私が発行したissueやコメントが、いつのころからか、自分以外の人から参照できない状態になっていたようですが、見えるようになってよかったです。
昨日発覚したのですが、私のアカウントが非公開になっていたようです。アカウントの作り直しにより復旧(?)したようです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants