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

ios-internationalization

 ios-internationalization

horimislime

August 11, 2015
Tweet

More Decks by horimislime

Other Decks in Programming

Transcript

  1. ӳޠ൛ϦϦʔεલʹ
    ஌͓͖͍ͬͯͨ͜ͱ!
    Potatotips 20
    @horimislime

    View Slide

  2. @horimislime
    גࣜձࣾτϨλ

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. ӳޠԽ
    • ݴޠϦιʔε෼͚ͯΔ͠େৎ෉ͩΖɾɾ
    • ͳΜͯࣄ͸ͳ͍
    • Localizableͷ࢖͍ํΛϛεΔͱେม
    • ͍͔ͭདྷΔӳޠ൛ʹࠓ͔Βඋ͑Α͏

    View Slide

  7. NSLocalizedString

    View Slide

  8. View Slide

  9. View Slide

  10. class Customer {
    var firstName: String!
    var lastName: String!
    }
    String.localizedStringWithFormat(
    "%@ %@༷",
    customer.lastName, customer.firstName
    )

    View Slide

  11. View Slide

  12. class Customer {
    var firstName: String!
    var lastName: String!
    }
    String.localizedStringWithFormat(
    "%@ %@༷",
    customer.lastName, customer.firstName
    )

    View Slide

  13. NSPersonNameComponents
    class Customer {
    var name: NSPersonNameComponents!
    ...
    }
    let formatter = NSPersonNameComponentsFormatter()
    formatter.style = .Medium
    formatter.stringFromPersonNameComponents(customer.name)
    // -> "Soichiro Horimi"

    View Slide

  14. View Slide

  15. NSPersonNameComponents
    & Formatter
    let customer = Customer()
    customer.name.familyName = "Horimi"
    customer.name.givenName = "Soichiro"
    customer.name.nameSuffix = "Mr."
    let formatter = NSPersonNameComponentsFormatter()
    formatter.style = .Long
    formatter.stringFromPersonNameComponents(customer.name)
    // -> "Soichiro Horimi Mr."

    View Slide

  16. NSPersonNameComponents
    & Formatter
    • @available(iOS 9.0, *)
    • ಠࣗͷComponentsͱFormatterΛ༻ҙ
    • কདྷతʹࠩ͠ସ͍͑ͨɾɾ

    View Slide

  17. View Slide


  18. String.localizedStringWithFormat(
    NSLocalizedString("%d໊༷", comment: "͝༧໿ਓ਺"),
    reservation.guests.count)
    /* ͝༧໿ਓ਺ */
    "%d໊༷" = "%d Guests";

    View Slide


  19. String.localizedStringWithFormat(
    NSLocalizedString("%d໊༷", comment: "͝༧໿ਓ਺"),
    reservation.guests.count)
    /* ͝༧໿ਓ਺ */
    "%d໊༷" = "%d Guests";

    View Slide

  20. stringsdict
    String.localizedStringWithFormat(
    NSLocalizedString("%d໊༷", comment: "͝༧໿ਓ਺"),
    reservation.guests.count)
    %d໊༷

    NSStringLocalizedFormatKey
    %#@[email protected]
    days

    NSStringFormatSpecTypeKey
    NSStringPluralRuleType
    NSStringFormatValueTypeKey
    d
    one
    %d Guest
    other
    %d Guests


    ୯਺
    ෳ਺

    View Slide

  21. View Slide

  22. NSDateIntervalFormatter
    • iOS >= 8.0
    label.text = String.localizedStringWithFormat(
    "%@ - %@",
    begin, end)

    View Slide

  23. NSDateIntervalFormatter
    • iOS >= 8.0
    label.text = String.localizedStringWithFormat(
    "%@ - %@",
    begin, end)
    let formatter = NSDateIntervalFormatter()
    label.text = formatter.stringFromDate(begin, toDate: end)

    View Slide

  24. NSDateIntervalFormatter stringsdict
    NSPersonNameComponents

    View Slide

  25. FormatterΛ࢖͍͜ͳͦ͏
    • Localizable.strings͸͋͘·Ͱݴޠ؅ཧ
    • LocaleʹԠͨ͡୯Ґ΍දهͷ੾Γସ͑͸☓
    • ͦͷPlaceholderɺຊ౰ʹඞཁʁ
    ࢀߟ: NSFormatter Class Reference

    View Slide

  26. ը૾Ϧιʔε
    • Background Imageʹ͸ෆ޲͖
    • ΞΠίϯ෇͖UIButtonͰ͸࢖͍ͨ͘ͳΔ͕…
    • LocaleʹΑͬͯίʔυ্Ͱ෼ذ͕ඞཁ

    - Asset CatalogͷLocalize͑͞Ͱ͖Ε͹ɾɾ

    View Slide

  27. ւ֎൛ϦϦʔεɺͦͷઌ
    • શػೳͷ຋༁͕ऴྃɺΊͰͨ͠
    • ͳΜͯ͜ͱ΋ͳ͍
    • Ή͠ΖϦϦʔεຖͷ຋༁࡞ۀ͕ॏՙʹ…
    • ։ൃεϐʔυΛམͱͣ͞ʹ຋༁ΛਐΊ͍ͨ

    View Slide

  28. ຋༁ࢧԉαʔϏε
    • Crowdin
    • XLIFFΛॻ͖ग़ͯ͠Ξοϓϩʔυ͢ΔͷΈ
    • ֎෦຋༁ऀͱͷڠۀ͕ḿΔ

    View Slide

  29. ຋༁ࢧԉαʔϏε
    • ຋༁ϦιʔεΛUPͯ͠ɺਐḿ͕؅ཧͰ͖Δ
    • ຋༁࿙ΕΛՄࢹԽͰ͖Δ
    • API࿈ܞ΋

    View Slide

  30. ཧ૝
    ະ຋༁text ݁Ռ

    View Slide

  31. ݱ࣮
    • ద੾ͳϦιʔε؅ཧͱࣗಈԽ
    • ͦΕͰ΋ɺݴޠ਺͕ଟ͍ͱେม
    • ଞݴޠԽΑΓແݴޠԽ

    - ݴ༿ແ͠ʹ఻ΘΔUI΁

    View Slide

  32. ·ͱΊ
    • FormatterΛ͏·͘׆༻͢Δ

    - Localizableʹ٧ΊࠐΈա͗ͳ͍
    • ը૾Ϧιʔε͸ߟ͑΋ͷ
    • ϦϦʔεޙ͸͏·ࣗ͘ಈԽ͍͚ͯ͠Δͱྑ͍
    • ͱ͸͍͑ແݴޠͳUI͕Πνόϯͷཧ૝

    View Slide

  33. ͋Γ͕ͱ͏͍͟͝·ͨ͠
    (ΤϯδχΞืूத!)

    View Slide