見出し画像

そのアプリのローカライズ、間違っているかもしれません

iOSアプリの開発をしています。

iOSアプリ開発者向けの、アプリのローカライズに関しての記事です。
Androidアプリの開発者にも参考になるかもしれません。

アプリを日本語専用で公開する場合は関係ない話になりますが、多くの場合は最初は英語、次に言語人口が多い言語やそのアプリの主要な利用者が多い国の言語にローカライズしていく事になります。

アプリをローカライズする時、Google翻訳などを使って単語を翻訳する事が多いかと思います。中には有料のツールや業者さんを利用している方もいるかもしれません。

どのような方法で翻訳するかにかかわらず、翻訳した結果が正しいのか正しくないのか、アプリに使用する場面で相応しいのかなど気になるものです。

今回は多くの人が使っているであろうGoogle翻訳を例に、
その翻訳では間違いかもしれない
と言う話をします。


英語への翻訳

アプリでよく使われる単語に、編集、完了、保存、キャンセルなどがあります。
英語では、Edit、Done、Save、Cancelになります。

Google翻訳で相互に翻訳すると以下のようになります。

英語 → 日本語
日本語 → 英語

思っていたのと違います。


日本語から英語に翻訳したものを、入れ替えて再度日本語に翻訳すると以下のようになり、それ以降は入れ替え続けても同じ結果になります。

日本語 → 英語 → 日本語

編集とキャンセルは確定ですが、完了と保存は少し違います。

Saveは保存、保存はKeep、Keepは保つに変換されています。
普段アプリを使っていて、保存(Save)ボタンは見たことがありますが、保つ(Keep)ボタンはあまり見かけません。
本当に保つと言う意味で使う場合にKeepを使っていて、保存するという意味ではSaveが使われます。
鮮度をキープすると言いますが、鮮度を保存するとは言いません。
なので、情報を保存すると言う意味で使う場合は、保存はSaveで確定で良いと思います。

ではDoneはどうでしょう。
普段アプリを使っていて、「終わり」ボタンはあまり見かけません。
大抵の場合、終わりの場面のボタンには「完了」が使われています。
それは、標準のアプリで「完了」が使われているからです。

iOSの場合、メモやリマインダーなどのアプリが標準で入っていますが、その中で一覧の編集などの終了時に使うボタンは「完了」になっています。

終わりなので「終了」でも良いのでは?と思いますが、
 終了は、完成したかにかかわらず終わる
 完了は、完成して終わる
という印象があり、より相応しい「完了」が使われているのだと思われます。

このように、日本語から英語へは以下のように翻訳するのが一般的です。

編集 → Edit
完了 → Done
保存 → Save
キャンセル → Cancel

中国語への翻訳

では、人口が多い中国語への翻訳はどうなるでしょうか?
中国語は簡体字と繁体字がありますが、ここでは簡体字を例にしています。

日本語から中国語に翻訳すると以下のようになります。

日本語 → 中国語

ちなみに英語から中国語に翻訳の場合は以下のようになります。

英語 → 中国語

入れ替えて翻訳すると以下のようになります。

中国語 → 英語

日本語から中国語に翻訳した結果を見ると、漢字なので意味も理解しやすく一見問題ないように見えます。

日本語 → 中国語

しかし標準のアプリでの使われ方は違っています。
標準のアプリでは以下のようになっていて、「保存」があまり見かけないような単語になっています。

編集 → 编辑
完了 → 完成
保存 → 存储
キャンセル → 取消


「保持」「节省」「存储」を日本語に翻訳すると以下のようになります。

保持 → 保つ
节省 → 保存
存储 → ストレージ

だんだん混乱してきました。

日本語の「保存」から翻訳した「保持」は「保つ」で「保つ」は「Keep」なので違うようです。
英語の「Save」から翻訳した「节省」は「保存」なので合っているように思いますが標準アプリでは使われていません。
標準アプリの「存储」は日本語に翻訳すると「ストレージ」になっていて、それを中国語に翻訳すると「贮存」で、また違う単語になってしまいます。

では標準アプリの「存储」は日本語では何なのでしょうか?
残念ながらGoogle翻訳で「存储」に翻訳できる言葉は見つかりませんでした。

そこで翻訳ではなく単語を検索してみると「コンピューターで記憶する」事に使用する単語だと言う事がわかりました。

基本は標準アプリでの使われ方

このように単語から翻訳しようとすると別の意味の単語に変換されてしまったり、翻訳した単語が正しい意味で使われるのかを確認するのが大変です。

中国語は漢字なのでなんとなく理解できたりしますが、同じように言語人口が多いスペイン語やポルトガル語はどうでしょうか?
さらに、アラビア語やヒンディー語は文字の形や読む方向が違ったりして難しすぎます。

間違わずに簡単に翻訳する方法はないでしょうか?

それはズバリ、標準アプリでの使われ方をそのまま踏襲する方法です。
Appleには翻訳の専門家がいて適切な文言で表示されるように翻訳しているので、それに倣っていれば間違いありません。

