前書き
とあるプロジェクトでiosアプリを先行して作っていたが、一旦プロジェクトが落ち着き、運用方法の改善を考えた時に、ローカライズファイルの管理方法がイケてないよねという話が出たので、なにかイケてる方法を探すことになった。
現状の管理方法
流れ
行っていた作業
- すべてのメッセージおよび文言をExcelで管理(Sketchからすべて列挙)
- そのExcelをConfluenceで管理
- メッセージや文言を更新のたびにExcelを編集しConfluenceにアップロードする
- Slackで更新したことを共有する
- エンジニアはExcelから1つずつStringsファイルにコピーする
結果
無駄な作業が多くイケてない、それに伴って追加忘れや抜けが発生していた。
原因
何がイケてないのか?
- 管理のためにConfluenceを介してファイルのやりとりを行う必要がある
- Confluenceにアップデート後、メンバーにSlackでアップデートを伝える
- Excelからstringファイルへの書き出しが手動であること
アプローチ
改善の前提条件
今回は改善するにあたり、上司から誰でも使える方法を考案することを命ぜられた。
(特にデザイナーやPMなどコードを書かない人向けに)
そのため、当初は以下のようなXliffを用いた管理方法も検討したが、、、
使わないことになった。そもそもXliffは
- ローカライズ(翻訳)することがメインで、管理するものではない
- ios、androidを程よく一括で管理できるツールがなかった(探せばあるのかも)
- デザイナーや何も知らない人が使うことを考えると、もう少しハードルを下げたい
上記の思惑から、以下のようになった。
流れ
作業
- メッセージおよび文言のSpreadSheetで管理
- スプレッドシートを直接Stringファイルに書き出す(GoogleAppsScriptを用いて)
結果
- 今まで行っていたExcelのアップロード・ダウンロード作業を廃止できた
- 全員で1つのシートを管理するため、上書きなどによる漏れを防げる
- Slackでのアップロート通知が必要なくなった(共有という意味では必要だが)
- stringファイルへの書き出しが自動化できた(GoogleAppsScriptで生成コードを書く必要があります)
参考
こちらの方法は以下の記事を大いに参考にさせていただきました。
GoogleAppsScriptの使い方など、具体的な方法も載っていますのでぜひご覧ください。
iOS と Androidで共通のローカライズファイルを作ろう!
ちなみに上記の記事だと、管理している文言およびメッセージをダウンロードするコードまでは記載がないので、自作したコードをGithubにあげて置きます。
番外編
スプレッドシートでローカライズする際に、とりあえず簡易的に行いたい方は以下を使ってみてください。
Googleスプレッドシートで多言語に翻訳
あとがき
意外にもiosとandroidで言語ファイルを共通管理していない方が多いようで、、、
(みんなネットに公開していないだけ?検索しても全然出てこないので、、)
react nativeとか流行ってますし、そもそも作るものが共通化されていて、ある程度sourceも共通化されているなんてことも最近は増えてきたからでしょうかねぇ、、。