diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/locale/LocaleSettingsScreen.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/locale/LocaleSettingsScreen.kt
index a28b2395a..2b363cba4 100644
--- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/locale/LocaleSettingsScreen.kt
+++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/locale/LocaleSettingsScreen.kt
@@ -13,6 +13,7 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalResources
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.capitalize
import androidx.core.app.GrammaticalInflectionManagerCompat
import androidx.core.net.toUri
import androidx.core.os.LocaleListCompat
@@ -53,7 +54,11 @@ fun LocaleSettingsScreen() {
Preference(
icon = R.drawable.flag_24px,
title = stringResource(R.string.preference_language),
- summary = if (language == null) stringResource(R.string.preference_value_system_default) else language.getDisplayName(language),
+ summary = if (language == null) {
+ stringResource(R.string.preference_value_system_default)
+ } else {
+ language.getDisplayName(language).replaceFirstChar { it.uppercase(language) }
+ },
enabled = isAtLeastApiLevel(33),
onClick = {
context.tryStartActivity(
@@ -63,26 +68,33 @@ fun LocaleSettingsScreen() {
)
}
)
- ListPreference(
- icon = R.drawable.wc_24px,
- title = "Form of address",
- value = GrammaticalInflectionManagerCompat.getApplicationGrammaticalGender(context).let {
- if (it == GrammaticalInflectionManagerCompat.GRAMMATICAL_GENDER_NOT_SPECIFIED) {
- GrammaticalInflectionManagerCompat.GRAMMATICAL_GENDER_NEUTRAL
- } else {
- it
- }
- },
- onValueChanged = {
- GrammaticalInflectionManagerCompat.setRequestedApplicationGrammaticalGender(context, it)
- },
- enabled = isAtLeastApiLevel(34),
- items = listOf(
- "Neutral" to GrammaticalInflectionManagerCompat.GRAMMATICAL_GENDER_NEUTRAL,
- "Feminine" to GrammaticalInflectionManagerCompat.GRAMMATICAL_GENDER_FEMININE,
- "Masculine" to GrammaticalInflectionManagerCompat.GRAMMATICAL_GENDER_MASCULINE,
+ if (listOf("fr").contains(LocalResources.current.configuration?.locales[0]?.language)) {
+ ListPreference(
+ icon = R.drawable.wc_24px,
+ title = stringResource(R.string.preference_form_of_address),
+ value = GrammaticalInflectionManagerCompat.getApplicationGrammaticalGender(
+ context
+ ).let {
+ if (it == GrammaticalInflectionManagerCompat.GRAMMATICAL_GENDER_NOT_SPECIFIED) {
+ GrammaticalInflectionManagerCompat.GRAMMATICAL_GENDER_NEUTRAL
+ } else {
+ it
+ }
+ },
+ onValueChanged = {
+ GrammaticalInflectionManagerCompat.setRequestedApplicationGrammaticalGender(
+ context,
+ it
+ )
+ },
+ enabled = isAtLeastApiLevel(34),
+ items = listOf(
+ stringResource(R.string.preference_form_of_address_neutral) to GrammaticalInflectionManagerCompat.GRAMMATICAL_GENDER_NEUTRAL,
+ stringResource(R.string.preference_form_of_address_fem) to GrammaticalInflectionManagerCompat.GRAMMATICAL_GENDER_FEMININE,
+ stringResource(R.string.preference_form_of_address_masc) to GrammaticalInflectionManagerCompat.GRAMMATICAL_GENDER_MASCULINE,
+ )
)
- )
+ }
ListPreference(
icon = R.drawable.schedule_24px,
title = stringResource(R.string.preference_clock_widget_time_format),
diff --git a/plugins/sdk/src/main/res/values-fr-feminine/strings.xml b/core/i18n/src/main/res/values-ar-feminine/strings.xml
similarity index 100%
rename from plugins/sdk/src/main/res/values-fr-feminine/strings.xml
rename to core/i18n/src/main/res/values-ar-feminine/strings.xml
diff --git a/plugins/sdk/src/main/res/values-fr-masculine/strings.xml b/core/i18n/src/main/res/values-ar-masculine/strings.xml
similarity index 100%
rename from plugins/sdk/src/main/res/values-fr-masculine/strings.xml
rename to core/i18n/src/main/res/values-ar-masculine/strings.xml
diff --git a/core/i18n/src/main/res/values-be-feminine/strings.xml b/core/i18n/src/main/res/values-be-feminine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-be-feminine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-be-masculine/strings.xml b/core/i18n/src/main/res/values-be-masculine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-be-masculine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-ca-feminine/strings.xml b/core/i18n/src/main/res/values-ca-feminine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-ca-feminine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-ca-masculine/strings.xml b/core/i18n/src/main/res/values-ca-masculine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-ca-masculine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-cs-feminine/strings.xml b/core/i18n/src/main/res/values-cs-feminine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-cs-feminine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-cs-masculine/strings.xml b/core/i18n/src/main/res/values-cs-masculine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-cs-masculine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-el-feminine/strings.xml b/core/i18n/src/main/res/values-el-feminine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-el-feminine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-el-masculine/strings.xml b/core/i18n/src/main/res/values-el-masculine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-el-masculine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-es-feminine/strings.xml b/core/i18n/src/main/res/values-es-feminine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-es-feminine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-es-masculine/strings.xml b/core/i18n/src/main/res/values-es-masculine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-es-masculine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-fr-feminine/unit.xml b/core/i18n/src/main/res/values-fr-feminine/unit.xml
deleted file mode 100644
index 854200555..000000000
--- a/core/i18n/src/main/res/values-fr-feminine/unit.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/i18n/src/main/res/values-fr-masculine/unit.xml b/core/i18n/src/main/res/values-fr-masculine/unit.xml
deleted file mode 100644
index 854200555..000000000
--- a/core/i18n/src/main/res/values-fr-masculine/unit.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/i18n/src/main/res/values-he-feminine/strings.xml b/core/i18n/src/main/res/values-he-feminine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-he-feminine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-he-masculine/strings.xml b/core/i18n/src/main/res/values-he-masculine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-he-masculine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-hi-feminine/strings.xml b/core/i18n/src/main/res/values-hi-feminine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-hi-feminine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-hi-masculine/strings.xml b/core/i18n/src/main/res/values-hi-masculine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-hi-masculine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-it-feminine/strings.xml b/core/i18n/src/main/res/values-it-feminine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-it-feminine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-it-masculine/strings.xml b/core/i18n/src/main/res/values-it-masculine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-it-masculine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-pl-feminine/strings.xml b/core/i18n/src/main/res/values-pl-feminine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-pl-feminine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-pl-masculine/strings.xml b/core/i18n/src/main/res/values-pl-masculine/strings.xml
new file mode 100644
index 000000000..55344e519
--- /dev/null
+++ b/core/i18n/src/main/res/values-pl-masculine/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-pt-feminine/strings.xml b/core/i18n/src/main/res/values-pt-feminine/strings.xml
new file mode 100644
index 000000000..43ddc6238
--- /dev/null
+++ b/core/i18n/src/main/res/values-pt-feminine/strings.xml
@@ -0,0 +1,6 @@
+
+
+ %1$s pretende aceder aos dados de %2$s.
+ Recusar
+ Permitir
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-pt-masculine/strings.xml b/core/i18n/src/main/res/values-pt-masculine/strings.xml
new file mode 100644
index 000000000..43ddc6238
--- /dev/null
+++ b/core/i18n/src/main/res/values-pt-masculine/strings.xml
@@ -0,0 +1,6 @@
+
+
+ %1$s pretende aceder aos dados de %2$s.
+ Recusar
+ Permitir
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-pt-rBR-feminine/strings.xml b/core/i18n/src/main/res/values-pt-rBR-feminine/strings.xml
new file mode 100644
index 000000000..43ddc6238
--- /dev/null
+++ b/core/i18n/src/main/res/values-pt-rBR-feminine/strings.xml
@@ -0,0 +1,6 @@
+
+
+ %1$s pretende aceder aos dados de %2$s.
+ Recusar
+ Permitir
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-pt-rBR-masculine/strings.xml b/core/i18n/src/main/res/values-pt-rBR-masculine/strings.xml
new file mode 100644
index 000000000..43ddc6238
--- /dev/null
+++ b/core/i18n/src/main/res/values-pt-rBR-masculine/strings.xml
@@ -0,0 +1,6 @@
+
+
+ %1$s pretende aceder aos dados de %2$s.
+ Recusar
+ Permitir
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-ro-feminine/strings.xml b/core/i18n/src/main/res/values-ro-feminine/strings.xml
new file mode 100644
index 000000000..43ddc6238
--- /dev/null
+++ b/core/i18n/src/main/res/values-ro-feminine/strings.xml
@@ -0,0 +1,6 @@
+
+
+ %1$s pretende aceder aos dados de %2$s.
+ Recusar
+ Permitir
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-ro-masculine/strings.xml b/core/i18n/src/main/res/values-ro-masculine/strings.xml
new file mode 100644
index 000000000..43ddc6238
--- /dev/null
+++ b/core/i18n/src/main/res/values-ro-masculine/strings.xml
@@ -0,0 +1,6 @@
+
+
+ %1$s pretende aceder aos dados de %2$s.
+ Recusar
+ Permitir
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-ru-feminine/strings.xml b/core/i18n/src/main/res/values-ru-feminine/strings.xml
new file mode 100644
index 000000000..43ddc6238
--- /dev/null
+++ b/core/i18n/src/main/res/values-ru-feminine/strings.xml
@@ -0,0 +1,6 @@
+
+
+ %1$s pretende aceder aos dados de %2$s.
+ Recusar
+ Permitir
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-ru-masculine/strings.xml b/core/i18n/src/main/res/values-ru-masculine/strings.xml
new file mode 100644
index 000000000..43ddc6238
--- /dev/null
+++ b/core/i18n/src/main/res/values-ru-masculine/strings.xml
@@ -0,0 +1,6 @@
+
+
+ %1$s pretende aceder aos dados de %2$s.
+ Recusar
+ Permitir
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-uk-feminine/strings.xml b/core/i18n/src/main/res/values-uk-feminine/strings.xml
new file mode 100644
index 000000000..43ddc6238
--- /dev/null
+++ b/core/i18n/src/main/res/values-uk-feminine/strings.xml
@@ -0,0 +1,6 @@
+
+
+ %1$s pretende aceder aos dados de %2$s.
+ Recusar
+ Permitir
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values-uk-masculine/strings.xml b/core/i18n/src/main/res/values-uk-masculine/strings.xml
new file mode 100644
index 000000000..43ddc6238
--- /dev/null
+++ b/core/i18n/src/main/res/values-uk-masculine/strings.xml
@@ -0,0 +1,6 @@
+
+
+ %1$s pretende aceder aos dados de %2$s.
+ Recusar
+ Permitir
+
\ No newline at end of file
diff --git a/core/i18n/src/main/res/values/strings.xml b/core/i18n/src/main/res/values/strings.xml
index 71fbbef40..c6f3e0762 100644
--- a/core/i18n/src/main/res/values/strings.xml
+++ b/core/i18n/src/main/res/values/strings.xml
@@ -1059,4 +1059,8 @@
Language, units, time format
Language
System default
+ Form of address
+ Neutral
+ Feminine
+ Masculine
diff --git a/crowdin.yml b/crowdin.yml
index aafc927b6..0778953c9 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -5,45 +5,74 @@ files:
type: android
languages_mapping:
android_code:
- ar: ar # Arabic
- az: az # Azerbaijani
- eu: eu # Basque
- be: be # Belarusian
- bn: bn # Bengali
- ca: ca # Catalan
- zh-CN: zh-rCN # Chinese Simplified
- zh-TW: zh-rTW # Chinese Traditional
- cs: cs # Czech
- da: da # Danish
- nl: nl # Dutch, Netherlands
- eo: eo # Esperanto
- fi: fi # Finnish
- fr: fr # French, France
- fr-fem: fr-feminine # French (feminine)
- fr-masc: fr-masculine # French (masculine)
- de: de # German, Germany
- el: el # Greek
- he: iw # Hebrew
- hu: hu # Hungarian
- id: in # Indonesian
- it: it # Italian, Italy
- ja: ja # Japanese
- ko: ko # Korean
- lt: lt # Lithuanian
- ms: ms # Malay
- nb: nb # Norwegian Bokmal
- fa: fa # Persian
- pl: pl # Polish
- pt-BR: pt # Portuguese, Brazil
- pt-PT: pt-rPT # Portuguese, Portugal
- ro: ro # Romanian
- ru: ru # Russian, Russia
- es-MX: es # Spanish, Mexico
- sv-SE: sv # Swedish, Sweden
- th: th # Thai
- tr: tr # Turkish, Türkiye
- uk: uk # Ukrainian
- vi: vi # Vietnamese
+ ar: ar # Arabic
+ az: az # Azerbaijani
+ eu: eu # Basque
+ be: be # Belarusian
+ be-fem: be-feminine # Belarusian (feminine)
+ be-masc: be-masculine # Belarusian (masculine)
+ bn: bn # Bengali
+ ca: ca # Catalan
+ ca-fem: ca-feminine # Catalan (feminine)
+ ca-masc: ca-masculine # Catalan (masculine)
+ zh-CN: zh-rCN # Chinese Simplified
+ zh-TW: zh-rTW # Chinese Traditional
+ cs: cs # Czech
+ cs-fem: cs-feminine # Czech (feminine)
+ cs-masc: cs-masculine # Czech (masculine)
+ da: da # Danish
+ nl: nl # Dutch, Netherlands
+ eo: eo # Esperanto
+ fi: fi # Finnish
+ fr: fr # French, France
+ fr-fem: fr-feminine # French (feminine)
+ fr-masc: fr-masculine # French (masculine)
+ de: de # German, Germany
+ el: el # Greek
+ el-fem: el-feminine # Greek (feminine)
+ el-masc: el-masculine # Greek (masculine)
+ he: iw # Hebrew
+ he-fem: he-feminine # Hebrew (feminine)
+ he-masc: he-masculine # Hebrew (masculine)
+ hi: hi # Hindi
+ hi-fem: hi-feminine # Hindi (feminine)
+ hi-masc: hi-masculine # Hindi (masculine)
+ hu: hu # Hungarian
+ id: in # Indonesian
+ it: it # Italian, Italy
+ it-fem: it-feminine # Italian (feminine)
+ it-masc: it-masculine # Italian (masculine)
+ ja: ja # Japanese
+ ko: ko # Korean
+ lt: lt # Lithuanian
+ ms: ms # Malay
+ nb: nb # Norwegian Bokmal
+ fa: fa # Persian
+ pl: pl # Polish
+ pl-fem: pl-feminine # Polish (feminine)
+ pl-masc: pl-masculine # Polish (masculine)
+ pt-BR: pt # Portuguese, Brazil
+ pt-BR-fem: pt-feminine # Portuguese, Brazil (feminine)
+ pt-BR-masc: pt-masculine # Portuguese, Brazil (masculine)
+ pt-PT: pt-rPT # Portuguese, Portugal
+ pt-PT-fem: pt-feminine # Portuguese, Portugal (feminine)
+ pt-PT-masc: pt-masculine # Portuguese, Portugal (masculine)
+ ro: ro # Romanian
+ ro-fem: ro-feminine # Romanian (feminine)
+ ro-masc: ro-masculine # Romanian (masculine)
+ ru: ru # Russian, Russia
+ ru-fem: ru-feminine # Russian (feminine)
+ ru-masc: ru-masculine # Russian (masculine)
+ es-MX: es # Spanish, Mexico
+ es-MX-fem: es-feminine # Spanish, Mexico (feminine)
+ es-MX-masc: es-masculine # Spanish, Mexico (masculine)
+ sv-SE: sv # Swedish, Sweden
+ th: th # Thai
+ tr: tr # Turkish, Türkiye
+ uk: uk # Ukrainian
+ uk-fem: uk-feminine # Ukrainian (feminine)
+ uk-masc: uk-masculine # Ukrainian (masculine)
+ vi: vi # Vietnamese
- source: /core/i18n/src/main/res/values/units.xml
translation: /core/i18n/src/main/res/values-%android_code%/%original_file_name%
type: android