2016年2月21日日曜日

Cities: Skylines 1.3.0の日本語化シートを用意してくださった方を称賛させてください

1.3.0用のCities: Skylinesの日本語化シートを用意してくださった方に強い感銘を受けたので、チラシの裏として駄文をつづります。人様を駄文で称えることに関しましては重々お詫びいたします。

前置きとして、Cities: Skylinesの自作MODの更新が発端になったので、そこから書きます。

先日発表されたSnowfallですが、事前にMODを利用してくださっているユーザーさんから「Snowfallで登場するTramとかHeatingとかに対応するつもりあんのかな、α版から贔屓にしてやってんだぞ(だから当然対応しろよな)(意訳)」的なお声を頂戴してしまっていたので、そりゃもう震えあがって発表直後の日本時間深夜からコードの解析に入りました。

その結果、幸いAfter Darkの時と同様なつくり、つまりvanilla部分にほとんどのコードが置かれていることが判明したので、追加量が多くて作業時間そのものはかかったものの、滞りなくmodの更新を済ませることができました。

この段階ではまだ日本語化作業は開始もされていない様子だったので、自作MODも英語版だけでテストしてリリースしました。

わざわざ「英語版でテスト」などと特筆するというのは、自作のMODは表示する文字列は一応多国語に対応していて、文字列IDが振られている文字列を組み合わせて自分が望む文字列を作り出すということをやっているので、テストしないとどんな文字列が出てくるか知れたものではないからです。もちろん英語が最優先ですが、私の母語は日本語なので、日本語でも違和感なく表示された方がいいわけです。

まあ、まだ日本語化作業が開始もされてない状況なので、当分ほっとくか、と思っていた矢先、翌日だか翌々日だったか、「あんたのMODなんかおかしいぞ(意訳)」という報告をいただいたため早速調査をすることにしたのですが、ふと「そろそろ開始くらいはされたかな?」と作業所をのぞいてみると、依然開始されていませんでした。

ユーザさんがおかしいというのだから何が問題があるはずなのでMODの更新が必要になるわけですが、さらにその後日本語化がされたとして、文言が合わなかったら日本語に対応するだけの更新をするのもなんだか気が引けるので、せめて自身で「翻訳されたとしてもこうなるはずだからこのIDは使えるな」という文字列を探そうと思って、ふと気づきました。

バイナリのロケールファイルの展開方法が分からない。

ありゃあ、そこから調べないとだめかぁ、と思ってMODのどこが変なのか調査しながら、片手間にちょこちょこen.localeファイルの開き方を少しづつ調べたりしているうちに、作業所のスプレッドシートに1.3.0用の文字列のデータの更新を始めてくれた(BOLDにした理由は後程触れます)方が現れたため、これは渡りに船と見に行ってみると、結構な量の翻訳対象テキストが追加されていたものの、ほとんど空欄のままの状況で、せいぜいTRAMがトラムと訳されている程度。

さすがに最近シートに追加され始めたばかりですから、翻訳作業に携わる人もあまり集まっていない様子です。

こりゃあイカン、こんなんじゃリリースされるのいつになるかわからんと思うと、日頃利用させていただいている感謝もあり、ここは一気に翻訳しちゃおう、と思い立ち、バグ探しそっちのけで翻訳に取り組むことにしました。

この手の作業は、とにかく空欄を埋めることが肝要だと思っています。

そうすれば口だけ野郎とかがいくら喧々囂々の用語論争をしようが大抵の場合は「とにかく完成したんだから一度リリースしよう」ということになるからです。
もちろん、侃々諤々なら大いに価値があるんですけど、たいていは喧々囂々のほうで終始してこの駄文以上にとりとめがないのですよね。

ですので、まずは着手し、どういう形であれ、形を作る。これが重要だと思います。
特に不特定多数が集まるリーダー不在のプロジェクトの場合は事前に相談しようものなら収拾がつかなくなること請け合いです。
「こうしてみたんだけどどうかな?」なら前に進めますが、「こうしたいんだけどどうだろう?」は絶対ダメです。裁定者がいないからです。

何にせよ埋めておけば、それを叩き台にしてより良い翻訳を考案することができます。
手直しのほうがずっと難易度も敷居も低いですから、それだけ多くの人に添削してもらえるわけです。

