Unity Localization の String Table と CSV ファイル・Google SpreadSheet を連携させる

はじめに

Unity Localization を用いて多言語対応を実装することができます.

xrdnk.hateblo.jp

Unity Localization では String Table に対して CSV ファイルの入出力と Google SpreadSheet (GSS) との連携が可能です.
本記事ではその連携方法について解説します.

検証環境

  • Unity 2021.2.13f1
  • Localization 1.0.5
  • Addressables 1.19.17

github.com

こちらのリポジトリを利用しています.

CSV 入出力

CSV 入出力をしたい String Table を Localization Tables > Edit Table Collections に表示します.
この時右上にある縦三点リーダを選択すると Import と Export があります.

f:id:xrdnk:20220227133026p:plain

今回は CSV (With Comments) を選択します.ファイル保存のウィンドウが出るので適当なところに保存します.

出力された CSV ファイルを開いてみると以下のようになります.

f:id:xrdnk:20220227134114p:plain

  • Key

String Table の Key に対応します.

  • Id

String Table 上では表示されていませんが,実質的な Primary Key になります.
LocalizedReference はこの Id を参照しているため,理由がなければこの値は変更しない方がいいです
つまり Key の名前を変えてもこの Id さえ変わってなければ参照は壊れないです.

  • Shared Comment

この Entry に対する共通のコメントになります.

  • English(en)

Locale が en の時に表示する値です.

  • English(en) Comments

English(en) の値に対するコメントをつけることができます.

  • Japanese(ja)

Locale が ja の時に表示する値です.

  • Japanese(ja) Comments

Japanese(ja) の値に対するコメントをつけることができます.

試しにこの CSV を以下のように更新してみます.

f:id:xrdnk:20220227134240p:plain

CSV 側で新しい Entry を作るとき,Id は設定する必要はありません.
Unity 側に取り込む時に自動的に設定してくれます(ここは Unity 側に委ねた方がいい)

再度縦三点リーダを選択して Import > CSV File を選択します.

f:id:xrdnk:20220227134438p:plain

注意ですが,Import する前に Import する CSV ファイルは閉じてください.
ファイル変更が反映されないまま,String Table に反映されます.

f:id:xrdnk:20220227134611p:plain

String Table 側に新しい Entry が反映されました.
CSV 側で設定したコメントのデータはここでは表示されていませんが,
StringTable.asset 側ではないでメタデータとして保持されています.

f:id:xrdnk:20220227134829p:plain

ちなみに KeyId ですが,デフォルトでは表示されていません.
String Table に対して右クリックをすると Key Id を表示するチェック項目があるので,
チェックすると表示されるようになります.表示したい場合は利用するとよいでしょう.

f:id:xrdnk:20220227135003p:plain

Google SpreadSheet 連携

Sheet API 管理

console.cloud.google.com

GCP を開き,検索で Sheet API を入力します.初めて Sheet API を利用する方はここで有効を押します.
こちらのリンクを踏むとダイレクトに Sheet API を有効にするページに飛ぶことができます.)

f:id:xrdnk:20220227135438p:plain

GSS との連携方法は API キー方式か OAuth 方式の 2種類があります.
前者の場合は読込のみ,後者の場合は書込・読込の両方ができます.今回は OAuth を利用します.

初めて利用する方は OAuth 同意画面の設定をする必要があります.各項目を埋めていけば設定完了です.

f:id:xrdnk:20220227135950p:plain

次に認証情報を設定します.認証情報を作成に OAuth クライアント ID を選択します.

f:id:xrdnk:20220227140139p:plain

以下のように設定します.アプリはデスクトップアプリでよいと思います.

f:id:xrdnk:20220227140229p:plain

クライアントの作成が完了されると ID とシークレットが表示されるのでメモします.
Sheet API 側の設定はこれで完了です.

f:id:xrdnk:20220227140404p:plain

String Table 管理

