feat: add localisation

This commit is contained in:
2026-07-31 21:46:05 +02:00
parent b58c9a8722
commit f5b2041612
30 changed files with 4099 additions and 326 deletions
+18 -10
View File
@@ -4,6 +4,8 @@ import 'package:kooltab2/models/closed_tab.dart';
import 'package:kooltab2/models/closed_tab_item.dart';
import 'package:kooltab2/models/payment_method.dart';
import '../../l10n/app_localizations.dart';
class ClosedTabCard extends StatefulWidget {
final ClosedTab closedTab;
@@ -26,7 +28,9 @@ class _ClosedTabCardState extends State<ClosedTabCard> {
@override
Widget build(BuildContext context) {
final closedTab = widget.closedTab;
final dateFormat = DateFormat('MMM d, y · h:mm a');
final l10n = AppLocalizations.of(context);
final locale = Localizations.localeOf(context).toLanguageTag();
final dateFormat = DateFormat.yMMMd(locale).add_jm();
final scheme = Theme.of(context).colorScheme;
return Container(
@@ -91,7 +95,10 @@ class _ClosedTabCardState extends State<ClosedTabCard> {
),
const SizedBox(width: 4),
Text(
closedTab.formattedPaymentMethod,
switch (closedTab.paymentMethod) {
PaymentMethod.cash => l10n.cash,
PaymentMethod.payconiq => l10n.payconiq,
},
style: TextStyle(
fontSize: 11,
fontWeight: FontWeight.w700,
@@ -105,7 +112,7 @@ class _ClosedTabCardState extends State<ClosedTabCard> {
),
const SizedBox(height: 2),
Text(
'${dateFormat.format(closedTab.closedAt)} · ${closedTab.itemCount} items',
'${dateFormat.format(closedTab.closedAt)} · ${l10n.tabItemCount(closedTab.itemCount)}',
style: Theme.of(context).textTheme.bodySmall,
),
],
@@ -164,12 +171,13 @@ class _ClosedTabItemRow extends StatelessWidget {
@override
Widget build(BuildContext context) {
final unitPrice = NumberFormat.simpleCurrency().format(
item.unitPriceInCents / 100,
);
final lineTotal = NumberFormat.simpleCurrency().format(
item.lineTotalInCents / 100,
);
final locale = Localizations.localeOf(context).toLanguageTag();
final unitPrice = NumberFormat.simpleCurrency(
locale: locale,
).format(item.unitPriceInCents / 100);
final lineTotal = NumberFormat.simpleCurrency(
locale: locale,
).format(item.lineTotalInCents / 100);
final scheme = Theme.of(context).colorScheme;
return Padding(
@@ -207,4 +215,4 @@ class _ClosedTabItemRow extends StatelessWidget {
),
);
}
}
}
+4 -1
View File
@@ -3,6 +3,8 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:kooltab2/models/product.dart';
import '../../l10n/app_localizations.dart';
class ProductTile extends StatelessWidget {
final Product product;
final bool enabled;
@@ -20,6 +22,7 @@ class ProductTile extends StatelessWidget {
Widget build(BuildContext context) {
final theme = Theme.of(context);
final scheme = theme.colorScheme;
final l10n = AppLocalizations.of(context);
final outOfStock = product.stockQuantity <= 0;
final lowStock =
@@ -101,7 +104,7 @@ class ProductTile extends StatelessWidget {
borderRadius: BorderRadius.circular(999),
),
child: Text(
'OUT OF STOCK',
l10n.outOfStock,
style: TextStyle(
color: scheme.onError,
fontWeight: FontWeight.w800,
+4 -1
View File
@@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import '../../l10n/app_localizations.dart';
class SlideConfirm extends StatefulWidget {
final VoidCallback onConfirmed;
@@ -18,6 +20,7 @@ class _SlideConfirmState extends State<SlideConfirm> {
@override
Widget build(BuildContext context) {
final scheme = Theme.of(context).colorScheme;
final l10n = AppLocalizations.of(context);
return SizedBox(
width: double.infinity,
@@ -37,7 +40,7 @@ class _SlideConfirmState extends State<SlideConfirm> {
children: [
Center(
child: Text(
_confirmed ? 'Closing tab...' : 'Slide to confirm closing',
_confirmed ? l10n.closingTab : l10n.slideToConfirmClosing,
style: TextStyle(
color: scheme.error,
fontWeight: FontWeight.w700,