Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
161 changes: 161 additions & 0 deletions pkgs/intl/lib/date_symbol_data_local.dart
Original file line number Diff line number Diff line change
Expand Up @@ -954,6 +954,167 @@ Map<String, DateSymbols> dateTimeSymbolMap() => {
FIRSTDAYOFWEEK: 5,
WEEKENDRANGE: const [4, 5],
FIRSTWEEKCUTOFFDAY: 4),
// Date/time formatting symbols for locale ar_TN.
"ar_TN": new DateSymbols(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

According to the Effective Dart style guide, the new keyword is unnecessary and should be avoided.1 Please remove it.

      "ar_TN": DateSymbols(

Style Guide References

Footnotes

  1. Effective Dart recommends avoiding the new keyword for constructors.

NAME: "ar_TN",
ERAS: const ['ق.م', 'م'],
ERANAMES: const ['قبل الميلاد', 'ميلادي'],
NARROWMONTHS: const [
'ج',
'ف',
'م',
'أ',
'م',
'ج',
'ج',
'أ',
'س',
'أ',
'ن',
'د'
],
STANDALONENARROWMONTHS: const [
'ج',
'ف',
'م',
'أ',
'م',
'ج',
'ج',
'أ',
'س',
'أ',
'ن',
'د'
],
MONTHS: const [
'جانفي',
'فيفري',
'مارس',
'أفريل',
'ماي',
'جوان',
'جويلية',
'أوت',
'سبتمبر',
'أكتوبر',
'نوفمبر',
'ديسمبر'
],
STANDALONEMONTHS: const [
'جانفي',
'فيفري',
'مارس',
'أفريل',
'ماي',
'جوان',
'جويلية',
'أوت',
'سبتمبر',
'أكتوبر',
'نوفمبر',
'ديسمبر'
],
SHORTMONTHS: const [
'جانفي',
'فيفري',
'مارس',
'أفريل',
'ماي',
'جوان',
'جويلية',
'أوت',
'سبتمبر',
'أكتوبر',
'نوفمبر',
'ديسمبر'
],
STANDALONESHORTMONTHS: const [
'جانفي',
'فيفري',
'مارس',
'أفريل',
'ماي',
'جوان',
'جويلية',
'أوت',
'سبتمبر',
'أكتوبر',
'نوفمبر',
'ديسمبر'
],
WEEKDAYS: const [
'الأحد',
'الاثنين',
'الثلاثاء',
'الأربعاء',
'الخميس',
'الجمعة',
'السبت'
],
STANDALONEWEEKDAYS: const [
'الأحد',
'الاثنين',
'الثلاثاء',
'الأربعاء',
'الخميس',
'الجمعة',
'السبت'
],
SHORTWEEKDAYS: const [
'الأحد',
'الاثنين',
'الثلاثاء',
'الأربعاء',
'الخميس',
'الجمعة',
'السبت'
],
STANDALONESHORTWEEKDAYS: const [
'الأحد',
'الاثنين',
'الثلاثاء',
'الأربعاء',
'الخميس',
'الجمعة',
'السبت'
],
NARROWWEEKDAYS: const ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
STANDALONENARROWWEEKDAYS: const ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
SHORTQUARTERS: const [
'الثلاثية الأولى',
'الثلاثية الثانية',
'الثلاثية الثالثة',
'الثلاثية الرابعة'
],
QUARTERS: const [
'الثلاثية الأولى',
'الثلاثية الثانية',
'الثلاثية الثالثة',
'الثلاثية الرابعة'
],
AMPMS: const ['ص', 'م'],
DATEFORMATS: const [
'EEEE، d MMMM y',
'd MMMM y',
'dd‏/MM‏/y',
'd‏/M‏/y'
],
TIMEFORMATS: const [
'h:mm:ss a zzzz',
'h:mm:ss a z',
'h:mm:ss a',
'h:mm a'
],
DATETIMEFORMATS: const [
'{1}، {0}',
'{1}، {0}',
'{1}، {0}',
'{1}، {0}'
],
FIRSTDAYOFWEEK: 5,
WEEKENDRANGE: const [4, 5],
FIRSTWEEKCUTOFFDAY: 4),
// Date/time formatting symbols for locale as.
"as": new DateSymbols(
NAME: "as",
Expand Down
48 changes: 48 additions & 0 deletions pkgs/intl/lib/date_time_patterns.dart
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,54 @@ Map<String, Map<String, String>> dateTimePatternMap() => {
'ZZZZ': 'ZZZZ' // ABBR_UTC_TZ
},

/// Extended set of localized date/time patterns for locale ar_TN.
'ar_TN': const {
'd': 'd', // DAY
'E': 'ccc', // ABBR_WEEKDAY
'EEEE': 'cccc', // WEEKDAY
'LLL': 'LLL', // ABBR_STANDALONE_MONTH
'LLLL': 'LLLL', // STANDALONE_MONTH
'M': 'L', // NUM_MONTH
'Md': 'd‏/M', // NUM_MONTH_DAY
'MEd': 'EEE، d‏/M', // NUM_MONTH_WEEKDAY_DAY
'MMM': 'LLL', // ABBR_MONTH
'MMMd': 'd MMM', // ABBR_MONTH_DAY
'MMMEd': 'EEE، d MMM', // ABBR_MONTH_WEEKDAY_DAY
'MMMM': 'LLLL', // MONTH
'MMMMd': 'd MMMM', // MONTH_DAY
'MMMMEEEEd': 'EEEE، d MMMM', // MONTH_WEEKDAY_DAY
'QQQ': 'QQQ', // ABBR_QUARTER
'QQQQ': 'QQQQ', // QUARTER
'y': 'y', // YEAR
'yM': 'M‏/y', // YEAR_NUM_MONTH
'yMd': 'd‏/M‏/y', // YEAR_NUM_MONTH_DAY
'yMEd': 'EEE، d‏/M‏/y', // YEAR_NUM_MONTH_WEEKDAY_DAY
'yMMM': 'MMM y', // YEAR_ABBR_MONTH
'yMMMd': 'd MMM y', // YEAR_ABBR_MONTH_DAY
'yMMMEd': 'EEE، d MMM y', // YEAR_ABBR_MONTH_WEEKDAY_DAY
'yMMMM': 'MMMM y', // YEAR_MONTH
'yMMMMd': 'd MMMM y', // YEAR_MONTH_DAY
'yMMMMEEEEd': 'EEEE، d MMMM y', // YEAR_MONTH_WEEKDAY_DAY
'yQQQ': 'QQQ y', // YEAR_ABBR_QUARTER
'yQQQQ': 'QQQQ y', // YEAR_QUARTER
'H': 'HH', // HOUR24
'Hm': 'HH:mm', // HOUR24_MINUTE
'Hms': 'HH:mm:ss', // HOUR24_MINUTE_SECOND
'j': 'h a', // HOUR
'jm': 'h:mm a', // HOUR_MINUTE
'jms': 'h:mm:ss a', // HOUR_MINUTE_SECOND
'jmv': 'h:mm a v', // HOUR_MINUTE_GENERIC_TZ
'jmz': 'h:mm a z', // HOUR_MINUTETZ
'jz': 'h a z', // HOURGENERIC_TZ
'm': 'm', // MINUTE
'ms': 'mm:ss', // MINUTE_SECOND
's': 's', // SECOND
'v': 'v', // ABBR_GENERIC_TZ
'z': 'z', // ABBR_SPECIFIC_TZ
'zzzz': 'zzzz', // SPECIFIC_TZ
'ZZZZ': 'ZZZZ' // ABBR_UTC_TZ
},

/// Extended set of localized date/time patterns for locale as.
'as': const {
'd': 'd', // DAY
Expand Down
19 changes: 19 additions & 0 deletions pkgs/intl/lib/number_symbols_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,25 @@ Map<String, NumberSymbols> numberFormatSymbols = <String, NumberSymbols>{
PERCENT_PATTERN: '#,##0%',
CURRENCY_PATTERN: '\u200F#,##0.00\u00A0\u00A4',
DEF_CURRENCY_CODE: 'EGP'),
// Number formatting symbols for locale ar_TN.
"ar_TN": new NumberSymbols(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The new keyword is unnecessary here and should be removed to follow Effective Dart style guidelines.1

  "ar_TN": NumberSymbols(

Style Guide References

Footnotes

  1. Effective Dart recommends avoiding the new keyword for constructors.

NAME: "ar_TN",
DECIMAL_SEP: ',',
GROUP_SEP: '.',
PERCENT: '\u200E%\u200E',
ZERO_DIGIT: '0',
PLUS_SIGN: '\u200E+',
MINUS_SIGN: '\u200E-',
EXP_SYMBOL: 'E',
PERMILL: '\u2030',
INFINITY: '\u221E',
NAN: '\u0644\u064A\u0633\u00A0\u0631\u0642\u0645\u064B\u0627',
DECIMAL_PATTERN: '#,##0.###',
SCIENTIFIC_PATTERN: '#E0',
PERCENT_PATTERN: '#,##0%',
CURRENCY_PATTERN:
'\u200F#,##0.000\u00A0\u00A4;\u200F-#,##0.000\u00A0\u00A4',
DEF_CURRENCY_CODE: 'DT'),

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The DEF_CURRENCY_CODE should be the ISO 4217 code. For the Tunisian Dinar, the correct code is TND, not DT.

      DEF_CURRENCY_CODE: 'TND'),

// Number formatting symbols for locale as.
"as": new NumberSymbols(
NAME: "as",
Expand Down
1 change: 1 addition & 0 deletions pkgs/intl/lib/src/data/dates/locale_list.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ final availableLocalesForDateFormatting = const [
'ar',
'ar_DZ',
'ar_EG',
'ar_TN',
'as',
'az',
'be',
Expand Down
1 change: 1 addition & 0 deletions pkgs/intl/lib/src/data/dates/patterns/ar_TN.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d‏/M","MEd":"EEE، d‏/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE، d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE، d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M‏/y","yMd":"d‏/M‏/y","yMEd":"EEE، d‏/M‏/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE، d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE، d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
1 change: 1 addition & 0 deletions pkgs/intl/lib/src/data/dates/symbols/ar_TN.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"NAME":"ar_TN","ERAS":["ق.م","م"],"ERANAMES":["قبل الميلاد","ميلادي"],"NARROWMONTHS":["ج","ف","م","أ","م","ج","ج","أ","س","أ","ن","د"],"STANDALONENARROWMONTHS":["ج","ف","م","أ","م","ج","ج","أ","س","أ","ن","د"],"MONTHS":["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"STANDALONEMONTHS":["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"SHORTMONTHS":["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"STANDALONESHORTMONTHS":["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"WEEKDAYS":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"STANDALONEWEEKDAYS":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"SHORTWEEKDAYS":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"STANDALONESHORTWEEKDAYS":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"NARROWWEEKDAYS":["ح","ن","ث","ر","خ","ج","س"],"STANDALONENARROWWEEKDAYS":["ح","ن","ث","ر","خ","ج","س"],"SHORTQUARTERS":["الثلاثية الأولى","الثلاثية الثانية","الثلاثية الثالثة","الثلاثية الرابعة"],"QUARTERS":["الثلاثية الأولى","الثلاثية الثانية","الثلاثية الثالثة","الثلاثية الرابعة"],"AMPMS":["ص","م"],"DATEFORMATS":["EEEE، d MMMM y","d MMMM y","dd‏/MM‏/y","d‏/M‏/y"],"TIMEFORMATS":["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],"AVAILABLEFORMATS":null,"FIRSTDAYOFWEEK":5,"WEEKENDRANGE":[4,5],"FIRSTWEEKCUTOFFDAY":4,"DATETIMEFORMATS":["{1}، {0}","{1}، {0}","{1}، {0}","{1}، {0}"]}
1 change: 1 addition & 0 deletions pkgs/intl/lib/src/plural_rules.dart
Original file line number Diff line number Diff line change
Expand Up @@ -501,6 +501,7 @@ final pluralRules = {
'ar': _ar_rule,
'ar_DZ': _ar_rule,
'ar_EG': _ar_rule,
'ar_TN': _ar_rule,
'as': _am_rule,
'az': _af_rule,
'be': _be_rule,
Expand Down
94 changes: 94 additions & 0 deletions pkgs/intl/test/compact_number_test_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,100 @@ Map<String, List<List<String>>> compactNumberTestData = {
["-9999.12", "؜-١٠ ألف", "؜-١٠ ألف"],
["-9999.99", "؜-١٠ ألف", "؜-١٠ ألف"],
],
"ar_TN": [
["1", "1", "1"],
["21", "21", "21"],
["321", "321", "321"],
["4321", "4,3 ألف", "4,3 ألف"],
["54321", "54 ألف", "54 ألف"],
["654321", "654 ألف", "654 ألف"],
["7654321", "7,7 مليون", "7,7 مليون"],
["87654321", "88 مليون", "88 مليون"],
["987654321", "988 مليون", "988 مليون"],
["1087654321", "1,1 مليار", "1,1 مليار"],
["11987654321", "12 مليار", "12 مليار"],
["129987654321", "130 مليار", "130 مليار"],
["1398987654321", "1,4 ترليون", "1,4 ترليون"],
["14987987654321", "15 ترليون", "15 ترليون"],
["159876987654321", "160 ترليون", "160 ترليون"],
["9", "9", "9"],
["99", "99", "99"],
["999", "999", "999"],
["9999", "10 ألف", "10 ألف"],
["99999", "100 ألف", "100 ألف"],
["999999", "1 مليون", "1 مليون"],
["9999999", "10 مليون", "10 ملايين"],
["99999999", "100 مليون", "100 مليون"],
["9994", "10 ألف", "10 ألف"],
["99944", "100 ألف", "100 ألف"],
["999444", "999 ألف", "999 ألف"],
["9994444", "10 مليون", "10 ملايين"],
["999444444", "999 مليون", "999 مليون"],
["9994444444", "10 مليار", "10 مليار"],
["1000000000000000", "1000 ترليون", "1000 ترليون"],
["10000000000000000", "10000 ترليون", "10000 ترليون"],
["0", "0", "0"],
["-1", "‎-1", "‎-1"],
["-2", "‎-2", "‎-2"],
["-3", "‎-3", "‎-3"],
["-1000", "‎-1 ألف", "‎-1 ألف"],
["-1001", "‎-1 ألف", "‎-1 ألف"],
["-1010", "‎-1 ألف", "‎-1 ألف"],
["-1100", "‎-1,1 ألف", "‎-1,1 ألف"],
["-2000", "‎-2 ألف", "‎-2 ألف"],
["-2001", "‎-2 ألف", "‎-2 ألف"],
["-2010", "‎-2 ألف", "‎-2 ألف"],
["-2100", "‎-2,1 ألف", "‎-2,1 ألف"],
["-9", "‎-9", "‎-9"],
["-99", "‎-99", "‎-99"],
["-999", "‎-999", "‎-999"],
["-9999", "‎-10 ألف", "‎-10 ألف"],
["-99999", "‎-100 ألف", "‎-100 ألف"],
["-999999", "‎-1 مليون", "‎-1 مليون"],
["-9999999", "‎-10 مليون", "‎-10 ملايين"],
["-9999999999999999", "‎-10000 ترليون", "‎-10000 ترليون"],
["1000", "1 ألف", "1 ألف"],
["1001", "1 ألف", "1 ألف"],
["1010", "1 ألف", "1 ألف"],
["1100", "1,1 ألف", "1,1 ألف"],
["2000", "2 ألف", "2 ألف"],
["2001", "2 ألف", "2 ألف"],
["2010", "2 ألف", "2 ألف"],
["2100", "2,1 ألف", "2,1 ألف"],
["3000", "3 آلاف", "3 آلاف"],
["3001", "3 آلاف", "3 آلاف"],
["3010", "3 آلاف", "3 آلاف"],
["3100", "3,1 ألف", "3,1 ألف"],
["4000", "4 آلاف", "4 آلاف"],
["4001", "4 آلاف", "4 آلاف"],
["4010", "4 آلاف", "4 آلاف"],
["4100", "4,1 ألف", "4,1 ألف"],
["5000", "5 آلاف", "5 آلاف"],
["5001", "5 آلاف", "5 آلاف"],
["5010", "5 آلاف", "5 آلاف"],
["5100", "5,1 ألف", "5,1 ألف"],
["0.001234", "0,0012", "0,0012"],
["0.01234", "0,012", "0,012"],
["0.1234", "0,12", "0,12"],
["0.99", "0,99", "0,99"],
["0.999", "1", "1"],
["9.12", "9,1", "9,1"],
["9.99", "10", "10"],
["99.12", "99", "99"],
["99.99", "100", "100"],
["999.12", "999", "999"],
["999.99", "1 ألف", "1 ألف"],
["9999.12", "10 ألف", "10 ألف"],
["9999.99", "10 ألف", "10 ألف"],
["-0.12", "‎-0,12", "‎-0,12"],
["-0.99", "‎-0,99", "‎-0,99"],
["-9.12", "‎-9,1", "‎-9,1"],
["-9.99", "‎-10", "‎-10"],
["-999.12", "‎-999", "‎-999"],
["-999.99", "‎-1 ألف", "‎-1 ألف"],
["-9999.12", "‎-10 ألف", "‎-10 ألف"],
["-9999.99", "‎-10 ألف", "‎-10 ألف"],
],
Comment on lines +494 to +587

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

These tests for ar_TN compact number formatting are a great addition. However, the corresponding compact number symbols for ar_TN are missing from the compactNumberSymbols map in pkgs/intl/lib/number_symbols_data.dart. Without this, the tests will fall back to the ar locale, which may not have the correct Tunisian-specific formats. Please add an entry for ar_TN to the compactNumberSymbols map.

"as": [
["1", "১", "১"],
["21", "২১", "২১"],
Expand Down
7 changes: 7 additions & 0 deletions pkgs/intl/test/number_test_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,13 @@ List<String> numberTestData = const [
r"١٢٬٣٠٠٪؜",
r"؜-١٬٢٣٠٪؜",
r"١٢٣٬٤٥٦٬٧٨٩٬٠٠٠٪؜",
"ar_TN",
r"123",
r"‎-12,3",
r"1.234.567.890",
r"12.300‎%‎",
r"‎-1.230‎%‎",
r"123.456.789.000‎%‎",
"as",
r"১২৩",
r"-১২.৩",
Expand Down