From a83e479031c1ed31984a918ac3ab0ba27b824ee0 Mon Sep 17 00:00:00 2001 From: Youssef Mohamed Hedefa <78417605+youssefhedefa@users.noreply.github.com> Date: Thu, 1 Jan 2026 09:46:36 +0200 Subject: [PATCH 1/4] Add Arabic (AR) Egypt localization support to date picker --- .../Flutter/ephemeral/flutter_lldb_helper.py | 32 ++++++++++++ .../ios/Flutter/ephemeral/flutter_lldbinit | 5 ++ lib/date_picker.dart | 3 ++ lib/i18n/date_picker_i18n.dart | 8 ++- lib/i18n/string_ar_eg.dart | 52 +++++++++++++++++++ 5 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 example/ios/Flutter/ephemeral/flutter_lldb_helper.py create mode 100644 example/ios/Flutter/ephemeral/flutter_lldbinit create mode 100644 lib/i18n/string_ar_eg.dart diff --git a/example/ios/Flutter/ephemeral/flutter_lldb_helper.py b/example/ios/Flutter/ephemeral/flutter_lldb_helper.py new file mode 100644 index 0000000..a88caf9 --- /dev/null +++ b/example/ios/Flutter/ephemeral/flutter_lldb_helper.py @@ -0,0 +1,32 @@ +# +# Generated file, do not edit. +# + +import lldb + +def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict): + """Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages.""" + base = frame.register["x0"].GetValueAsAddress() + page_len = frame.register["x1"].GetValueAsUnsigned() + + # Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the + # first page to see if handled it correctly. This makes diagnosing + # misconfiguration (e.g. missing breakpoint) easier. + data = bytearray(page_len) + data[0:8] = b'IHELPED!' + + error = lldb.SBError() + frame.GetThread().GetProcess().WriteMemory(base, data, error) + if not error.Success(): + print(f'Failed to write into {base}[+{page_len}]', error) + return + +def __lldb_init_module(debugger: lldb.SBDebugger, _): + target = debugger.GetDummyTarget() + # Caveat: must use BreakpointCreateByRegEx here and not + # BreakpointCreateByName. For some reasons callback function does not + # get carried over from dummy target for the later. + bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$") + bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__)) + bp.SetAutoContinue(True) + print("-- LLDB integration loaded --") diff --git a/example/ios/Flutter/ephemeral/flutter_lldbinit b/example/ios/Flutter/ephemeral/flutter_lldbinit new file mode 100644 index 0000000..e3ba6fb --- /dev/null +++ b/example/ios/Flutter/ephemeral/flutter_lldbinit @@ -0,0 +1,5 @@ +# +# Generated file, do not edit. +# + +command script import --relative-to-command-file flutter_lldb_helper.py diff --git a/lib/date_picker.dart b/lib/date_picker.dart index b66312d..fc28a22 100644 --- a/lib/date_picker.dart +++ b/lib/date_picker.dart @@ -20,6 +20,9 @@ class DatePicker { /// languageCode: [languageCode] Locale's String language code static DateTimePickerLocale localeFromString(String languageCode) { switch (languageCode) { + + case 'ar_EG': + return DateTimePickerLocale.ar_EG; case 'zh': return DateTimePickerLocale.zh_cn; diff --git a/lib/i18n/date_picker_i18n.dart b/lib/i18n/date_picker_i18n.dart index 8eee631..026ef9a 100644 --- a/lib/i18n/date_picker_i18n.dart +++ b/lib/i18n/date_picker_i18n.dart @@ -1,5 +1,7 @@ import 'dart:math'; +part 'string_ar_eg.dart'; + part 'strings_ar.dart'; part 'strings_bn.dart'; @@ -74,6 +76,9 @@ abstract class _StringsI18n { } enum DateTimePickerLocale { + /// Arabic (AR) Egypt + ar_EG, + /// English (EN) United States en_us, @@ -226,7 +231,8 @@ class DatePickerI18n { if (weeks.isNotEmpty) { return weeks; } - return datePickerI18n[DATETIME_PICKER_LOCALE_DEFAULT]!.getWeeksFull(); + return datePickerI18n[DATETIME_PICKER_LOCALE_DEFAULT]! + .getWeeksFull(); } List? weeks = i18n!.getWeeksShort(); diff --git a/lib/i18n/string_ar_eg.dart b/lib/i18n/string_ar_eg.dart new file mode 100644 index 0000000..bb0128c --- /dev/null +++ b/lib/i18n/string_ar_eg.dart @@ -0,0 +1,52 @@ +part of 'date_picker_i18n.dart'; + +/// Arabic (AR) +class _StringsArEg extends _StringsI18n { + const _StringsArEg(); + + @override + String getCancelText() { + return 'ألغاء'; + } + + @override + String getDoneText() { + return 'تم'; + } + + @override + List getMonths() { + return [ + "يناير", + "فبراير", + "مارس", + "أبريل", + "مايو", + "يونيو", + "يوليو", + "أغسطس", + "سبتمبر", + "أكتوبر", + "نوفمبر", + "ديسمبر", + ]; + } + + @override + List getWeeksFull() { + return [ + "الأثنين", + "الثلاثاء", + "الأربعاء", + "الخميس", + "الجمعه", + "السبت", + "الأحد", + ]; + } + + @override + List? getWeeksShort() { + return null; + } +} From 6fc7531e9e9324f71d157ba9c333ced4d6550801 Mon Sep 17 00:00:00 2001 From: Youssef Mohamed Hedefa <78417605+youssefhedefa@users.noreply.github.com> Date: Thu, 1 Jan 2026 09:53:15 +0200 Subject: [PATCH 2/4] Add Arabic (AR) Egypt localization support to date picker --- lib/i18n/date_picker_i18n.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/i18n/date_picker_i18n.dart b/lib/i18n/date_picker_i18n.dart index 026ef9a..c8236e0 100644 --- a/lib/i18n/date_picker_i18n.dart +++ b/lib/i18n/date_picker_i18n.dart @@ -166,6 +166,7 @@ const DateTimePickerLocale DATETIME_PICKER_LOCALE_DEFAULT = DateTimePickerLocale.en_us; const Map datePickerI18n = { + DateTimePickerLocale.ar_EG: const _StringsArEg(), DateTimePickerLocale.en_us: const _StringsEnUs(), DateTimePickerLocale.zh_cn: const _StringsZhCn(), DateTimePickerLocale.pt_br: const _StringsPtBr(), From 34f71caffba05c79e5aef7d74fb0a071bcbca324 Mon Sep 17 00:00:00 2001 From: Youssef Mohamed Hedefa <78417605+youssefhedefa@users.noreply.github.com> Date: Thu, 1 Jan 2026 09:57:40 +0200 Subject: [PATCH 3/4] Set default date locale to Arabic (AR) Egypt --- lib/i18n/date_picker_i18n.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/i18n/date_picker_i18n.dart b/lib/i18n/date_picker_i18n.dart index c8236e0..025ee7a 100644 --- a/lib/i18n/date_picker_i18n.dart +++ b/lib/i18n/date_picker_i18n.dart @@ -163,7 +163,7 @@ enum DateTimePickerLocale { /// Default value of date locale const DateTimePickerLocale DATETIME_PICKER_LOCALE_DEFAULT = - DateTimePickerLocale.en_us; + DateTimePickerLocale.ar_EG; const Map datePickerI18n = { DateTimePickerLocale.ar_EG: const _StringsArEg(), From 52e2c85522b6778c7cc6201948d7f8e788778a05 Mon Sep 17 00:00:00 2001 From: Youssef Mohamed Hedefa <78417605+youssefhedefa@users.noreply.github.com> Date: Thu, 1 Jan 2026 10:24:57 +0200 Subject: [PATCH 4/4] Change default date locale from Arabic (AR) Egypt to English (US) --- lib/i18n/date_picker_i18n.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/i18n/date_picker_i18n.dart b/lib/i18n/date_picker_i18n.dart index 025ee7a..c8236e0 100644 --- a/lib/i18n/date_picker_i18n.dart +++ b/lib/i18n/date_picker_i18n.dart @@ -163,7 +163,7 @@ enum DateTimePickerLocale { /// Default value of date locale const DateTimePickerLocale DATETIME_PICKER_LOCALE_DEFAULT = - DateTimePickerLocale.ar_EG; + DateTimePickerLocale.en_us; const Map datePickerI18n = { DateTimePickerLocale.ar_EG: const _StringsArEg(),