added localizations for content

This commit is contained in:
2024-12-18 18:41:37 +01:00
parent 0d9118ab3e
commit a984fc15b0
3 changed files with 24 additions and 7 deletions

View File

@@ -25,7 +25,7 @@ class _LandingPageState extends State<LandingPage> {
void initState() { void initState() {
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async { WidgetsBinding.instance.addPostFrameCallback((_) async {
await ContentProvider.init(); await ContentProvider.init(context);
setState(() => loadingDone = true); setState(() => loadingDone = true);
}); });
} }

View File

@@ -1,21 +1,37 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:resume/constants.dart'; import 'package:resume/constants.dart';
class ContentProvider { class ContentProvider {
ContentProvider._(); ContentProvider._();
static const String _jsonPath = 'assets/content/content.json'; static const String _baseJsonPath = 'assets/content/content';
static Future<bool> init() async { static Future<bool> init(BuildContext context) async {
try { try {
String file = await rootBundle.loadString(_jsonPath); // Get the current locale
_content = json.decode(file); final String currentLocale = Localizations.localeOf(context).languageCode;
// Construct the path with the locale
final String localizedPath = '${_baseJsonPath}_$currentLocale.json';
// Try to load the localized version first
try {
String file = await rootBundle.loadString(localizedPath);
_content = json.decode(file);
return true;
} catch (e) {
// If localized version fails, fall back to default English
String file = await rootBundle.loadString('${_baseJsonPath}_de.json');
_content = json.decode(file);
return true;
}
} catch (e) { } catch (e) {
print('Error loading content: $e');
return false; return false;
} }
return true;
} }
static Map<String, dynamic> _content = { static Map<String, dynamic> _content = {

View File

@@ -27,7 +27,8 @@ flutter:
uses-material-design: true uses-material-design: true
assets: assets:
- assets/content/content.json - assets/content/content_de.json
- assets/content/content_en.json
- assets/profile.jpg - assets/profile.jpg
- assets/de_icon.png - assets/de_icon.png
- assets/gb_icon.png - assets/gb_icon.png