今回はゲームを海外に出す際に必須となる「翻訳・多言語対応」(=ローカライズ)についての話題で、Unityで作ったゲームに無料で翻訳機能をつける方法をご紹介するという内容です。
以前の記事「海外のゲーム投稿サイト「itch.io」にゲームを登録してみた」に書いた通り、私は最近初めて自作ゲームを海外サイトに投稿したのですが、かなり好評で思い切って海外デビューして良かったなぁと感じました。ただし海外サイトにゲームを出すにあたって「一体どうやって翻訳機能をつければいいんだろう?」と悩んだので、おそらく他の方も同じような悩みを抱えていらっしゃるのではないかと思いました。
そこでここではゲームの翻訳でお悩みの方のために、Unityの無料アセット「Lean Localization」を使って自作ゲームに翻訳機能をつける方法を解説していきますね。
※注意:
あくまでも「多言語化の仕組み」に関する話なので、翻訳作業自体が楽になるというわけではないです(つまりUnity上で自動翻訳できるとかそういう話ではない)。その点はご留意頂ければと思います。
無料の多言語化用アセット「Lean Localization」
まずはじめに、アセットストアを見て頂ければ色々な翻訳アセットがあるのが分かると思いますが、私がいくつか試した中でオススメだと思ったのは「Lean Localization」という無料アセットです。
これは必要な機能が一通りそろっていて、しかも使いやすいので私も重宝しています。「とりあえず多言語化したいけどお金がかかるのは嫌だなぁ」とお考えの方にはぴったりですね。
Lean Localizationの使い方
では次に「Lean Localization」の具体的な使い方を説明していきます。
一番基本的な使い方
まずは(実用性は置いておいて)一番基本的な使い方の手順を見ていきましょう。主な手順は次の4ステップです。
- 適当なゲームオブジェクトに「Lean Localization」コンポーネントをアタッチする
- 必要な言語のプレハブを手順1の子にする
- 翻訳フレーズを用意する
- テキストに「Lean Localized Text」コンポーネントをアタッチする
それぞれ詳しく見ていきましょう。
手順1:「Lean Localization」コンポーネントをアタッチする
はじめにやるべきことは、適当なゲームオブジェクト(※とりあえず空のオブジェクトで良いです)に「Lean Localization」コンポーネントをアタッチして設定することです。
設定項目はデフォルトのままでもOK。何か必要があれば変更してください。
手順2:必要な言語のプレハブを手順1の子にする
次に、アセットのLocalizationフォルダ内に言語のプレハブがあるので、それを手順1のゲームオブジェクトの子になるようにドラッグ&ドロップします。
例えば英語と日本語の2言語に対応したければ、
- English
- Japanese
をそれぞれ手順1で作ったゲームオブジェクトの子にしてください。
手順3:翻訳フレーズを用意する
そうしたら次は「翻訳フレーズ」を必要な分だけ用意します。翻訳フレーズとは翻訳後の文章を紐づけるための共通キーワードのようなものです。
では先ほどのLean Localizationコンポーネントに「Translations」という欄があると思うので、そこに適当なキーワードを入れて「Add」ボタンを押してください。すると新しい子のゲームオブジェクトが作られるので、それをインスペクターで開いてみましょう。
「Lean Phrase」というコンポーネントがアタッチされています。ここに手順2で追加した言語の欄が用意されているので、それぞれ翻訳した文章を記入してください。
ちなみに翻訳フレーズは何でもOKですが、なるべく分かりやすくて短い単語を選ぶと良いでしょう。
手順4:テキストに「Lean Localized Text」コンポーネントをアタッチして設定する
最後に、翻訳を行いたいテキストに「Lean Localized Text」というコンポーネントをアタッチして設定を行います。
空欄に先ほどの翻訳フレーズを入れればOK(※Listボタンから選ぶこともできます)。Fallback Textは翻訳が失敗したときに表示される文章なので、念のため記入しておいてください。
これでゲームを実行するとテキストが自動的に翻訳されるようになります。試しに言語を切り替えたい場合は、ゲーム実行中に「Lean Localization」コンポーネントの「Current Language」を変更してみましょう。
CSVファイルから翻訳データを読み込む方法
さて上記の使い方でも十分使えるのですが、翻訳データが多くなってきたときには管理が大変です。そこでCSVファイルから翻訳データを読み込む機能を使ってみることにしましょう(※CSVって何?という方はググってください。そんなに難しくないです)。
主な手順は次のとおり。
- 言語ごとにCSVファイルを作ってUnityにインポートする
- 適当なゲームオブジェクトに「Lean Language CSV」をアタッチして設定する
手順1:言語ごとにCSVファイルを作ってUnityにインポートする
まずは言語ごとにCSVファイルを作り、データを記入してUnityにインポートします。
CSVの書式は
という感じです。改行を含める場合は、「”これはテストです。”」のようにダブルクオーテーションで囲ってください。
手順2:「Lean Language CSV」をアタッチして設定する
次に、CSVを読み込むための「Lean Language CSV」というコンポーネントがあるのでそれを適当なゲームオブジェクトにアタッチして設定を行います。設定は
- Source:手順1のCSVファイルを指定
- Format:Comma
- Language:CSVファイルの言語
という感じにしてください。これでUnityエディタ上でいちいち翻訳フレーズの設定を行わなくても、CSVでまとめて管理することができます。便利なのでぜひ覚えておいて頂ければと思います。
C#スクリプトで翻訳データを取得する方法
ところで、ゲームを作っていると「スクリプト上で生成される文章を翻訳したい」という場面が出てくると思います。そんな時はC#スクリプトで翻訳データを取得すると便利です。
やり方は簡単で、
Lean.Localization.LeanLocalization.GetTranslationText("YourPhraseNameHere");
というスクリプト(※もちろん「YourPhraseNameHere」の部分は変更してください)を記述するだけです。ただしスクリプトの冒頭に
using Lean.Localization;
と記述するのをお忘れなく。
おわりに
以上、無料の多言語化アセット「Lean Localization」を使ったローカライズのやり方をご紹介してきました。自作ゲームを多言語化できるようになるとゲームを海外の方にも遊んでもらえるようになり、かなり良い経験になるので興味のある方はぜひ試していただければと思います。
この記事がゲーム制作のお役に立てば幸いです。