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
310
知っておかないとバグを引き起こしそうな_地域別の設定_について_本物.pdf
Tomi-Hand
May 08, 2024
Tweet
Share
More Decks by Tomi-Hand
See All by Tomi-Hand
Web出さないのに Flutter プロジェクト にWeb含める?その裏 にある開発者の意図
seaud5
0
55
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Writing Fast Ruby
sferik
628
62k
Optimizing for Happiness
mojombo
379
70k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
How to train your dragon (web standard)
notwaldorf
96
6.1k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
It's Worth the Effort
3n
185
28k
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