fix(i18n): normalize translations and fallbacks
Build & Deploy PluriWave / Análisis de código (push) Successful in 38s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 2m34s

This commit is contained in:
2026-06-03 21:20:08 +02:00
parent a5475ce118
commit 089b8b4227
46 changed files with 17720 additions and 4869 deletions
+6 -60
View File
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import '../l10n/gen/app_localizations.dart';
import '../servicios/servicio_contenido_app.dart';
import 'pluri_glass_surface.dart';
import 'pluri_markdown.dart';
@@ -41,7 +42,7 @@ class _PluriOnboardingContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
final labels = _labels(Localizations.localeOf(context).languageCode);
final l10n = AppLocalizations.of(context);
final size = MediaQuery.sizeOf(context);
return Dialog(
insetPadding: const EdgeInsets.all(16),
@@ -80,14 +81,14 @@ class _PluriOnboardingContent extends StatelessWidget {
const SizedBox(width: 14),
Expanded(
child: Text(
labels.title,
l10n.onboardingTitle,
style: Theme.of(context).textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w900,
),
),
),
IconButton(
tooltip: labels.close,
tooltip: l10n.onboardingCloseTooltip,
onPressed: () => Navigator.of(context).pop(),
icon: const Icon(Icons.close_rounded),
),
@@ -102,7 +103,7 @@ class _PluriOnboardingContent extends StatelessWidget {
if (contenido.notas.isNotEmpty) ...[
const SizedBox(height: 18),
Text(
labels.news,
l10n.onboardingNewsTitle,
style: Theme.of(context).textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w900,
),
@@ -131,7 +132,7 @@ class _PluriOnboardingContent extends StatelessWidget {
child: FilledButton.icon(
onPressed: () => Navigator.of(context).pop(),
icon: const Icon(Icons.check_rounded),
label: Text(labels.start),
label: Text(l10n.onboardingStartAction),
),
),
],
@@ -141,58 +142,3 @@ class _PluriOnboardingContent extends StatelessWidget {
);
}
}
_OnboardingLabels _labels(String languageCode) {
return switch (languageCode) {
'es' => const _OnboardingLabels(
title: 'Bienvenido a PluriWave',
news: 'Novedades',
start: 'Empezar',
close: 'Cerrar',
),
'fr' => const _OnboardingLabels(
title: 'Bienvenue sur PluriWave',
news: 'Nouveautés',
start: 'Commencer',
close: 'Fermer',
),
'de' => const _OnboardingLabels(
title: 'Willkommen bei PluriWave',
news: 'Neuigkeiten',
start: 'Starten',
close: 'Schließen',
),
'it' => const _OnboardingLabels(
title: 'Benvenuto in PluriWave',
news: 'Novità',
start: 'Inizia',
close: 'Chiudi',
),
'pt' => const _OnboardingLabels(
title: 'Bem-vindo ao PluriWave',
news: 'Novidades',
start: 'Começar',
close: 'Fechar',
),
_ => const _OnboardingLabels(
title: 'Welcome to PluriWave',
news: 'Whats new',
start: 'Start',
close: 'Close',
),
};
}
class _OnboardingLabels {
const _OnboardingLabels({
required this.title,
required this.news,
required this.start,
required this.close,
});
final String title;
final String news;
final String start;
final String close;
}