Submit Search
Upload
はじめようlocalization
•
3 likes
•
3,475 views
J
João Orui
Follow
Androidオールスターズ2016 2016年8月7日発表
Read less
Read more
Presentations & Public Speaking
Report
Share
Report
Share
1 of 41
Download now
Download to read offline
Recommended
Why python
Why python
TeppeiAkada1
Why python
Why python
TeppeiAkada1
20111206 GLT vol.40
20111206 GLT vol.40
kashew_nuts
Androidオールスターズ2016 yanzm
Androidオールスターズ2016 yanzm
Yuki Anzai
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
Hiroshi Kikuchi
はじめて Phantom と遭遇して、闇雲に闘いを挑んでみた話 #kbkz_tech
はじめて Phantom と遭遇して、闇雲に闘いを挑んでみた話 #kbkz_tech
Tomohiro Kumagai
Minimal Cake Pattern in Swift
Minimal Cake Pattern in Swift
Hikaru Yoshimura
Potatotips #24 - Analytigs and event properties
Potatotips #24 - Analytigs and event properties
João Orui
Recommended
Why python
Why python
TeppeiAkada1
Why python
Why python
TeppeiAkada1
20111206 GLT vol.40
20111206 GLT vol.40
kashew_nuts
Androidオールスターズ2016 yanzm
Androidオールスターズ2016 yanzm
Yuki Anzai
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
Hiroshi Kikuchi
はじめて Phantom と遭遇して、闇雲に闘いを挑んでみた話 #kbkz_tech
はじめて Phantom と遭遇して、闇雲に闘いを挑んでみた話 #kbkz_tech
Tomohiro Kumagai
Minimal Cake Pattern in Swift
Minimal Cake Pattern in Swift
Hikaru Yoshimura
Potatotips #24 - Analytigs and event properties
Potatotips #24 - Analytigs and event properties
João Orui
Improving App Translations
Improving App Translations
João Orui
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
João Orui
Android cleanarchitecture
Android cleanarchitecture
Tomoaki 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áu
leroy335
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
Ryan Walker
Evidencia del Cuestionario
Evidencia del Cuestionario
David Hernández Zavala
Narayan Prasad CV 2015-06
Narayan Prasad CV 2015-06
Narayan Prasad
Confección de monicreques
Confección de monicreques
isabelantoncastro
Fokus Strategi Aksi PPK NTB dan Partisipasi Masyarakat
Fokus Strategi Aksi PPK NTB dan Partisipasi Masyarakat
ErvynKaffah
Resume - N.NeelanarayananV1
Resume - N.NeelanarayananV1
Neelakantan Neelanarayanan
Making a Difference _ Buckner News
Making a Difference _ Buckner News
Amy Stone
Karen MSM Cert
Karen MSM Cert
Karen Foley
Educ2d
Educ2d
chy48
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
Arabic01
Arabic01
AnneRostom
7:5:16
7:5:16
Andrea Colyer
Pharmaceutical PowerPoint Template
Pharmaceutical PowerPoint Template
Sunnyside Presentation Design
企業WebサイトにおけるグローバルWebガバナンスパターン
企業WebサイトにおけるグローバルWebガバナンスパターン
Concent, Inc.
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
グローバルリモートチーム開発とは
グローバルリモートチーム開発とは
atyenoria
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
Yahoo!デベロッパーネットワーク
webサイト「多言語化」「グローバル化」
webサイト「多言語化」「グローバル化」
Hiroyasu Nakamura
More Related Content
Viewers also liked
Improving App Translations
Improving App Translations
João Orui
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
João Orui
Android cleanarchitecture
Android cleanarchitecture
Tomoaki 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áu
leroy335
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
Ryan Walker
Evidencia del Cuestionario
Evidencia del Cuestionario
David Hernández Zavala
Narayan Prasad CV 2015-06
Narayan Prasad CV 2015-06
Narayan Prasad
Confección de monicreques
Confección de monicreques
isabelantoncastro
Fokus Strategi Aksi PPK NTB dan Partisipasi Masyarakat
Fokus Strategi Aksi PPK NTB dan Partisipasi Masyarakat
ErvynKaffah
Resume - N.NeelanarayananV1
Resume - N.NeelanarayananV1
Neelakantan Neelanarayanan
Making a Difference _ Buckner News
Making a Difference _ Buckner News
Amy Stone
Karen MSM Cert
Karen MSM Cert
Karen Foley
Educ2d
Educ2d
chy48
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
Arabic01
Arabic01
AnneRostom
7:5:16
7:5:16
Andrea Colyer
Pharmaceutical PowerPoint Template
Pharmaceutical PowerPoint Template
Sunnyside Presentation Design
Viewers also liked
(17)
Improving App Translations
Improving App Translations
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
Android 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áu
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
AOS 122: Environmental Lapse Rate v. Dry Adiabatic Lape Rate
Evidencia del Cuestionario
Evidencia del Cuestionario
Narayan Prasad CV 2015-06
Narayan Prasad CV 2015-06
Confección de monicreques
Confección de monicreques
Fokus Strategi Aksi PPK NTB dan Partisipasi Masyarakat
Fokus Strategi Aksi PPK NTB dan Partisipasi Masyarakat
Resume - N.NeelanarayananV1
Resume - N.NeelanarayananV1
Making a Difference _ Buckner News
Making a Difference _ Buckner News
Karen MSM Cert
Karen MSM Cert
Educ2d
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 ...
Arabic01
Arabic01
7:5:16
7:5:16
Pharmaceutical PowerPoint Template
Pharmaceutical PowerPoint Template
Similar to はじめようlocalization
企業WebサイトにおけるグローバルWebガバナンスパターン
企業WebサイトにおけるグローバルWebガバナンスパターン
Concent, Inc.
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
グローバルリモートチーム開発とは
グローバルリモートチーム開発とは
atyenoria
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
Yahoo!デベロッパーネットワーク
webサイト「多言語化」「グローバル化」
webサイト「多言語化」「グローバル化」
Hiroyasu Nakamura
ヤフー音声認識のご紹介#yjdsw1
ヤフー音声認識のご紹介#yjdsw1
Yahoo!デベロッパーネットワーク
会話型UI事始め
会話型UI事始め
DeNA
プロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディ
力也 伊原
デベロッパーも 知ってると便利 デザインの基本
デベロッパーも 知ってると便利 デザインの基本
inaba178
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
Anhui Opensource Software Inc.
PCとスマートフォンとタブレットのアプリ活用セミナー
PCとスマートフォンとタブレットのアプリ活用セミナー
新潟コンサルタント横田秀珠
VUIテクノロジーアップデート& VUIビジネストレンド紹介
VUIテクノロジーアップデート& VUIビジネストレンド紹介
Yukio Andoh
Session2:「グローバル化する情報処理」/伊藤敬彦
Session2:「グローバル化する情報処理」/伊藤敬彦
Preferred Networks
翻訳VR作ってみた
翻訳VR作ってみた
尾上 兼透
ChatGPTでしりとり
ChatGPTでしりとり
Hirokazu Tokuno
Financial Planner の為のITの活用
Financial Planner の為のITの活用
Kenichi Takeuchi
なでしこ開発記録
なでしこ開発記録
kujirahand kujira
クロスプラットフォーム開発環境のすヽめ
クロスプラットフォーム開発環境のすヽめ
Yuki Yazaki
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
Takamitsu Nakao
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
Shuyo Nakatani
Similar to はじめようlocalization
(20)
企業WebサイトにおけるグローバルWebガバナンスパターン
企業WebサイトにおけるグローバルWebガバナンスパターン
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
グローバルリモートチーム開発とは
グローバルリモートチーム開発とは
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
webサイト「多言語化」「グローバル化」
webサイト「多言語化」「グローバル化」
ヤフー音声認識のご紹介#yjdsw1
ヤフー音声認識のご紹介#yjdsw1
会話型UI事始め
会話型UI事始め
プロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディ
デベロッパーも 知ってると便利 デザインの基本
デベロッパーも 知ってると便利 デザインの基本
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
PCとスマートフォンとタブレットのアプリ活用セミナー
PCとスマートフォンとタブレットのアプリ活用セミナー
VUIテクノロジーアップデート& VUIビジネストレンド紹介
VUIテクノロジーアップデート& VUIビジネストレンド紹介
Session2:「グローバル化する情報処理」/伊藤敬彦
Session2:「グローバル化する情報処理」/伊藤敬彦
翻訳VR作ってみた
翻訳VR作ってみた
ChatGPTでしりとり
ChatGPTでしりとり
Financial Planner の為のITの活用
Financial Planner の為のITの活用
なでしこ開発記録
なでしこ開発記録
クロスプラットフォーム開発環境のすヽめ
クロスプラットフォーム開発環境のすヽめ
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
はじめようlocalization
1.
じめよう Localization ツール / tips
/ 運用ノウハウなど Drivemode, Inc. João Orui
2.
2016年春ごらからスタート。 2016年夏現在 24ヶ国語対応。
3.
はじめよう! - これから多言語化を始めるという人 - どんなツールがあるか知りたい人 -
翻訳 管理 どんな運用にしているか聞いてみたい人
4.
なぜ多言語化?
5.
Localizationとは Localization (地域化) =
Internationalization (国際化) されたソフトウェアを地域 言 語・習慣や文化に合わせること。 - ブランドを文化に合わせる - 地域に合わせたマーケティング - リソース 言語翻訳 - 日付や数値 表示を地域習慣に合わせる
6.
Internationalizationとは Internationalization (国際化) =
Localization (地域化) を実現するため ソフトウェア 設計・実装。 - 柔軟性 高いレイアウト 設計 - RTLレイアウトをサポート - 言語リソース 用意(ハードコードStringを無くす) - Formatterを使った日付や数字 使用
7.
国際化 どう始めれ いい?
8.
言語別リソースを用意する方法 - デフォルトリソース res/ values/ →
デフォルト (defaultリソース 用意をお忘れなく ) strings.xml - 必要に応じて言語別リソースを用意 res/ values-pt-rBR/ -> ブラジルポルトガル語 strings.xml values-jp/ -> 日本語 strings.xml
9.
Stringリソースの用意 - ハードコードせず、string xmlファイルに記述 <string
name="hello_world">ほげほげ</string> - レイアウトから @string/hello_world で参照が可能 - コードから リソースIDで参照が可能 textView.setText(R.string.hello_world);
10.
ハードコードStringを発見する - ハードコードせず、string xmlファイルに記述 <string
name="hello_world">ほげほげ</string> - ハードコードされているstringを見つけるに
11.
ハードコードStringを発見する(その2) システム 言語設定を「English XA」にする。
12.
プレースホルダーを使いましょう - 文字列結合しない textView.setText("Hello "
+ "Taro"); ←ダメゼッタイ! 文 構成が必ず結合した順番 言語 かりで ない。 翻訳が著しく困難になります。 - プレースホルダーを使う <string name="greeting">Hello %s</string> <string name="greeting">こんにち %sさん</string> textView.setText( getString(R.string.greeting, "Taro") );
13.
プレースホルダーを使いましょう - 複数 プレースホルダーを持つ文
場合 位置 情報も持たせる <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かけていれ 見つかります。
14.
プレースホルダーをもっと分かりやすく %s %1$s 等
分かりづらい。、翻訳時にミスが起きる場合がある。 https://github.com/square/phrase
15.
複数形 - 複数形 必ずpluralsを定義する res.getQuantityString(R.plurals.distance_km,
(int) count, nFormat.format(count));
16.
日付・時刻 - DateFormatが使えます - getBestDateTimePattern
API 18 から 古いAPIから使う場合 各言語 パターンを用意する必要がある 便利な生成ツールもあります! https://github.com/jfsso/DateFormatGenerator
17.
日付・時刻(getBestDateTimePattern API <
18) - DateFormatGenerator (https://github.com/jfsso/DateFormatGenerator)
18.
日付・時刻 - 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"
19.
通貨・数値 - カンマ区切りが実 ピリオド区切りだったりします。 -
出来る限りNumberFormatを使うと良い。 - 例 numberFormat.format(10000); // 英語: 10,000.00 // ポルトガル語: 10.000,00
20.
電話番号 - PhoneNumberUtilsが使えます API >=
21 PhoneNumberUtils.formatNumber("0120123456", "JP"); // 0120-123-456 API < 21 PhoneNumberUtils.formatNumber("0120123456"); (注意: 日米以外 フォーマット結果 APIバージョンによって差がある)
21.
テキストを含む画像 - できるだけ避ける。 - どうしても必要な時
、対応言語ごと 画像リソースを用意する。 (大変だろう・・) アプリ外ですが、 Google Play Store 画像 ・・がん ろう! Photoshopスクリプトで自動化することも可能(?)
22.
音声・映像 - 音声 - 音声合成が使えるところ
音声合成に切り替える - 注意: 音声合成で対応言語が限られます - 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 キャプション作成ツールが便利
23.
柔軟性の高いレイアウト - Textを表示する枠に余裕を持たせる - 英語
30%増しぐらいが良いでしょう - 日本語をベースにした場合 要注意! →日本語 少ないスペースで十分だから - Textサイズ 自動調整で枠内にフィットする方法もある - https://github.com/grantland/android-autofittextview - 一つ レイアウトで全言語対応 できる設計だと良い - 出来ない場合→ 特別対応 必要な言語 別レイアウトを宣言する - サイズ調整だけ? → dimens.xmlなどでサイズ管理、レイアウト一つ! - フォントサイズだけ? → dimens.xmlなどでサイズ管理、レイアウト一つ! - RTL(左から右に書く言語)レイアウトにも対応 (API 17から)
24.
- Strings 全部xmlに外部化されている -
複数形 pluralsが定義されている - string 結合 プレースホルダーを利用している - 日付 DateFormat/DateUtils等 formatterを通してUIに表示されている - 数値など formatter通してUIに表示されている - 翻訳 必要な画像 ない - 映像に キャプションが付いている - 音声 TTSを利用している ここまでやったら
25.
これから 翻訳 依頼と管理!
26.
翻訳依頼と管理編
27.
翻訳を依頼する前に 翻訳 質を高めるため 準備をします -
Stringsにコンテキスト情報を付与する - 翻訳する必要 ないstringをマークする - Glossaryを用意
28.
十分なコンテキスト情報を付与 多く 翻訳管理ツール string
直前 コメントをコンテキスト情報として扱う <!-- A greeting displayed on splash screen. Friendly tone. Max: 20 chars. -→ <string name="hello_world">Hello world!</string> こんな事をコンテキスト情報として付与する - 画面 どこに表示されるか - 翻訳 トーンを気をつける必要があるか - 文字数 制限など
29.
翻訳不要な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>
30.
Glossaryを用意 翻訳 一貫性を保つため、事前にGlossaryを用意すると良い。 理由: 翻訳サービスによって
、翻訳担当 毎回同じ人と 限らない。 1つ 依頼が複数人に割り当てられることもある。 流れ: Glossary 翻訳 → リソース 翻訳 ※リソース 翻訳をやってもらいながらGlossaryを育てる方法もある。ツールによって こ 方法 実現が簡単なこともある。
31.
翻訳 どう依頼すれ 良い?
32.
翻訳の依頼方法 1. 翻訳管理サービスを使って依頼する 2. 翻訳管理サービスを使ってクラウドソースする 3.
直接翻訳サービスに依頼する リソース 管理サービス 翻訳サービス リソース 管理サービス ユーザ リソース 翻訳サービス
33.
翻訳管理サービスを使う 変更管理・アップデートされたstringだけ依頼するなど便利。 Drivemodeで OneSkyを使ってます。
34.
OneSky 翻訳管理ツール 画像をコンテキストに追加することも可能。
35.
OneSky 翻訳管理ツール 翻訳 クラウドソーシングが可能!
36.
運用フロー 1. 開発メンバがstringリソースを追加する 2. ciビルドが通れ
自動的翻訳管理ツールにstringsを送る 3. 翻訳を依頼するまた ユーザから翻訳を受け付ける 4. 翻訳を承認 5. リリース前 翻訳されたstringsファイルを取り込む
37.
翻訳のクラウドソーシング 翻訳 して欲しい言語 メニューに「翻訳に協力する」ボタンを表示しています 意外と協力してくれます!コミットメント
高い協力者 、マネジメントをお願いする。実際 ユーザな でアプリを良く理解してるし、翻訳 質も向上!
38.
CIに組み込む ビルド成功時に新しいリソースを管理ツールに送る OneSky 場合 アップロードAPIが用意されている。 簡単なスクリプトをビルド成功後に実行。 Upload
script: https://gist.github.com/jfsso/5cd988dcf815c7833a85b01cd53deac6 Download script: https://gist.github.com/jfsso/c82102dded15a1cefc53994a96dfed6d
39.
ここまで出来たら...
40.
41.
- 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 参考リンク
Download now