Blog

2025年05月

ローカライズ(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