Blog

Unity

ローカライズ(7) コード上でローカライズされた文字列を取得

Unityでのローカライズ(7) コード上でローカライズされた文字列を取得

今回はコード上でローカライズされた文字列を取得する方法を書きたいと思います。
まだパッケージのインストールや初期設定を行っていない方は、まずは前の記事をご覧ください。
 → ローカライズ(1) Localizationの導入
 → ローカライズ(2) 文字列のローカライズ
 
→ ローカライズ(3) 画像のローカライズ
 → ローカライズ(4) スクリプトで言語を変更する
 → ローカライズ(5) 保存した設定の言語を選択する
 →ローカライズ(6) アプリ名のローカライズ

コード上でローカライズされた文字列を取得

ダイアログボックスのタイトルや内容など、C#のスクリプト内で直接文字列を指定することがあると思います。そのようなコード上の文字列をローカライズする方法を紹介します。

結論としては次の記述でローカライズされた文字列を取得することができます。

LocalizationSettings.StringDatabase.GetLocalizedString("String Table 名", "Key 名")

・スクリプトのサンプル

using UnityEngine;
using UnityEngine.Localization.Settings; //コマンドを使用するために必要

public class Sample
{
    public void Test()
    {
        string s = LocalizationSettings.StringDatabase.GetLocalizedString("StringTable","Key");
    }
}

公式リファレンスを見るとGetLocalizedString メソッドについては様々な使い方があるようです。
興味のある方はそちらも見てみてください。

≫ 続きを読む

Unity   2025/06/05   Ace

ローカライズ(6) アプリ名のローカライズ

Unityでのローカライズ(6) アプリ名のローカライズ

今回はアプリ名のローカライズする​方法を説明していきたいと思います。
まだパッケージのインストールや初期設定を行っていない方は、まずは前の記事をご覧ください。
 → ローカライズ(1) Localizationの導入
 → ローカライズ(2) 文字列のローカライズ
 
→ ローカライズ(3) 画像のローカライズ
 → ローカライズ(4) スクリプトで言語を変更する
 → ローカライズ(5) 保存した設定の言語を選択する

アプリ名のローカライズ

アプリアイコンの下にあるアプリ名のローカライズする方法を紹介します。
Localize_AppName6.jpg

1."String Table" にアプリ名用の Entry を追加し、Keyとそれぞれの言語でのアプリ名を入力してください。
 String Table は既にあるものでも構いませんし、新しい物を作って別で管理してもよいです。
 String Table の作成、編集方法については以前の記事 "文字列のローカライズ" を参考にしてください。

Localize_AppName1.jpg

2.メインメニューから [Window ⇒ Asset Management ⇒ Localization Tables] を選択し、"Localization TablesWindow" を開き設定していきます。

 Android と iOS では少し方法が異なっているようです。個別に説明します。

 ・Android
     "Metadata リスト"  で [+ ⇒ Android ⇒ AppInfo] を選択し "App Info" を追加します。
  Localize_AppName2.jpg
  [Display Name プルダウン ⇒ 追加した String Table の Key] を選択して設定してください。
  Localize_AppName3.jpg

 ・iOS
  "Metadata リスト"  で [+ ⇒ iOS ⇒ AppInfo] を選択し "App Info" を追加します。
  Localize_AppName4.jpg
  [Short Name プルダウン]、[Display Name プルダウン] から追加した String Table の Key を選択し設定してください。

  Localize_AppName5.jpg

≫ 続きを読む

Unity   2025/05/04   Ace

ローカライズ(5) 保存した設定の言語を選択する

Unityでのローカライズ(5) 保存した設定の言語を選択する

今回は保存した言語設定を Startup Locale Selector で言語選択する方法を説明していきたいと思います。
まだパッケージのインストールや初期設定を行っていない方は、まずは前の記事をご覧ください。
 → ローカライズ(1) Localizationの導入
 → ローカライズ(2) 文字列のローカライズ
 
→ ローカライズ(3) 画像のローカライズ
 → ローカライズ(4) スクリプトで言語を変更する

保存した設定の言語を選択する

アプリ内のオプションで変更した言語設定を保存しておいて、次にアプリを起動したときにその言語にしたいということがあると思います。
Project Settings の Localization の Locale Selectors に保存した言語を選ぶ Selector を追加することで実現できます。
そのためにUnity の PlayerPrefs を使用した "Player Pref Locale Selector" が用意されていますが、今回は "IStartupLocaleSelector インターフェースを使用してオリジナルのカスタムセレクターを作る" ことで実装する方法を紹介します。

