Mais conteúdo relacionado
Semelhante a はじめようlocalization (20)
はじめようlocalization
- 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かけていれ 見つかります。
- 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"
- 20. 電話番号
- PhoneNumberUtilsが使えます
API >= 21
PhoneNumberUtils.formatNumber("0120123456", "JP"); // 0120-123-456
API < 21
PhoneNumberUtils.formatNumber("0120123456");
(注意: 日米以外 フォーマット結果 APIバージョンによって差がある)
- 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を利用している
ここまでやったら
- 28. 十分なコンテキスト情報を付与
多く 翻訳管理ツール string 直前 コメントをコンテキスト情報として扱う
<!-- A greeting displayed on splash screen. Friendly tone. Max: 20 chars. -→
<string name="hello_world">Hello world!</string>
こんな事をコンテキスト情報として付与する
- 画面 どこに表示されるか
- 翻訳 トーンを気をつける必要があるか
- 文字数 制限など
- 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
参考リンク