幸いな事に、アプリでよく使われる、編集、完了、キャンセル、保存の他に、
Undo(取り消す)とRedo(やり直す)は標準アプリでの使われ方を簡単に確認する事ができます。

簡単に確認する方法

UIKit経験者はもう予想はついていると思いますが、UIBarButtonItemを使います。
UIKitで簡単な確認用アプリを作り、Xcodeで使用言語を切り替えながら各国語の表示を確認します。

iOSアプリ開発者向けの記事なので、アプリは作れるはずですし、アプリを作ったから翻訳しようという段階になっているはずです。
SwiftUIから入った人は馴染みがないかもしれませんが、今回作るアプリは簡単なので試してみましょう。

1. 新しいプロジェクトを作成

Xcodeで新規プロジェクトを作成します。

新規プロジェクト
プロジェクト設定

名前や保存場所は自由ですが、InterfaceにStoryboardを指定します。

プロジェクト作成後の初期ファイル構成

作成したプロジェクトの最初のファイル構成とプロジェクト設定です。

2. Main.storyboardのViewControllerにNavigationBarを追加

NavigationBarを追加
  1. Main.storyboardを選択

  2. View Controller Sceneを選択

  3. プラスボタンをクリック

  4. UINavigationBarをドラッグ&ドロップで配置

  5. UINavigationBarのTitleを選択
    左側の>をクリックして開くと選択できる

  6. Titel文字を削除


3. UIBarButtonItemを追加

最終的に下の画像のようになるように、7つのUINavigationBarを作成していきます。
まずは、一番上にどの言語を表示しているかわかるようにUIBarButtonItemを1つだけ追加したUINavigationBarを作成します。

次に、Edit,Done,Cancel,Save,Undo,Redoのボタンを追加したUINavigationBarを作成します。

どのボタンなのかわかるように左側にラベルとしてのUIBarButtonItemを追加します。

System ItemでCustomを選択し、TintにLabel Colorを設定します。
TitleにEditを入力します。

右側には自動的に翻訳表示されるUIBarButtonItemを追加します。

System ItemにEditで選択し、TintにDefaultを設定します。

4. IBOutletを設定

使用している言語名を表示するために、LanguageのUIBarButtonItemとViewControllerを関連づけます。

Assistantを表示
  1. Assistantを表示します。

  2. Item(Languageに変更してある場合はそれ)をクリックして選択状態にした後、右クリックしたままViewControllerのソースコードにドラッグ&ドロップします。

  3. OutletのNameを入力し、Connectボタンで確定します。
    今回はtitleButtonにしました。

Outlet名の入力

5. 使用言語表示のためのコードを追加

ViewControllerが表示される時、ボタンのタイトルに使用している言語名を表示させる処理を追加します。

viewDidLoadに1行追加します。

titleButton.title = NSLocalizedString("language", comment: "")
追加後のコード

6. Localizable.xcstringsを追加

ファイル一覧のフォルダーアイコンの場所を右クリックして、New File…を選択します。

Localizable.xcstringsファイルを追加

stringでフィルターすると出てくるString Catalogを選択します。

String Catalog

名前を変更せずにそのままCreateボタンをクリックします。

ファイル名入力

Localizable.xcstringsファイルが追加されました。

追加直後のファイル構成

7. 翻訳言語を追加

xcstringsに翻訳する対象の言語を追加します。今回は最初に日本語を追加します。画面の白い部分の左下の+ボタンから追加できます。

言語を追加
日本語が追加された

8. 一旦ビルドして、Localizable.xcstringsを編集

翻訳対象の言語を追加したら、ここで一旦ビルドします。
するとソースコードでNSLocalizedStringが使われている部分の文言が解析され、自動的に設定項目が追加されます。

今回は「language」を使っているのでその文言がKeyとして追加されています。

languageが追加された

Japaneseを選択して、Japanese(ja)の部分に「日本語」を入力します。

翻訳した文字を設定

同様の手順で「中国語 簡体字」も追加しておきます。

中国語を追加

9. Xcodeのスキームで言語を設定

追加した言語でプレビューが表示されるようにするため、Xcodeを設定します。

Edit Scheme…

Edit Scheme…でスキーム編集画面を表示して言語を選択します。

言語を選択

10. プレビューを表示して確認

ViewControllerのプレビューを表示できるようにコードを追加します。
ViewController.swiftを選択してコードを表示させ、以下のコードを入力します。

#Preview {
    UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()!
}

すると自動的にプレビューが表示されます。

プレビュー表示

スキーマで言語を変えると、すぐに反映されます。

以上で確認用アプリは完成です。

確認結果の一覧

Googleの翻訳結果と比較して、確認用アプリで表示を確認した結果が異なっている部分を黄色で示しています。異なっていない方が少数派です。

そのアプリのローカライズ
単語で翻訳しただけでは、間違っているかもしれません

確認結果一覧のExcelのファイルをダウンロードできます。

結果確認用Excelファイル

ここから先は

65字 / 1ファイル

¥ 500

この記事が気に入ったらサポートをしてみませんか?