1. "IStartupLocaleSelector インターフェース" を継承してセレクターのスクリプトを作成します。
 以下に以下にサンプルのスクリプトを載せておきます。
 ※設定のロードは模擬関数になってますので実際使用する場合は自分に合った内容に変更してください。

using System;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;

[DisplayName("Test Startup Selector")]
[Serializable]
public class Test_StartupSelector : IStartupLocaleSelector
{
    //IStartupLocaleSelectorインターフェイスに必ず必要な関数。Startup時にこの関数が呼ばれる。
    public Locale GetStartupLocale(ILocalesProvider availableLocales)
    {
        SystemLanguage language;

        //設定に保存された言語を取得する。保存されてなければstring.Emptyが返ってくるとする。
        string savedLanguage = this.GetSavedLanguageSetting();

        //設定が保存されてなければnillを返し選択失敗させる。
        if(savedLanguage == string.Empty)
        {
            return null;
        }

        //stringの選択情報をSystemLanguageに変換
        switch(savedLanguage)
        {
            case "Japanese":
                language = SystemLanguage.Japanese;
                break;

            case "English":
                language = SystemLanguage.English;
                break;

            default :
                return null;
        }

        //Localeを返す
        return availableLocales.GetLocale(language);
    }

    // 保存された言語設定を取得する模擬関数。
    public string GetSavedLanguageSetting()
    {
        //設定ファイルの有無。本当はここには設定ファイルがあるか調べる処理を書く。
        bool settingExists = true;

        //設定ファイルが存在していたら言語を返す。
        if(settingExists)
        {
            //本当はここには設定をロードしてそこに保存されていた言語を返す。
            return "English";
        }

        //設定ファイルが存在してなかったらstring.Emptyを返す。
        return string.Empty;
    }
}

2. メインメニュー[Edit ⇒ Project Settings] で Project Settings ウィンドウを開き Localization の設定を表示させます。
 Locale Selecors のリストで [+ ⇒ 先ほど作成したセレクター] を追加してください。

 Localization_Selector1.jpg

3.次にSelectorの優先順位を調整します。保存された設定はシステム環境の設定よりも前に判定される必要があるので、追加したセレクターを "System Locale Selector" の上にドラッグして移動させてください。これで設定完了です。
 Localization_Selector2.jpg


次回は アプリ名のローカライズ の方法を書いていく予定です。

≫ 続きを読む

Unity   2025/05/03   Ace

ローカライズ(4) スクリプトで言語を変更する

Unityでのローカライズ(4) スクリプトで言語を変更する

今回はLocalizationパッケージでC#スクリプトで言語を切り替える方法を説明していきたいと思います。
まだパッケージのインストールや初期設定を行っていない方は、まずは前の記事をご覧ください。
 → ローカライズ(1) Localizationの導入
 → ローカライズ(2) 文字列のローカライズ
 
→ ローカライズ(3) 画像のローカライズ

スクリプトで言語を切り替える

オプション画面などで言語を動的に切り替えたい場合があると思います。
C#スクリプトから言語を切り替える方法を説明します。
ChangeLocale.gif

以下にサンプルのスクリプトを載せておきます。
ボタンを押すと任意の "SystemLanguageの値" を用いて言語を変更する関数を呼び出します。
"LocalizationSettings.AvailableLocales.GetLocale" にその値を与えれば目標の "Locale" が得られます。
その後、 "LocalizationSettings.SelectedLocale" に変更したい "Locale" を指定してあげれば変更できます。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;

public class Test_Localization : MonoBehaviour
{
    //ボタン
    public Button JP_Button;    //日本語に変更するボタン
    public Button En_Button;    //英語に変更するボタン

    //初期化
    void Awake()
    {
        //ボタンがクリックされたときにChangeLocaleを呼び出す。
        JP_Button.onClick.AddListener( () => { this.ChangeLocale(SystemLanguage.Japanese); });
        En_Button.onClick.AddListener( () => { this.ChangeLocale(SystemLanguage.English); });
    }

    // Localeを切り替える
    private void ChangeLocale(SystemLanguage language)
    {
        //Localeがあるかどうか調べる
        Locale locale = LocalizationSettings.AvailableLocales.GetLocale(language);
        if(locale == null)
        {
            Debug.LogWarning("Localeがありません。");
            return;
        }

        //現在のLocaleと同じだったら変更しない
        if(locale == LocalizationSettings.SelectedLocale)
        {
            return;
        }

        //Localeを設定する
        LocalizationSettings.SelectedLocale = locale;
    }
}

