This commit is contained in:
Phuoc Nguyen
2025-10-10 16:38:07 +07:00
parent e5b247d622
commit b94c158004
177 changed files with 25080 additions and 152 deletions

View File

@@ -0,0 +1,46 @@
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'settings_provider.dart';
part 'language_provider.g.dart';
/// Language/locale provider
/// Extracts language from settings for easy access
@riverpod
String appLanguage(Ref ref) {
final settingsAsync = ref.watch(settingsProvider);
return settingsAsync.when(
data: (settings) => settings.language,
loading: () => 'en',
error: (_, __) => 'en',
);
}
/// Supported languages provider
@riverpod
List<LanguageOption> supportedLanguages(Ref ref) {
return const [
LanguageOption(code: 'en', name: 'English', nativeName: 'English'),
LanguageOption(code: 'es', name: 'Spanish', nativeName: 'Español'),
LanguageOption(code: 'fr', name: 'French', nativeName: 'Français'),
LanguageOption(code: 'de', name: 'German', nativeName: 'Deutsch'),
LanguageOption(code: 'it', name: 'Italian', nativeName: 'Italiano'),
LanguageOption(code: 'pt', name: 'Portuguese', nativeName: 'Português'),
LanguageOption(code: 'zh', name: 'Chinese', nativeName: '中文'),
LanguageOption(code: 'ja', name: 'Japanese', nativeName: '日本語'),
LanguageOption(code: 'ko', name: 'Korean', nativeName: '한국어'),
LanguageOption(code: 'ar', name: 'Arabic', nativeName: 'العربية'),
];
}
/// Language option model
class LanguageOption {
final String code;
final String name;
final String nativeName;
const LanguageOption({
required this.code,
required this.name,
required this.nativeName,
});
}