feat(i18n): add Hungarian and Traditional Chinese locales

Complete and revise every shipped locale against the current English source, preserve locale-specific plurals, and map script-specific Chinese locales through device, Intl, duration, and Plex boundaries.

Co-authored-by: emgeje <mgj@mgj.hu>

Co-authored-by: junyou1998 <junyou1998@gmail.com>
This commit is contained in:
edde746
2026-07-24 07:30:43 +02:00
co-authored by emgeje junyou1998
parent 0c6dab01b3
commit ad7ef112fc
50 changed files with 19973 additions and 9320 deletions
+6 -3
View File
@@ -8,6 +8,7 @@ import 'package:flutter/services.dart';
import '../models/hotkey_model.dart';
import 'image_cache_service.dart';
import 'package:plezy/utils/app_logger.dart';
import '../i18n/app_locale_utils.dart';
import '../i18n/strings.g.dart';
import '../models/mpv_config_models.dart';
import '../models/external_player_models.dart';
@@ -149,19 +150,21 @@ class _EpisodePosterModePref extends EnumPref<EpisodePosterMode> {
}
}
/// Stored as the language code; null/empty falls back to the device locale.
/// Stored as the locale enum name; null/empty falls back to the device locale.
class _AppLocalePref extends Pref<AppLocale> {
const _AppLocalePref() : super('app_locale');
@override
AppLocale readFrom(BaseSharedPreferencesService svc) {
final code = svc.prefs.getString(key);
if (code == null || code.isEmpty) return AppLocaleUtils.findDeviceLocale();
if (code == null || code.isEmpty) {
return resolvePreferredAppLocale(PlatformDispatcher.instance.locales);
}
return AppLocale.values.asNameMap()[code] ?? AppLocale.en;
}
@override
Future<void> writeTo(BaseSharedPreferencesService svc, AppLocale value) => svc.writeString(key, value.languageCode);
Future<void> writeTo(BaseSharedPreferencesService svc, AppLocale value) => svc.writeString(key, value.name);
}
/// Mobile-only with a macOS-disabled-by-default rule; forced off on TV and non-mobile platforms.