Upgrade to Pro — share decks privately, control downloads, hide ads and more …

localization-saas-for-ios

hexarf
September 19, 2021

 localization-saas-for-ios

hexarf

September 19, 2021
Tweet

More Decks by hexarf

Other Decks in Programming

Transcript

  1. Mobility Technologies Co., Ltd. Park ByungJun (パク ビョンジュン) Work ・

    Mobility Technologies - 2019 〜 JapanTaxi iOS アプリ開発 - 2020 〜 GO iOSアプリ開発 Hobby ・Cycling 自己紹介 2
  2. Mobility Technologies Co., Ltd. 問題点 - ローカライズ別デザインの作成が非現実的 - リリース直前に文言が1個を変更したい場合 デザイン修正・翻訳再依頼・QA、

    開発者に内容共有 - ヒューマンエラーが多い - 翻訳する側がデザインやアプリにアクセスしてないと品質高い翻訳結果を得ら れない可能性がある 通常のローカライゼージョンプロセスでの問題 8
  3. Mobility Technologies Co., Ltd. その結果ローカライゼーションに疲れてしまうと... 通常のローカライゼージョンプロセスでの問題 9 全言語分の適 用結果を見れ ない

    忙しいと日本語か英語 だけ見るか最悪日本語 だけ見てしまう “アカウントを削除します” のつもりが...
  4. Mobility Technologies Co., Ltd. • L10n(=I18n)プラットフォーム選定 ◦ Lokalise ◦ Lingoport

    ◦ Transfix ◦ Memsource ◦ Phrase ◦ etc... 『GO』でのローカライゼーション 11
  5. Mobility Technologies Co., Ltd. • 求めたこと ◦ required ▪ iOS/android

    localization stringサポート ▪ api or cliツール or githubによるstringのpull ,push ▪ figma, sketch, adobe xdなどデザインツール連動 ▪ スクリーンショット ◦ optional ▪ branching, Review ▪ automatic snapshot ▪ OTA ▪ rest api 『GO』でのローカライゼーション 12
  6. Mobility Technologies Co., Ltd. phrase initするだけ phrase.yml Phraseを使ったローカライズ - 導入

    17 phrase: access_token: token project_id: project pull: targets: - file: ./Localizable/<locale_code>.lproj/project_1.strings params: file_format: strings tags: project_1 encoding: UTF-8 - file: ./Localizable/<locale_code>.lproj/project_2.strings params: file_format: strings tags: project_2 encoding: UTF-8
  7. Mobility Technologies Co., Ltd. Phraseを使った文言のアプリ側反映の流れ 1. $ phrase pull 2.

    figmaで<key>を確認 3. R.string.<tag>.<key>で反映 Phraseを使ったローカライズ 18 $ phrase pull You can get the latest version from https://phrase.com/cli. Downloaded ja to APP/Localizable/ja.lproj/tag1.string s APP/Localizable/en.lproj/tag1.strin gs
  8. Mobility Technologies Co., Ltd. String placeholder 1.Placeholder styleを決める 2.client側でconvert_placeholder設定 Attributed

    string ・attribute別にバラバラ ・htmlを使う サーバサイド文言のローカライズ ・リクエストヘッダーに 言語コード ・api.phrase.com, api.lokalise.com その他の課題 19
  9. Mobility Technologies Co., Ltd. OTAの仕組み OTA(Over-The-Air) localization 20 アプリ機動 アップデート

    可能なローカ ライズがある かをチェック CDN経由でローカライズフ ァイルダウンロード Main Bundle swizzling (各 SDK) アプリ内のLocalizable.string を利用 OTA完了
  10. Mobility Technologies Co., Ltd. LokaliseのOTA実践 OTA(Over-The-Air) localization 21 // Provide

    SDK Token and Project ID and enable Swizzling Lokalise.shared.setProjectID("Project ID", token:"SDK Token") Lokalise.shared.swizzleMainBundle() func applicationDidBecomeActive(_ application: UIApplication) { Lokalise.shared.checkForUpdates { (updated, errorOrNil) in print("Updated: ¥(updated)¥nError: ¥(errorOrNil)") } } NSLocalizedString("key", comment: "comment") There is no need to update your code with swizzling enabled!
  11. Mobility Technologies Co., Ltd. OTA後にUI更新 OTA(Over-The-Air) localization 22 override func

    viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver( self, selector: #selector(updateUserInterface), name: NSNotification.Name.LokaliseDidUpdateLocalization, object: nil ) } func fetchOTALocalization { Lokalise.shared.checkForUpdates { (updated, errorOrNil) in print("Updated: ¥(updated)¥nError: ¥(errorOrNil)") } } *Live Editも別の方法で可能
  12. Mobility Technologies Co., Ltd. おわりに Hope we remove your stress

    - Developer, Desinger, Product Manager, QA and Translator 23 L10n SaaS