KINTOテクノロジーズにおける言語ローカライゼーション(前編)
<h2 id="%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB" data-line="1" class="code-line"><a class="header-anchor-link" href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB" aria-hidden="true"></a> <strong>はじめに</strong></h2>
<p data-line="3" class="code-line">グローバル開発グループで言語ローカライゼーションをリードしている榊原です。スペインと日本、2つの文化間で育った私は、異文化間コミュニケーションに深い関心を持ってきました。2回に渡ってお届けするテーマは「ローカライゼーション」です。これまでの私の学習と経験を通じて、その重要性をお伝えした上で、このテーマに少しでも興味を持っていただくのが本記事の目的です。</p>
<p data-line="5" class="code-line">前編では、弊社における言語ローカライゼーションの考え方や取り組み方について、後編では、これまでの取り組みについて、掘り下げてご紹介します。</p>
<h2 id="%E7%BF%BB%E8%A8%B3%E3%80%81%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%80%81%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8A%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E9%81%95%E3%81%84%E3%81%A8%E3%81%AF%EF%BC%9F" data-line="7" class="code-line"><a class="header-anchor-link" href="#%E7%BF%BB%E8%A8%B3%E3%80%81%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%80%81%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8A%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E9%81%95%E3%81%84%E3%81%A8%E3%81%AF%EF%BC%9F" aria-hidden="true"></a> <strong>翻訳、ローカライゼーション、インターナショナライゼーションの違いとは?</strong></h2>
<p data-line="9" class="code-line"><strong>翻訳</strong>の定義は複数ありますが、私が共感したのは、Hatim and Mason(1997)の「翻訳とは、文化や言語の境界を越えて、別のコミュニケーション行為を中継しようとするコミュニケーションの行為である。(筆者翻訳)」という言葉です。</p>
<p data-line="11" class="code-line">一方、<strong>ローカライゼーション</strong>(localization/l10n)とは、メッセージ、ストーリーやアイデアをターゲットオーディエンスの言語や文化になじませることです。そのために、まずは<strong>インターナショナライゼーション</strong>(internationalization/i18n)が必要です。ソフトウェア開発におけるi18nの作業は、まずコードを準備し、将来的にどのような言語・文化にも対応できるよう、事前にすべての開発上の決定を行う必要があります。</p>
<p data-line="13" class="code-line">私自身のタスクは文言面の調整することですが、「ローカライゼーション」の定義の中にはデザイン面も含んでいます。そのため、我々はUI/UXライター、デザイナー、エンジニアと密に連携し、ターゲットユーザーに最高の体験を提供できるよう務めています。</p>
<p data-line="15" class="code-line"><img src="/assets/blog/authors/Maya.s/20221027/Esquema1.png" alt="" width="900" /></p>
<h2 id="kinto%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3" data-line="17" class="code-line"><a class="header-anchor-link" href="#kinto%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3" aria-hidden="true"></a> <strong>KINTOにおけるローカライゼーション</strong></h2>
<p data-line="19" class="code-line">KINTOでは、多様なメンバー間でうまくコラボレーションできるよう、日々"カイゼン"に取り組んでおり、開発プロセス全体の中にローカライゼーションを組み込むことを重視しています。
我々の製品に対し、まずi18nを適用した上で、どのようにローカライゼーションが行われるか、もう少し詳細にご説明します。</p>
<p data-line="22" class="code-line">以下の英語版<a href="https://www.kinto-mobility.com/app/" target="_blank" rel="nofollow noopener noreferrer">アプリ</a>の画面をご覧ください。</p>
<p data-line="24" class="code-line"><img src="/assets/blog/authors/Maya.s/20221027/PPT&C_en.png" alt="" width="300" /></p>
<p data-line="26" class="code-line">まず前提として、ベース言語が実装されている必要があります。(我々の場合、ベース言語は英語)そして次に、そのデータをどのように管理するかを定義します。アプリやウェブページなどのソフトウェア翻訳では、キーバリュー形式でストアされることが多いです。この画面の文章は、iOS用の英語の「localizable.strings」ファイルでは、以下のような英文になっています。(ロゴと上部のキャッチコピーは対象外)</p>
<div class="code-block-container"><div class="code-block-filename-container"><span class="code-block-filename"> localizable.strings</span></div><pre class="language-file"><code class="language-file code-line" data-line="29"><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>
</code></pre></div><p data-line="35" class="code-line">ローカライゼーションのために、我々は開発コードとは別に、言語ごとのファイルを作成します。2022年10月現在、我々のアプリ用に日本語・タイ語・アラビア語のファイルを用意しており、それらのファイルにはすべて同じ翻訳キー<sup class="footnote-ref"><a href="#fn-0e1a-1" id="fnref-0e1a-1">[1]</a></sup>が入っていますが、そのキーに対応する文言はそれぞれの言語で記載されています。例えば、アラビア語の「localizable.strings」ファイルには、次のデータが格納されています。</p>
<div class="code-block-container"><div class="code-block-filename-container"><span class="code-block-filename"> localizable.strings</span></div><pre class="language-file"><code class="language-file code-line" data-line="39"><string name="agreement_description">باستخدام تطبيقنا، فإنك توافق على الشروط والأحكام و سياسة الخصوصية الخاصة بنا.</string>
<string name="agreement_accept_all">قبول الكل</string>
</code></pre></div><p data-line="45" class="code-line">このように、英語とアラビア語を比較すると、キーは同じであることがわかります。最初のパラメーターにキーを指定することで、各言語のローカライゼーションファイルから対応する値を取得し、ユーザーが指定した言語に合わせた文言をアプリ上に表示することができます。この例では、言語設定を英語からアラビア語に切り替えると、先ほどの画面は以下のように表示されます。</p>
<p data-line="47" class="code-line"><img src="/assets/blog/authors/Maya.s/20221027/Localization_en_to_ar.png" alt="" /></p>
<p data-line="49" class="code-line">以上が、ファイルの種類やプラットフォームに関係なく、言語ローカライゼーションを進めていく仕組みです。
ローカライゼーションチームの活動について続けて読みたい方は、ぜひ次回の記事をご覧ください。お楽しみに!</p>
<h3 id="%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE%E3%81%A8%E6%8E%A8%E8%96%A6%E5%9B%B3%E6%9B%B8" data-line="53" class="code-line"><a class="header-anchor-link" href="#%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE%E3%81%A8%E6%8E%A8%E8%96%A6%E5%9B%B3%E6%9B%B8" aria-hidden="true"></a> 参考文献と推薦図書</h3>
<p data-line="55" class="code-line">Hatim, B., & Mason, I. (1997), The Translator as Communicator. London, Routledge</p>
<p data-line="57" class="code-line">Khokhar, Sahil (2021), Connecting the dots '96 Web Accessibility through Internationalization and Localization <<a href="https://engineering.mercari.com/en/blog/entry/20210630-connecting-the-dots-web-accessibility-through-internationalization-and-localization/" target="_blank" rel="nofollow noopener noreferrer">Connecting the dots '96 Web Accessibility through Internationalization and Localization</a>></p>
<p data-line="59" class="code-line">Lokalise Academy (2022), Crash course in localization <<a href="https://academy.lokalise.com/course/start-a-crash-course-to-localization" target="_blank" rel="nofollow noopener noreferrer">Crash course in localization</a>></p>
<section class="footnotes">
<span class="footnotes-title">脚注</span>
<ol class="footnotes-list">
<li id="fn-0e1a-1" class="footnote-item"><p data-line="37" class="code-line">Bodrov-Krukowski, Ilya (2020), Translation keys: naming conventions and organizing. <<a href="https://lokalise.com/blog/translation-keys-naming-and-organizing/" target="_blank" rel="nofollow noopener noreferrer">Translation keys: naming conventions and organizing - Lokalise Blog</a>> <a href="#fnref-0e1a-1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
関連記事 | Related Posts
We are hiring!
【オープンポジション】「気になる!」方はまずはこちらからご応募ください。/東京・名古屋・大阪・福岡
業務内容国内外のKINTOサービスや、トヨタグループの金融、モビリティサービスの内製開発組織である同社にて、ご経験・ご志向性に応じて配属を決定し、ご活躍いただきます。
生成AIエンジニア/AIファーストG/東京・名古屋・大阪・福岡
AIファーストGについて生成AIの活用を通じて、KINTO及びKINTOテクノロジーズへ事業貢献することをミッションに2024年1月に新設されたプロジェクトチームです。生成AI技術は生まれて日が浅く、その技術を業務活用する仕事には定説がありません。




