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
知っておかないとバグを引き起こしそうな_地域別の設定_について_本物.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Tomi-Hand
May 08, 2024
380
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
知っておかないとバグを引き起こしそうな_地域別の設定_について_本物.pdf
Tomi-Hand
May 08, 2024
More Decks by Tomi-Hand
See All by Tomi-Hand
Web出さないのに Flutter プロジェクト にWeb含める?その裏 にある開発者の意図
seaud5
0
78
Featured
See All Featured
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
770
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
870
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
230
Site-Speed That Sticks
csswizardry
13
1.5k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Code Reviewing Like a Champion
maltzj
528
40k
Transcript
知っておかないと バグを引き起こしそうな 地域別の設定について🌏 DroidKaigi.collect { 2024. 05. 07 #8@Tokyo Tomi-Hand
初めまして Hand-Tomi と申します
Locale.getDefault() == Locale.JAPAN
Locale.getDefault() == Locale.JAPAN 端末の言語 == 日本語
val locale: Locale = Locale.getDefault()
val locale: Locale = Locale.getDefault()
Localeとは
Localeとは 言語、国、地域に基づいた 文化的、地理的設定を表すクラス
Localeに含まれているデータ 言語 記号 国 バリアント 拡張 language script country variant
extensions
Localeに含まれているデータ 言語 language script country variant extensions
Localeに含まれているデータ language script country variant extensions 記号
Localeに含まれているデータ language script country variant extensions 記号 言語を表す記号体系
Localeに含まれているデータ language script country variant extensions 国
Localeに含まれているデータ language script country variant extensions バリアント
方言など特定言語の変形 Localeに含まれているデータ language script country variant extensions バリアント
Localeに含まれているデータ language script country variant extensions 拡張
言語以外の追加情報 Localeに含まれているデータ language script country variant extensions 拡張
例えば
None
None
val locale: Locale = Locale.getDefault() Locale - 言語:ja(日本語) - 国:JP(日本)
val locale: Locale = Locale.getDefault() Locale - 言語:ja(日本語) - 国:JP(日本)
問題 ❶
1 val isJapan = Locale.getDefault() == Locale.JAPAN 2 setContent {
3 Text( 4 text = "日本語ですか? $isJapan", 5 fontSize = 30.sp, 6 ) 7 }
1 val isJapan = Locale.getDefault() == Locale.JAPAN 2 setContent {
3 Text( 4 text = "日本語ですか? $isJapan", 5 fontSize = 30.sp, 6 ) 7 }
1 val isJapan = Locale.getDefault() == Locale.JAPAN 2 setContent {
3 Text( 4 text = "日本語ですか? $isJapan", 5 fontSize = 30.sp, 6 ) 7 }
1 val isJapan = Locale.getDefault() == Locale.JAPAN 2 setContent {
3 Text( 4 text = "日本語ですか? $isJapan", 5 fontSize = 30.sp, 6 ) 7 }
?
True vs False
True!
問題 ❷
None
Android14のみ
None
None
None
None
1 val isJapan = Locale.getDefault() == Locale.JAPAN 2 setContent {
3 Text( 4 text = "日本語ですか? $isJapan", 5 fontSize = 30.sp, 6 ) 7 }
1 val isJapan = Locale.getDefault() == Locale.JAPAN 2 setContent {
3 Text( 4 text = "日本語ですか? $isJapan", 5 fontSize = 30.sp, 6 ) 7 }
?
True vs False
False!
Locale.getDefault() == Locale.JAPAN 地域別の設定に変更がある 地域別の設定に変更がない True False
Locale.getDefault() == Locale.JAPAN 地域別の設定に変更がある 地域別の設定に変更がない True False
Locale.getDefault() == Locale.JAPAN 地域別の設定に変更がある 地域別の設定に変更がない True False
Locale.getDefault() == Locale.JAPAN 地域別の設定に変更がある 地域別の設定に変更がない True False
地域別の設定🌏は なんですか?
English(アメリカ) English(オランダ) 温度 華氏 摂氏 週最初の曜日 日曜日 月曜日
English(アメリカ) English(オランダ) 温度 華氏 摂氏 週最初の曜日 日曜日 月曜日 🏻 ♂
English(アメリカ) English(オランダ) 温度 華氏 摂氏 週最初の曜日 日曜日 月曜日
English(アメリカ) English(オランダ) 温度 華氏 摂氏 週最初の曜日 日曜日 月曜日 👨
華氏に変更したい!
English(アメリカ) English(オランダ) 温度 華氏 摂氏 週最初の曜日 日曜日 月曜日 👨
華氏に変更したい!
None
None
None
None
None
地域別の設定は Android14から 導入された 新しい設定機能
Locale.getDefault() == Locale.JAPAN 地域別の設定に変更がある 地域別の設定に変更がない True False
Locale.getDefault() == Locale.JAPAN 地域別の設定に変更がある 地域別の設定に変更がない True False
地域別の設定情報は Localeに 含まれている
Locale? 言語 記号 国 バリアント 拡張 language script country variant
extensions
language script country variant extensions 拡張
言語以外の追加情報 language script country variant extensions 拡張
コード上で 確認して みましょうか?
None
Log.v(TAG, "${Locale.getDefault()}") Log.v(TAG, "${Locale.JAPAN}") Log.v(TAG, "${Locale.getDefault() == Locale.JAPAN}")
Log.v(TAG, "${Locale.getDefault()}") Log.v(TAG, "${Locale.JAPAN}") Log.v(TAG, "${Locale.getDefault() == Locale.JAPAN}") V ja_JP
V ja_JP V true
Log.v(TAG, "${Locale.getDefault()}") Log.v(TAG, "${Locale.JAPAN}") Log.v(TAG, "${Locale.getDefault() == Locale.JAPAN}")
Log.v(TAG, "${Locale.getDefault()}") Log.v(TAG, "${Locale.JAPAN}") Log.v(TAG, "${Locale.getDefault() == Locale.JAPAN}") V ja_JP_#u-mu-fahrenhe
V ja_JP V false
Log.v(TAG, "${Locale.getDefault()}") Log.v(TAG, "${Locale.JAPAN}") Log.v(TAG, "${Locale.getDefault() == Locale.JAPAN}") V ja_JP_#u-mu-fahrenhe
V ja_JP V false
Log.v(TAG, "${Locale.getDefault()}") Log.v(TAG, "${Locale.JAPAN}") Log.v(TAG, "${Locale.getDefault() == Locale.JAPAN}") V ja_JP_#u-mu-fahrenhe
V ja_JP V false
Log.v(TAG, "${Locale.getDefault()}") Log.v(TAG, "${Locale.JAPAN}") Log.v(TAG, "${Locale.getDefault() == Locale.JAPAN}") V ja_JP_#u-mu-celsius
V ja_JP V false
Log.v(TAG, "${Locale.getDefault()}") Log.v(TAG, "${Locale.JAPAN}") Log.v(TAG, "${Locale.getDefault() == Locale.JAPAN}") V ja_JP_#u-mu-celsius
V ja_JP V false
そうです。
V ja_JP_#u-mu-celsius V ja_JP V false Log.v(TAG, "${Locale.getDefault()}") Log.v(TAG, "${Locale.JAPAN}")
Log.v(TAG, "${Locale.getDefault() == Locale.JAPAN}")
V ja_JP_#u-mu-celsius V ja_JP V false Log.v(TAG, "${Locale.getDefault()}") Log.v(TAG, "${Locale.JAPAN}")
Log.v(TAG, "${Locale.getDefault() == Locale.JAPAN}")
そしたら どのように 解決するのか?
言語を確認したい場合 val locale: Locale = Locale.getDefault() Log.v(TAG, "${locale.language == Locale.JAPAN.language}")
val locale: Locale = Locale.getDefault() Log.v(TAG, "${locale.language == Locale.JAPAN.language}") 言語を確認したい場合
val locale: Locale = Locale.getDefault() Log.v(TAG, "${locale.country == Locale.JAPAN.country}") 国を確認したい場合
val locale: Locale = Locale.getDefault() Log.v(TAG, "${locale.country == Locale.JAPAN.country}") 国を確認したい場合
ご覧いただき ありがとう ございました https://blog.kinto-technologies.com/posts/2024-02-28-regional-preferences/ } 2024. 05. 07 #8@Tokyo Tomi-Hand