そのため、もう既にMODのSnowfall対応を通じて追加部分の内容はわかっているので(とはいえ運河関係の原文を見た時には咄嗟にコードを見直してしまいましたが、あれは将来のアップデート用なのかな?)、仮に原文で面倒な言い回しをしていても意訳でさらっと流し、用語のブレがあっても頓着せず、とにかく埋めることに専念しました。
尤も、Coverを覆雪としたのは評判悪いみたいですが、ともかくも訳文があれば批判もできるわけですので、今後より適切な訳語に置き換えられてゆくでしょう。

また、どうも変な訳語だとおもうものには自分の語句であれ誰かが翻訳した語句であれ、提案として私が訳語で使っている言葉とその理由をシートに記述しておき、特に変更せず第三者に判断をゆだねて時間を節約しました。

Capitalism Labと違って翻訳そのものは大変難易度が低く、SVOCの語順の強制もないので機械翻訳の出番もあまりなく、順調に翻訳を進め(といっても結局私自身の能力では何時間もかかったのですが)、ついに皆さんと協力して全部訳し切りました。

やった!翻訳率100%達成だ!よし訳文を見直すか!!

・・・見直しているうちに、ふと気づくと、翻訳率がまた100%を割っています。

えっ?

戸惑っても仕方がないので、空欄を探して再度翻訳作業を開始しました。
そして、再度100%を達成。見直し。100%を割って・・・

えっ?

なんだ?どうなってるんだ?追加されているのは確かに新しい語句で、誰かが消去しているわけではないことは明白です。

しばらく見ていると、原文欄に編集中の印が出て、ペラっと、原文が追記されるのが目に入りました。さらに見ていると、ちょっと間をおいて、同様の作業が繰り返されています。

なんとシートに翻訳対象を用意してくれている方は、手作業でシートに新規和訳が必要な分を追加していたのです。
私はこれを見て思わず声をあげて感嘆してしまいました。

これだけ膨大なテキストを手作業で1セル1セル全て行うなど大変な忍耐力がなければ、とてもできることではないと思います。特に、生半可な気持ちじゃ絶対できません。

しかし、それを実際にやっている人がここにいるんだ、と思った瞬間、とても驚くと同時に、本当に頭の下がる思いでした。

ここでもうお気づきかと思いますが、先ほど「後程触れます」というBOLDで記述した一文を私は見逃していて、勝手に翻訳対象文がシートに追加「された」ものと思い込んでいたわけです。

実際には、追加を「開始」したということだったのでした。

結局私は睡魔に負けて23時でギブアップしてしまったのですが、その後、夜の一時までずっと作業を続けておられたようです。

金曜の朝9時半から実におよそ40時間

まさかぶっ続けってことはないと思いますが、その間コツコツと作業を続けておいでになったわけです。

本当に感嘆を禁じえません

あまりに感銘を受けたため、思わずこのような駄文を書き散らしております。

しかも、その後、朝の8時半にはja.localeをリリースしてくれるという働きぶりにはもう頭が上がりません。

ちょうど私のmodも「なんかおかしい」部分を特定し、修正して更新する直前だったので、無事日本語版での表示でも違和感がないことが確認してリリースすることができました。

本当にどうもありがとうございました。

また、僭越かつ厚顔ではありますが、今回は控えめに言っても追加分のうち半分以上は翻訳でき(もちろん手直しをいただいた訳文はいっぱいありますし、自分は特別だなんぞまるで思っていませんので念のため申し添えます)、ある程度ご恩返しができたかな、と多少の自負を致しております。

それに、Capitalism Labの作業シートでやりたかったことがすべてできました。

時間がたつにつれて参加される人も増え、ある時期からは空欄を埋める人、文が以前のバージョンと整合が取れているかチェックして修正する人、もっといい訳文に改善する人(自分の訳文が目の前で改善されてゆくのは本当に楽しかった!)、提案に対してご自分の考えを述べてくれる人(例えば雪寄場の提案を行ったところ、北海道では雪投げ場という表現もあると知り、私は「なるほど」と思いましたし、お尻がどうのこうのという文章はなんだろうな、とおもっていたら元ネタの小説があると教えられたり、こういう例をはじめとして大変勉強になりました)、本当に様々な人が同時に作業を行い、どんどん結果が積み重なってゆく様は圧巻で、その他大勢の一人としてこのような経験を得たことを大変光栄に思います。

