#960 option to force using western arabic numerals for dates

This commit is contained in:
Thibault Deckers 2024-04-21 18:59:08 +02:00
parent 569aef5f9f
commit 94eccbd2f1
8 changed files with 118 additions and 38 deletions

View file

@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file.
### Added
- Cataloguing: identify Apple variant of HDR images
- option to force using western arabic numerals for dates
### Changed

View file

@ -933,6 +933,7 @@
"settingsCoordinateFormatDialogTitle": "Coordinate Format",
"settingsUnitSystemTile": "Units",
"settingsUnitSystemDialogTitle": "Units",
"settingsForceWesternArabicNumeralsTile": "Force Arabic numerals",
"settingsScreenSaverPageTitle": "Screen Saver",

View file

@ -79,6 +79,10 @@ mixin AppSettings on SettingsAccess {
return _appliedLocale!;
}
bool get forceWesternArabicNumerals => getBool(SettingKeys.forceWesternArabicNumeralsKey) ?? false;
set forceWesternArabicNumerals(bool newValue) => set(SettingKeys.forceWesternArabicNumeralsKey, newValue);
int get catalogTimeZoneRawOffsetMillis => getInt(SettingKeys.catalogTimeZoneRawOffsetMillisKey) ?? 0;
set catalogTimeZoneRawOffsetMillis(int newValue) => set(SettingKeys.catalogTimeZoneRawOffsetMillisKey, newValue);

View file

@ -375,6 +375,7 @@ class Settings with ChangeNotifier, SettingsAccess, AppSettings, DisplaySettings
}
case SettingKeys.isInstalledAppAccessAllowedKey:
case SettingKeys.isErrorReportingAllowedKey:
case SettingKeys.forceWesternArabicNumeralsKey:
case SettingKeys.enableDynamicColorKey:
case SettingKeys.enableBlurEffectKey:
case SettingKeys.enableBottomNavigationBarKey:

View file

@ -161,7 +161,6 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
final ValueNotifier<PageTransitionsBuilder> _pageTransitionsBuilderNotifier = ValueNotifier(defaultPageTransitionsBuilder);
final ValueNotifier<TvMediaQueryModifier?> _tvMediaQueryModifierNotifier = ValueNotifier(null);
final ValueNotifier<AppMode> _appModeNotifier = ValueNotifier(AppMode.main);
final ValueNotifier<LocaleOverrides> _localeOverridesNotifier = ValueNotifier(LocaleOverrides.none);
// observers are not registered when using the same list object with different items
// the list itself needs to be reassigned
@ -221,7 +220,6 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
Provider<TvRailController>.value(value: _tvRailController),
DurationsProvider(),
HighlightInfoProvider(),
ListenableProvider<ValueNotifier<LocaleOverrides>>.value(value: _localeOverridesNotifier),
],
child: OverlaySupport(
child: FutureBuilder<void>(
@ -429,15 +427,10 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
countrifiedLocale = WidgetsBinding.instance.platformDispatcher.locales.firstWhereOrNull((v) => v.languageCode == languageCode);
}
if (appliedLocale.languageCode == 'ar') {
final useNativeDigits = shouldUseNativeDigits(countrifiedLocale);
final useNativeDigits = !settings.forceWesternArabicNumerals && shouldUseNativeDigits(countrifiedLocale);
DateFormat.useNativeDigitsByDefaultFor(appliedLocale.toString(), useNativeDigits);
DateFormat.useNativeDigitsByDefaultFor(countrifiedLocale.toString(), useNativeDigits);
}
_localeOverridesNotifier.value = LocaleOverrides(
countrifiedLocale: countrifiedLocale,
);
}
Widget _getFirstPage({Map? intentData}) => settings.hasAcceptedTerms ? HomePage(intentData: intentData) : const WelcomePage();
@ -574,7 +567,7 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
final settingStream = settings.updateStream;
// app
settingStream.where((event) => event.key == SettingKeys.isInstalledAppAccessAllowedKey).listen((_) => _applyIsInstalledAppAccessAllowed());
settingStream.where((event) => event.key == SettingKeys.localeKey).listen((_) => _applyLocale());
settingStream.where((event) => event.key == SettingKeys.localeKey || event.key == SettingKeys.forceWesternArabicNumeralsKey).listen((_) => _applyLocale());
// display
settingStream.where((event) => event.key == SettingKeys.displayRefreshRateModeKey).listen((_) => _applyDisplayRefreshRateMode());
settingStream.where((event) => event.key == SettingKeys.maxBrightnessKey).listen((_) => _applyMaxBrightness());
@ -654,18 +647,3 @@ class AvesScrollBehavior extends MaterialScrollBehavior {
}
typedef TvMediaQueryModifier = MediaQueryData Function(MediaQueryData);
class LocaleOverrides extends Equatable {
final Locale? countrifiedLocale;
@override
List<Object?> get props => [countrifiedLocale];
const LocaleOverrides({
required this.countrifiedLocale,
});
static const LocaleOverrides none = LocaleOverrides(
countrifiedLocale: null,
);
}

