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
Tomi-Hand
May 08, 2024
1
290
知っておかないとバグを引き起こしそうな_地域別の設定_について_本物.pdf
Tomi-Hand
May 08, 2024
Tweet
Share
More Decks by Tomi-Hand
See All by Tomi-Hand
Web出さないのに Flutter プロジェクト にWeb含める?その裏 にある開発者の意図
seaud5
0
44
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
520
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Visualization
eitanlees
146
15k
Designing for Performance
lara
604
68k
The Language of Interfaces
destraynor
154
24k
Navigating Team Friction
lara
183
15k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
The Pragmatic Product Professional
lauravandoore
32
6.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Producing Creativity
orderedlist
PRO
341
39k
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