それに、作業が実に楽しい。こればっかりは実際にやった方だけが分かる楽しみですよね。

十数時間というほんの短い間でしたが、プログラムの世界でのコミュニティへの参加とはちょっと違う、貴重な体験でした。

まあ、人の言うことをちゃんと聞かないで勝手に勘違いしたり、バグを作りこんでいたり、結局はこのblogの目的である恥の記録も達成できてしまいましたが、とにかく今回、繰り返しになりますが、シートを用意してくださった方の忍耐力とモチベーションの高さに強く感銘を受け、感謝の念とともに、このように駄文を書き散らした次第です。

ご清聴、ありがとうございました。
ちなみに、私、まだ買ってません。

2016年2月15日月曜日

Capitalism Lab和訳シートの編集を匿名ではできなくします&チュートリアルの和訳を完了しました

あくまで編集権なので、翻訳結果だけほしい人にはこれまで通りご利用いただけます。ご安心ください。

ダウンロードも自由にしていただいて結構ですし、どうしても匿名で編集しなければならないという事情があるのなら、スプレッドシートをご自分のドライブにコピーすれば自分がオーナーとなりますので、あとは煮ようが焼こうが思いのままです。

今後ともご利用いただければ幸いです。

さて、表題の対策をとるに至った理由ですが、とても残念でならないのですが、編集する気がないにもかかわらずシートを加工してしまう人が後を絶ちません。

先日のいたずらの件は論外なので措きますが、それ以外にも故意ではないとは思いますが、スプレッドシート内にワークシートの複製をいくつも作っておさらばする人とか、ワークシートを追加したままおさらばしちゃう人とか、何がしたかったのかわかりませんが、そういう人が何人もいます。

ダウンロードするだけの版も用意しているのにそれを使わずわざわざシートにくるけどやっぱり使い方が分からず、挙句にゴミを残しておさらば、という感じなんでしょうかねぇ・・・?

ここ数日は本家フォーラムのDavidさんが用意してくれた2.7.25Cの新規追加分の和訳とチュートリアルの和訳作業をしていてちょくちょくスプレッドシートを触っていたのですが、その間も何度かこういうことが続いて、見つけるたびに元の版に戻したりしてきましたが、公開してからわずかな日数を経ただけなうえ、もともと利用者が少ない中でこれほどの事故(?)率となると・・・ちょっと考え込まざるを得ません。

幸い、後にも先にも編集したのは私のみですので、コメントだけ投稿可とさせて頂きます。
もし万が一編集権がほしいという奇特なかたがおられましたら、お申し出頂ければ編集者としてご招待いたしますので、よろしくお願いいたします。

さて、チュートリアルの件ですが、結局和訳した上でアポストロフィの文字コード0xA1,0xAFをバイナリエディタで直接テキストファイルに埋め込む必要がありました。こうなると人によってはテキストファイルではなくバイナリファイルとしてしか扱えないでしょうから、書庫ファイルにまとめて公開いたします。
但し、使い方は説明しません。まあ、置き換えるだけなんですけど、うっかりオリジナルに上書きしちゃったとかいうようなトラブルに付き合う気はないので、お察しくださいませ。

でも、まあ・・・私自身チュートリアルをやったことがなかったので知りませんでしたが、もともとの英語版オリジナルでも途中で進行不能になるバグがあったり、表示されるべきテキストが表示されなかったり、インジケートされる場所が頓珍漢だったりと、スゴイバギーなつくりでした。

それにもかかわらず誰も指摘せず、従って修正されてこなかったのですから・・・世界中のだれもやってないんだと思います。
多分、みんなCapitalism2のほうでチュートリアルをこなしたんだろうと思っています。

和訳する必要がなかったかなぁ。

ま、やっちゃったものは仕方がありませんので、どうぞこちらよりダウンロードいただければ幸いです。

あと数日するとCities SkylinesのDLCが来ちゃうので、公開済みMODの対応作業に入りますので、もし何かあっても対応が遅れてしまうかもしれません。
その際はなにとぞご容赦ください。

以上です。

2016年2月9日火曜日

Capitalism Lab和訳作業シートへのいたずら

