Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iOS版グローバル対応の罠と技
Search
Shinichiro Oba
December 17, 2014
Programming
8
24k
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
2.2k
アッテ開発の技術:Swift と RxSwift
bricklife
19
17k
RxSwiftのobserveOnとsubscribeOnを理解する
bricklife
20
7.5k
Swift 2.0でRxSwift、ReactKit、ReactiveCocoaを使ってみた
bricklife
10
5k
ReactiveCocoaのゆるい紹介とメルカリでの活用事例
bricklife
3
3.8k
Apple Pay対応のやりかた
bricklife
1
25k
Other Decks in Programming
See All in Programming
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
560
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
100
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
250
The Ralph Wiggum Loop: First Principles of Autonomous Development
sembayui
0
3.7k
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
370
コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions
handlename
0
180
Fundamentals of Software Engineering In the Age of AI
therealdanvega
1
240
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
250
How to stabilize UI tests using XCTest
akkeylab
0
110
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
680
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
550
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.3k
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
390
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
390
エンジニアに許された特別な時間の終わり
watany
106
240k
What's in a price? How to price your products and services
michaelherold
247
13k
Technical Leadership for Architectural Decision Making
baasie
3
280
Everyday Curiosity
cassininazir
0
160
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
160
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
82
Writing Fast Ruby
sferik
630
63k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
74
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·Ͱ ΤϯδχΞืूதʂ