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.1k
アッテ開発の技術:Swift と RxSwift
bricklife
19
17k
RxSwiftのobserveOnとsubscribeOnを理解する
bricklife
20
7.4k
Swift 2.0でRxSwift、ReactKit、ReactiveCocoaを使ってみた
bricklife
10
4.9k
ReactiveCocoaのゆるい紹介とメルカリでの活用事例
bricklife
3
3.7k
Apple Pay対応のやりかた
bricklife
1
25k
Other Decks in Programming
See All in Programming
七輪ライブラリー: Claude AI で作る Next.js アプリ
suneo3476
1
190
Rubyの!メソッドをちゃんと理解する
alstrocrack
1
270
In geheimer Mission: AI Agents entwickeln
joergneumann
0
110
2025-04-25 GitHub Copilot Agent ライブデモ(スクリプト)
goataka
0
110
2025年のz-index設計を考える
tak_dcxi
10
3.8k
On-the-fly Suggestions of Rewriting Method Deprecations
ohbarye
3
5.3k
Laravel × Clean Architecture
bumptakayuki
PRO
0
150
マイコンでもRustのtestがしたい/KernelVM Kansai 11
tnishinaga
0
860
fieldalignmentから見るGoの構造体
kuro_kurorrr
0
140
VibeCoding時代のエンジニアリング
daisuketakeda
0
160
M5UnitUnified 最新動向 2025/05
gob
0
140
音声プラットフォームのアーキテクチャ変遷から学ぶ、クラウドネイティブなバッチ処理 (20250422_CNDS2025_Batch_Architecture)
thousanda
0
410
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
94
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
700
The Pragmatic Product Professional
lauravandoore
33
6.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
Designing Experiences People Love
moore
142
24k
Navigating Team Friction
lara
185
15k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2k
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·Ͱ ΤϯδχΞืूதʂ