見出し画像

How to 日本語化~作業所篇

はじめに

今回は主に複数人で作業する場合の作業所の作り方について書いてみたいと思います。複数人で作業するということは共通の場所が必要になってきます。しかも無料で使用できる場所が望ましいでしょう。それを踏まえると2つの候補があがります。

GoogleスプレッドシートはGoogle IDがあれば使えます。ParaTranzはGitHu IDが必要です。テーブル(表)を使ったものになるため、作業がしやすいようにしなければいけませんし、Term(用語)が表示されたりもありませんので多少大変な部分があります。
ただ複数言語が1つのファイルにまとまっている場合はこちらのほうが楽かもしれませんし、関数Google Action Scriptを使って機能を追加することも可能です。

ParaTranzは英語交じりになりますので少し難しいかもしれませんが、Term(用語)が登録できたり、同じようなテキストが表示されたりするため、複数人で翻訳するための機能が揃っています。またアップデートで追加があった場合も楽に更新作業ができるようです。
ただGoogleスプレッドシートとは違い、複数言語が1つのファイルに入っている場合、その中からKEY(またはID)と翻訳対象(主に英語)を抜き出さなければいけませんし、その逆も必要になります。これらはプログラムを書くか、ExcelやGoogleスプレッドシートを上手に使って対応するようになります。

ParaTranzについては非常に丁寧に説明しているブログがありますので、ぜひそちらを一読していただければと思います(下記URL参照)。

この記事ではGoogleスプレッドシートに重点を置いて作業所の作り方を説明していきたいと思います。作業所とはしていますが、個人で翻訳する場合でも利用していいと思います(私は基本Googleスプレッドシートで編集しています)。

データの用意

Googleスプレッドシートは前述の通り表計算ソフト(Excelなど)となりますので、Googleスプレッドシートで読み込めるデータにする必要があります。
運よくゲーム内テキストが含まれたファイルが「CSVファイル(カンマ区切りのテキストファイル)」や「TSVファイル(TAB区切りのテキストファイル)」であれば、開くことが可能になります。
バイナリ型テキストの場合は変換プログラムを組む必要がありますので、上記のどちらか(私はTSVファイルに変換するようにしています)。
XMLやJSONの場合は作り方によります。単言語で簡単な作りであればテキストエディタでうまいこと変換して使うことも可能ですが、そうでない場合は変換プログラムを組まざる得ないでしょう。

CSV(カンマ区切り)ファイル。拡張子が.csv
TSV(TAB区切り)ファイル。拡張子が.tsv

CSVファイルの亜種としてセミコロン(;)で区切ってあるものもあります。この場合、セミコロンをTABに変換しTSVファイルにするほうがいいでしょう。重要なのは拡張子をちゃんと変更しておくことです(拡張子を.tsvに変更)。

JSONファイル。拡張子が.json
JSONファイル その2

JSONファイルは様々な形があります。上記は単純にKEYとテキストがセットになっている一番簡単なものです。フォーマットとしては { } で囲んであることが特徴です(その2参照)。

その2のようなJSONファイルは必要なものがTitleとDescriptionなのでこれを抜き出すようなプログラムを組む必要があります(もちろん、書き戻す必要もあります。私だったらSkillTypeも含めてTSVで書き出し、書き戻すというか改めてJSONを生成するプログラムにすると思います)。

XMLファイル。拡張子が.xml

XMLは1行目におまじないである「<?XM+ version="1.0" (略)/>」がありますので非常にわかりやすいと思います。
サンプルのXMLは4言語が含まれていますので、必要な言語のみを抽出、書き戻すプログラムが必要になってきます。

JSONやXMLを扱うにはpythonが楽かなと思います(私が使用しているAutoIt3は情報が少なく非常にわかりにくいです)。もちろん、他の言語でも楽に読み書きできるものがあればそちらでも構わないでしょう。

シンプル構造のJSONのTSV変換

シンプル構造のJSON(その1)の場合、TSVにテキストエディタを使って変換することも可能です。

