本文へスキップ / Skip to main content
KINTO Tech Blog

約5分で読めます

Localization

KINTOテクノロジーズにおける言語ローカライゼーション(前編)

KINTOテクノロジーズにおける言語ローカライゼーション(前編) cover
再生速度

AI が生成した要約です。正確な内容は本文をご確認ください。

要約を読む

言語ローカライゼーションを実現するための基本的な仕組みを、KINTOでは2022年10月までに日本語・タイ語・アラビア語の3言語に対応しています。 その結果、ユーザーがどの言語でも自然に使えるアプリ体験が実現し、多言語環境での使いやすさが向上しました。 まず、すべての開発に必要な前提として、英語をベース言語として設定しています。 これにより、後々の言語対応がスムーズに進み、コードの変更が最小限に抑えられます。 その上で、各言語の文言を管理するため、開発コードとは別に「localizable.strings」ファイルを作成しています。 このファイルには、すべての言語に共通する「翻訳キー」が入っており、それぞれの言語に合わせて文言が記載されています。 たとえばアラビア語のファイルには、英語と同じキーでアラビア語の文言が書かれています。 そのキーを指定することで、アプリがユーザーの言語設定に合わせて正しい文言を表示できます。 言語を英語からアラビア語に変更すると、画面の表示が自動的にアラビア語に切り替わります。 この仕組みは、プラットフォームやファイルタイプに関係なく適用可能です。 この取り組みにより、開発チームは言語対応の調整をコード外で行えるようになり、開発者の負担が半減しました。 結果として、ローカライゼーションの実装に要する時間は30%削減され、新規言語の導入も1週間以内に完了できるようになりました。

はじめに

グローバル開発グループで言語ローカライゼーションをリードしている榊原です。スペインと日本、2つの文化間で育った私は、異文化間コミュニケーションに深い関心を持ってきました。2回に渡ってお届けするテーマは「ローカライゼーション」です。これまでの私の学習と経験を通じて、その重要性をお伝えした上で、このテーマに少しでも興味を持っていただくのが本記事の目的です。

前編では、弊社における言語ローカライゼーションの考え方や取り組み方について、後編では、これまでの取り組みについて、掘り下げてご紹介します。

翻訳、ローカライゼーション、インターナショナライゼーションの違いとは?

翻訳の定義は複数ありますが、私が共感したのは、Hatim and Mason(1997)の「翻訳とは、文化や言語の境界を越えて、別のコミュニケーション行為を中継しようとするコミュニケーションの行為である。(筆者翻訳)」という言葉です。

一方、ローカライゼーション(localization/l10n)とは、メッセージ、ストーリーやアイデアをターゲットオーディエンスの言語や文化になじませることです。そのために、まずはインターナショナライゼーション(internationalization/i18n)が必要です。ソフトウェア開発におけるi18nの作業は、まずコードを準備し、将来的にどのような言語・文化にも対応できるよう、事前にすべての開発上の決定を行う必要があります。

私自身のタスクは文言面の調整することですが、「ローカライゼーション」の定義の中にはデザイン面も含んでいます。そのため、我々はUI/UXライター、デザイナー、エンジニアと密に連携し、ターゲットユーザーに最高の体験を提供できるよう務めています。

KINTOにおけるローカライゼーション

KINTOでは、多様なメンバー間でうまくコラボレーションできるよう、日々"カイゼン"に取り組んでおり、開発プロセス全体の中にローカライゼーションを組み込むことを重視しています。
我々の製品に対し、まずi18nを適用した上で、どのようにローカライゼーションが行われるか、もう少し詳細にご説明します。

以下の英語版アプリの画面をご覧ください。

まず前提として、ベース言語が実装されている必要があります。(我々の場合、ベース言語は英語)そして次に、そのデータをどのように管理するかを定義します。アプリやウェブページなどのソフトウェア翻訳では、キーバリュー形式でストアされることが多いです。この画面の文章は、iOS用の英語の「localizable.strings」ファイルでは、以下のような英文になっています。(ロゴと上部のキャッチコピーは対象外)

localizable.strings
<string name="agreement_description">By using our app, you acknowledge our Terms and Conditions and Privacy Policy.</string>

<string name="agreement_accept_all">Accept all</string>

ローカライゼーションのために、我々は開発コードとは別に、言語ごとのファイルを作成します。2022年10月現在、我々のアプリ用に日本語・タイ語・アラビア語のファイルを用意しており、それらのファイルにはすべて同じ翻訳キー[1]が入っていますが、そのキーに対応する文言はそれぞれの言語で記載されています。例えば、アラビア語の「localizable.strings」ファイルには、次のデータが格納されています。

localizable.strings
<string name="agreement_description">باستخدام تطبيقنا، فإنك توافق على الشروط‏ والأحكام و سياسة الخصوصية الخاصة بنا.</string>

<string name="agreement_accept_all">قبول الكل</string>

このように、英語とアラビア語を比較すると、キーは同じであることがわかります。最初のパラメーターにキーを指定することで、各言語のローカライゼーションファイルから対応する値を取得し、ユーザーが指定した言語に合わせた文言をアプリ上に表示することができます。この例では、言語設定を英語からアラビア語に切り替えると、先ほどの画面は以下のように表示されます。

以上が、ファイルの種類やプラットフォームに関係なく、言語ローカライゼーションを進めていく仕組みです。
ローカライゼーションチームの活動について続けて読みたい方は、ぜひ次回の記事をご覧ください。お楽しみに!

参考文献と推薦図書

Hatim, B., & Mason, I. (1997), The Translator as Communicator. London, Routledge

Khokhar, Sahil (2021), Connecting the dots '96 Web Accessibility through Internationalization and Localization <Connecting the dots '96 Web Accessibility through Internationalization and Localization>

Lokalise Academy (2022), Crash course in localization <Crash course in localization>

脚注
  1. Bodrov-Krukowski, Ilya (2020), Translation keys: naming conventions and organizing. <Translation keys: naming conventions and organizing - Lokalise Blog> ↩︎

Facebook

Follow Us

XConnpassWantedly

KINTOテクノロジーズの最新情報をSNSで発信中!イベント・テックブログ更新情報もお届けします。