悲しいことに、Capitalism Lab和訳作業シート、協力者は一人もいないにもかかわらず、いたずらだけはしっかりされました。

だれか協力者がtypoでもなおしてくれてたらうれしいなぁ、と数日ぶりにシートを見てみると、2日前に匿名さんが編集したとの記録が!!

喜び勇んで変更履歴を見てみると・・・機械翻訳の結果を消して、それをそのまま和訳欄にコピーしていました。それも2行も。

書式ミスだと勝手に勘違いして、和訳を記入して不要になった(と思いこんで)機械翻訳を消した、というのであればまだ話は分かりますが、機械翻訳の内容を丸ごと翻訳結果としてコピーしてあることで、この行為を行った方に翻訳を改善する意思がないことは明白です。

シートを追加してまた削除していましたが、これは何かを追加しようとしてやめたか、結果としてundoされていたので単純ミスかとも思われますので問題はないのですが、機械翻訳をそのまま和訳として登録するなんて・・・しかも機械翻訳は参考のためにおいてあるわけで、それを消すなんて、なぜそういうことをしたのかまるでわかりません。

そりゃあもちろん、機械翻訳のままでも問題ない場合もありますが、極めて少ないのでわざわざ機械翻訳欄と和訳欄があるわけです。加えて、機械翻訳のままでいいなら、和訳は不要なのですから空欄のままでいいわけです。
さらに今回はTranslate.TXT用のシートが被害にあっていましたが、これは機械翻訳欄がほとんど空欄です。
それは、翻訳されてない文字列をゲーム中に発見したときに、原文があらかじめテキストとして用意されていないためにTranslate.TXTに手動で追記するわけですが、その際に人間が(つまり私が)和訳を考えてからシートに掲載したからであって、あらかじめ機械翻訳を掲載する必要がなかったからです。
Translate.txtが他のファイル(help.txt,gm_help.txt,t_game.txt,t_basic.txt)とは扱いが異なるということは説明文に記載してあるのですが・・・

おまけに、今回被害にあった文の両者とも、適切な和文が見つからないからこそ機械翻訳欄を使って参考文を記載した数少ない(実は全部で3文しかありません)文のうちの2つです。
今回のコピーされた文の1つは以下の文です。
Lifetime Shareholder Return
これは機械翻訳によると「生涯株式還元」になりますが、これ完全に日本語としてオカシイ。
訳すとしたら「ゲーム期間を通じた株主への還元率」となりますが、これでは表示するには文章が長すぎます。

そこで機械翻訳だけ置いといて、いつか思いついたら、あるいはだれか適切な文を考えついたら書いてもらおうと和訳欄を空白にしてあるにもかかわらず、わざわざ機械翻訳の文を消してそれを人間が和訳したように見せかけるなんて、なんでそんな意地悪いことをするのかわからない。

もう一つはNot For Sale。機械翻訳は「非売品」。
でもこの文は会社を売却しない設定の時に表示される文字です。
非売品は明らかに日本語としてオカシイ。通常、会社は「品」で表現しませんからね。
そのため前者と同様の理由で機械翻訳のままおいてあります。これも機械翻訳は消されて和訳としてわざわざ登録されていました。

最後の一文は機械翻訳もあるのですが、なんとか(今回のいたずらした人物ではなく私が)和訳をひねり出して和訳欄は埋めてありました。こちらは機械翻訳欄は消されていませんでした。

何でこんなことするんでしょうか。

協力していただけないことは覚悟のうえです。私自身が購入から数年、訳の必要を感じなかったから着手しなかったわけで、その上に私以外のユーザも同様に仮に訳文を用意しても公開する必要を一切認めなかったわけです。需要のなさは重々承知しています。

ですが、DLCもオープンベータが始まっているし、私自身、これだけ長いこと楽しめるんだから、日本語訳が出ればもっと楽しんでもらえる人が増えるに違いない、そう思って作業所を設置し、また、公式で認めれた範囲内は漏れはまだあるものの概ねテキストとビットマップを和訳し、また、公式フォーラムに和訳中で見つけたバグを報告してEnlightさんに割と噛みついてようやく対応してもらうなど、言い出しっぺとして一定の責務を果たしたと思っています。

