CUPS 1.6 translation secrets

2,973 views

Published on

This slide shows background story about Japanese localization of CUPS 1.6.
It had been presented at Koedolug offline meeting #120, 10 years anniversary :).

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,973
On SlideShare
0
From Embeds
0
Number of Embeds
573
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

CUPS 1.6 translation secrets

  1. 1. CUPS 1.6 翻訳裏 話 おがさわらなるひこ小江戸らぐ 2012年7月度ミーティング
  2. 2. CUPS について知らん奴おらんよね? Unix 系 OS の標準印刷システム Common Unix Printing System バージョン 1.5 から単なる CUPS に改名 開発 Michael Sweet Owned by Apple Inc OS X にて標準に採用 1/19
  3. 3. CUPS 1.5 のとき アントニオ(仮名) やあマイク、1.5 の RC リリースおめでと う。ところで翻訳はいつものようにやれば いいのかい? マイケル サンキュー、アントニオ(仮名)、でも翻訳は 俺達(= Apple)でやるから大丈夫さ(キリッ 2/19
  4. 4. 蓋を開けてみると 新規用語はほとんど未翻訳のまま それどころか 1.4 の翻訳が大部分 捨てられてる 特にコマンドライン系ツール だから Apple は! 3/19
  5. 5. さて 1.6 のβリリース あれ、翻訳ばっさり捨てられてな い?? バグレポ「ねえねえ、翻訳がないの はどうして?」 Mike 曰く「ああ、1.5 で大きく変更 したから一旦捨てたんだ。いつもの ようにコミュニティベースでやるから よろしく!」 4/19
  6. 6. まてまて、Mike、お前 1.5 のときと言ってること が違うやんけ! 5/19
  7. 7. それはともかく CUPS は Apple の持ち物 コードのコミットには Apple Contributers Agreement へのサインが 必要 翻訳にもサインいるの? ストリングフリーズはいつ? 6/19
  8. 8. 確認してみた 翻訳は OS X には同梱しないから、 ACA のサインは要らないよ β1の時点でストリングはフリーズし てるよ んじゃ、やりますか! 7/19
  9. 9. と、Twitter に投げたら 翌日にムトゥ神Debianの武藤さん が「テンプレはやっといたので、po はよろしく!」 は、はやっ! ということで、po をやることに 基本的には 1.4 から翻訳マージすれば いいだけだから、簡単……の、はず。 8/19
  10. 10. CUPS の翻訳対象 Web UI のテンプレ HTML ほぼそのもの コマンドラインツールの po gettext が独自実装なのでプレースホル ダーとかありません man とドキュメントは対象になって ません man は JM 側で頑張ってますよ! 9/19
  11. 11. まずはマージしてみた 1.4 系の最新 1.4.8 をいただき あれ、この po バグってるじゃん……(引用 符閉じ忘れ) 見なかったことにしてさくさく直す さてとどんなもんかな? $ msgfmt --statistics -c -v -o /dev/null cups_ja.po cups_ja.po: 519 個の翻訳メッセージ, 769 個の翻訳があいまいです, 199 個の未訳のメッセージ. …… fuzzy 多くね? 10/19
  12. 12. 調べてみたらCUPS のメッセージ出力はこんな感じ _cupsLangPuts(stdout, _(" PASS Manufacturer")); ~~~~~~~~~~~~~ この関数が 1.5 から末尾に改行を 付与するように変更されてた! 1.4 以前で "¥n" がついていたメッ セージがすべて fuzzy! ないわーないわー 11/19
  13. 13. もう一つ罠が 1.4 のコード: _cupsLangPuts(stderr, _("NOTICE: Print file accepted - job ID unknown.n")); ~~~~~~ 翻訳不能文字列 1.6 のコード: _cupsLangPrintFilter(stderr, "INFO", // <- 翻訳対象外になった _("Print file accepted - job ID unknown.")); 12/19
  14. 14. よかろう、ならば置換だ とはいえ闇雲に置換するのは危険 (必要な部分もあるので) 頑張って正規表現を書いた上で、 Emacs の query-replace で念を 入れる これで直る fuzzy を外していく簡単 なお仕事 13/19
  15. 15. 簡単じゃない…… orz fuzzy 膨大すぎて、間違ってマージ された奴をスルーしちゃったり だいたい紛らわしいメッセージ多す ぎなんですよ CUPS たん…… @okano_t さんの超絶レビューに 非常に助けられました 感謝感謝! 14/19
  16. 16. あれれ?テストしてたら変なの発見 $ cupstestppd Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]] program | cupstestppd [options] - Project-Id-Version: CUPS 1.4 ---------------------------------+----- なにこれ? Report-Msgid-Bugs-To: http://www.cups.org/str.php | POT-Creation-Date: 2012-03-07 13:38-0800 | PO-Revision-Date: 2009-02-20 16:43+0900 | Last-Translator: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp> | Language-Team: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp> | MIME-Version: 1.0 | Content-Type: text/plain; charset=UTF-8 | Content-Transfer-Encoding: 8bit | Language: -----------------------------------------------------+ 15/19
  17. 17. まてまて? $ LANG=C cupstestppd Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]] program | cupstestppd [options] - Options: これってもしかして、"" のときも po 引いてない? なんでだれも気づかなかったんだ ろう……orz レポートして直してもらいました 16/19
  18. 18. とりあえずコミット 「あれ、ファイル足りてないよ?」 …そんなファイルないんですけど? 「あー、β1が終わったあとに入れた ファイルなんだ」 てめーストリングフリーズどころかファイル 構造が変わるとはどういうことじゃー! 大した内容じゃなかったのでさくっ と直して送る 17/19
  19. 19. 入った! 18/19
  20. 20. まとめ 「1.4 から取り込むだけだろ?」と舐 めてたらすげー辛かった 実働1週間ぐらいかなー 実は現時点で翻訳が入ってるのは 二言語だけ! なんか嬉しい! 1.7 以降はもっと楽なはず(といいな) 次はできればオンラインドキュメント を翻訳したいですなー 19/19

×