feat: Add Spanish, Dutch, Russian, and Chinese languages

Adds support for Spanish, Dutch, Russian, and Chinese to the language selection menu. This includes adding the necessary translation strings and updating the app customization page to display these new language options.
This commit is contained in:
cogwheel0
2025-10-12 20:59:05 +05:30
parent f8c823dea4
commit ea14ea6f09
14 changed files with 136 additions and 0 deletions

View File

@@ -494,6 +494,14 @@ class AppCustomizationPage extends ConsumerWidget {
return AppLocalizations.of(context)!.francais; return AppLocalizations.of(context)!.francais;
case 'it': case 'it':
return AppLocalizations.of(context)!.italiano; return AppLocalizations.of(context)!.italiano;
case 'es':
return AppLocalizations.of(context)!.espanol;
case 'nl':
return AppLocalizations.of(context)!.nederlands;
case 'ru':
return AppLocalizations.of(context)!.russian;
case 'zh':
return AppLocalizations.of(context)!.chinese;
default: default:
return AppLocalizations.of(context)!.system; return AppLocalizations.of(context)!.system;
} }
@@ -554,6 +562,11 @@ class AppCustomizationPage extends ConsumerWidget {
trailing: current == 'de' ? const Icon(Icons.check) : null, trailing: current == 'de' ? const Icon(Icons.check) : null,
onTap: () => Navigator.pop(context, 'de'), onTap: () => Navigator.pop(context, 'de'),
), ),
ListTile(
title: Text(AppLocalizations.of(context)!.espanol),
trailing: current == 'es' ? const Icon(Icons.check) : null,
onTap: () => Navigator.pop(context, 'es'),
),
ListTile( ListTile(
title: Text(AppLocalizations.of(context)!.francais), title: Text(AppLocalizations.of(context)!.francais),
trailing: current == 'fr' ? const Icon(Icons.check) : null, trailing: current == 'fr' ? const Icon(Icons.check) : null,
@@ -564,6 +577,21 @@ class AppCustomizationPage extends ConsumerWidget {
trailing: current == 'it' ? const Icon(Icons.check) : null, trailing: current == 'it' ? const Icon(Icons.check) : null,
onTap: () => Navigator.pop(context, 'it'), onTap: () => Navigator.pop(context, 'it'),
), ),
ListTile(
title: Text(AppLocalizations.of(context)!.nederlands),
trailing: current == 'nl' ? const Icon(Icons.check) : null,
onTap: () => Navigator.pop(context, 'nl'),
),
ListTile(
title: Text(AppLocalizations.of(context)!.russian),
trailing: current == 'ru' ? const Icon(Icons.check) : null,
onTap: () => Navigator.pop(context, 'ru'),
),
ListTile(
title: Text(AppLocalizations.of(context)!.chinese),
trailing: current == 'zh' ? const Icon(Icons.check) : null,
onTap: () => Navigator.pop(context, 'zh'),
),
const SizedBox(height: Spacing.sm), const SizedBox(height: Spacing.sm),
], ],
), ),

View File

