SlideShare a Scribd company logo
1 of 41
Download to read offline
じめよう
Localization
ツール / tips / 運用ノウハウなど
Drivemode, Inc. João Orui
2016年春ごらからスタート。 2016年夏現在 24ヶ国語対応。
はじめよう!
- これから多言語化を始めるという人
- どんなツールがあるか知りたい人
- 翻訳 管理 どんな運用にしているか聞いてみたい人
なぜ多言語化?
Localizationとは
Localization (地域化) = Internationalization (国際化) されたソフトウェアを地域 言
語・習慣や文化に合わせること。
- ブランドを文化に合わせる
- 地域に合わせたマーケティング
- リソース 言語翻訳
- 日付や数値 表示を地域習慣に合わせる
Internationalizationとは
Internationalization (国際化) = Localization (地域化) を実現するため ソフトウェア
設計・実装。
- 柔軟性 高いレイアウト 設計
- RTLレイアウトをサポート
- 言語リソース 用意(ハードコードStringを無くす)
- Formatterを使った日付や数字 使用
国際化 どう始めれ いい?
言語別リソースを用意する方法
- デフォルトリソース
res/
values/ → デフォルト (defaultリソース 用意をお忘れなく )
strings.xml
- 必要に応じて言語別リソースを用意
res/
values-pt-rBR/ -> ブラジルポルトガル語
strings.xml
values-jp/ -> 日本語
strings.xml
Stringリソースの用意
- ハードコードせず、string xmlファイルに記述
<string name="hello_world">ほげほげ</string>
- レイアウトから @string/hello_world で参照が可能
- コードから リソースIDで参照が可能
textView.setText(R.string.hello_world);
ハードコードStringを発見する
- ハードコードせず、string xmlファイルに記述
<string name="hello_world">ほげほげ</string>
- ハードコードされているstringを見つけるに
ハードコードStringを発見する(その2)
システム 言語設定を「English XA」にする。
プレースホルダーを使いましょう
- 文字列結合しない
textView.setText("Hello " + "Taro"); ←ダメゼッタイ!
文 構成が必ず結合した順番 言語 かりで ない。
翻訳が著しく困難になります。
- プレースホルダーを使う
<string name="greeting">Hello %s</string>
<string name="greeting">こんにち %sさん</string>
textView.setText( getString(R.string.greeting, "Taro") );
プレースホルダーを使いましょう
- 複数 プレースホルダーを持つ文 場合 位置 情報も持たせる
<string name="notification">New %1$s from %2$s</string>
<string name="notification">%2$sさんから新し
い%1$s</string>
textView.setText( getString(R.string.notification, "message", "Taro") );
注意: 既存ストリングにプレースホルダーを追加するとき、翻訳にプレースホルダーが無
いと実行時にクラッシュします。 Lintかけていれ 見つかります。
プレースホルダーをもっと分かりやすく
%s %1$s 等 分かりづらい。、翻訳時にミスが起きる場合がある。
https://github.com/square/phrase
複数形
- 複数形 必ずpluralsを定義する
res.getQuantityString(R.plurals.distance_km, (int) count, nFormat.format(count));
日付・時刻
- DateFormatが使えます
- getBestDateTimePattern API 18 から
古いAPIから使う場合 各言語 パターンを用意する必要がある
便利な生成ツールもあります! https://github.com/jfsso/DateFormatGenerator
日付・時刻(getBestDateTimePattern API < 18)
- DateFormatGenerator (https://github.com/jfsso/DateFormatGenerator)
日付・時刻
- DateUtilsもあります!
Calendar cal = new GregorianCalendar(2016, 8,
7);
DateUtils.formatDateTime(this, cal.getTimeInMillis(), DateUtils.FORMAT_SHOW_DATE);
// → August 7
- 開始・終了日時を表現するときにも便利
Calendar cal1 = new GregorianCalendar(2016, 8, 6);
Calendar cal2 = new GregorianCalendar(2016, 8,
8);
DateUtils.formatDateRange(this, cal1.getTimeInMillis(),
cal2.getTimeInMillis(), DateUtils.FORMAT_SHOW_DATE);
// → "August 6 - 7"
通貨・数値
- カンマ区切りが実 ピリオド区切りだったりします。
- 出来る限りNumberFormatを使うと良い。
- 例
numberFormat.format(10000);
// 英語: 10,000.00
// ポルトガル語: 10.000,00
電話番号
- PhoneNumberUtilsが使えます
API >= 21
PhoneNumberUtils.formatNumber("0120123456", "JP"); // 0120-123-456
API < 21
PhoneNumberUtils.formatNumber("0120123456");
(注意: 日米以外 フォーマット結果 APIバージョンによって差がある)
テキストを含む画像
- できるだけ避ける。
- どうしても必要な時 、対応言語ごと 画像リソースを用意する。
(大変だろう・・)
アプリ外ですが、
Google Play Store 画像 ・・がん ろう!
Photoshopスクリプトで自動化することも可能(?)
音声・映像
- 音声
- 音声合成が使えるところ 音声合成に切り替える
- 注意: 音声合成で対応言語が限られます
- Google TTS: Bengali (Bangladesh), Cantonese (Hong Kong), Danish, Dutch, English (Australia), English (India), English
(United Kingdom), English (United States), Finnish, French, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean,
Mandarin (China), Mandarin (Taiwan), Norwegian, Polish, Portuguese (Brazil), Russian, Spanish (Spain), Spanish (United
States), Swedish, Thai, Turkish and
Vietnamese.
https://play.google.com/store/apps/details?id=com.google.android.tts
- 音声合成をヘビーに使う場合 、エラー状態や言語不足状態をできるだけ早い段階でユーザに解
決してもらうように促すことが大切。
- 映像
- 言語別にキャプションを用意する
- Youtube キャプション作成ツールが便利
柔軟性の高いレイアウト
- Textを表示する枠に余裕を持たせる
- 英語 30%増しぐらいが良いでしょう
- 日本語をベースにした場合 要注意!
→日本語 少ないスペースで十分だから
- Textサイズ 自動調整で枠内にフィットする方法もある
- https://github.com/grantland/android-autofittextview
- 一つ レイアウトで全言語対応 できる設計だと良い
- 出来ない場合→ 特別対応 必要な言語 別レイアウトを宣言する
- サイズ調整だけ?   → dimens.xmlなどでサイズ管理、レイアウト一つ!
- フォントサイズだけ? → dimens.xmlなどでサイズ管理、レイアウト一つ!
- RTL(左から右に書く言語)レイアウトにも対応 (API 17から)
- Strings 全部xmlに外部化されている
- 複数形 pluralsが定義されている
- string 結合 プレースホルダーを利用している
- 日付 DateFormat/DateUtils等 formatterを通してUIに表示されている
- 数値など formatter通してUIに表示されている
- 翻訳 必要な画像 ない
- 映像に キャプションが付いている
- 音声 TTSを利用している
ここまでやったら
これから 翻訳 依頼と管理!
翻訳依頼と管理編
翻訳を依頼する前に
翻訳 質を高めるため 準備をします
- Stringsにコンテキスト情報を付与する
- 翻訳する必要 ないstringをマークする
- Glossaryを用意
十分なコンテキスト情報を付与
多く 翻訳管理ツール string 直前 コメントをコンテキスト情報として扱う
<!-- A greeting displayed on splash screen. Friendly tone. Max: 20 chars. -→
<string name="hello_world">Hello world!</string>
こんな事をコンテキスト情報として付与する
- 画面 どこに表示されるか
- 翻訳 トーンを気をつける必要があるか
- 文字数 制限など
翻訳不要なStringをマーク
お金が掛かってしまうだけですし、翻訳しないstringをマークしましょう。
依頼時にマークされているString 翻訳依頼をしない。多く ツール 対応。
<!-- This is our app name, will appear all over the place -→
<string name="app_name" translatable="false">Drivemode</string>
ツールによって xliff 部分的なマーキングにも対応。
<string name="welcome">Welcome to <xliff:g id="app_name">Drivemode</xliff:g></string>
Glossaryを用意
翻訳 一貫性を保つため、事前にGlossaryを用意すると良い。
理由: 翻訳サービスによって 、翻訳担当 毎回同じ人と 限らない。
   1つ 依頼が複数人に割り当てられることもある。
流れ: Glossary 翻訳 → リソース 翻訳
※リソース 翻訳をやってもらいながらGlossaryを育てる方法もある。ツールによって こ
方法 実現が簡単なこともある。
翻訳 どう依頼すれ 良い?
翻訳の依頼方法
1. 翻訳管理サービスを使って依頼する
2. 翻訳管理サービスを使ってクラウドソースする
3. 直接翻訳サービスに依頼する
リソース 管理サービス 翻訳サービス
リソース 管理サービス ユーザ
リソース 翻訳サービス
翻訳管理サービスを使う
変更管理・アップデートされたstringだけ依頼するなど便利。
Drivemodeで OneSkyを使ってます。
OneSky 翻訳管理ツール
画像をコンテキストに追加することも可能。
OneSky 翻訳管理ツール
翻訳 クラウドソーシングが可能!
運用フロー
1. 開発メンバがstringリソースを追加する
2. ciビルドが通れ 自動的翻訳管理ツールにstringsを送る
3. 翻訳を依頼するまた ユーザから翻訳を受け付ける
4. 翻訳を承認
5. リリース前 翻訳されたstringsファイルを取り込む
翻訳のクラウドソーシング
翻訳 して欲しい言語 メニューに「翻訳に協力する」ボタンを表示しています
意外と協力してくれます!コミットメント 高い協力者 、マネジメントをお願いする。実際
ユーザな でアプリを良く理解してるし、翻訳 質も向上!
CIに組み込む
ビルド成功時に新しいリソースを管理ツールに送る
OneSky 場合 アップロードAPIが用意されている。
簡単なスクリプトをビルド成功後に実行。
Upload script:
https://gist.github.com/jfsso/5cd988dcf815c7833a85b01cd53deac6
Download script:
https://gist.github.com/jfsso/c82102dded15a1cefc53994a96dfed6d
ここまで出来たら...
- Localizing with Resources
https://developer.android.com/guide/topics/resources/localization.html
- ローカライズチェックリスト
https://developer.android.com/distribute/tools/localization-checklist.html
- OneSky https://www.oneskyapp.com/
- DateFormatGenerator https://github.com/jfsso/DateFormatGenerator
- Great talks
- Successful Locali(z)(s)ation - Droidcon Berlin 2016 - Kentaro
Takiguchi
https://speakerdeck.com/rejasupotaro/successful-locali-z-s-ation-droidcon-berlin-2016
- Fearless Internationalization and Localization Across the Nations - Siena
Aguayo
参考リンク

More Related Content

Viewers also liked

Improving App Translations
Improving App TranslationsImproving App Translations
Improving App TranslationsJoão Orui
 
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法João Orui
 
Android cleanarchitecture
Android cleanarchitectureAndroid cleanarchitecture
Android cleanarchitectureTomoaki Imai
 
Những 'kẻ thù số một' của rối loạn mỡ máu
Những 'kẻ thù số một' của rối loạn mỡ máuNhững 'kẻ thù số một' của rối loạn mỡ máu
Những 'kẻ thù số một' của rối loạn mỡ máuleroy335
 
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape RateAOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape RateRyan Walker
 
Narayan Prasad CV 2015-06
Narayan Prasad CV 2015-06Narayan Prasad CV 2015-06
Narayan Prasad CV 2015-06Narayan Prasad
 
Fokus Strategi Aksi PPK NTB dan Partisipasi Masyarakat
Fokus Strategi Aksi PPK NTB dan  Partisipasi MasyarakatFokus Strategi Aksi PPK NTB dan  Partisipasi Masyarakat
Fokus Strategi Aksi PPK NTB dan Partisipasi MasyarakatErvynKaffah
 
Making a Difference _ Buckner News
Making a Difference _ Buckner NewsMaking a Difference _ Buckner News
Making a Difference _ Buckner NewsAmy Stone
 
Educ2d
Educ2dEduc2d
Educ2dchy48
 
Governança digital, interoperabilidade e web semântica - II Seminário Coorte ...
Governança digital, interoperabilidade e web semântica - II Seminário Coorte ...Governança digital, interoperabilidade e web semântica - II Seminário Coorte ...
Governança digital, interoperabilidade e web semântica - II Seminário Coorte ...Augusto Herrmann Batista
 

Viewers also liked (17)

Improving App Translations
Improving App TranslationsImproving App Translations
Improving App Translations
 
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
 
Android cleanarchitecture
Android cleanarchitectureAndroid cleanarchitecture
Android cleanarchitecture
 
Những 'kẻ thù số một' của rối loạn mỡ máu
Những 'kẻ thù số một' của rối loạn mỡ máuNhững 'kẻ thù số một' của rối loạn mỡ máu
Những 'kẻ thù số một' của rối loạn mỡ máu
 
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape RateAOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
 
Evidencia del Cuestionario
Evidencia del CuestionarioEvidencia del Cuestionario
Evidencia del Cuestionario
 
Narayan Prasad CV 2015-06
Narayan Prasad CV 2015-06Narayan Prasad CV 2015-06
Narayan Prasad CV 2015-06
 
Confección de monicreques
Confección de monicrequesConfección de monicreques
Confección de monicreques
 
Fokus Strategi Aksi PPK NTB dan Partisipasi Masyarakat
Fokus Strategi Aksi PPK NTB dan  Partisipasi MasyarakatFokus Strategi Aksi PPK NTB dan  Partisipasi Masyarakat
Fokus Strategi Aksi PPK NTB dan Partisipasi Masyarakat
 
Resume - N.NeelanarayananV1
Resume - N.NeelanarayananV1Resume - N.NeelanarayananV1
Resume - N.NeelanarayananV1
 
Making a Difference _ Buckner News
Making a Difference _ Buckner NewsMaking a Difference _ Buckner News
Making a Difference _ Buckner News
 
Karen MSM Cert
Karen MSM CertKaren MSM Cert
Karen MSM Cert
 
Educ2d
Educ2dEduc2d
Educ2d
 
Governança digital, interoperabilidade e web semântica - II Seminário Coorte ...
Governança digital, interoperabilidade e web semântica - II Seminário Coorte ...Governança digital, interoperabilidade e web semântica - II Seminário Coorte ...
Governança digital, interoperabilidade e web semântica - II Seminário Coorte ...
 
Arabic01
 Arabic01 Arabic01
Arabic01
 
7:5:16
7:5:167:5:16
7:5:16
 
Pharmaceutical PowerPoint Template
Pharmaceutical PowerPoint TemplatePharmaceutical PowerPoint Template
Pharmaceutical PowerPoint Template
 

Similar to はじめようlocalization

企業WebサイトにおけるグローバルWebガバナンスパターン
企業WebサイトにおけるグローバルWebガバナンスパターン企業WebサイトにおけるグローバルWebガバナンスパターン
企業WebサイトにおけるグローバルWebガバナンスパターンConcent, Inc.
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyoShuyo Nakatani
 
グローバルリモートチーム開発とは
グローバルリモートチーム開発とはグローバルリモートチーム開発とは
グローバルリモートチーム開発とはatyenoria
 
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例Yahoo!デベロッパーネットワーク
 
webサイト「多言語化」「グローバル化」
webサイト「多言語化」「グローバル化」webサイト「多言語化」「グローバル化」
webサイト「多言語化」「グローバル化」Hiroyasu Nakamura
 
会話型UI事始め
会話型UI事始め会話型UI事始め
会話型UI事始めDeNA
 
プロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディプロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディ力也 伊原
 
デベロッパーも 知ってると便利 デザインの基本
デベロッパーも 知ってると便利 デザインの基本デベロッパーも 知ってると便利 デザインの基本
デベロッパーも 知ってると便利 デザインの基本inaba178
 
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”Anhui Opensource Software Inc.
 
PCとスマートフォンとタブレットのアプリ活用セミナー
PCとスマートフォンとタブレットのアプリ活用セミナーPCとスマートフォンとタブレットのアプリ活用セミナー
PCとスマートフォンとタブレットのアプリ活用セミナー新潟コンサルタント横田秀珠
 
VUIテクノロジーアップデート& VUIビジネストレンド紹介
VUIテクノロジーアップデート& VUIビジネストレンド紹介VUIテクノロジーアップデート& VUIビジネストレンド紹介
VUIテクノロジーアップデート& VUIビジネストレンド紹介Yukio Andoh
 
Session2:「グローバル化する情報処理」/伊藤敬彦
Session2:「グローバル化する情報処理」/伊藤敬彦Session2:「グローバル化する情報処理」/伊藤敬彦
Session2:「グローバル化する情報処理」/伊藤敬彦Preferred Networks
 
翻訳VR作ってみた
翻訳VR作ってみた翻訳VR作ってみた
翻訳VR作ってみた尾上 兼透
 
Financial Planner の為のITの活用
Financial Planner の為のITの活用Financial Planner の為のITの活用
Financial Planner の為のITの活用Kenichi Takeuchi
 
クロスプラットフォーム開発環境のすヽめ
クロスプラットフォーム開発環境のすヽめクロスプラットフォーム開発環境のすヽめ
クロスプラットフォーム開発環境のすヽめYuki Yazaki
 
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化Takamitsu Nakao
 
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013Shuyo Nakatani
 

Similar to はじめようlocalization (20)

企業WebサイトにおけるグローバルWebガバナンスパターン
企業WebサイトにおけるグローバルWebガバナンスパターン企業WebサイトにおけるグローバルWebガバナンスパターン
企業WebサイトにおけるグローバルWebガバナンスパターン
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
 
グローバルリモートチーム開発とは
グローバルリモートチーム開発とはグローバルリモートチーム開発とは
グローバルリモートチーム開発とは
 
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
 
webサイト「多言語化」「グローバル化」
webサイト「多言語化」「グローバル化」webサイト「多言語化」「グローバル化」
webサイト「多言語化」「グローバル化」
 
ヤフー音声認識のご紹介#yjdsw1
ヤフー音声認識のご紹介#yjdsw1ヤフー音声認識のご紹介#yjdsw1
ヤフー音声認識のご紹介#yjdsw1
 
会話型UI事始め
会話型UI事始め会話型UI事始め
会話型UI事始め
 
プロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディプロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディ
 
デベロッパーも 知ってると便利 デザインの基本
デベロッパーも 知ってると便利 デザインの基本デベロッパーも 知ってると便利 デザインの基本
デベロッパーも 知ってると便利 デザインの基本
 
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
 
PCとスマートフォンとタブレットのアプリ活用セミナー
PCとスマートフォンとタブレットのアプリ活用セミナーPCとスマートフォンとタブレットのアプリ活用セミナー
PCとスマートフォンとタブレットのアプリ活用セミナー
 
VUIテクノロジーアップデート& VUIビジネストレンド紹介
VUIテクノロジーアップデート& VUIビジネストレンド紹介VUIテクノロジーアップデート& VUIビジネストレンド紹介
VUIテクノロジーアップデート& VUIビジネストレンド紹介
 
Session2:「グローバル化する情報処理」/伊藤敬彦
Session2:「グローバル化する情報処理」/伊藤敬彦Session2:「グローバル化する情報処理」/伊藤敬彦
Session2:「グローバル化する情報処理」/伊藤敬彦
 
翻訳VR作ってみた
翻訳VR作ってみた翻訳VR作ってみた
翻訳VR作ってみた
 
ChatGPTでしりとり
ChatGPTでしりとりChatGPTでしりとり
ChatGPTでしりとり
 
Financial Planner の為のITの活用
Financial Planner の為のITの活用Financial Planner の為のITの活用
Financial Planner の為のITの活用
 
なでしこ開発記録
なでしこ開発記録なでしこ開発記録
なでしこ開発記録
 
クロスプラットフォーム開発環境のすヽめ
クロスプラットフォーム開発環境のすヽめクロスプラットフォーム開発環境のすヽめ
クロスプラットフォーム開発環境のすヽめ
 
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
 
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
 

はじめようlocalization