切り替えは非同期で行われます。切替完了まで待つ必要がある場合は async や await を使って非同期対応してください。

次回は 保存した設定の言語を選択する 方法を書いていく予定です。

≫ 続きを読む

Unity   2025/05/02   Ace

ローカライズ(3) 画像のローカライズ

Unityでのローカライズ(3) 画像のローカライズ

今回はLocalizationパッケージを使った画像のローカライズの方法を説明していきたいと思います。
まだパッケージのインストールや初期設定を行っていない方は、まずは前の記事をご覧ください。
 → ローカライズ(1) Localizationの導入
 → ローカライズ(2) 文字列のローカライズ

画像のローカライズ

Imageコンポーネント の画像(Sprite)のローカライズをしていきます。
ローカライズをコンポーネントに適用する方法がいくつか用意されていますが、ここでは "先にローカライズのテーブルを用意してからそれをコンポーネントに適用する方法" を説明します。

1.メインメニューから [Window ⇒ Asset Management ⇒ Localization Tables] を選択し、"Localization TablesWindow" を開きます。
 [New Table Collection タブ] で下記のように設定し [Create ボタン] を押してください。
 ・Type: Asset Table Collection を選びます。
 ・Name: 任意のテーブル名を入力
 どの場所にテーブルデータを置くか聞かれるので、以前作成したフォルダを選択してください。
LocalizeImage_1.jpg

2.作成したテーブルの画面で [Add New Entry ボタン] を押し行を追加し内容を設定していきます。
 Key: その画像の Key を入力してください。
 アセット:それぞれの言語に任意の Sprite アセットを設定してください。 [⦿] [Select] からアセットを選択できます。
LocalizeImage_2.jpg LocalizeImage_3.jpg

3.ローカライズしたい Image のオブジェクトを選択し、Image コンポーネントの左上にある […(縦) ⇒ Localize] を選択します。
LocalizeImage_4.jpg

4.そうすると "Localize Sprite Eventコンポーネント" が追加されるので [Localized Asset Referenceのプルダウン ⇒ 作成したKey] を選択して設定してください。
LocalizeImage_5.jpg

5."Localization Scene Controlsウィンドウ" [Active Localeタブ] から表示したい言語を選んで切り替わることを確認してください。
LocalizeImage_6.jpg LocalizeImage_7.jpg


次回は スクリプトで言語を変更する 方法を書いていく予定です。

≫ 続きを読む

Unity   2025/05/01   Ace

ローカライズ(2) 文字列のローカライズ

Unityでのローカライズ(2) 文字列のローカライズ

今回はLocalizationパッケージを使った文字列のローカライズの方法を説明していきたいと思います。
まだパッケージのインストールや初期設定を行っていない方は、まずは前の記事をご覧ください。
 → ローカライズ(1) Localizationの導入

説明するにあたって、TextMeshProとImage が1つずつ配置され、言語切り替え用のボタンがある簡単なシーンを用意しました。こちらを使って説明していきたいと思います。
LocalizeString_1.jpg

文字列のローカライズ

TextMeshPro(UGUI) の文字列のローカライズをしていきます。
ローカライズをコンポーネントに適用する方法がいくつか用意されていますが、ここでは "先にローカライズのテーブルを用意してからそれをコンポーネントに適用する方法" を説明します。

1.メインメニューから [Window ⇒ Asset Management ⇒ Localization Tables] を選択し、"Localization TablesWindow" を開きます。
LocalizeString_2.jpg

2.[New Table Collection タブ] で下記のように設定し [Create ボタン] を押してください。
 ・Type:  "String Table Collection" を選びます。
 ・Name:  任意のテーブル名を入力
LocalizeString_3.jpg
 どの場所にテーブルデータを置くか聞かれるので、以前作成したフォルダを選択してください。

LocalizeString_4.jpg

3.作成したテーブルの画面で [Add New Entry ボタン] を押し行を追加します。
LocalizeString_5.jpg

4.ローカライズの内容を入力します。
 ・Key:  その文章の Key を入力してください。
 ・それぞれの言語に適切な文字列を入力してください。
LocalizeString_6.jpg

