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
330
知っておかないとバグを引き起こしそうな_地域別の設定_について_本物.pdf
Tomi-Hand
May 08, 2024
Tweet
Share
More Decks by Tomi-Hand
See All by Tomi-Hand
Web出さないのに Flutter プロジェクト にWeb含める?その裏 にある開発者の意図
seaud5
0
58
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
GitHub's CSS Performance
jonrohan
1032
470k
KATA
mclloyd
32
15k
Being A Developer After 40
akosma
91
590k
Side Projects
sachag
455
43k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Context Engineering - Making Every Token Count
addyosmani
5
220
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
The Cost Of JavaScript in 2023
addyosmani
53
9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Speed Design
sergeychernyshev
32
1.2k
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