More Related Content
Similar to 多言語対応について 2016 07_25 (9)
More from Natsuki Yamanaka (10)
多言語対応について 2016 07_25
- 6. けど場合による
● どこまで対応する?
○ 翻訳はGoogle翻訳?外部に頼む?
○ RTL言語対応する?(Right-to-left writing言語、右から左に読む )
○ 通貨の表記や時刻表記も対応する? (円はドル? 2016/07/29はJuly 29 2016?)
○ アプリ内で切替させる?
○ 文字切れは許容する?
○ 可変レイアウトなら入りきらなかった場合にスクロールは許容する?
工数と予算次第で上記を最初に詰めておく
- 7. ● OSの言語設定
○ OSによって優先される言語設定が違う
○ キーボードはOS準拠?言語設定とキーボードも変えられる
○ システム言語にできないけど追加できる言語が存在する (今回対応したタガログ語とか )
○ システム言語が対応言語じゃない時の挙動も OSによって結構違う
● 日付設定
○ 生年月日入力はOS標準のDatePicker?独自?
○ OS標準のDatePickerのFormatは変えられない
めんどくさいことが伝わりそうな豆知識
- 8. ● OS標準のダイアログ
○ 標準のダイアログでも文字は切れる
○ AndroidのAlertDialogはカスタムレイアウトである程度対応可能
○ iOS7対応ならUIAlertViewとUIAlertControllerそれぞれ書かないといけない
● 画面の反映
○ アプリ内で設定切替後、即時反映は難しい
○ viewWillAppear、onResumeあたりで全部setTextし直す?notification使う?
○ iOSはnotification、Androidは全部Fragmentのreplaceで読み込み直しで対応した
めんどくさいことが伝わりそうな豆知識
- 12. ● 512個の文言リスト
○ 通常文言:270個
○ エラー文言:215個
○ その他アプリ内文言: 27個
・画面数は約70
・文言はアプリ開発と並行で都度更新。先方は毎回違うフォーマットのエクセルで送ってくるけどこちらは一括で
上記三種類のスプレッドシートで管理
・不足文言を頼んでも通常一週間程度かかる
他言語化のボリューム
- 16. 実装時にやること
● 共通部分
○ 言語ファイルを各言語毎に用意 (Localizable.strings, values.xml)
○ だいたい日本語より他言語の方が長い (3倍を目安)ので、テキスト全部可変レイアウト
○ スクロールしてはいけない画面は先に洗い出し、文言側を調整してもらう
○ 日付や時刻、通貨単位など 動的な値だけど多言語化するようなものを洗い出す
(開発者が文言担当じゃないと、 MM月dd日 の文言を●月●日とかで送ってくる)
- 18. ● 文字列リソース:Localizable.strings
○ “日本語文字列” = “English string”;という文字列をLocalizable.stringsに定義しておくと
「“日本語文字列”」部分が置き換えられる
○ 通常はNSLocalizedString()に「」の文字列を渡して置き換えるが、
今回はアプリ内設定で言語を切替なので Localizable_ja.strings, Localizable_en.stringsなど
言語毎にファイルを定義し、
NSLocalizedString("日本語文字列",tableName: "Localizable_en",comment: "")
で読み込むstringsファイルを切り替えている
iOSにおける多言語化
- 21. ● 画像リソースの場合
○ 例えば、
“img1_ja” = “img1_en”;
という文字列をLocalizable_en.stringsに定義
imageView.image = UIImage(named: "img1_ja".localize())
で読み込み
iOSにおける多言語化
日本語
img1_ja.png
英語
img1_en.png
- 22. ● 文字列リソース:values.xml
○ プロジェクト内リソース (res)ディレクトリにvaluesディレクトリを言語毎に作成
○ <string name=”キー名”>各言語文字列</string>が各行に定義
○ コード中でgetString(R.string.キー名)とすることでOS標準の言語を取得
Androidにおける多言語化
- 24. ● 画像リソース
○ res/drawable-xxディレクトリ(画像フォルダ)を各言語毎に用意
○ res/drawable-xxは解像度毎にも用意する必要がある
○ 9言語 x 3解像度(今回は三つ対応した ) = 27 のdrawable-xx-xxdpiに同名画像ファイル
○ 命名規則:drawable-mdpi-jaはダメ
○ 参考:Androidリソースの読み込み順序ルール
https://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch
Androidにおける多言語化