より良い和訳がすぐ適用できるようにする意味もありますが、私も英文が得意というわけではないので誤字脱字訳文の不備不満はあるでしょうから、それも含めて作業シートとして公開してあるわけです。それを・・・まさかとは思いますが、自分が使ってるブラウザじゃ空欄をうまくコピーできないからやっちまえ、という手前勝手な理由ならもう本当になんといっていいか。

超ドマイナーで国内での現役プレイヤーなんぞ3桁いれば御の字というようなゲームだというのに。

ちと性善説に立ちすぎていたのかもしれません。
残念です。

2016年2月5日金曜日

sambaが不定期にcoreを吐く

CentOS7のsambaをsamba-4.2.3-11.el7_2に更新してから、smbdが不定期でコアを吐くようになりました。

別に使えなくなるわけでもなく、めんどくさいから放置してます。

一応、何かわかるかと思ってcoreファイルを見てみると、PCなんか一台も起動しておらず、サーバ機1台だけが稼働中なのにNT_STATUS_IO_TIMEOUTが発生して、それを処理するときにSIGSEGVをぶっ放して死んでいるらしいことが分かりました。

SIGSEGVの発射もとはここ。

#8  file_close_user (sconn=sconn@entry=0x0, vuid=1129035802)
    at ../source3/smbd/files.c:250