@@ -214,6 +214,10 @@
"deutsch": "Deutsch", "deutsch": "Deutsch",
"francais": "Französisch", "francais": "Französisch",
"italiano": "Italienisch", "italiano": "Italienisch",
"espanol": "Spanisch",
"nederlands": "Niederländisch",
"russian": "Russisch",
"chinese": "Chinesisch",
"deleteMessagesTitle": "Nachrichten löschen", "deleteMessagesTitle": "Nachrichten löschen",
"deleteMessagesMessage": "{count} Nachrichten löschen?", "deleteMessagesMessage": "{count} Nachrichten löschen?",
"@deleteMessagesMessage": { "@deleteMessagesMessage": {

View File

@@ -467,6 +467,14 @@
"@francais": {"description": "Language name: French."}, "@francais": {"description": "Language name: French."},
"italiano": "Italiano", "italiano": "Italiano",
"@italiano": {"description": "Language name: Italian."}, "@italiano": {"description": "Language name: Italian."},
"espanol": "Español",
"@espanol": {"description": "Language name: Spanish."},
"nederlands": "Nederlands",
"@nederlands": {"description": "Language name: Dutch."},
"russian": "Русский",
"@russian": {"description": "Language name: Russian."},
"chinese": "中文",
"@chinese": {"description": "Language name: Chinese."},
"deleteMessagesTitle": "Delete Messages", "deleteMessagesTitle": "Delete Messages",
"@deleteMessagesTitle": {"description": "Dialog title asking to confirm deletion of messages."}, "@deleteMessagesTitle": {"description": "Dialog title asking to confirm deletion of messages."},
"deleteMessagesMessage": "Delete {count} messages?", "deleteMessagesMessage": "Delete {count} messages?",

View File

@@ -211,6 +211,10 @@
"deutsch": "Deutsch", "deutsch": "Deutsch",
"francais": "Français", "francais": "Français",
"italiano": "Italiano", "italiano": "Italiano",
"espanol": "Español",
"nederlands": "Nederlands",
"russian": "Русский",
"chinese": "中文",
"deleteMessagesTitle": "Eliminar mensajes", "deleteMessagesTitle": "Eliminar mensajes",
"deleteMessagesMessage": "¿Eliminar {count} mensajes?", "deleteMessagesMessage": "¿Eliminar {count} mensajes?",
"@deleteMessagesMessage": { "@deleteMessagesMessage": {

View File

@@ -214,6 +214,10 @@
"deutsch": "Allemand", "deutsch": "Allemand",
"francais": "Français", "francais": "Français",
"italiano": "Italien", "italiano": "Italien",
"espanol": "Espagnol",
"nederlands": "Néerlandais",
"russian": "Russe",
"chinese": "Chinois",
"deleteMessagesTitle": "Supprimer les messages", "deleteMessagesTitle": "Supprimer les messages",
"deleteMessagesMessage": "Supprimer {count} messages ?", "deleteMessagesMessage": "Supprimer {count} messages ?",
"@deleteMessagesMessage": { "@deleteMessagesMessage": {

View File

@@ -214,6 +214,10 @@
"deutsch": "Tedesco", "deutsch": "Tedesco",
"francais": "Francese", "francais": "Francese",
"italiano": "Italiano", "italiano": "Italiano",
"espanol": "Spagnolo",
"nederlands": "Olandese",
"russian": "Russo",
"chinese": "Cinese",
"deleteMessagesTitle": "Elimina messaggi", "deleteMessagesTitle": "Elimina messaggi",
"deleteMessagesMessage": "Eliminare {count} messaggi?", "deleteMessagesMessage": "Eliminare {count} messaggi?",
"@deleteMessagesMessage": { "@deleteMessagesMessage": {

View File

@@ -1286,6 +1286,30 @@ abstract class AppLocalizations {
/// **'Italiano'** /// **'Italiano'**
String get italiano; String get italiano;
/// Language name: Spanish.
///
/// In en, this message translates to:
/// **'Español'**
String get espanol;
/// Language name: Dutch.
///
/// In en, this message translates to:
/// **'Nederlands'**
String get nederlands;
/// Language name: Russian.
///
/// In en, this message translates to:
/// **'Русский'**
String get russian;
/// Language name: Chinese.
///
/// In en, this message translates to:
/// **'中文'**
String get chinese;
/// Dialog title asking to confirm deletion of messages. /// Dialog title asking to confirm deletion of messages.
/// ///
/// In en, this message translates to: /// In en, this message translates to:

View File

@@ -650,6 +650,18 @@ class AppLocalizationsDe extends AppLocalizations {
@override @override
String get italiano => 'Italienisch'; String get italiano => 'Italienisch';
@override
String get espanol => 'Spanisch';
@override
String get nederlands => 'Niederländisch';
@override
String get russian => 'Russisch';
@override
String get chinese => 'Chinesisch';
@override @override
String get deleteMessagesTitle => 'Nachrichten löschen'; String get deleteMessagesTitle => 'Nachrichten löschen';

View File

@@ -645,6 +645,18 @@ class AppLocalizationsEn extends AppLocalizations {
@override @override
String get italiano => 'Italiano'; String get italiano => 'Italiano';
@override
String get espanol => 'Español';
@override
String get nederlands => 'Nederlands';
@override
String get russian => 'Русский';
@override
String get chinese => '中文';
@override @override
String get deleteMessagesTitle => 'Delete Messages'; String get deleteMessagesTitle => 'Delete Messages';

View File

@@ -655,6 +655,18 @@ class AppLocalizationsFr extends AppLocalizations {
@override @override
String get italiano => 'Italien'; String get italiano => 'Italien';
@override
String get espanol => 'Espagnol';
@override
String get nederlands => 'Néerlandais';
@override
String get russian => 'Russe';
@override
String get chinese => 'Chinois';
@override @override
String get deleteMessagesTitle => 'Supprimer les messages'; String get deleteMessagesTitle => 'Supprimer les messages';

View File

@@ -647,6 +647,18 @@ class AppLocalizationsIt extends AppLocalizations {
@override @override
String get italiano => 'Italiano'; String get italiano => 'Italiano';
@override
String get espanol => 'Spagnolo';
@override
String get nederlands => 'Olandese';
@override
String get russian => 'Russo';
@override
String get chinese => 'Cinese';
@override @override
String get deleteMessagesTitle => 'Elimina messaggi'; String get deleteMessagesTitle => 'Elimina messaggi';

View File

@@ -211,6 +211,10 @@
"deutsch": "Deutsch", "deutsch": "Deutsch",
"francais": "Français", "francais": "Français",
"italiano": "Italiano", "italiano": "Italiano",
"espanol": "Español",
"nederlands": "Nederlands",
"russian": "Русский",
"chinese": "中文",
"deleteMessagesTitle": "Berichten verwijderen", "deleteMessagesTitle": "Berichten verwijderen",
"deleteMessagesMessage": "{count} berichten verwijderen?", "deleteMessagesMessage": "{count} berichten verwijderen?",
"@deleteMessagesMessage": { "@deleteMessagesMessage": {

View File

@@ -211,6 +211,10 @@
"deutsch": "Deutsch", "deutsch": "Deutsch",
"francais": "Français", "francais": "Français",
"italiano": "Italiano", "italiano": "Italiano",
"espanol": "Español",
"nederlands": "Nederlands",
"russian": "Русский",
"chinese": "中文",
"deleteMessagesTitle": "Удалить сообщения", "deleteMessagesTitle": "Удалить сообщения",
"deleteMessagesMessage": "Удалить {count, plural, one{{count} сообщение} few{{count} сообщения} other{{count} сообщений}}?", "deleteMessagesMessage": "Удалить {count, plural, one{{count} сообщение} few{{count} сообщения} other{{count} сообщений}}?",
"@deleteMessagesMessage": { "@deleteMessagesMessage": {

View File

@@ -211,6 +211,10 @@
"deutsch": "Deutsch", "deutsch": "Deutsch",
"francais": "Français", "francais": "Français",
"italiano": "Italiano", "italiano": "Italiano",
"espanol": "Español",
"nederlands": "Nederlands",
"russian": "Русский",
"chinese": "中文",
"deleteMessagesTitle": "删除消息", "deleteMessagesTitle": "删除消息",
"deleteMessagesMessage": "删除 {count} 条消息?", "deleteMessagesMessage": "删除 {count} 条消息?",
"@deleteMessagesMessage": { "@deleteMessagesMessage": {