ローカライズってなんやねん!

皆さんローカライズって聞いたことがあるでしょうか?
私は初めてこの言葉を聞いた時
「あぁ、あれね」って思いました。
…すいません、うそです。全然分かりませんでした。
まぁ正直聞きなれない言葉ですよね。
ローカライズとは例えば日本人がアメリカとか別の地域に住む方に
向けてアプリや製品を使えるようにすることです。
つまり特定の地域の法律・文化に合わせてゲームの内容を修正するような
ことをローカライズというんだそうです。
これを聞くとなかなか難しそうな作業ですよね。
でももしローカライズ出来れば日本以外の地域の人が
自分の作ったアプリを使ってくれる可能性が出てきます。
これ出来たら結構すごくないですか?
日本だけを対象にしてたら最大で1億2千万人の人がアプリの対象者になりますよね。
それがもしアメリカにローカライズ出来たとすると更にアメリカの人口約3億人
が追加で私のアプリの対象者になるんです。
つまり私のアプリ対象者が約1億人から約4億人に4倍も跳ね上がるわけです。
しかし上記の通りローカライズはなかなか難しい…。
アメリカに住んだことがある人であれば
その地域の特徴とかも分かるかもしれないのですが
住んだことない人間がその地域の特徴に合わせて
アプリを修正するというのは私はなかなか難しそうだなと判断しました。
そこで私はとりあえず
ローカライズ≒多言語対応
と考えております。
日本語を英語にするぐらいであれば
まだ出来なくはないかなと思うんですね。
「いやいや、それも難しいよ」って思っている方!
大丈夫です、今の世の中意外といけるもんなので
そこらへんを解説していこうと思います!
ではいきましょー!
そもそもどの言語で翻訳する?

正直最初に考えるのはどの言語に翻訳するのか?
ということですよね。
とりあえずパッと思いつくのは世界で一番使われている言語に
翻訳すればよさそうってことじゃないでしょうか。
10人しか使わない言語に翻訳しても10人しか対象者が増えませんが
何億人も使っている言語であればその分だけ私のアプリ対象者が
増えることになるからですね。費用対効果がいいってことです。
とするとなんとなく英語じゃない?って思いませんか?
でも本当にそうでしょうか。
とりあえずそこから調べてみました。
世界の人口ランキング

世界で一番人口の多い国の母国語が世界で一番使われているんじゃないか
という気がしませんか?
私はそんな気がしたのでまずは世界の人口が多い国が
どこなのかを調べてみました。
データは以下から参照させていただきました。
2018年のデータとのことでちょっと古いですが
数年でそんなに変化はないかと思いますので参考になるかとおもいます。
順位 | 国 | 人口 |
1位 | 中国 | 14億3千万人 |
2位 | インド | 13億5千万人 |
3位 | アメリカ | 3億2千万人 |
4位 | インドネシア | 2億6千万人 |
5位 | パキスタン | 2億1千万人 |
6位 | ブラジル | 2億人 |
7位 | ナイジェリア | 1億9千万人 |
8位 | バングラディシュ | 1億6千万人 |
9位 | ロシア | 1億4千万人 |
10位 | 日本 | 1億2千万人 |
こう見ると中国とインドが圧倒的に多いですよね。
中国はアメリカの人口の4倍以上にもなってます。
そうすると英語より中国語に翻訳した方がよくないかと
思いそうになりますよね!
しかし実はそうでもないようなんです。
実際に使用している人数で出す

世界で一番人口が多いのは中国ですがその母国語である
標準中国語を使っている人数でみると実は世界一ではなくなるんだそうです。
実際私も仕事で中国の方と関わったことがあって
中国について聞いてみたのですが中国は土地が広いこともあり
それぞれの地域で全然違った言葉を使うんだそうです。
つまり「中国語」と一括りにされていますが
「中国語」もかなり種類があるんだそうで
その中で一番使われているのが「標準中国語」です。
「標準中国語」は政府や北京に住んでいる人などが一般的に使っているようなのですが
「標準中国語」を使っている人からすると全然違う「中国語」を
使っている人が何を言っているか全く分からなかったりもするそうです。

つまり中国人全体で考えると「標準中国語」を使っている人は部分的なんだそうです。
ということで母国語として限定するのはちょっとズレてるようなんですね。
母国語で調べるのではなく実際に生活で使用している言語での人数でみるのがよいようです。
そうした統計が既に存在しており2017年にstatistaというところが統計データを出しています。