なにしてんのかとリストを取ってみると
242     /****************************************************************************
243      Close files open by a specified vuid.
244     ****************************************************************************/
245
246     void file_close_user(struct smbd_server_connection *sconn, uint64_t vuid)
247     {
248             files_struct *fsp, *next;
249
250             for (fsp=sconn->files; fsp; fsp=next) {
251                     next=fsp->next;

・・・単にNULLチェックしてねぇだけだった。
魂消るねぇ。

まあ、関数名が分かったので検索をかけてみると、ここのbugzillaと同様の現象っぽい。
そして、去年の12/7に対応済みらしい。

srpmにパッチを当ててもいいけど、めんどくさいし、RHEL用のsambaパッケージのメンテナンス待ちかな。

それにしても、コアはいて落ちるようなバグなのにRHELがパッケージをメンテかけないのはなぜだろう。
うちだけの特殊事例なのかな。

bugzillaに上がってた報告の内容からはWindows10だからってわけじゃなさそうだけど、なんかBuild10586(TH2)からネットワーク上のコンピュータがWindows10機しか見えないとか(smb3.1.1のバグなんだろう)、なんか組み合わせ的にあんまりよくないのかなぁ。

2016年2月4日木曜日

Capitalism Labのtextフォルダ内データの和訳をほぼ終えました

本日、help.txt, gm_help.txt, t_basic.txtを含め、一通りの和訳を終えました。

協力者どころか、訳文を必要とする人が現時点では国内にまるでいないので、結局一人で全部担当することになっちゃいました。これでだれかCapitalism Labを知った時に、日本語化されてるのか!じゃあ買うか、となってくれたらとても嬉しいなぁ。

まだ誤字脱字、textフォルダ内にない英文のTranslate.TXTへの追記漏れはあるでしょう。
また、TutorialとScenarioについてはtranslateしていいよ、とはEnlightさんはお許しになってないのでここでは措きます(もっとも、それについてもCapitalism Labのフォーラムで要望を出しておいたのですが、まるで無視されている状況です)

なんだかんだでやればできるもんなんですね。自分でもびっくりです。こういうのは結局やる気と気合の問題なんだなぁ、とつくづく思いました。

日本語における経済学用語と英語での表現の違いには、大学時代に簿記の講義をうけたよーな気がしますが、それも何十年も前ですし、すっかり忘れている素人にはずいぶん苦しまされました。また、インフレハト派とかタカ派とか(ハト派が容認する側でタカ派が否定する側なんだそうです)、株価純資産倍率とか株価収益率とか、Economic PolicyがUltra Looseなのは「超低金利政策」を意味するとか、そういう表現があること自体を知らなかったので大変勉強になりました。

それに、ナントカカントカ日本語版ってのがやけに高くなる理由がよくわかりました。

単純に英文を和訳すればいいんじゃなくて、英文を書いてる方がまるで国際化に無理解で、訳しても反映されない(変換処理が必要だっていうことをコーディングしている担当者がまるで忘れてる上にテスト項目にも入っていないんですね。このため、今回の和訳作業でも、折角和訳してもゲームに反映されていない文章がいくつもあります。私が、というより要するに英語圏以外の開発者では、まず文字列IDを振って、そのIDから表示するための文字列を拾ってくるのは20世紀からの国際化対応の常識中の常識なのですが、彼らはそんな常識などお構いなしです)だの、語順が変更できなくて英文法を強制されるだの、英語では同じ単語でも外国語ではまるで違う意味になるのにもかかわらず訳語を変えられないだの(例えば一番困ったのがInventory。こいつは日本語では在庫って意味と棚卸資産という意味を持ちますが、英語ではどっちも"Inventory"です。結局私の手にあまり、両方併記しました。いい案を思いつかれましたら、どうかこちらを編集してください)、英語圏ではよく使われるけどASCII文字以外の文字が、外国語圏ではまるで使ない(例えば日本でいうとマルイチ①みたいな)文字がさりげなく、しかししっかり扱えない文字として屹立しているだの、そういう事柄に向き合う費用が、要するに翻訳費用じゃなくて管理工数とテスト工数がやたらとかかることがよくわかりました。

そりゃあ高くなるわけですよ。。。

ともあれ、画像データ内の英文の和訳をした上で再変換したデータも用意できましたし、翻訳上の様々な問題をEnlightさんに報告もしたし(本当はもっとバグを見つけてるんですが、あまりにも多いので最低限にとどめました。もっとも、ゲームがクラッシュするバグ以外には興味を示してもらえませんでしたが。。。会社規模からいって仕方がないですよねぇ。優先度の問題ですね。でもあと3つ、クラッシュするバグを見つけちゃったんだよなぁ・・・)

ここまでやれば、私の「言い出しっぺの責任」は、一定の責務を果たし得たとしていいんじゃないかなあ?と、勝手ながら思う次第です。

これがどうかどなた様かのお役に立ちますように。

2016年2月2日火曜日

Capitalism Labの画像ファイル内の英文和訳データを公開しました

Capitalism Labには画像データ内に埋め込まれた英文があるのですが、それをきちんとローカライズする方法が公開されていますので、折角ですので邦訳してみました。

かなり面倒ではありましたが、幸いちゃんとできたのでgoogleドライブで公開します。ダウンロードしていただければ幸いです。

どういうものかというと、

上の画像が以下のようになります。

上記のように和訳した画像データから生成されたCapitalism2形式のファイルが計8本、先ほどのリンク先の書庫ファイル内に収められています。
ファイルの保存先など、詳しい利用方法は書庫ファイル内のreadme.txtをご覧ください。
和文のフォントにはNotoの日本語版レギュラーサイズを使用しております。

以下は蛇足です。
何が面倒だったかというと、上記の画像をさらにCapilalism2形式にしないといけないのですが、これがまたGIF87aでないとCapitalism Labでも処理できないときてまして、いまどきそんなんどうすんだよ、と途方にくれました。
GIMPでもGIF89形式で保存されてしまいます。GIMPにはGIF87a形式で保存するというオプションがありません。

そーいうときは、まさに困ったときのImageMagickです。
早速 convert -list format を調べてみたら、ばっちりGIF87が明記されていました。

早速
$ convert input.png output.gif -format GIF87

・・・できません。
さらに調べてみると同じ悩みを抱えておいでの方がいて、その方に対する回答という形でこちらに解決方法が記されていました。

$ convert input.png gif87:output.gif

とするのが正解なのだそうです。
本当にありがとう!ImageMagick!! そしてこの質問をしてくれた方と回答した方に幸いあれ。

・・・それにしてもこの手のゲームの日本での需要のなさは想像以上ですねえ。
ゲームの更新が激しくてハードコードされていて表に現れないためにTranslate.TXTに追記せねばならない英文を探すだけで手いっぱいで、ヘルプやチュートリアル、シナリオにまるで手が回りません。加えてSVOCの語順を強制されるので、日本語として自然になるようにするにはまるでパズルをといているような有様。なかなか遅々として進みません。申し訳ございません。

これまで需要がなかったから和訳がされてこなかっただけあって、これからも需要がないのは明々白々なのですが、折角なので気が向きましたらこちらにある文章をちょろっと翻訳/改善していってくださいませ・・・もっとも、和訳そのものに需要がないのですが。
割と面白いんだけどなぁ。