ローカライズを体験する
サンプル開始前の準備
- Unityスタートアップが完了している
- アイテムマスターを作成するが完了している
- ユニットマスターを作成するが完了している
- 報酬マスターを作成するが完了している
- 装備マスターを作成するが完了している
概要
このサンプルでは、次の内容を扱います。
- SettingEditorでローカライズを有効にする
- YamlEditorでローカライズ対象のフィールドを設定する
- 翻訳データを出力して日本語の翻訳を入力する
- C#コードから言語を切り替えてローカライズ結果を確認する
ローカライズ機能の詳細はローカライズを参照してください。
リンク先を読まなくても、このサンプルの手順だけでローカライズの流れを体験できます。
手順は次の通りです。
- SettingEditorでローカライズを有効にする
- YamlEditorでローカライズ対象を設定する
- コンバート
- 翻訳データを編集する
- 再コンバート
- 動作確認
SettingEditorの設定
SettingEditorを開く
メニューバーから Tools > Wiener > Open Setting Editor で起動します。

ローカライズを有効にする
localization.enableをtrueにします。Saveボタンを押します

Googleドライブにアクセスして、ローカライズ用のGoogleSheetsを作り、共有設定の役割を編集者(書き込み権限)にしてください。

localization.enableをtrueにします。input.pathにスプレッドシートのURLを指定します。input.sheetにスプレッドシートのシート名を指定します。Saveボタンを押します

注意
正式にローカライズを行う場合、develop_settings.yaml,develop_binary_settings.yaml,production_settings.yamlの全ての設定ファイルを書き換える必要があります
YAMLの設定
YamlEditorを使用してYAMLを編集します。
YamlEditorを開く
Tools > Wiener > Open Yaml Editorを選択してYamlEditorを開きます。

item.yamlを編集
item.yamlを開きます。
headerのlocalizationにチェックを入れて、id_keyにIdを指定します。

fieldsのNameとDescriptionのlocalizeにチェックを入れます。


unit.yamlを編集
unit.yamlを開きます。
headerのlocalizationにチェックを入れて、id_keyにIdを指定します。

fieldsのNameのlocalizeにチェックを入れます。

equipment.yamlを編集
equipment.yamlを開きます。
headerのlocalizationにチェックを入れて、id_keyにIdを指定します。

fieldsのNameのlocalizeにチェックを入れて、Save Allを押下します。

コンバート
コンバータを開く
Tools > Wiener > Open Converterを選択してコンバータを開きます。

コンバート実行
Run Developを押下してコンバートを実行し、エラーが出ないことを確認します。
Google Sheets APIの権限エラーが出た場合
Run Develop実行時に、認証情報でGoogle Sheets APIの利用権限がまだ有効化されていない場合、次のような403エラーが出ることがあります。
Google Sheets HTTP request failed.
Status: 403 Forbidden
Google Sheets API has not been used in project xxxxxxxxxxxx before or it is disabled.
Enable it by visiting https://console.developers.google.com/apis/api/sheets.googleapis.com/overview?project=xxxxxxxxxxxx then retry.
この場合は、エラーメッセージ内のURLにブラウザでアクセスし、Google Sheets APIの有効化と必要な書き込み権限の承認を行ってください。承認直後は反映まで数分かかることがあるため、少し待ってから再度Run Developを実行してください。

翻訳データの確認
コンバートが完了すると、settingsファイルで指定した場所に翻訳データが書き出されます。
サンプルではAssets/Wiener/Data/localize/translations.csvに出力された前提で進めます。
言語列を追加
C列の先頭に日本語のjaを追加します。

翻訳データを入力
ja列に翻訳データを入力します。 コピーして入力する場合は、最後にある翻訳TSVデータを使用してください。

再コンバート
Run Developを押下して再度コンバートを実行し、エラーが出ないことを確認します。

動作確認
以下のSample.csスクリプトを作成してシーンに配置し、言語を切り替えると文字列が変わることを確認してください。
Sample.cs
using System.Linq;
using UnityEngine;
using Wiener;
using WienerLib;
public class Sample : MonoBehaviour
{
void Start()
{
var wm = new WienerManager();
var textAsset = Resources.Load("basic") as TextAsset;
var result = wm.LoadBasicPack(textAsset.bytes);
if (result != Result.Success)
{
Debug.LogError($"Failed to load basic pack: {result}");
return;
}
Debug.Log("---- first language");
OutputLanguage(wm);
Debug.Log("---- Changing language to 'ja'...");
wm.SetLanguage("ja");
OutputLanguage(wm);
Debug.Log("---- reset language");
wm.ResetLanguage();
OutputLanguage(wm);
}
void OutputLanguage(WienerManager wm)
{
foreach (var item in wm.Item.Values.Skip(1).Take(2))
{
Debug.Log($"Item: Name: {item.Name}, Description: {item.Description}");
}
foreach (var unit in wm.Unit.Values.Take(2))
{
Debug.Log($"Unit: Name: {unit.Name}");
}
foreach (var equipment in wm.Equipment.Values.Skip(1).Take(2))
{
Debug.Log($"Equipment: Name: {equipment.Name}");
}
}
}
実行結果

翻訳TSVデータ
翻訳データを入力する場合は、次のTSVをコピーして使用できます。
Key Source ja
Equipment.Name.0 Invalid 無効
Equipment.Name.2000000001 Bronze Sword 銅の剣
Equipment.Name.2000000002 Iron Helm 鉄の兜
Equipment.Name.2000000003 Knight Armor 騎士の鎧
Equipment.Name.2000000004 Power Gloves 力の手袋
Equipment.Name.2000000005 Swift Boots 俊敏のブーツ
Equipment.Name.2000000006 Dragon Charm 竜のお守り
Equipment.Name.2000000007 Excalibur エクスカリバー
Item.Description.0 Invalid 無効
Item.Description.1000000001 Restores a small amount of HP HPを少し回復します
Item.Description.1000000002 Restores HP HPを回復します
Item.Description.1000000003 Restores a large amount of HP HPを大きく回復します
Item.Description.1010000001 Slightly increases Power 攻撃力を少し上げます
Item.Description.1010000002 Increases Power 攻撃力を上げます
Item.Description.1010000003 Greatly increases Power 攻撃力を大きく上げます
Item.Description.1020000001 Can be sold at shops for a high price 店で高く売れます
Item.Description.1020000002 Can be sold at shops for a high price 店で高く売れます
Item.Name.0 Invalid 無効
Item.Name.1000000001 Potion (S) ポーション(小)
Item.Name.1000000002 Potion (M) ポーション(中)
Item.Name.1000000003 Potion (L) ポーション(大)
Item.Name.1010000001 Power Up (S) パワーアップ(小)
Item.Name.1010000002 Power Up (M) パワーアップ(中)
Item.Name.1010000003 Power Up (L) パワーアップ(大)
Item.Name.1020000001 Koban 小判
Item.Name.1020000002 Oban 大判
Unit.Name.1000000001 Hero 勇者
Unit.Name.1000000002 Skilled Warrior 熟練の戦士
Unit.Name.1000000003 Heroine ヒロイン
Unit.Name.1000000004 Villager A 村人A
Unit.Name.1000000005 Soldier King 兵士王