5.ローカライズしたいテキストのオブジェクトを選択し、TextMeshProコンポーネントの左上にある […(縦) ⇒ Localize] を選択します。
LocalizeString_7.jpg

6.そうすると "Localize String Eventコンポーネント" が追加されるので [String Referenceのプルダウン ⇒ 作成したKey] を選択して設定してください。
LocalizeString_8.jpg

7.きちんと設定されているか確認しましょう。
 [Window ⇒ Asset Management ⇒ Localization Scene Controls] から "Localization Scene Controlsウィンドウ" を表示し、[Active Localeタブ] から表示した言語を選んで切り替わることを確認してください。
LocalizeString_10.jpg
LocalizeString_12.jpg LocalizeString_11.jpg


次回は 画像のローカライズ について書いていく予定です。

≫ 続きを読む

Unity   2025/04/30   Ace

ローカライズ(1) Localizationの導入

Unityでのローカライズ(1) Localizationの初期設定

自作のアプリを多言語対応(ローカライズ)したいと思い、Unityのローカライズ機能について調べてみました。

やりたいこたいことはこんな感じです。

・ゲーム内のテキストや画像を言語で切り替えたい。

オプションの言語設定で言語を切り替えたい。

オプションで設定した言語を保存し、次に立ち上げたときにその言語を表示させたい。

アプリアイコンの下の名前を言語で切り替えたい

項目が多く記事が長くなってしまうので何回かに分けて書いていきたいと思います。
今回は Localizationの導入と初期設定 についてです。

その前に、YouTube の Unity Japan チャンネル でローカライズについての素晴らしい動画がありましたのでご紹介しておきます。
 → プロ必見!最新ローカライズ機能徹底解説

Localizationパッケージ の インストール

Localizationパッケージ とは Unity が正式に出しているローカライズ機能を追加するパッケージです。
まずはこのパッケージをインストールします。

1. [メインメニュー ⇒ Window ⇒ Package Manager] を選択して Package Manager を開きます。
LocalizationInstall_1.png

2. Package Manager の左上にあるプルダウンで [Unity Registry] を選択し、Unityが登録しているパッケージの一覧を表示させます。

つぎに [Localization] を選択し [Install ボタン] を押してインストールします。
LocalizationInstall_2.png

対応する言語の設定

次にどの言語に対応するか設定します。

1. [メインメニューのEdit ⇒ Project Settings] を選択し Project Settings を開きます。

2. Project Settings  [Localizagion] を選択し、[Create ボタン] を押します。
LocalizationSettings_2.png

3. Localization Settingsファイルをどこに作成するかを決めます。
専用フォルダ(例ではLocalizationという名前のフォルダ)を作成し、そのフォルダの中にLocalization Settingsファイルを作成します。
LocalizationSettings_3.png

4. [Locale Generator ボタン] を押し、対応する言語にチェックを入れ [Generate Localesボンタン] を押します。
設定ファイルの保存先を聞かれるので先ほど作ったフォルダの中を指定してください。
LocalizationSettings_5.png

LocalizationSettings_6.png
LocalizationSettings_4.png

言語の選択方法や優先順位の設定

アプリが立ち上がったとき、どの言語が選ばれるかの設定です。
LocalizationSettings_8.jpg

この時点で既に3つの選択方法が設定されています。

Command Line Locale Selector アプリケーションの起動時にコマンドライン引数を使用してロケールを選択します。
System Locale Selector デバイスのロケール (場所) を検出して一致するものが見つかればロケールを選択します。
Specific Locale Selector 指定されたロケールを選択します。他の全てのセレクターが失敗した場合このセレクターでロケールを指定します。

セレクターはリストの上から実行され、条件を満たさなかった場合は次のセレクターが順々に実行されていきます。
デフォルトでは [コマンドラインでの選択] ⇒ [ディバイスの設定に合わせて選択] ⇒ [全て失敗した場合の言語の指定] の順になっています。
全て失敗した場合に実行される [Specific Locale Selector] の設定は言語の使用規模から英語(English)を設定しておくで良いと思います。

また、その他のセレクターとして以下のセレクターが用意されてます。

Player Pref Locale Selector UnityのPlayerPrefsを使用して保存された言語を指定できます。
カスタムセレクター IStartupLocaleSelectorインターフェースを使用してユーザー独自のセレクターを作成できます。

 


次回は 文字のローカライズ について書いていく予定です。

≫ 続きを読む

Unity   2025/04/29   Ace