結果は以下のようになったそうです。
順位 | 言語 | 使用人数 |
1位 | 英語 | 13億9千万人 |
2位 | 標準中国語 | 11億5千万人 |
3位 | スペイン語 | 6億6千万人 |
日常生活で英語を使う、もしくは第二母国語として
英語を使う人が世界で一番多いということです。
更に別の統計データもあります。
インターネット上で最も使われている言語はなんなのか
割合を出したんだそうです。
これにしても実は英語が最も高く54.4%でした。
参考資料は以下です。
現実世界でもインターネット上でも
一番多く使われているのは統計的に
英語なんですって。
こうやってみるとやはり英語に翻訳するのがよさそうですね!
英語分からん人間が日本語を英語に翻訳する方法

では本題です。
どうやって日本語を英語に翻訳するか?
私はDeepL翻訳

とGoogle翻訳
の二つを組み合わせて翻訳しています。
これであれば英語があまり分からない私でも
なんとか翻訳できました。
まずなぜこの2つの翻訳機を使っているかですが
Google翻訳はあのGoogleが開発した翻訳機なので
まぁ間違いないだろうということで使わさせて頂いています。

で、DeepL翻訳については色々と話題になっていたからです。
DeepL翻訳を知らない方に説明すると
こちらはAIにより翻訳を行わせているのですが、その翻訳が結構自然なんですって。
会話みたいに自然な翻訳をしてくれることで話題になっていて
すごい!って記事が出ていたり著名人がこれいいよ!って言っていたり
していたんです。それがあったので使っています。

ってことでこの2つをどうやって使っていくのか順を追って
説明していきます。
まず最初にどちらでもいいのですが片方に日本語を入れて翻訳させます。
今回はまずDeepLに日本語を入れますね。
例えば
「ボタンを押してみますか?」
と入力します。
すると
「Would you like to press a button?」
って翻訳されました。

次にこの翻訳が自分の思った通りになっているか検証します。
DeepLで翻訳したのでGoogle翻訳にこの英語を入力して
更に日本語に変換してみます。
すると
「ボタンを押しますか?」
に変換されました!

これは私の意図通りの翻訳なのでOKです。
つまりなぜ2つ翻訳機を使うかというと
1つを翻訳用、1つを翻訳の検証用という風に使い分けているんです。
で、意図通りに翻訳してくれたらそこで終わりなのですが
そうではないこともあります。
例えば以下です。
「タンスを開けてみますか?」
これをDeepLで翻訳したら以下のようになりました。
「Would you like me to open the wardrobe?」

ではこの英文をGoogle翻訳で日本語にしてみましょう。
すると
「ワードローブを開けてくれませんか?」
という風に翻訳されました。

ワードローブは洋服だんすらしいので
これはいいとしましょう。
しかし、日本語の感じが私の意図とはちょっと違っています。
ドラクエのようなイメージで
「タンスを開けてみますか?」
という質問文にしたかったのに
(あなたが私に)ワードローブを開けてくれませんか?
という風に登場人物が2人いるように思えちゃう文章になっちゃっています。
これはダメですね。
ということで
「タンスを開けてみますか?」
に何が足りなかったのか考えてみると
主語が抜けていました。
翻訳する側からすると
私がタンスを開けるのか、あなたがタンスを開けるのか
どっちなんだよってなっちゃった訳です。
ということで日本語では省略されがちな主語を以下のように
ちゃんとつけてあげます。
「あなたはタンスを開けてみますか?」
これでDeepLで翻訳させてみます。
すると以下になりました。
「Do you want to open the wardrobe?」

ではこの英文をGoogle翻訳で検証してみましょう。
「ワードローブを開けますか?」
になりました!
私の意図通りです!

Unityで日本語と英語を切り替える方法

では最後に翻訳した英語をゲーム上で表示する方法を記載します。
例えばスマホの使用言語が日本語の場合はテキストに日本語を表示して
そうでなければ英語を表示したい場合どうするか?というと
以下のようにスクリプト上で変更することができます。
public bool IsJapanese()
{
if (Application.systemLanguage == SystemLanguage.Japanese)
{
return true;
}
else
{
return false;
}
}
上記でIsJapanese()というメソッドを作っておいて
以下のようにテキストの文言を変更してあげます。
if (IsJapanese()){
gameObject.GetComponent<Text>().text = "日本語だよ";
} else {
gameObject.GetComponent<Text>().text = "This is in English.";
}
わざわざメソッド化しなくてもいいのですが
いちいちif文を
if (Application.systemLanguage == SystemLanguage.Japanese)
って毎度書くのがめんどくさかったので私はそうしました。
おわりに

いかがでしたでしょうか。
翻訳機の性能が上がってもちゃんとした文章にしないと
自分の意図とは違う英文になっちゃうこともあるのが
難しいところではありますが、それでも翻訳機が無かった頃に
比べれば断然簡単になっているはずです。
そして翻訳を行えば自分のアプリ対象者が何倍にもなってくれる
という可能性を秘めているので、やらないのはもったいないですね!
ローカライズは難しいですがせめて多言語対応は
しておきましょう!というお話しでした。