"global_colon": ": ", → "global_colon"(tab)": "

全ての行はパターンが一緒なので上記に用に間にあるコロン+半角スペース(: )をTABに変換します。そして最後のカンマ(,)は削除します。また実際には行頭に半角スペース2個が入っています。

テキストエディタはMeryを使用します。一般的な検索置換でも構いませんが、正規表現を使用したほうが確実に狙った場所が変換できます。
(¥マークが\」となっていますので入力時には注意。

変換文字:^ *(".+?"): (".+?").*$
置換文字:\1\t\2

たったこれだけで一番上の { と一番下の } 以外は一回の作業で希望通りの形になります。

^ は行頭を意味します。* は1つの前の文字を0回以上繰り返している文字を意味します。次の () はグループ化をしています。グループ化したものは最初から\1、\2~\9までに代入されています。
.+?. が任意の1文字を意味し、+? は1文字以上で最短一致を意味します。ここは少し分かりにくいかもしれません(.+だけでも機能しますが、だけだと最長が引っかかるのでその防止)。
.*$ は $ 以外は今まで出てきていますが * で任意の文字0回以上という意味です。$ は行末を意味しています。JSONはカンマで最後が区切られていますが、最後の1行にはカンマがありません。それを吸収するためのものです。

置換文字は \1 は最初にグループ化した文字列、\2 は2番目にグループ化した文字列です。その間にある \t はタブを意味するものです。

変換のイメージ

この方法はシンプル構造のXMLでも応用すればTSVに変換することが可能になるかもしれません。正規表現は難しいというイメージを持つ人もいると思いますが、覚えておくと非常に便利なツールの1つになりますのでテキストエディタの正規表現を覚えておくといいでしょう(実装されている正規表現ライブラリにより若干違う場合があります)。

構造が複雑なJSON、XMLはこのような方法では難しいので純粋にプログラム処理をするほうが無難です。プログラムが組めない場合で個人で日本語化を進めるならテキストエディタで編集するのが無難でしょう。

Googleスプレッドシート

CSV/TSVにしたファイルをGoogle Driveへアップします(複数ファイルある場合などは専用のフォルダを作ってそこにアップしましょう)。
気を付けなければならないのは必ず適正な拡張子をつけておくことです。カンマ区切りファイルならCSV、タブ区切りならTSVです。
アップロードが終わったら対象のファイルをダブルクリックして開きます。

ダブルクリックした画面

ちゃんとフォーマットが認識されれば上図のようにセルごとに分かれた状態でプレビューが表示されます。上部にある「アプリで開く」をクリックして「Googleスプレッドシート」を選択してGoogleスプレッドシート形式に変換を行います。

変換が終わるとGoogleスプレッドシートが開き、別途ファイルが作成されます(拡張子を除いたファイル名。元ファイルは不要なので削除しても構いません)。

変換が終わった直後

翻訳用シート

作業所にするにしても個人で使用するにしても少しやりやすいようにするためにセル幅などを調整します。

調整とGoogle翻訳を導入

セル幅は1行の高さがあまり高くならないように広めに設定しています。パソコンの環境は人それぞれなので個人であればご自身の環境に合わせて調整してください。作業所として作業する場合はフルHDが多いとは思いますが、そのサイズを全て使うようなレイアウトにはしないほうがいいです(ウィンドウで作業できるようにしたほうが、辞書サイトなどを横に置けたりするので親切)。

  1. ファイル名であり、Googleスプレッドシートの名前です。だれが見てもわかるようにしておいたほうがいいでしょう。

  2. 1行目はそれぞれの列が何を意味しているかを書いておきます。そして、その1行目を固定表示しておきましょう(メニュー「表示→固定→1行」を選択)。

  3. そのシートの名称です。今は翻訳用だけ作成していますが、「書き出し用」も必要になってきます。また、複数作業であれば用語集などもシートや参加者が質問できるようなシートが必要があってもいいかもしれません。

  4. Google翻訳のセルです。個人でも複数作業でも機械翻訳は導入しないと思えば不要です。セルの内容はGoogle翻訳関数がありますので、それを使用しますが一番簡単なものは
    =GOOGLETRANSLATE(B2, "en", "ja")
    となります。今回は色指定のタグ(<color=色>~~</color>)を削除するため正規表現関数も併用しています。
    =GOOGLETRANSLATE(REGEXREPLACE(B50,"<.+?>",""),"en","ja")
    例えば、
    Recovers <color=GREEN>{num}</color> AP per turn.
    とあれば、
    Recovers {num} AP per turn.
    が翻訳対象として抽出されます。正規表現はこういう時にも役立ちますので利用できる場合は利用しましょう。
    2行目に入力したら2行目から最終行までを選択し、CTRL+Dでコピーします。

  5. この場所に翻訳を入力します。複数作業の場合、このセル以外は編集できないように保護をかけておきましょう(セルを選択し、メニュー「データ→シートと範囲を保護」を選びます。右ペインが表示され、詳細が表示されるので「権限を設定」ボタンをクリックし、編集権限を選択します。自分のみを編集できるようにしておけば参加者が原文などを変更することはできなくなります)。

4の部分のGoogle翻訳関数は多少翻訳精度が低いです。ただ無制限に使用できるので暫定の翻訳と思えば利用価値はあります。APPs Script(GAS)を利用すればもっと精度の高い翻訳を得られますが、使用制限があり、遅いのでメリットはそこまで大きくありません(あくまで機械翻訳なので過信は禁物)。
またGoogle翻訳関数は使用後、テキストにしておくことをお勧めします。D列を選択し、コピー→特殊貼り付け→値のみ貼り付けを選択するとテキストのみがペーストされます(関数がなくなりテキストになるということです)。

5の部分で翻訳した行に色を付けたい場合は「表示形式→条件付き書式」を選択して「空白ではない」でセル書式を選択するといいかもしれません。逆に未翻訳の部分を色付けしたい場合、「空白」を選択してセル書式を決定します。
着色しておくと翻訳が終わったところとそうでないところがわかりやすいのでお好みで設定してください。

なお、アップデートなどによるテキストの更新作業については「How to 日本語化~vlookup篇」をご覧ください。

出力用シート

出力用シートは場合によって作り方が違ってきます。
今回のサンプルは単言語でシンプル構造のJSONなのでオリジナルファイルを再現します。そうすることでダウンロードしたら、そのまま本番データとして使用できます。

オリジナルのJSONファイルを再現

1行目はオリジナルファイルに「{」が入っていましたので、それを入力します。2行目以降は、
=" " & char(34) & '翻訳用'!A2 & char(34) & ": " & char(34) & if('翻訳用'!C2<>"",'翻訳用'!C2,'翻訳用'!B2) & char(34) & ","
を必要なだけコピーして使用します。
char(34)はダブルクオーテーション(")を意味します。文字列を入力する場合にダブルクオーテーションを使用するため、それ自体を入力する場合、このようにchar関数を使用して入力します。
if文から後ろは翻訳シートのC2セルに文字列があればC2セル(翻訳)、何もなければB2セル(英語原文)を判断するということです。そして、最後にカンマが入りますので忘れずに。ただし、最終行の1つ前の行はカンマが不要なのでそこは「 & char(34) & ","」を削除します。
最終行にはJSONの終わりを示す「}」が入ります。

後はできたシートを「TSV形式」でダウンロードします。ダウンロードされたテキストファイルは拡張子がTSVになっていますので、オリジナルの名前に変更するのを忘れないでください。

もし複数言語でTSVやCSVでダウンロードしなければならないときは、アップロードしたTSVやCSVと同じ形式になるように変更しておきます。バイナリ型テキストをアンパックした場合、そのツールが自作以外であれば、そのツールの説明書に目を通しておきましょう(TSVはともかくCSVはダブルクオーテーションをつけないといけない場合があります)。

その他のシート他

  • はじめに(優先度:★)要シート保護
    内容は立ち上げた経緯や協力のお願い、また日本語化したいゲームのSteamのURL、連絡先(Twitterやブログなど。メアドは避けたほうがいいでしょう)。また、日本語化する上で他に必要なものがあればここにリンクを貼っておいてもいいでしょう。

  • 編集方法進捗状況(優先度:★★★)要シート保護
    どのように編集してほしいのか、またゲームによっては専用のタグ(たとえば色指定や書式指定などがされているものもありますし、改行などの処理について書いておくといいでしょう)。
    また進捗状況は原文、翻訳した日本語の行数、翻訳率があるといいでしょう。翻訳率で行数を使う場合、あくまで目安にしかならないことに注意してください(ワード数が少ない行と多い行が同一視されます)。

  • 単語帳(優先度:★★★)
    固有名詞など全体で統一したいもののリストです。元の英語、日本語、補足の項目があるといいかもしれません(補足は例えば主人公の名前、人名、アイテムの名前などを記載しておくと分かりやすいかも)。

  • 連絡帳(優先度:★★★)
    作業場の管理人との連絡用シートです。やり方は様々ですがGoogleフォームと連携する方法もあります。これをするとシートを保護した状態で連絡内容を記載してもらえます。この利点は書いたことの改ざんを防げるという点です。多少手間を要するためそのままシートを使ってもかまわないと思います。

  • 定期バックアップ(優先度:★★)
    改ざんに対するもので、方法は2つ。1つは「ファイル」⇒「版の履歴」⇒「変更履歴の表示」を使えば過去のデータに置き換えることが出来ます。もう1つはスクリプトを使う方法です。簡単なのは断然前者となります。後者はスクリプトを書く必要があります(もしくはググればでてきます)。もちろん、それ以外に定期的に実行するための設定なども必要になってきます。結構手間を取りますのでよく分からなければ基本機能である「版の履歴」を使うといいでしょう。

共有設定

これは複数作業の場合のみです。個人作業では関係ありません。

  • シートの右上にある「共有」ボタンを押すと上記の画面が表示されます。一般的なアクセスを「リンクを知っている全員」に変更し、その横の「閲覧者」を「編集者」にします。右上にある歯車アイコンをクリックして、

  • 編集者は権限を変更して共有できます

  • 閲覧者と閲覧者(コメント可)に、ダウンロード、印刷、コピーの項目を表示する

この2つのチェックボックスを外しておきます。

もし、メアドで追加したい場合は、一番上にある部分にメアドを入力して、あればメッセージを入力し「送信」ボタンを押します。相手にメールが届き、開けば自動的にここにアクセスできるユーザーとして表示されます(ここでアクセス権限の削除も可能)。

荒らし対策

不特定多数で行っている場合、先の定期バックアップを駆使するしかありませんが、頻繁に荒らされる場合、いったんシートを「閲覧」設定にし、翻訳に参加したい人だけを個別に招待(メアドが必要)するといいでしょう。
変更履歴から誰が編集したかわかりますので、荒らしが行われた場合、その方のアクセス権を削除するだけでOKです。
後から翻訳者を追加することも可能なので上手に使って対応しましょう。

最後に

個人的な意見ですが、ただアップロードしただけの見にくいシートよりはきちんと整理されたシートのほうがいいと思っています。もちろん個人で行う分には好きにして構いませんが、複数で行う場合はわかりやすさは重要なことになります(どこを翻訳したらいいのかなどが一目瞭然のほうがいい)。
また、出力用シートの使い方などもしっかり記載おくと親切でしょう(ダウンロードしたファイルに対してツールを使うなら、そのツールもどこかにアップして共有したほうが親切です)。作業している方も途中のデータを使って画面で確認したいという思いがあるかもしれないからです。

1シート目のサンプル

私が作業所を作っていたときには、1シート目に連絡先や編集方法などを記載していました。これは1シート目が最初に表示されるためです。

個人にしろ複数にしろ上手にツールを使って効率よく翻訳作業を進めてください。

内容が気になりましたらぜひサポートをお願いします。そのサポートが継続の力になります。よろしくお願いします。