56 lines
1.9 KiB
Dart
56 lines
1.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:lamiter/l10n/l10n.dart';
|
|
import 'package:pinyin/pinyin.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
class LanguageProvider extends ChangeNotifier {
|
|
Locale _locale = L10n.locales.first;
|
|
Locale get locale => _locale;
|
|
|
|
LanguageProvider() {
|
|
loadLanguage();
|
|
}
|
|
|
|
// 初始化語言設定
|
|
Future<void> loadLanguage() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
String? languageCode = prefs.getString('languageCode');
|
|
String? countryCode = prefs.getString('countryCode');
|
|
if (languageCode != null && countryCode != null) {
|
|
_locale = Locale(languageCode, countryCode);
|
|
}
|
|
notifyListeners();
|
|
}
|
|
|
|
// 設定語言
|
|
Future<void> setLocale(Locale value) async {
|
|
if (!L10n.locales.contains(value)) return;
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.setString('languageCode', value.languageCode);
|
|
await prefs.setString('countryCode', value.countryCode ?? '');
|
|
_locale = value;
|
|
notifyListeners();
|
|
}
|
|
|
|
String getLocaleString(String string) {
|
|
ChineseHelper.addTradToSimpMap({'週': '周'});
|
|
ChineseHelper.addSimpToTradMap({'周': '週'});
|
|
ChineseHelper.addTradToSimpMap({'菸': '烟'});
|
|
ChineseHelper.addSimpToTradMap({'烟': '菸'});
|
|
ChineseHelper.addTradToSimpMap({'複': '复'});
|
|
ChineseHelper.addSimpToTradMap({'复': '複'});
|
|
ChineseHelper.addTradToSimpMap({'製': '制'});
|
|
ChineseHelper.addSimpToTradMap({'制': '製'});
|
|
ChineseHelper.addTradToSimpMap({'酸': '酸'});
|
|
ChineseHelper.addSimpToTradMap({'酸': '酸'});
|
|
ChineseHelper.addTradToSimpMap({'乾': '干'});
|
|
ChineseHelper.addSimpToTradMap({'干': '乾'});
|
|
if (_locale == const Locale('zh', 'TW')) {
|
|
return ChineseHelper.convertToTraditionalChinese(string);
|
|
} else if (_locale == const Locale('zh')) {
|
|
return ChineseHelper.convertToSimplifiedChinese(string);
|
|
}
|
|
return string;
|
|
}
|
|
}
|