View file

@ -33,6 +33,7 @@ class LanguageSection extends SettingsSection {
SettingsTileLanguageLocale(),
SettingsTileLanguageCoordinateFormat(),
SettingsTileLanguageUnitSystem(),
SettingsTileLanguageNumerals(),
];
}
@ -74,3 +75,15 @@ class SettingsTileLanguageUnitSystem extends SettingsTile {
dialogTitle: context.l10n.settingsUnitSystemDialogTitle,
);
}
class SettingsTileLanguageNumerals extends SettingsTile {
@override
String title(BuildContext context) => context.l10n.settingsForceWesternArabicNumeralsTile;
@override
Widget build(BuildContext context) => SettingsSwitchListTile(
selector: (context, s) => s.forceWesternArabicNumerals,
onChanged: (v) => settings.forceWesternArabicNumerals = v,
title: title(context),
);
}

View file

@ -20,6 +20,7 @@ class SettingKeys {
static const isInstalledAppAccessAllowedKey = 'is_installed_app_access_allowed';
static const isErrorReportingAllowedKey = 'is_crashlytics_enabled';
static const localeKey = 'locale';
static const forceWesternArabicNumeralsKey = 'force_western_arabic_numerals';
static const catalogTimeZoneRawOffsetMillisKey = 'catalog_time_zone_raw_offset_millis';
static const tileExtentPrefixKey = 'tile_extent_';
static const tileLayoutPrefixKey = 'tile_layout_';

View file

@ -1,4 +1,12 @@
{
"ar": [
"settingsForceWesternArabicNumeralsTile"
],
"be": [
"settingsForceWesternArabicNumeralsTile"
],
"bn": [
"itemCount",
"columnCount",
@ -593,6 +601,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -667,7 +676,8 @@
"stopTooltip",
"videoActionABRepeat",
"videoRepeatActionSetStart",
"videoRepeatActionSetEnd"
"videoRepeatActionSetEnd",
"settingsForceWesternArabicNumeralsTile"
],
"ckb": [
@ -1143,6 +1153,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -1220,7 +1231,8 @@
"videoRepeatActionSetEnd",
"collectionActionSetHome",
"setHomeCustomCollection",
"settingsThumbnailShowHdrIcon"
"settingsThumbnailShowHdrIcon",
"settingsForceWesternArabicNumeralsTile"
],
"da": [
@ -1842,6 +1854,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -1916,7 +1929,8 @@
"stopTooltip",
"videoActionABRepeat",
"videoRepeatActionSetStart",
"videoRepeatActionSetEnd"
"videoRepeatActionSetEnd",
"settingsForceWesternArabicNumeralsTile"
],
"el": [
@ -1937,14 +1951,20 @@
"collectionActionSetHome",
"setHomeCustomCollection",
"settingsThumbnailShowHdrIcon",
"settingsViewerShowHistogram"
"settingsViewerShowHistogram",
"settingsForceWesternArabicNumeralsTile"
],
"es": [
"settingsForceWesternArabicNumeralsTile"
],
"eu": [
"stopTooltip",
"videoActionABRepeat",
"videoRepeatActionSetStart",
"videoRepeatActionSetEnd"
"videoRepeatActionSetEnd",
"settingsForceWesternArabicNumeralsTile"
],
"fa": [
@ -2320,6 +2340,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -2866,6 +2887,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -2936,6 +2958,10 @@
"filePickerUseThisFolder"
],
"fr": [
"settingsForceWesternArabicNumeralsTile"
],
"gl": [
"columnCount",
"saveCopyButtonLabel",
@ -3423,6 +3449,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -4108,6 +4135,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -4759,6 +4787,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -4829,11 +4858,20 @@
"filePickerUseThisFolder"
],
"hu": [
"settingsForceWesternArabicNumeralsTile"
],
"id": [
"settingsForceWesternArabicNumeralsTile"
],
"is": [
"stopTooltip",
"videoActionABRepeat",
"videoRepeatActionSetStart",
"videoRepeatActionSetEnd"
"videoRepeatActionSetEnd",
"settingsForceWesternArabicNumeralsTile"
],
"it": [
@ -4843,7 +4881,8 @@
"videoRepeatActionSetEnd",
"collectionActionSetHome",
"setHomeCustomCollection",
"settingsThumbnailShowHdrIcon"
"settingsThumbnailShowHdrIcon",
"settingsForceWesternArabicNumeralsTile"
],
"ja": [
@ -4899,6 +4938,7 @@
"settingsDisablingBinWarningDialogMessage",
"settingsAccessibilityShowPinchGestureAlternatives",
"settingsDisplayUseTvInterface",
"settingsForceWesternArabicNumeralsTile",
"settingsWidgetDisplayedItem",
"statsTopStatesSectionTitle",
"tagEditorDiscardDialogMessage"
@ -5492,6 +5532,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -5562,6 +5603,10 @@
"filePickerUseThisFolder"
],
"ko": [
"settingsForceWesternArabicNumeralsTile"
],
"lt": [
"columnCount",
"saveCopyButtonLabel",
@ -5654,6 +5699,7 @@
"settingsDisablingBinWarningDialogMessage",
"settingsAccessibilityShowPinchGestureAlternatives",
"settingsDisplayUseTvInterface",
"settingsForceWesternArabicNumeralsTile",
"statsTopStatesSectionTitle",
"tagEditorDiscardDialogMessage",
"tagPlaceholderState"
@ -6278,6 +6324,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -6397,6 +6444,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -6494,6 +6542,7 @@
"settingsCollectionBurstPatternsTile",
"settingsCollectionBurstPatternsNone",
"settingsViewerShowHistogram",
"settingsForceWesternArabicNumeralsTile",
"statsTopStatesSectionTitle"
],
@ -6585,6 +6634,7 @@
"settingsDisablingBinWarningDialogMessage",
"settingsAccessibilityShowPinchGestureAlternatives",
"settingsDisplayUseTvInterface",
"settingsForceWesternArabicNumeralsTile",
"settingsWidgetDisplayedItem",
"statsTopStatesSectionTitle",
"tagEditorDiscardDialogMessage"
@ -6632,6 +6682,7 @@
"settingsHiddenFiltersEmpty",
"settingsRemoveAnimationsTile",
"settingsRemoveAnimationsDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsWidgetOpenPage",
"viewerInfoSearchSuggestionDimensions",
"wallpaperUseScrollEffect"
@ -7183,6 +7234,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -7253,11 +7305,24 @@
"filePickerUseThisFolder"
],
"pl": [
"settingsForceWesternArabicNumeralsTile"
],
"pt": [
"settingsForceWesternArabicNumeralsTile"
],
"ro": [
"stopTooltip",
"videoActionABRepeat",
"videoRepeatActionSetStart",
"videoRepeatActionSetEnd"
"videoRepeatActionSetEnd",
"settingsForceWesternArabicNumeralsTile"
],
"ru": [
"settingsForceWesternArabicNumeralsTile"
],
"sat": [
@ -7877,6 +7942,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -7951,7 +8017,8 @@
"stopTooltip",
"videoActionABRepeat",
"videoRepeatActionSetStart",
"videoRepeatActionSetEnd"
"videoRepeatActionSetEnd",
"settingsForceWesternArabicNumeralsTile"
],
"sl": [
@ -8569,6 +8636,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -8881,6 +8949,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -9289,6 +9358,7 @@
"settingsCoordinateFormatDialogTitle",
"settingsUnitSystemTile",
"settingsUnitSystemDialogTitle",
"settingsForceWesternArabicNumeralsTile",
"settingsScreenSaverPageTitle",
"settingsWidgetPageTitle",
"settingsWidgetShowOutline",
@ -9359,24 +9429,35 @@
"filePickerUseThisFolder"
],
"tr": [
"settingsForceWesternArabicNumeralsTile"
],
"uk": [
"settingsForceWesternArabicNumeralsTile"
],
"vi": [
"stopTooltip",
"videoActionABRepeat",
"videoRepeatActionSetStart",
"videoRepeatActionSetEnd"
"videoRepeatActionSetEnd",
"settingsForceWesternArabicNumeralsTile"
],
"zh": [
"stopTooltip",
"videoActionABRepeat",
"videoRepeatActionSetStart",
"videoRepeatActionSetEnd"
"videoRepeatActionSetEnd",
"settingsForceWesternArabicNumeralsTile"
],
"zh_Hant": [
"stopTooltip",
"videoActionABRepeat",
"videoRepeatActionSetStart",
"videoRepeatActionSetEnd"
"videoRepeatActionSetEnd",
"settingsForceWesternArabicNumeralsTile"
]
}