Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
iOS版グローバル対応の罠と技
Shinichiro Oba
December 17, 2014
Programming
8
23k
iOS版グローバル対応の罠と技
potatotips #12で発表した資料の加筆修正版です。
Androidバージョン
http://www.slideshare.net/tomoakiimai2/us-localization
Shinichiro Oba
December 17, 2014
Tweet
Share
More Decks by Shinichiro Oba
See All by Shinichiro Oba
サーバサイドエンジニアと効率よく開発するためにやっていること
bricklife
8
1.7k
アッテ開発の技術:Swift と RxSwift
bricklife
19
16k
RxSwiftのobserveOnとsubscribeOnを理解する
bricklife
20
6.4k
Swift 2.0でRxSwift、ReactKit、ReactiveCocoaを使ってみた
bricklife
10
4.4k
ReactiveCocoaのゆるい紹介とメルカリでの活用事例
bricklife
3
3.2k
Apple Pay対応のやりかた
bricklife
1
24k
Other Decks in Programming
See All in Programming
LOWYAの信頼性向上とNew Relic
kazumax55
4
290
roadmap to rust 2024
matsu7874
1
390
Kueue入門/Kueue Introduction
bells17
0
490
Githubのアクティビティ履歴からチームの健康状態を知る(Findy Teams使ってみた)
kumagoro95
0
120
既存のプロジェクトにKMMを導入するための対応策
martysuzuki
2
280
CLIツールにSwift Concurrencyを適用させようとしている話
417_72ki
3
120
dbtとBigQueryで始めるData Vault入門
kazk1018
0
160
iOSアプリの技術選択2022
tattn
3
1.3k
Jakarta EE 10 is Coming Your Way
ivargrimstad
0
1.5k
Micro Frontends with Module Federation: Beyond the Basics @jax2022
manfredsteyer
PRO
0
250
よりUXに近いSLI・SLOの運用による可用性の再設計
kazumanagano
2
380
TechFeed Conference 2022 - Kotlin Experimental
jmatsu
0
340
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
506
37k
For a Future-Friendly Web
brad_frost
164
7.4k
jQuery: Nuts, Bolts and Bling
dougneiner
56
6.4k
Testing 201, or: Great Expectations
jmmastey
21
5.4k
The Mythical Team-Month
searls
208
39k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
900
Agile that works and the tools we love
rasmusluckow
319
19k
The Most Common Mistakes in Cover Letters
jrick
PRO
4
24k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
Happy Clients
brianwarren
89
5.5k
What's new in Ruby 2.0
geeforr
336
30k
Transcript
J04൛ άϩʔόϧରԠͷ᠘ͱٕ גࣜձࣾϝϧΧϦ େఉ৻Ұ
େఉ৻Ұ ϑϦϚΞϓϦʮϝϧΧϦʯ J04ΤϯδχΞ PPCBCSJDLMJGF
ϝϧΧϦ ݄+1൛ϦϦʔε ݄64൛ϦϦʔε
άϩʔόϧରԠ
άϩʔόϧରԠͷํ w ·ͣ64ɺͦͷ͋ͱϤʔϩούͳͲࢹʹ w ւ֎औҾېࢭɻࠃ͝ͱʹ%#αʔόΛΘ͚Δ w ݴޠɺ௨՟ɺ࣌ɺܾࡁɺૹͷҧ͍Λٵऩ
ͬͨ͜ͱ w ผόΠφϦԽ w λʔήοτͱYDDPOpH w Ϧʔδϣϯཧ w ༁ʢ"(JOʣ w
༁ʢ5SBOTJGFYʣ w ύοέʔδฤू w ࣌ͱ௨՟ͷॻࣜ w ςΩετೖྗઃఆ
̍όΠφϦ WT ผόΠφϦ
ผόΠφϦΛ࠾༻ w ىಈޙ͔Βͦͷࠃ͝ͱͷઃఆͰಈ͚ΔΑ͏ʹ w ͷ*1ΞυϨεҬઃఆࢀߟʹ͠ͳ͍ w 64൛ʹຊޠϦιʔεΛؚΊͳ͍ʢͦͷٯʣ w ͢ΔετΞߜΔ w
̍ϓϩδΣΫτͰλʔήοτΛ૿ͯ͠ରԠ
λʔήοτ w ࠃºڥͷ͚ͩλʔήοτΛ࡞ w λʔήοτͷ͚ͩYDDPOpHΛ࡞
YDDPOpH
͋ͱͰࠃΛΓସ͑Ͱ͖Δ Α͏ʹͨ͘͠ͳΔ͔ʜ
ϦʔδϣϯΫϥεͷಋೖ w "1*)5.-ͷ63-ɺܾࡁํ๏ૹํ๏ɺ௨՟ ࣌ͷϑΥʔϚολɺ֤छ*%ͳͲΛಁաతʹཧ w ʮͲͷࠃ͔ʁʯͰͳ͘ʮίϯϏχܾࡁΛ͑Δ͔ʁʯ ͳͲҙຯతʹஅ͢Δ͜ͱͰJGͷటপԽΛճආ w ্࣮ϦʔδϣϯΛಈతʹΓସ͑ΒΕΔΑ͏ʹ͠ ͓͍ͯͯɺϏϧυ࣌ʹ̍ͭͷϦʔδϣϯ͚ͩ༗ޮʹ
[[Region currentRegion] canUseCvs]
༁
༁ w ຊޠͰ࡞͍ͬͯͨͷΛӳޠʹ༁ w ͳΔ͘ඪ४ͷΈͰ༁͍ͨ͠ w ॳλʔήοτ͕J04ͩͬͨͷͰํ๏͕ݶΒΕΔ "(JOͱ5SBOTJGFY͕׆༂
"(JO w IUUQTHJUIVCDPNBOHFMPMMPRVJ"(JO w πʔϧͱϥΠϒϥϦͷηοτ w YJCɺTUPSZCPBSEɺN͔Β༁ରΛ͔͖ूΊͯҰ ͭͷ-PDBMJ[BCMFTUSJOHʹͯ͘͠ΕΔ w 6*-BCFM6*#VUUPOͳͲͷBXBLF'SPN/JCΛϑο
Ϋͯ͠༁Λөͯ͘͠ΕΔ
5SBOTJGFY w IUUQTXXXUSBOTJGFYDPN w "(JOͰҰͭʹͳͬͨ-PDBMJ[BCMFTUSJOHΛ͜Ε Ͱཧɾ༁͢Δ w KBͷ-PDBMJ[BCMFTUSJOHΛ5SBOTJGFYʹQVTI w 5SBOTJGFY্Ͱ༁ޙFOͷ-PDBMJ[BCMFTUSJOHΛQVMM
w ༁୲ऀ͕8FC্Ͱ༁͢Δ͚ͩ
5SBOTJGFYͷ᠘ w ͋ΔϒϥϯνͰQVTIͨ͠༁ର͕ɺଞͷϒϥϯ ν͔ΒͷQVTIͰফ͑ͨΓ͢Δ w NBTUFSͰQVTIˍQVMM͢Δ͜ͱʹͯ͠ղܾ w ݱࡏ-PDBMJ[BCMFTUSJOH͚ͩผϦϙδτϦͰཧ ͢Δ͜ͱʹͨ͠ ৄ͘͠ฐࣾ"OESPJEΤϯδχΞͷࢿྉΛࢀর
IUUQTTTTMJEFDPNXXXTMJEFTIBSFOFUUPNPBLJJNBJVTMPDBMJ[BUJPO
όϯυϧ͢ΔϦιʔεɺ +1൛ຊޠ͚ͩɺ 64൛ӳޠ͚ͩʹ͍ͨ͠
8IZʁ w ΞϓϦͷαΠζΛখ͍ͨ͘͞͠ w 64͚ͩʹ͔͠ͳ͍ը໘ΛຊޠԽͨ͘͠ͳ͍ w Ϣʔβಉ࢜҆৺ͯ͠ΓͱΓͯ͠Β͏ͨΊɺ ͦͷࠃͷެ༻ޠΛ͑Δਓ͚ͩʹͬͯΒ͍ ͍ͨ
Ͱʜ ϩʔΧϥΠζ͞ΕͨϦιʔε୯ҐͰͷ όϯυϧ੍ޚͰ͖ͳ͍
ύοέʔδΛૢ࡞ w #VJME1IBTFTͰ$PQZ#VOEMF3FTPVSDFTͷ͋ͱ ʹඞཁͷͳ͍ϦιʔεΛফͯ͠͠·͍͍͑ w ྫ͑3VO4DSJQUͰҎԼΛ࣮ߦ rm -Rf "$TARGET_BUILD_DIR/$EXECUTABLE_FOLDER_PATH/en.lproj" ࢀߟ
IUUQTEFWFMPQFSBQQMFDPNMJCSBSZNBDEPDVNFOUBUJPO%FWFMPQFS5PPMT3FGFSFODF 9DPEF#VJME4FUUJOH3FG#VJME@4FUUJOH@3FGFSFODFCVJME@TFUUJOH@SFGIUNM
ॻࣜ
ॻࣜ᠘͕͍ͬͺ͍
࣌ͷॻࣜ w ࣌ؒදهͷ0/0''ྐྵྐྵͰϋϚΔ w ͰͦΜͳʹେม͡Όͳ͍ ϑΥʔϚοτ ग़ྗ +1 yyyy/MM/dd HH:mm
64 MM/dd/yyyy KK:mm aa 1.
௨՟ͷॻࣜ w Ұํɺ௨՟ͷॻࣜ᠘ͩΒ͚ w ௨՟୯ҐͷҐஔɺখɺܻ۠ΓɺϚΠφεදه w 2"ʹʮJ04ͰϚΠφεදه͕༷Ͳ͓Γ͡Όͳ͍ʯ ͱόάѻ͍͞ΕͨΓ͠·͢ ࢀߟ IUUQIPNFQBHFOJGUZDPNUBCPUBCPDDDTZPTVIUN
௨՟ͷॻࣜ w ྫ͑ɺҬΛΞϝϦΧ߹ऺࠃʹͯ͠ɺݴޠΛӳޠ ͱΠλϦΞޠͰΓସ͑ͨ߹ w ܻ۠Γ͕ϐϦΦυͰɺখ͕ΧϯϚͰɺ௨՟୯ Ґ͕ޙΖʹ͘Δʜʂ
௨՟ͷॻࣜ w %FDJNBM1BEͷখมΘΔΑʂ
64ͰηϯτΛখҎԼ ͷͱͯ͠ೖྗ͍ͤͨ͞ w ෦తʹηϯτͰѻ͍ͬͯΔʢʹʣ w ͔͠͠ɺখ͕ϐϦΦυͰ͋Δ͜ͱΛલఏʹೖྗ ͞ΕͨจࣈྻΛղੳ͢ΔͱɺॻࣜઃఆʹΑͬͯਖ਼ ͘͠ղੳͰ͖ͳ͍ w ॳظWFSͰ͜ΕΛͬͯ͠·͍͓͍߹ΘͤଟPS[
/4/VNCFS'PSNBUUFS͕ ॿ͚ͯ͘Ε·͢ • ݱࡏͷॻࣜͰΘΕ͍ͯΔখܻ۠Γͷจࣈ Λڭ͑ͯ͘ΕΔ @property (copy) NSString *decimalSeparator; @property
(copy) NSString *currencyDecimalSeparator; @property (copy) NSString *groupingSeparator; ࢀߟ IUUQTEFWFMPQFSBQQMFDPNMJCSBSZJPTEPDVNFOUBUJPO$PDPB3FGFSFODF'PVOEBUJPO$MBTTFT /4/VNCFS'PSNBUUFS@$MBTTJOEFYIUNMBQQMF@SFGPDDJOTUQ/4/VNCFS'PSNBUUFS DVSSFODZ%FDJNBM4FQBSBUPS
ӳޠݍͷςΩετೖྗͷઃఆ w ࣗಈେจࣈೖྗ͍͍ͨͯ0/ʹ͍ͯ͠Δ w ࣗಈमਖ਼͍͍ͨͯ0/ʹͯ͠Δ w εϖϧνΣοΫ͍͍ͨͯ0/ʹ͍ͯ͠Δ w ຊޠݍͩͱશ෦0''ʹ͕ͪ͠
ςΩετೖྗܥ6*ͷઃఆΛ ͖ͪΜͱ͠Α͏ w ࣗಈେจࣈमਖ਼ࣗಈमਖ਼ɺεϖϧνΣοΫೖྗ 6*͝ͱʹ0/0''Ͱ͖Δ w ॴʹΑͬͯ୯ޠจষͷઌ಄͕େจࣈʹͳΔΑ͏ ʹ͠Α͏ʢ8PSETPS4FOUFODFTʣ w ϝʔϧΞυϨεύεϫʔυશ෦0''ʹ͠Α͏
w ಈ࡞ݕূதઃఆͰࣗಈमਖ਼ܥΛશ෦0/ʹ͠Α͏
ࣗಈमਖ਼ܥͷઃఆ
ͦͷ΄͔ w ෳܗରԠ w େจࣈɺηϯλϦϯάɺࣼମͷηϯε w ίϛϡχέʔγϣϯ w ͳͲͳͲ
͓ΘΓ Կ͔͋Εؾܰʹ!PPCB·Ͱ ΤϯδχΞืूதʂ