Add Swedish localization for various app actions and inventory management strings
This commit is contained in:
@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
import '../../../core/api/api_error_mapper.dart';
|
||||
import '../../../core/l10n/l10n.dart';
|
||||
import '../../../core/ui/async_state_views.dart';
|
||||
import '../data/inventory_providers.dart';
|
||||
import 'swipeable_inventory_tile.dart';
|
||||
@@ -11,11 +12,11 @@ class InventoryScreen extends ConsumerWidget {
|
||||
const InventoryScreen({super.key});
|
||||
|
||||
static const _locationOptions = <String>['', 'Kyl', 'Frys', 'Skafferi'];
|
||||
static const _sortOptions = <({String value, String label})>[
|
||||
(value: '', label: 'Senast tillagda'),
|
||||
(value: 'nameAsc', label: 'Namn A-Ö'),
|
||||
(value: 'bestBeforeAsc', label: 'Bäst före stigande'),
|
||||
(value: 'bestBeforeDesc', label: 'Bäst före fallande'),
|
||||
List<({String value, String label})> _sortOptions(BuildContext context) => [
|
||||
(value: '', label: context.l10n.inventorySortLatest),
|
||||
(value: 'nameAsc', label: context.l10n.inventorySortNameAsc),
|
||||
(value: 'bestBeforeAsc', label: context.l10n.inventorySortBestBeforeAsc),
|
||||
(value: 'bestBeforeDesc', label: context.l10n.inventorySortBestBeforeDesc),
|
||||
];
|
||||
|
||||
@override
|
||||
@@ -25,7 +26,7 @@ class InventoryScreen extends ConsumerWidget {
|
||||
final inventoryAsync = ref.watch(inventoryProvider);
|
||||
|
||||
return inventoryAsync.when(
|
||||
loading: () => const LoadingStateView(label: 'Laddar inventarie...'),
|
||||
loading: () => LoadingStateView(label: context.l10n.inventoryLoading),
|
||||
error: (e, _) => ErrorStateView(
|
||||
message: mapErrorToUserMessage(e, context),
|
||||
onRetry: () => ref.invalidate(inventoryProvider),
|
||||
@@ -36,9 +37,9 @@ class InventoryScreen extends ConsumerWidget {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Text(
|
||||
'Filter och sortering',
|
||||
style: TextStyle(fontWeight: FontWeight.w600),
|
||||
Text(
|
||||
context.l10n.inventoryFilterAndSort,
|
||||
style: const TextStyle(fontWeight: FontWeight.w600),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Wrap(
|
||||
@@ -47,7 +48,7 @@ class InventoryScreen extends ConsumerWidget {
|
||||
children: _locationOptions
|
||||
.map(
|
||||
(option) => ChoiceChip(
|
||||
label: Text(option.isEmpty ? 'Alla' : option),
|
||||
label: Text(option.isEmpty ? context.l10n.inventoryAllFilter : option),
|
||||
selected: location == option,
|
||||
onSelected: (_) => ref
|
||||
.read(inventoryLocationFilterProvider.notifier)
|
||||
@@ -60,11 +61,11 @@ class InventoryScreen extends ConsumerWidget {
|
||||
DropdownButtonFormField<String>(
|
||||
initialValue: sort,
|
||||
isExpanded: true,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Sortering',
|
||||
border: OutlineInputBorder(),
|
||||
decoration: InputDecoration(
|
||||
labelText: context.l10n.inventorySortLabel,
|
||||
border: const OutlineInputBorder(),
|
||||
),
|
||||
items: _sortOptions
|
||||
items: _sortOptions(context)
|
||||
.map(
|
||||
(option) => DropdownMenuItem<String>(
|
||||
value: option.value,
|
||||
@@ -89,7 +90,7 @@ class InventoryScreen extends ConsumerWidget {
|
||||
padding: const EdgeInsets.only(bottom: 88),
|
||||
children: [
|
||||
filterSection,
|
||||
const EmptyStateView(title: 'Inventariet är tomt.'),
|
||||
EmptyStateView(title: context.l10n.inventoryEmpty),
|
||||
],
|
||||
),
|
||||
Positioned(
|
||||
@@ -98,7 +99,7 @@ class InventoryScreen extends ConsumerWidget {
|
||||
child: FloatingActionButton.extended(
|
||||
onPressed: () => context.push('/inventory/create'),
|
||||
icon: const Icon(Icons.add),
|
||||
label: const Text('Lägg till'),
|
||||
label: Text(context.l10n.addAction),
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -125,13 +126,13 @@ class InventoryScreen extends ConsumerWidget {
|
||||
FloatingActionButton.extended(
|
||||
onPressed: () => context.push('/inventory/create'),
|
||||
icon: const Icon(Icons.add),
|
||||
label: const Text('Lägg till'),
|
||||
label: Text(context.l10n.addAction),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
FloatingActionButton.extended(
|
||||
onPressed: () => context.go('/recipes'),
|
||||
icon: const Icon(Icons.restaurant_menu),
|
||||
label: const Text('Recept'),
|
||||
label: Text(context.l10n.inventoryRecipesAction),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user