Sheets Service Provider 作成

GSS 連携をしたい String Table のアセットを Inspector で表示します.今回の例では SampleStringTable.asset です.
Extensions の + を押し,Google Sheets Extension を押下します.

f:id:xrdnk:20220227140706p:plain

押下すると,以下の項目が作成されます.

f:id:xrdnk:20220227140821p:plain

Sheets Service Provider が必要なので作成します.
Assets > Localization > Google Sheets Service を選択します.

f:id:xrdnk:20220227140937p:plain

すると Sheets Service Provider が作成されます.Authentication を O Auth に設定します.

f:id:xrdnk:20220227141128p:plain

Client Id / Client Secret に先ほど Sheet API 管理側で作成したものをそれぞれ設定します.
JSON ファイルをダウンロードした場合は,Load Credentials でその JSON ファイルを読み込んで設定することもできます.
設定完了後に Authorize を押して認証が完了されれば,Console の Log に Authorized が出力されます.
(OAuth 同意画面でユーザの種類を外部にした場合,テストユーザーに認証させたい Google アカウントのメアドを設定する必要があります.)

f:id:xrdnk:20220227141545p:plain

New Sheet Properties は新しく GSS を作るのヘッダーや重複キー存在時の色などの Sheet の表示に関する設定ができます.

GSS 連携設定

Sheets Service Provider の設定が完了したので,また SampleStringTable.asset に戻ります.
Sheets Service Provider に先ほど作成したものを設定します.
新しく SpreadSheet を作りたいので,Create New Spreadsheet を押します.

f:id:xrdnk:20220227142104p:plain

作成が完了されると Spreadsheet Id と Sheet Id が表示されます.Open を押してみましょう.

f:id:xrdnk:20220227142936p:plain

新しい SpreadSheet が作成されていることがわかります.この時点ではデータは存在しないことに注意してください.
作成した SpreadSheet の URL を見てみると,以下の形式になっていることに注目してください.

https://docs.google.com/spreadsheets/d/{Spreadsheet Id}/edit#gid={Sheet Id}

これによって SpreadSheet を変えた場合は,Unity 側でもその変更を反映させる必要があります.

Mapped Columns でカラム設定を行います.+ を押しますと選択項目が出てきますが,最初は Add Default Columns でよいです.

f:id:xrdnk:20220227222136p:plain

するといい感じにカラム設定が行われます.カラム設定が完了すると,Push と Pull が押せるようになります.

f:id:xrdnk:20220227143126p:plain

せっかくなので,Mapped Columns をもう少し付け足しましょう.
+ で Key Comment Column / Locale Comment Column を選択して,カラム設定を以下のようにします.

f:id:xrdnk:20220227143403p:plain

この状態で Push してみましょう!Push が成功されれば Console 側に以下のログだけが表示されます.
(失敗した場合は赤エラーが表示されます.Key Column の Column を例えば無茶苦茶な値にしたり)

f:id:xrdnk:20220227143530p:plain

この状態で Google SpreadSheet を見ると Entry が反映されています.
Key の項目にコメントがありますが,ここで Id が表示されます.(これは Id は readonly であることを示す)

f:id:xrdnk:20220227145309p:plain

Google SpreadSheet 側でデータを付け足してみましょう.CSV の時と同じデータを入れてみます.

f:id:xrdnk:20220227143938p:plain

Pull を選択すると,何もエラーが発生しなければ,Unity の String Table 側でも反映されました.

f:id:xrdnk:20220227144046p:plain

終わりに

今回は紹介しきれませんでしたが,GSS 連携の際には Sheet も選択できるので,
1 String Table に対して,1 Sheet という分け方も可能です.その方が管理しやすくなります.

f:id:xrdnk:20220227144220p:plain

CSV 入出力・GSS 連携は String Table 限定です.Asset Table 側では現在提供されていません.

参考文献

docs.unity3d.com