Merge branch 'language_branch' into 'main'
language See merge request brausjonas/mensaapp!11
This commit is contained in:
+51
-25
@@ -1,12 +1,17 @@
|
|||||||
|
import 'dart:ffi';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:google_nav_bar/google_nav_bar.dart';
|
import 'package:google_nav_bar/google_nav_bar.dart';
|
||||||
import 'package:mensaapp/providers/ambienteProvider.dart';
|
import 'package:mensaapp/providers/ambienteProvider.dart';
|
||||||
import 'package:mensaapp/providers/anmerkungProvider.dart';
|
import 'package:mensaapp/providers/anmerkungProvider.dart';
|
||||||
import 'package:mensaapp/providers/essenProvider.dart';
|
import 'package:mensaapp/providers/essenProvider.dart';
|
||||||
|
import 'package:mensaapp/providers/languageProvider.dart';
|
||||||
import 'package:mensaapp/providers/pageProvider.dart';
|
import 'package:mensaapp/providers/pageProvider.dart';
|
||||||
import 'package:mensaapp/providers/serviceProvider.dart';
|
import 'package:mensaapp/providers/serviceProvider.dart';
|
||||||
import 'package:mensaapp/providers/spezielleErnaehrungProvider.dart';
|
import 'package:mensaapp/providers/spezielleErnaehrungProvider.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'package:flutter/services.dart' show rootBundle;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
runApp(const MyApp());
|
runApp(const MyApp());
|
||||||
@@ -37,6 +42,9 @@ class MyApp extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
ChangeNotifierProvider(
|
ChangeNotifierProvider(
|
||||||
create: (context) => SpezielleErnaehrungProvider(),
|
create: (context) => SpezielleErnaehrungProvider(),
|
||||||
|
),
|
||||||
|
ChangeNotifierProvider(
|
||||||
|
create: (context) => LanguageProvider(),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
child: MaterialApp(
|
child: MaterialApp(
|
||||||
@@ -71,15 +79,15 @@ class MyHome extends StatelessWidget {
|
|||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius: BorderRadius.circular(20),
|
borderRadius: BorderRadius.circular(20),
|
||||||
),
|
),
|
||||||
title: const Text("Bewertungen löschen"),
|
title: Text(Provider.of<LanguageProvider>(context, listen: false).languageData[Provider.of<LanguageProvider>(context, listen: false).language]["floating"]["delete"]["title"]),
|
||||||
content: const Text("Möchtest du alle Eingaben entfernen?",
|
content: Text(Provider.of<LanguageProvider>(context, listen: false).languageData[Provider.of<LanguageProvider>(context, listen: false).language]["floating"]["delete"]["info"],
|
||||||
style: TextStyle(fontSize: 18),),
|
style: TextStyle(fontSize: 18),),
|
||||||
actions: [
|
actions: [
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
},
|
},
|
||||||
child: Text("Behalten"),
|
child: Text(Provider.of<LanguageProvider>(context, listen: false).languageData[Provider.of<LanguageProvider>(context, listen: false).language]["floating"]["delete"]["keep"]),
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: Theme.of(context).colorScheme.secondary
|
backgroundColor: Theme.of(context).colorScheme.secondary
|
||||||
),
|
),
|
||||||
@@ -96,7 +104,7 @@ class MyHome extends StatelessWidget {
|
|||||||
// Hier Aktion für Löschen ausführen
|
// Hier Aktion für Löschen ausführen
|
||||||
Navigator.of(context).pop(); // Dialog schließen
|
Navigator.of(context).pop(); // Dialog schließen
|
||||||
},
|
},
|
||||||
child: Text("Löschen"),
|
child: Text(Provider.of<LanguageProvider>(context, listen: false).languageData[Provider.of<LanguageProvider>(context, listen: false).language]["floating"]["delete"]["del"]),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -142,36 +150,54 @@ class MyHome extends StatelessWidget {
|
|||||||
backgroundColor: Theme.of(context).colorScheme.primary,
|
backgroundColor: Theme.of(context).colorScheme.primary,
|
||||||
actions: [
|
actions: [
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Image.asset(
|
icon: Opacity(
|
||||||
'assets/flags/de.png',
|
opacity: Provider.of<LanguageProvider>(context).language == "de"
|
||||||
width: 34,
|
? 1.0 // Voll sichtbar
|
||||||
height: 24,
|
: 0.4, // Halb durchsichtig
|
||||||
fit: BoxFit.cover,
|
child: Image.asset(
|
||||||
), // Erster Button rechts
|
'assets/flags/de.png',
|
||||||
|
width: 34,
|
||||||
|
height: 24,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
),
|
||||||
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
// Aktion für diesen Button
|
Provider.of<LanguageProvider>(context, listen: false)
|
||||||
|
.setLanguage("de");
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Image.asset(
|
icon: Opacity(
|
||||||
'assets/flags/fr.png',
|
opacity: Provider.of<LanguageProvider>(context).language == "en"
|
||||||
width: 34,
|
? 1.0 // Voll sichtbar
|
||||||
height: 24,
|
: 0.4, // Halb durchsichtig
|
||||||
fit: BoxFit.cover,
|
child: Image.asset(
|
||||||
), // Zweiter Button rechts
|
'assets/flags/en.png',
|
||||||
|
width: 34,
|
||||||
|
height: 24,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
),
|
||||||
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
// Aktion für diesen Button
|
Provider.of<LanguageProvider>(context, listen: false)
|
||||||
|
.setLanguage("en");
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Image.asset(
|
icon: Opacity(
|
||||||
'assets/flags/en.png',
|
opacity: Provider.of<LanguageProvider>(context).language == "fr"
|
||||||
width: 34,
|
? 1.0 // Voll sichtbar
|
||||||
height: 24,
|
: 0.4, // Halb durchsichtig
|
||||||
fit: BoxFit.cover,
|
child: Image.asset(
|
||||||
), // Dritter Button rechts
|
'assets/flags/fr.png',
|
||||||
|
width: 34,
|
||||||
|
height: 24,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
),
|
||||||
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
// Aktion für diesen Button
|
Provider.of<LanguageProvider>(context, listen: false)
|
||||||
|
.setLanguage("fr");
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -0,0 +1,169 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
|
class LanguageProvider extends ChangeNotifier {
|
||||||
|
Map<String, dynamic> languageData = {
|
||||||
|
"de":
|
||||||
|
{
|
||||||
|
"pageAmbiente":
|
||||||
|
{
|
||||||
|
"question1": "Frage1",
|
||||||
|
"question2": "Frage2",
|
||||||
|
"textfield": "Dein Feedback"
|
||||||
|
},
|
||||||
|
"pageAnmerkungen":
|
||||||
|
{
|
||||||
|
"question1": "Frage1",
|
||||||
|
"question2": "Frage2",
|
||||||
|
"textfield": "Dein Feedback"
|
||||||
|
},
|
||||||
|
"pageEssen":
|
||||||
|
{
|
||||||
|
"question1": "Geschmack",
|
||||||
|
"question2": "Qualität",
|
||||||
|
"textfield": "Dein Feedback"
|
||||||
|
},
|
||||||
|
"pageHome":
|
||||||
|
{
|
||||||
|
|
||||||
|
},
|
||||||
|
"pageService":
|
||||||
|
{
|
||||||
|
"question1": "Frage1",
|
||||||
|
"question2": "Frage2",
|
||||||
|
"textfield": "Dein Feedback"
|
||||||
|
},
|
||||||
|
"pageSpecial":
|
||||||
|
{
|
||||||
|
"question1": "Frage1",
|
||||||
|
"question2": "Frage2",
|
||||||
|
"textfield": "Dein Feedback"
|
||||||
|
},
|
||||||
|
"navBar":
|
||||||
|
{
|
||||||
|
"symbol1": "Essen",
|
||||||
|
"symbol2": "Ambiente",
|
||||||
|
"symbol3": "Service",
|
||||||
|
"symbol4": "Anmerkungen",
|
||||||
|
"symbol5": "Spezielle Ernährung"
|
||||||
|
},
|
||||||
|
"floating":
|
||||||
|
{
|
||||||
|
"info": "* Pflichtfeld",
|
||||||
|
"return": "Absenden",
|
||||||
|
"delete":
|
||||||
|
{
|
||||||
|
"title": "Bewertungen löschen",
|
||||||
|
"info": "Möchtest du alle Eingaben entfernen?",
|
||||||
|
"keep": "Behalten",
|
||||||
|
"del": "Löschen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"en":
|
||||||
|
{
|
||||||
|
"pageAmbiente": {
|
||||||
|
"question1": "Question1",
|
||||||
|
"question2": "Question2",
|
||||||
|
"textfield": "Your Feedback"
|
||||||
|
},
|
||||||
|
"pageAnmerkungen": {
|
||||||
|
"question1": "Question1",
|
||||||
|
"question2": "Question2",
|
||||||
|
"textfield": "Your Feedback"
|
||||||
|
},
|
||||||
|
"pageEssen": {
|
||||||
|
"question1": "Taste",
|
||||||
|
"question2": "Quality",
|
||||||
|
"textfield": "Your Feedback"
|
||||||
|
},
|
||||||
|
"pageHome": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"pageService": {
|
||||||
|
"question1": "Question1",
|
||||||
|
"question2": "Question2",
|
||||||
|
"textfield": "Your Feedback"
|
||||||
|
},
|
||||||
|
"pageSpecial": {
|
||||||
|
"question1": "Question1",
|
||||||
|
"question2": "Question2",
|
||||||
|
"textfield": "Your Feedback"
|
||||||
|
},
|
||||||
|
"navBar": {
|
||||||
|
"symbol1": "Food",
|
||||||
|
"symbol2": "Ambience",
|
||||||
|
"symbol3": "Service",
|
||||||
|
"symbol4": "Remarks",
|
||||||
|
"symbol5": "Special Diet"
|
||||||
|
},
|
||||||
|
"floating": {
|
||||||
|
"info": "* Required field",
|
||||||
|
"return": "Submit",
|
||||||
|
"delete":
|
||||||
|
{
|
||||||
|
"title": "Delete Reviews",
|
||||||
|
"info": "Do you want to remove all entries?",
|
||||||
|
"keep": "Keep",
|
||||||
|
"del": "Delete"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fr":
|
||||||
|
{
|
||||||
|
"pageAmbiente": {
|
||||||
|
"question1": "Question1",
|
||||||
|
"question2": "Question2",
|
||||||
|
"textfield": "Votre avis"
|
||||||
|
},
|
||||||
|
"pageAnmerkungen": {
|
||||||
|
"question1": "Question1",
|
||||||
|
"question2": "Question2",
|
||||||
|
"textfield": "Votre avis"
|
||||||
|
},
|
||||||
|
"pageEssen": {
|
||||||
|
"question1": "Goût",
|
||||||
|
"question2": "Qualité",
|
||||||
|
"textfield": "Votre avis"
|
||||||
|
},
|
||||||
|
"pageHome": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"pageService": {
|
||||||
|
"question1": "Question1",
|
||||||
|
"question2": "Question2",
|
||||||
|
"textfield": "Votre avis"
|
||||||
|
},
|
||||||
|
"pageSpecial": {
|
||||||
|
"question1": "Question1",
|
||||||
|
"question2": "Question2",
|
||||||
|
"textfield": "Votre avis"
|
||||||
|
},
|
||||||
|
"navBar": {
|
||||||
|
"symbol1": "Nourriture",
|
||||||
|
"symbol2": "Ambiance",
|
||||||
|
"symbol3": "Service",
|
||||||
|
"symbol4": "Remarques",
|
||||||
|
"symbol5": "Régime spécial"
|
||||||
|
},
|
||||||
|
"floating": {
|
||||||
|
"info": "* Champ obligatoire",
|
||||||
|
"return": "Envoyer",
|
||||||
|
"delete": {
|
||||||
|
"title": "Supprimer les avis",
|
||||||
|
"info": "Voulez-vous supprimer toutes les entrées ?",
|
||||||
|
"keep": "Garder",
|
||||||
|
"del": "Supprimer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
String language = "de";
|
||||||
|
|
||||||
|
void setLanguage(String newLanguage) {
|
||||||
|
language = newLanguage;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user