diff --git a/lib/lang/lang.dart b/lib/lang/lang.dart new file mode 100644 index 0000000..ca36756 --- /dev/null +++ b/lib/lang/lang.dart @@ -0,0 +1,107 @@ +import 'package:flutter/material.dart'; + +abstract class Languages { + static Languages? of(BuildContext context) { + return Localizations.of(context, Languages); + } + + String get appName; + + // Login + + String get errorContacting; + + String get loggingIn; + + String get logIn; + + String get username; + + String get password; + + String get iCanteenUrl; + + String get rememberMe; + + String get httpLogin; + + String get yes; + + String get noChange; + + String get notOfficial; + + String get agree; + + String get disagree; + + String get loginFailed; + + // Jídelníček + + String get loading; + + String get monday; + + String get tuesday; + + String get wednesday; + + String get thursday; + + String get friday; + + String get saturday; + + String get sunday; + + String get noFood; + + String get inExchange; + + String get ordering; + + String get errorOrdering; + + String get close; + + String get verifyExchange; + + String get no; + + String get exchangeError; + + String get signOut; + + String get reportBugs; + + String get about; + + String get menu; + + String get balance; + + // Burza + + String get exchange; + + String get noExchange; + + String get pullToReload; + + String get ordered; + + String get orderSuccess; + + String get ok; + + String get cannotOrder; + + String get order; + + // Settings + + String get settings; + + String get saveOffline; +} diff --git a/lib/lang/lang_cz.dart b/lib/lang/lang_cz.dart new file mode 100644 index 0000000..cabf9dd --- /dev/null +++ b/lib/lang/lang_cz.dart @@ -0,0 +1,144 @@ +import 'package:opencanteen/lang/lang.dart'; + +class LanguageCz extends Languages { + @override + String get about => "O Aplikaci"; + + @override + String get agree => "Souhlasím"; + + @override + String get appName => "OpenCanteen"; + + @override + String get balance => "Kredit: "; + + @override + String get cannotOrder => "Nelze objednat"; + + @override + String get close => "Zavřít"; + + @override + String get disagree => "Nesouhlasím"; + + @override + String get errorContacting => + "Nastala chyba při kontaktování serveru, zkontrolujte připojení"; + + @override + String get errorOrdering => "Jídlo se nepodařilo objednat"; + + @override + String get exchange => "Burza"; + + @override + String get exchangeError => "Nepodařilo se vložit jídlo na burzu"; + + @override + String get friday => "Pátek"; + + @override + String get httpLogin => + "Snažíte se přihlásit přes nešifrované spojení HTTP, jste si jisti, že tak chcete učinit?"; + + @override + String get iCanteenUrl => "iCanteen URL"; + + @override + String get inExchange => "V BURZE"; + + @override + String get loading => "Načítání..."; + + @override + String get logIn => "Přihlášení"; + + @override + String get loggingIn => "Přihlašuji vás..."; + + @override + String get loginFailed => "Přihlášení se nezdařilo"; + + @override + String get menu => "Jídelníček"; + + @override + String get monday => "Pondělí"; + + @override + String get no => "Ne"; + + @override + String get noChange => "Ne, změnit"; + + @override + String get noExchange => "Žádné jídlo v burze"; + + @override + String get noFood => "Žádné jídlo pro tento den"; + + @override + String get notOfficial => + "Toto není oficiální aplikace k ovládání iCanteen. Autor neručí za ztráty nebo nefunkčnost v souvislosti s používáním této aplikace. Tato zpráva se znovu neukáže."; + + @override + String get ok => "OK"; + + @override + String get order => "Objednat"; + + @override + String get orderSuccess => "Jídlo bylo úspěšně objednáno"; + + @override + String get ordered => "Objednáno"; + + @override + String get ordering => "Objednávám..."; + + @override + String get password => "Heslo"; + + @override + String get pullToReload => "Potáhněte zvrchu pro načtení"; + + @override + String get rememberMe => "Zapamatovat si mě"; + + @override + String get reportBugs => "Nahlásit chybu"; + + @override + String get saturday => "Sobota"; + + @override + String get saveOffline => "Ukládat jídelníček na dnešní den offline"; + + @override + String get settings => "Nastavení"; + + @override + String get signOut => "Odhlásit se"; + + @override + String get sunday => "Neděle"; + + @override + String get thursday => "Čtvrtek"; + + @override + String get tuesday => "Úterý"; + + @override + String get username => "Uživatelské jméno"; + + @override + String get verifyExchange => "Opravdu chcete vložit jídlo na burzu?"; + + @override + String get wednesday => "Středa"; + + @override + String get yes => "Ano"; +} diff --git a/lib/lang/lang_en.dart b/lib/lang/lang_en.dart new file mode 100644 index 0000000..941f985 --- /dev/null +++ b/lib/lang/lang_en.dart @@ -0,0 +1,144 @@ +import 'package:opencanteen/lang/lang.dart'; + +class LanguageEn extends Languages { + @override + String get about => "O Aplikaci"; + + @override + String get agree => "Souhlasím"; + + @override + String get appName => "OpenCanteen"; + + @override + String get balance => "Kredit: "; + + @override + String get cannotOrder => "Nelze objednat"; + + @override + String get close => "Zavřít"; + + @override + String get disagree => "Nesouhlasím"; + + @override + String get errorContacting => + "Nastala chyba při kontaktování serveru, zkontrolujte připojení"; + + @override + String get errorOrdering => "Jídlo se nepodařilo objednat"; + + @override + String get exchange => "Burza"; + + @override + String get exchangeError => "Nepodařilo se vložit jídlo na burzu"; + + @override + String get friday => "Pátek"; + + @override + String get httpLogin => + "Snažíte se přihlásit přes nešifrované spojení HTTP, jste si jisti, že tak chcete učinit?"; + + @override + String get iCanteenUrl => "iCanteen URL"; + + @override + String get inExchange => "V BURZE"; + + @override + String get loading => "Načítání..."; + + @override + String get logIn => "Přihlášení"; + + @override + String get loggingIn => "Přihlašuji vás..."; + + @override + String get loginFailed => "Přihlášení se nezdařilo"; + + @override + String get menu => "Jídelníček"; + + @override + String get monday => "Pondělí"; + + @override + String get no => "Ne"; + + @override + String get noChange => "Ne, změnit"; + + @override + String get noExchange => "Žádné jídlo v burze"; + + @override + String get noFood => "Žádné jídlo pro tento den"; + + @override + String get notOfficial => + "Toto není oficiální aplikace k ovládání iCanteen. Autor neručí za ztráty nebo nefunkčnost v souvislosti s používáním této aplikace. Tato zpráva se znovu neukáže."; + + @override + String get ok => "OK"; + + @override + String get order => "Objednat"; + + @override + String get orderSuccess => "Jídlo bylo úspěšně objednáno"; + + @override + String get ordered => "Objednáno"; + + @override + String get ordering => "Objednávám..."; + + @override + String get password => "Heslo"; + + @override + String get pullToReload => "Potáhněte zvrchu pro načtení"; + + @override + String get rememberMe => "Zapamatovat si mě"; + + @override + String get reportBugs => "Nahlásit chybu"; + + @override + String get saturday => "Sobota"; + + @override + String get saveOffline => "Ukládat jídelníček na dnešní den offline"; + + @override + String get settings => "Nastavení"; + + @override + String get signOut => "Odhlásit se"; + + @override + String get sunday => "Neděle"; + + @override + String get thursday => "Čtvrtek"; + + @override + String get tuesday => "Úterý"; + + @override + String get username => "Uživatelské jméno"; + + @override + String get verifyExchange => "Opravdu chcete vložit jídlo na burzu?"; + + @override + String get wednesday => "Středa"; + + @override + String get yes => "Ano"; +} diff --git a/lib/main.dart b/lib/main.dart index 47e7eb8..d395983 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,10 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:opencanteen/lang/lang_cz.dart'; import 'package:opencanteen/loginmanager.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:canteenlib/canteenlib.dart'; +import 'lang/lang.dart'; +import 'lang/lang_en.dart'; import 'okna/jidelnicek.dart'; /* @@ -22,7 +25,7 @@ Copyright (C) 2022 Matyáš Caras a přispěvatelé You should have received a copy of the GNU General Public License along with this program. If not, see . - */ +*/ void main() { runApp(const MyApp()); @@ -36,8 +39,11 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, - localizationsDelegates: GlobalMaterialLocalizations.delegates, - supportedLocales: const [Locale("cs")], + localizationsDelegates: const [ + AppLocalizationsDelegate(), + ...GlobalMaterialLocalizations.delegates + ], + supportedLocales: const [Locale("cs"), Locale("en")], title: 'OpenCanteen', theme: ThemeData( primarySwatch: Colors.purple, @@ -259,3 +265,25 @@ class _LoginPageState extends State { )); } } + +class AppLocalizationsDelegate extends LocalizationsDelegate { + const AppLocalizationsDelegate(); + + @override + bool isSupported(Locale locale) => ['cs', 'en'].contains(locale.languageCode); + + @override + Future load(Locale locale) => _load(locale); + + static Future _load(Locale locale) async { + switch (locale.languageCode) { + case 'cs': + return LanguageCz(); + default: + return LanguageEn(); + } + } + + @override + bool shouldReload(LocalizationsDelegate old) => false; +}