diff --git a/app/CHANGELOG.md b/app/CHANGELOG.md
index 23b363bd7..028805995 100644
--- a/app/CHANGELOG.md
+++ b/app/CHANGELOG.md
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased](https://github.com/Orange-OpenSource/ouds-flutter/compare/1.1.2...develop)
### Added
+- [DemoApp][Library] Add french Language ([#638](https://github.com/Orange-OpenSource/ouds-flutter/issues/638))
+- [DemoApp][Library] Update the components definitions where relevant ([#549](https://github.com/Orange-OpenSource/ouds-flutter/issues/549))
- [Library] Manage Helvetica Neue Arabic font ([#404](https://github.com/Orange-OpenSource/ouds-flutter/issues/404))
### Changed
diff --git a/app/android/app/src/main/res/xml/locale_config.xml b/app/android/app/src/main/res/xml/locale_config.xml
index d3b984bfc..54cdf0209 100644
--- a/app/android/app/src/main/res/xml/locale_config.xml
+++ b/app/android/app/src/main/res/xml/locale_config.xml
@@ -2,4 +2,5 @@
+
\ No newline at end of file
diff --git a/app/ios/Runner/Info.plist b/app/ios/Runner/Info.plist
index 702adab48..55119cf5d 100644
--- a/app/ios/Runner/Info.plist
+++ b/app/ios/Runner/Info.plist
@@ -6,6 +6,7 @@
en
ar
+ fr
CADisableMinimumFrameDurationOnPhone
diff --git a/app/lib/l10n/gen/ouds_flutter_app_localizations.dart b/app/lib/l10n/gen/ouds_flutter_app_localizations.dart
index 42284f1ba..2e6f97f1e 100644
--- a/app/lib/l10n/gen/ouds_flutter_app_localizations.dart
+++ b/app/lib/l10n/gen/ouds_flutter_app_localizations.dart
@@ -10,6 +10,7 @@ import 'package:intl/intl.dart' as intl;
import 'ouds_flutter_app_localizations_ar.dart';
import 'ouds_flutter_app_localizations_en.dart';
+import 'ouds_flutter_app_localizations_fr.dart';
// ignore_for_file: type=lint
@@ -98,7 +99,8 @@ abstract class AppLocalizations {
/// A list of this localizations delegate's supported locales.
static const List supportedLocales = [
Locale('ar'),
- Locale('en')
+ Locale('en'),
+ Locale('fr')
];
/// No description provided for @app_name.
@@ -530,7 +532,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_button_description_text.
///
/// In en, this message translates to:
- /// **'Buttons allow users to make choices or perform an action. They have multiple styles for various needs.'**
+ /// **'Button is a UI element that triggers an action or event, and is used to initiate tasks or confirming an action.'**
String get app_components_button_description_text;
/// No description provided for @app_components_button_fullWidth_label.
@@ -548,7 +550,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_checkbox_description_text.
///
/// In en, this message translates to:
- /// **'Checkboxes allows users to select one or multiple options from a list, toggle settings on or off, or confirm an action.'**
+ /// **'Checkbox is a UI element that allows to select multiple options from a set of mutually non exclusive choices.'**
String get app_components_checkbox_description_text;
/// No description provided for @app_components_checkbox_checkbox_label.
@@ -608,7 +610,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_divider_description_text.
///
/// In en, this message translates to:
- /// **'A divider visually structures an interface by clearly separating content sections. It helps to improve readability and content organization without introducing a strong hierarchy like a heading or a container would.'**
+ /// **'Divider is a UI element that allows to structure the content by visually separating the content zones.'**
String get app_components_divider_description_text;
/// No description provided for @app_components_divider_horizontalDivider_label.
@@ -632,7 +634,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_radioButton_description_text.
///
/// In en, this message translates to:
- /// **'A radio button allows users to select a single option from a set of mutually exclusive choices, typically displayed as a circular input with a label that becomes filled when selected.'**
+ /// **'Radio button is a UI element that allows to select a single option from a set of mutually exclusive choices.'**
String get app_components_radioButton_description_text;
/// No description provided for @app_components_radioButton_radioButton_label.
@@ -668,7 +670,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_switch_description_text.
///
/// In en, this message translates to:
- /// **'A switch allows the user to toggle between two states, typically on and off. It is often represented as a button or a slider that changes position or color to indicate the current state. Switches are used to enable or disable features, options, or settings in an intuitive and visual manner.'**
+ /// **'Switch is a UI element that allows to toggle between two states, typically “On” and “Off”, and used to enable or disable features, options or settings.'**
String get app_components_switch_description_text;
/// No description provided for @app_components_switch_switchItem_label.
@@ -692,7 +694,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_badge_description_text.
///
/// In en, this message translates to:
- /// **'The Badge is a small UI element used to highlight status, notifications, or categorization within an interface. It is often displayed as a label or indicator with a distinct background color and text.'**
+ /// **'Badge is a UI element that emphasizes system notifications, status, or the categorization of an information, throughout colour only.'**
String get app_components_badge_description_text;
/// No description provided for @app_components_badge_type_label.
@@ -770,7 +772,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_chip_description_text.
///
/// In en, this message translates to:
- /// **'Chips help people enter information, make selections, filter content, or trigger actions.'**
+ /// **'Chip helps people enter information, make selections, filter content, or trigger actions.'**
String get app_components_chip_description_text;
/// No description provided for @app_components_suggestionChip_label.
@@ -782,7 +784,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_chip_suggestionChip_description_text.
///
/// In en, this message translates to:
- /// **'A suggestion chip is a compact UI element used to present recommended or predictive options based on user input or context. Often found in search bars, forms, or messaging interfaces, suggestion chips help users quickly select from relevant suggestions. They are typically non-selected by default and can be tapped or clicked to apply the suggestion, streamlining user input and enhancing usability.'**
+ /// **'Suggestion chip is a UI element that allows to present recommended or predictive options based on user’s input or context, and is commonly used to capture filtering decisions.'**
String get app_components_chip_suggestionChip_description_text;
/// No description provided for @app_components_filterChip_label.
@@ -794,7 +796,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_chip_filterChip_description_text.
///
/// In en, this message translates to:
- /// **'A filter chip is a compact UI element used in a design system to represent a filter option that can be selected or deselected by the user. Filter chips allow users to refine content or data by applying one or more filters in a visually accessible and interactive way.'**
+ /// **'Filter chip is a UI element that allows to select or deselect an option within a series, and is commonly used to capture filtering decisions.'**
String get app_components_chip_filterChip_description_text;
/// No description provided for @app_components_tag_label.
@@ -812,7 +814,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_tag_description_text.
///
/// In en, this message translates to:
- /// **'A tag is a small element that shows short info like a label, keyword, or category.It helps users quickly find, group, or understand content.'**
+ /// **'Tag is a UI element that displays short information such as a label, a keyword or a category.'**
String get app_components_tag_description_text;
/// No description provided for @app_components_tag_inputTag_label.
@@ -824,7 +826,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_inputTag_description_text.
///
/// In en, this message translates to:
- /// **'An Input tag is a component that allows users to enter multiple values, each represented as a tag. As users type and submit values (usually by pressing enter, comma, or tab), each value is transformed into a Tag.'**
+ /// **'Input tag is a UI element that allows to render an inputed value as a Tag, in order to display short information such as a label, a keyword or a category.'**
String get app_components_inputTag_description_text;
/// No description provided for @app_components_tag_textAndBulletLayout_label.
@@ -842,7 +844,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_textInput_description_text.
///
/// In en, this message translates to:
- /// **'A Text Input is a user interface component that allows users to enter, edit, or select single-line textual data. It\'s one of the most fundamental form elements used to capture user input such as names, emails, passwords, or search queries.'**
+ /// **'Text input is a UI element that allows to type, edit, or select single line of textual data, such as names, emails or search queries.'**
String get app_components_textInput_description_text;
/// No description provided for @app_components_textInput_leadingIcon_label.
@@ -902,7 +904,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_phoneNumberInput_description_text.
///
/// In en, this message translates to:
- /// **'A Phone Number Input is a form field specifically designed to capture and validate telephone numbers, often in international format. It typically integrates a country selector, allowing users to choose their country and automatically apply the corresponding dialing code (such as +33 for France).'**
+ /// **'Phone number Input is a UI element that allows to capture and validate telephone numbers, in international format.'**
String get app_components_phoneNumberInput_description_text;
/// No description provided for @app_components_phoneNumberInput_country_selector_label.
@@ -932,7 +934,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_link_description_text.
///
/// In en, this message translates to:
- /// **'Links direct users to other resources or sections, whether internal (within the same application) or external (to a website or document).'**
+ /// **'Link is a UI element that allows to navigate from one location to another, either within the same page or across different pages in the same resource, or to an external resource.'**
String get app_components_link_description_text;
/// No description provided for @app_components_link_backLayout_label.
@@ -956,7 +958,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_passwordInput_description_text.
///
/// In en, this message translates to:
- /// **'A password input is a form field specifically designed to securely capture a user’s confidential password. It masks the characters as they are typed, typically replacing them with dots, in order to protect the input from being read by others nearby. While the primary goal is to enhance privacy and security, the field may also include usability features such as a show/hide password toggle and helper text to guide password creation.'**
+ /// **'Password input is a UI element that allows to securely and confidentially capture a user’s password.'**
String get app_components_passwordInput_description_text;
/// No description provided for @app_components_passwordInput_error_label.
@@ -980,7 +982,7 @@ abstract class AppLocalizations {
/// No description provided for @app_components_pinCodeInput_description_text.
///
/// In en, this message translates to:
- /// **'A PIN code input is a specialized form field used to capture short, fixed-length numeric codes, typically for authentication or confirmation purposes, such as a 4, 6 or 8-digit personal identification number (PIN).'**
+ /// **'PIN code input is a UI element that allows to capture short, fixed-length numeric codes, typically for authentication or confirmation purposes, such as a four, six or height-digit personal identification number (PIN).'**
String get app_components_pinCodeInput_description_text;
/// No description provided for @app_components_pinCodeInput_helperText_description_text_4.
@@ -1151,7 +1153,7 @@ class _AppLocalizationsDelegate
@override
bool isSupported(Locale locale) =>
- ['ar', 'en'].contains(locale.languageCode);
+ ['ar', 'en', 'fr'].contains(locale.languageCode);
@override
bool shouldReload(_AppLocalizationsDelegate old) => false;
@@ -1164,6 +1166,8 @@ AppLocalizations lookupAppLocalizations(Locale locale) {
return AppLocalizationsAr();
case 'en':
return AppLocalizationsEn();
+ case 'fr':
+ return AppLocalizationsFr();
}
throw FlutterError(
diff --git a/app/lib/l10n/gen/ouds_flutter_app_localizations_ar.dart b/app/lib/l10n/gen/ouds_flutter_app_localizations_ar.dart
index 058b97767..dab13612c 100644
--- a/app/lib/l10n/gen/ouds_flutter_app_localizations_ar.dart
+++ b/app/lib/l10n/gen/ouds_flutter_app_localizations_ar.dart
@@ -234,7 +234,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_button_description_text =>
- 'تسمح Buttons للمستخدمين باتخاذ قرارات أو تنفيذ إجراءات. وتتوفر بأنماط متعددة لتلبية احتياجات مختلفة.';
+ 'Button هو عنصر واجهة مستخدم يُستخدم لتحفيز إجراء أو حدث، ويستخدم لبدء المهام أو تأكيد إجراء معين.';
@override
String get app_components_button_fullWidth_label => 'Full width';
@@ -244,7 +244,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_checkbox_description_text =>
- 'تتيح checkboxs للمستخدمين تحديد خيار واحد أو خيارات متعددة من القائمة، أو تشغيل الإعدادات أو إيقاف تشغيلها، أو تأكيد إجراء ما.';
+ 'Checkbox هو عنصر واجهة مستخدم يسمح باختيار خيارات متعددة من مجموعة من الخيارات غير الحصرية.';
@override
String get app_components_checkbox_checkbox_label => 'Checkbox';
@@ -277,7 +277,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_divider_description_text =>
- ' ينظم divider واجهة المستخدم بصريًا عن طريق فصل أقسام المحتوى بوضوح. يساعد على تحسين قابلية القراءة وتنظيم المحتوى دون إضافة تسلسل هرمي قوي كما في العناوين أو الحاويات.';
+ 'Divider هو عنصر واجهة مستخدم يسمح بتنظيم المحتوى عن طريق فصل مناطق المحتوى بصريًا';
@override
String get app_components_divider_horizontalDivider_label =>
@@ -291,7 +291,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_radioButton_description_text =>
- 'يسمح Radio button للمستخدمين بتحديد خيار واحد فقط من بين مجموعة من الخيارات المتبادلة الحصرية، ويُعرض عادةً كإدخال دائري يحتوي على تسمية يتم تعبئتها عند التحديد.';
+ 'Radio button هو عنصر واجهة مستخدم يسمح باختيار خيار واحد فقط من مجموعة من الخيارات المتعارضة.';
@override
String get app_components_radioButton_radioButton_label => 'Radio button';
@@ -312,7 +312,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_switch_description_text =>
- 'يتيح switch للمستخدم التبديل بين حالتين، عادةً تشغيل و إيقاف. يتم تمثيله غالبًا كزر أو شريط منزلق يتغير موقعه أو لونه للإشارة إلى الحالة الحالية. تُستخدم المفاتيح لتمكين أو تعطيل الميزات أو الخيارات أو الإعدادات بطريقة بصرية وفهمها بسهولة.';
+ 'Switch هو عنصر واجهة مستخدم يسمح بالتبديل بين حالتين، عادةً \"تشغيل\" و \"إيقاف\"، ويستخدم لتمكين أو تعطيل الميزات أو الخيارات أو الإعدادات.';
@override
String get app_components_switch_switchItem_label => 'Switch item';
@@ -325,7 +325,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_badge_description_text =>
- 'badge هي عنصر صغير في واجهة المستخدم يُستخدم لتسليط الضوء على الحالة أو الإشعارات أو التصنيف داخل الواجهة. غالبًا ما يتم عرضها كعلامة أو مؤشر بلون خلفية مميز ونص.';
+ 'Badge هي عنصر صغير في واجهة المستخدم يُستخدم لتسليط الضوء على الحالة أو الإشعارات أو التصنيف داخل الواجهة. غالبًا ما يتم عرضها كعلامة أو مؤشر بلون خلفية مميز ونص.';
@override
String get app_components_badge_type_label => 'Type';
@@ -372,14 +372,14 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_chip_suggestionChip_description_text =>
- 'Suggestion Chip هو مكون صغير في واجهة المستخدم يُستخدم لعرض خيارات مقترحة أو تنبؤية بناءً على إدخال المستخدم أو السياق. غالبًا ما يظهر في شريط البحث، النماذج، أو واجهات المحادثة، ويساعد المستخدمين على اختيار اقتراحات ذات صلة بسرعة. عادةً ما يكون غير محدد بشكل افتراضي، ويمكن النقر عليه لتطبيق الاقتراح، مما يُبسّط إدخال البيانات ويحسن من سهولة الاستخدام.';
+ 'Suggestion Chip هي عنصر واجهة مستخدم يسمح بعرض الخيارات الموصى بها أو التنبئية استنادًا إلى مدخلات المستخدم أو السياق، وتُستخدم عادةً لالتقاط قرارات التصفية.';
@override
String get app_components_filterChip_label => 'Filter Chip';
@override
String get app_components_chip_filterChip_description_text =>
- 'Filter Chip هو مكون صغير في واجهة المستخدم يُمثل خيار تصفية يمكن للمستخدم تحديده أو إلغاء تحديده. يُستخدم هذا النوع من العناصر لتصفية المحتوى أو البيانات بطريقة تفاعلية وبصرية، ويُساهم في تحسين تجربة المستخدم من خلال التحكم في عرض المعلومات.';
+ 'Filter Chip هي عنصر واجهة مستخدم يسمح باختيار أو إلغاء اختيار خيار ضمن سلسلة، وتُستخدم عادةً لالتقاط قرارات التصفية.';
@override
String get app_components_tag_label => 'Tag';
@@ -389,14 +389,14 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_tag_description_text =>
- 'Tag هو عنصر صغير يُستخدم لعرض معلومات قصيرة مثل تسمية أو كلمة مفتاحية أو تصنيف. يساعد المستخدمين على العثور على المحتوى بسرعة أو تجميعه أو فهمه.';
+ 'Tag هي عنصر واجهة مستخدم يعرض معلومات قصيرة مثل تسمية أو كلمة مفتاحية أو فئة';
@override
String get app_components_tag_inputTag_label => 'Input tag';
@override
String get app_components_inputTag_description_text =>
- 'Inpu Tag هو مكوّن يسمح للمستخدمين بإدخال عدة قيم، حيث يتم تمثيل كل قيمة كوسم. عند الكتابة والضغط على زر الإدخال (Enter) أو الفاصلة أو زر الجدولة (Tab)، يتم تحويل كل قيمة إلى وسم.';
+ 'Input tag هي عنصر واجهة مستخدم يسمح بعرض القيمة المدخلة كعلامة، لعرض معلومات قصيرة مثل تسمية، كلمة مفتاحية أو فئة';
@override
String get app_components_tag_textAndBulletLayout_label => 'Text + Bullet';
@@ -406,7 +406,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_textInput_description_text =>
- 'Text Input هو أحد مكونات واجهة المستخدم، ويُتيح للمستخدمين إدخال بيانات نصية أحادية السطر أو تحريرها أو تحديدها. وهو أحد أهم عناصر النموذج المستخدمة لتسجيل بيانات المستخدم، مثل الأسماء ورسائل البريد الإلكتروني وكلمات المرور واستعلامات البحث';
+ 'Text input هو عنصر واجهة مستخدم يسمح بكتابة أو تحرير أو اختيار سطر واحد من البيانات النصية، مثل الأسماء أو البريد الإلكتروني أو استعلامات البحث.';
@override
String get app_components_textInput_leadingIcon_label => 'Leading icon';
@@ -439,7 +439,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_phoneNumberInput_description_text =>
- 'Phone Number هو حقل نموذج مصمم خصيصًا لالتقاط أرقام الهواتف والتحقق منها، وغالبًا ما يكون بتنسيق دولي. عادةً ما يتضمن محددًا للدولة، مما يسمح للمستخدمين باختيار بلدهم وتطبيق رمز الاتصال المقابل تلقائيًا (مثل 33 لفرنسا).';
+ 'Phone Number Input هو عنصر واجهة مستخدم يسمح بالتقاط والتحقق من أرقام الهواتف، بصيغة دولية.';
@override
String get app_components_phoneNumberInput_country_selector_label =>
@@ -450,14 +450,14 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_phoneNumberInput_error_label =>
- 'The phone number can\'t be empty.';
+ 'لا يمكن أن يكون رقم الهاتف فارغًا.';
@override
String get app_components_link_label => 'Link';
@override
String get app_components_link_description_text =>
- 'تُستخدم links لتوجيه المستخدمين إلى موارد أو أقسام إضافية، سواء كانت داخلية (ضمن نفس التطبيق) أو خارجية (مثل موقع إلكتروني أو مستند).';
+ 'Link هو عنصر واجهة مستخدم يسمح بالتنقل من مكان إلى آخر، سواء داخل نفس الصفحة أو عبر صفحات مختلفة في نفس المورد، أو إلى مورد خارجي';
@override
String get app_components_link_backLayout_label => 'Back';
@@ -484,7 +484,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get app_components_pinCodeInput_description_text =>
- 'PIN Code Input هو حقل مخصص لإدخال رموز رقمية قصيرة وثابتة الطول، يُستخدم عادةً للمصادقة أو لتأكيد العمليات، مثل الرقم السري الشخصي المكوَّن من 4 أو 6 أو 8 أرقام.';
+ 'PIN Code Input هو عنصر واجهة مستخدم يسمح بالتقاط رموز رقمية قصيرة ذات طول ثابت، عادةً لأغراض المصادقة أو التأكيد، مثل رقم التعريف الشخصي (PIN) المكون من أربعة أو ستة أو ثمانية أرقام.';
@override
String get app_components_pinCodeInput_helperText_description_text_4 =>
diff --git a/app/lib/l10n/gen/ouds_flutter_app_localizations_en.dart b/app/lib/l10n/gen/ouds_flutter_app_localizations_en.dart
index dbf729e3d..c440e22a1 100644
--- a/app/lib/l10n/gen/ouds_flutter_app_localizations_en.dart
+++ b/app/lib/l10n/gen/ouds_flutter_app_localizations_en.dart
@@ -234,7 +234,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_button_description_text =>
- 'Buttons allow users to make choices or perform an action. They have multiple styles for various needs.';
+ 'Button is a UI element that triggers an action or event, and is used to initiate tasks or confirming an action.';
@override
String get app_components_button_fullWidth_label => 'Full width';
@@ -244,7 +244,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_checkbox_description_text =>
- 'Checkboxes allows users to select one or multiple options from a list, toggle settings on or off, or confirm an action.';
+ 'Checkbox is a UI element that allows to select multiple options from a set of mutually non exclusive choices.';
@override
String get app_components_checkbox_checkbox_label => 'Checkbox';
@@ -277,7 +277,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_divider_description_text =>
- 'A divider visually structures an interface by clearly separating content sections. It helps to improve readability and content organization without introducing a strong hierarchy like a heading or a container would.';
+ 'Divider is a UI element that allows to structure the content by visually separating the content zones.';
@override
String get app_components_divider_horizontalDivider_label =>
@@ -291,7 +291,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_radioButton_description_text =>
- 'A radio button allows users to select a single option from a set of mutually exclusive choices, typically displayed as a circular input with a label that becomes filled when selected.';
+ 'Radio button is a UI element that allows to select a single option from a set of mutually exclusive choices.';
@override
String get app_components_radioButton_radioButton_label => 'Radio button';
@@ -312,7 +312,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_switch_description_text =>
- 'A switch allows the user to toggle between two states, typically on and off. It is often represented as a button or a slider that changes position or color to indicate the current state. Switches are used to enable or disable features, options, or settings in an intuitive and visual manner.';
+ 'Switch is a UI element that allows to toggle between two states, typically “On” and “Off”, and used to enable or disable features, options or settings.';
@override
String get app_components_switch_switchItem_label => 'Switch item';
@@ -325,7 +325,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_badge_description_text =>
- 'The Badge is a small UI element used to highlight status, notifications, or categorization within an interface. It is often displayed as a label or indicator with a distinct background color and text.';
+ 'Badge is a UI element that emphasizes system notifications, status, or the categorization of an information, throughout colour only.';
@override
String get app_components_badge_type_label => 'Type';
@@ -365,21 +365,21 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_chip_description_text =>
- 'Chips help people enter information, make selections, filter content, or trigger actions.';
+ 'Chip helps people enter information, make selections, filter content, or trigger actions.';
@override
String get app_components_suggestionChip_label => 'Suggestion Chip';
@override
String get app_components_chip_suggestionChip_description_text =>
- 'A suggestion chip is a compact UI element used to present recommended or predictive options based on user input or context. Often found in search bars, forms, or messaging interfaces, suggestion chips help users quickly select from relevant suggestions. They are typically non-selected by default and can be tapped or clicked to apply the suggestion, streamlining user input and enhancing usability.';
+ 'Suggestion chip is a UI element that allows to present recommended or predictive options based on user’s input or context, and is commonly used to capture filtering decisions.';
@override
String get app_components_filterChip_label => 'Filter Chip';
@override
String get app_components_chip_filterChip_description_text =>
- 'A filter chip is a compact UI element used in a design system to represent a filter option that can be selected or deselected by the user. Filter chips allow users to refine content or data by applying one or more filters in a visually accessible and interactive way.';
+ 'Filter chip is a UI element that allows to select or deselect an option within a series, and is commonly used to capture filtering decisions.';
@override
String get app_components_tag_label => 'Tag';
@@ -389,14 +389,14 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_tag_description_text =>
- 'A tag is a small element that shows short info like a label, keyword, or category.It helps users quickly find, group, or understand content.';
+ 'Tag is a UI element that displays short information such as a label, a keyword or a category.';
@override
String get app_components_tag_inputTag_label => 'Input tag';
@override
String get app_components_inputTag_description_text =>
- 'An Input tag is a component that allows users to enter multiple values, each represented as a tag. As users type and submit values (usually by pressing enter, comma, or tab), each value is transformed into a Tag.';
+ 'Input tag is a UI element that allows to render an inputed value as a Tag, in order to display short information such as a label, a keyword or a category.';
@override
String get app_components_tag_textAndBulletLayout_label => 'Text + Bullet';
@@ -406,7 +406,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_textInput_description_text =>
- 'A Text Input is a user interface component that allows users to enter, edit, or select single-line textual data. It\'s one of the most fundamental form elements used to capture user input such as names, emails, passwords, or search queries.';
+ 'Text input is a UI element that allows to type, edit, or select single line of textual data, such as names, emails or search queries.';
@override
String get app_components_textInput_leadingIcon_label => 'Leading icon';
@@ -439,7 +439,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_phoneNumberInput_description_text =>
- 'A Phone Number Input is a form field specifically designed to capture and validate telephone numbers, often in international format. It typically integrates a country selector, allowing users to choose their country and automatically apply the corresponding dialing code (such as +33 for France).';
+ 'Phone number Input is a UI element that allows to capture and validate telephone numbers, in international format.';
@override
String get app_components_phoneNumberInput_country_selector_label =>
@@ -457,7 +457,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_link_description_text =>
- 'Links direct users to other resources or sections, whether internal (within the same application) or external (to a website or document).';
+ 'Link is a UI element that allows to navigate from one location to another, either within the same page or across different pages in the same resource, or to an external resource.';
@override
String get app_components_link_backLayout_label => 'Back';
@@ -470,7 +470,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_passwordInput_description_text =>
- 'A password input is a form field specifically designed to securely capture a user’s confidential password. It masks the characters as they are typed, typically replacing them with dots, in order to protect the input from being read by others nearby. While the primary goal is to enhance privacy and security, the field may also include usability features such as a show/hide password toggle and helper text to guide password creation.';
+ 'Password input is a UI element that allows to securely and confidentially capture a user’s password.';
@override
String get app_components_passwordInput_error_label =>
@@ -484,7 +484,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get app_components_pinCodeInput_description_text =>
- 'A PIN code input is a specialized form field used to capture short, fixed-length numeric codes, typically for authentication or confirmation purposes, such as a 4, 6 or 8-digit personal identification number (PIN).';
+ 'PIN code input is a UI element that allows to capture short, fixed-length numeric codes, typically for authentication or confirmation purposes, such as a four, six or height-digit personal identification number (PIN).';
@override
String get app_components_pinCodeInput_helperText_description_text_4 =>
diff --git a/app/lib/l10n/gen/ouds_flutter_app_localizations_fr.dart b/app/lib/l10n/gen/ouds_flutter_app_localizations_fr.dart
new file mode 100644
index 000000000..4a811cf2f
--- /dev/null
+++ b/app/lib/l10n/gen/ouds_flutter_app_localizations_fr.dart
@@ -0,0 +1,587 @@
+/// @nodoc
+library;
+
+// ignore: unused_import
+import 'package:intl/intl.dart' as intl;
+import 'ouds_flutter_app_localizations.dart';
+
+// ignore_for_file: type=lint
+
+/// The translations for French (`fr`).
+class AppLocalizationsFr extends AppLocalizations {
+ AppLocalizationsFr([String locale = 'fr']) : super(locale);
+
+ @override
+ String get app_name => 'DesignToolbox';
+
+ @override
+ String get app_common_back_a11y => 'Retour';
+
+ @override
+ String get app_common_copyCode_a11y => 'Copier le code';
+
+ @override
+ String get app_common_selected_a11y => 'Sélectionné';
+
+ @override
+ String get app_common_unselected_a11y => 'Non sélectionné';
+
+ @override
+ String get app_common_codeCopied_text => 'Code copié dans le presse-papiers';
+
+ @override
+ String get app_common_collapsed_a11y => 'Repliée';
+
+ @override
+ String get app_common_expanded_a11y => 'Dépliée';
+
+ @override
+ String get app_common_bottomSheetExpanded_a11y => 'Bottom sheet depliée';
+
+ @override
+ String get app_common_bottomSheetCollapsed_a11y => 'Bottom sheet repliée';
+
+ @override
+ String get app_common_customize_label => 'Paramétrer';
+
+ @override
+ String get app_common_enabled_label => 'Enabled';
+
+ @override
+ String get app_common_customizeChipList_a11y => 'Liste de puces';
+
+ @override
+ String get app_common_customizeChipsHint_a11y =>
+ 'Veuillez sélectionner une puce en naviguant parmi les options';
+
+ @override
+ String get app_common_selected_label => 'Selected';
+
+ @override
+ String get app_topBar_theme_button_a11y => 'Changer le thème';
+
+ @override
+ String get app_topBar_darkMode_button_a11y => 'Appliquer le mode sombre';
+
+ @override
+ String get app_topBar_lightMode_button_a11y => 'Appliquer le mode clair';
+
+ @override
+ String get app_topBar_systemMode_button_a11y => 'Appliquer le mode système';
+
+ @override
+ String get app_bottomBar_tokens_label => 'Tokens';
+
+ @override
+ String get app_bottomBar_components_label => 'Composants';
+
+ @override
+ String get app_bottomBar_about_label => 'À propos';
+
+ @override
+ String get app_tokens_viewCodeExample_label =>
+ 'Voir l\'exemple de code du token';
+
+ @override
+ String get app_tokens_color_label => 'Color';
+
+ @override
+ String get app_tokens_color_description_text =>
+ 'La couleur renforce notre identité de marque et garantit une expérience utilisateur cohérente sur tous nos produits. Les tokens sémantiques décrits ici sont ceux à utiliser lors du développement d\'une application mobile.';
+
+ @override
+ String get app_tokens_color_action_label => 'Action';
+
+ @override
+ String get app_tokens_color_always_label => 'Always';
+
+ @override
+ String get app_tokens_color_background_label => 'Background';
+
+ @override
+ String get app_tokens_color_border_label => 'Border';
+
+ @override
+ String get app_tokens_color_brand_label => 'Brand';
+
+ @override
+ String get app_tokens_color_content_label => 'Content';
+
+ @override
+ String get app_tokens_color_overlay_label => 'Overlay';
+
+ @override
+ String get app_tokens_color_repository_label => 'Repository';
+
+ @override
+ String get app_tokens_color_surface_label => 'Surface';
+
+ @override
+ String get app_tokens_elevation_label => 'Elevation';
+
+ @override
+ String get app_tokens_elevation_description_text =>
+ 'L\'élévation est utilisée pour donner une impression de distance entre les surfaces, ajoutant ainsi de la profondeur à nos designs.';
+
+ @override
+ String get app_tokens_opacity_label => 'Opacity';
+
+ @override
+ String get app_tokens_opacity_description_text =>
+ 'L\'opacité peut aider à distinguer les éléments en premier plan de ceux en arrière-plan, rendant le contenu plus lisible et les actions importantes plus visibles.';
+
+ @override
+ String get app_tokens_typography_label => 'Typography';
+
+ @override
+ String get app_tokens_typography_description_text =>
+ 'La typographie est notre système de polices et de styles de texte. Elle améliore la communication et renforce l\'identité de la marque.';
+
+ @override
+ String get app_tokens_border_label => 'Border';
+
+ @override
+ String get app_tokens_border_description_text =>
+ 'Les bordures servent à définir la couleur des traits dans les composants, ainsi que la couleur des lignes de séparation des composants tels que les tableaux.';
+
+ @override
+ String get app_tokens_border_width_label => 'Width';
+
+ @override
+ String get app_tokens_border_radius_label => 'Radius';
+
+ @override
+ String get app_tokens_border_style_label => 'Style';
+
+ @override
+ String get app_components_common_color_label => 'Color';
+
+ @override
+ String get app_components_common_error_label => 'Error';
+
+ @override
+ String get app_components_common_error_message => 'Error message';
+
+ @override
+ String get app_components_common_layout_label => 'Layout';
+
+ @override
+ String get app_components_common_textOnlyLayout_label => 'Text only';
+
+ @override
+ String get app_components_common_iconAndTextLayout_label => 'Text + Icon';
+
+ @override
+ String get app_components_common_label_label => 'Label';
+
+ @override
+ String get app_components_common_onColoredBackground_label =>
+ 'On colored background';
+
+ @override
+ String get app_components_common_status_label => 'Status';
+
+ @override
+ String get app_components_common_size_label => 'Size';
+
+ @override
+ String get app_components_common_textAndLoaderLayout_label => 'Text + Loader';
+
+ @override
+ String get app_components_common_roundedCorner_label => 'Rounded Corner';
+
+ @override
+ String get app_components_common_loader_label => 'Loader';
+
+ @override
+ String get app_components_common_iconOnlyLayout_label => 'Icon only';
+
+ @override
+ String get app_components_common_icon_a11y => 'Icon';
+
+ @override
+ String get app_components_common_readOnly_label => 'Read only';
+
+ @override
+ String get app_components_common_outlined_label => 'Outlined';
+
+ @override
+ String get app_components_common_placeholder_label => 'Placeholder';
+
+ @override
+ String get app_components_common_helperText_label => 'Helper text';
+
+ @override
+ String get app_components_common_appearance_label => 'Appearance';
+
+ @override
+ String get app_components_common_version_label => 'Component design version:';
+
+ @override
+ String get app_components_common_textInputClearIcon_a11y => 'Clear value';
+
+ @override
+ String get app_components_common_constrainedMaxWidth_label =>
+ 'Constrained max width';
+
+ @override
+ String get app_components_common_none_label => 'None';
+
+ @override
+ String get app_components_common_dot_label => 'Dot';
+
+ @override
+ String get app_components_button_label => 'Button';
+
+ @override
+ String get app_components_button_description_text =>
+ 'Un Button (ou bouton) est un élément d\'interface utilisateur qui déclenche une action ou un événement, et sert à lancer des tâches ou à confirmer une action.';
+
+ @override
+ String get app_components_button_fullWidth_label => 'Full width';
+
+ @override
+ String get app_components_checkbox_label => 'Checkbox';
+
+ @override
+ String get app_components_checkbox_description_text =>
+ 'Une Checkbox (ou case à cocher) est un élément d\'interface utilisateur qui permet de sélectionner plusieurs options parmi un ensemble de choix non exclusifs.';
+
+ @override
+ String get app_components_checkbox_checkbox_label => 'Checkbox';
+
+ @override
+ String get app_components_checkbox_checkboxItem_label => 'Checkbox item';
+
+ @override
+ String get app_components_checkbox_indeterminateCheckbox_label =>
+ 'Indeterminate checkbox';
+
+ @override
+ String get app_components_checkbox_indeterminateCheckboxItem_label =>
+ 'Indeterminate checkbox item';
+
+ @override
+ String get app_components_controlItem_description_label => 'Description';
+
+ @override
+ String get app_components_controlItem_icon_label => 'Icon';
+
+ @override
+ String get app_components_controlItem_divider_label => 'Divider';
+
+ @override
+ String get app_components_controlItem_reversed_label => 'Reversed';
+
+ @override
+ String get app_components_divider_label => 'Divider';
+
+ @override
+ String get app_components_divider_description_text =>
+ 'Un Divider (ou séparateur) est un élément d\'interface utilisateur qui permet de structurer le contenu en séparant visuellement les zones de contenu.';
+
+ @override
+ String get app_components_divider_horizontalDivider_label =>
+ 'Horizontal divider';
+
+ @override
+ String get app_components_divider_verticalDivider_label => 'Vertical divider';
+
+ @override
+ String get app_components_radioButton_label => 'Radio Button';
+
+ @override
+ String get app_components_radioButton_description_text =>
+ 'Un Radio button (ou bouton radio) est un élément d\'interface utilisateur qui permet de sélectionner une seule option parmi un ensemble de choix mutuellement exclusifs.';
+
+ @override
+ String get app_components_radioButton_radioButton_label => 'Radio button';
+
+ @override
+ String get app_components_radioButton_radioButtonItem_label =>
+ 'Radio Button Item';
+
+ @override
+ String get app_components_radioButton_radioButtonItem_extraLabel_label =>
+ 'Extra label';
+
+ @override
+ String get app_components_switch_label => 'Switch';
+
+ @override
+ String get app_components_switch_switch_label => 'Switch';
+
+ @override
+ String get app_components_switch_description_text =>
+ 'Un Switch (ou interrupteur) est un élément d\'interface utilisateur qui permet de basculer entre deux états, généralement « Marche » et « Arrêt », et qui sert à activer ou désactiver des fonctionnalités, des options ou des paramètres.';
+
+ @override
+ String get app_components_switch_switchItem_label => 'Switch item';
+
+ @override
+ String get app_components_switch_switch_a11y =>
+ 'Description du contenu de l\'interrupteur';
+
+ @override
+ String get app_components_badge_label => 'Badge';
+
+ @override
+ String get app_components_badge_description_text =>
+ 'Un Badge est un élément d\'interface utilisateur qui met en évidence les notifications système, l\'état ou la catégorisation d\'une information, uniquement par le biais de la couleur.';
+
+ @override
+ String get app_components_badge_type_label => 'Type';
+
+ @override
+ String get app_components_badge_standardType_label => 'Standard';
+
+ @override
+ String get app_components_badge_countType_label => 'Count';
+
+ @override
+ String get app_components_badge_iconType_label => 'Icon';
+
+ @override
+ String get app_components_badge_count_label => 'Count';
+
+ @override
+ String get app_components_badge_notification_label_a11y => 'Notification';
+
+ @override
+ String get app_components_badge_success_label_a11y => 'Succès';
+
+ @override
+ String get app_components_badge_important_label_a11y => 'Important';
+
+ @override
+ String get app_components_badge_info_label_a11y => 'Information';
+
+ @override
+ String get app_components_badge_warning_label_a11y => 'Avertissement';
+
+ @override
+ String get app_components_badge_negative_label_a11y => 'Erreur';
+
+ @override
+ String get app_components_chip_label => 'Chip';
+
+ @override
+ String get app_components_chip_description_text =>
+ 'Un Chip aide les utilisateurs à saisir des informations, faire des sélections, filtrer du contenu ou déclencher des actions.';
+
+ @override
+ String get app_components_suggestionChip_label => 'Suggestion Chip';
+
+ @override
+ String get app_components_chip_suggestionChip_description_text =>
+ 'Un suggestion chip est un petit élément d\'interface utilisé pour présenter des options recommandées ou prédictives basées sur la saisie ou le contexte de l\'utilisateur. Souvent trouvée dans les barres de recherche, formulaires ou interfaces de messagerie, elle aide l\'utilisateur à sélectionner rapidement parmi des suggestions pertinentes. Elle n\'est généralement pas sélectionnée par défaut et peut être tapée ou cliquée pour appliquer la suggestion, simplifiant la saisie et améliorant l\'utilisabilité.';
+
+ @override
+ String get app_components_filterChip_label => 'Filter Chip';
+
+ @override
+ String get app_components_chip_filterChip_description_text =>
+ 'Un filter chip est un petit élément d\'interface utilisé dans un système de conception pour représenter une option de filtre qui peut être sélectionnée ou désélectionnée par l\'utilisateur. Elle permet de préciser le contenu ou les données en appliquant un ou plusieurs filtres de manière visuelle et interactive.';
+
+ @override
+ String get app_components_tag_label => 'Tag';
+
+ @override
+ String get app_components_tag_tag_label => 'Tag';
+
+ @override
+ String get app_components_tag_description_text =>
+ 'Un Tag (ou étiquette) est un élément d\'interface utilisateur qui affiche de courtes informations telles qu\'un libellé, un mot-clé ou une catégorie.';
+
+ @override
+ String get app_components_tag_inputTag_label => 'Input tag';
+
+ @override
+ String get app_components_inputTag_description_text =>
+ 'Un Input Tag (ou étiquette de saisie) est un élément d\'interface utilisateur qui permettant de saisir plusieurs valeurs, chacune étant représentée par une étiquette. Lorsque l\'utilisateur saisit et valide des valeurs (généralement en appuyant sur Entrée, virgule ou tabulation), chaque valeur est transformée en une étiquette. Le champ de saisie est souvent utilisé pour ajouter des libellés, des catégories ou des participants.';
+
+ @override
+ String get app_components_tag_textAndBulletLayout_label => 'Text + Bullet';
+
+ @override
+ String get app_components_textInput_label => 'Text input';
+
+ @override
+ String get app_components_textInput_description_text =>
+ 'Un Text input (ou champ de saisie de texte) est un élément d\'interface utilisateur qui permet de saisir, de modifier ou de sélectionner une seule ligne de données textuelles, telles que des noms, des adresses électroniques ou des requêtes de recherche.';
+
+ @override
+ String get app_components_textInput_leadingIcon_label => 'Leading icon';
+
+ @override
+ String get app_components_textInput_trailingAction_label => 'Trailing action';
+
+ @override
+ String get app_components_textInput_prefix_label => 'Prefix';
+
+ @override
+ String get app_components_textInput_suffix_label => 'Suffix';
+
+ @override
+ String get app_components_textInput_error_label =>
+ 'This field can’t be empty.';
+
+ @override
+ String get app_components_textInput_trailingAction_a11y =>
+ 'Description du contenu de l\'action de fin';
+
+ @override
+ String get app_components_textInput_helperLink_label => 'Helper link';
+
+ @override
+ String get app_components_textInputHelperText_label => 'Helper Text';
+
+ @override
+ String get app_components_phoneNumberInput_label => 'Phone number input';
+
+ @override
+ String get app_components_phoneNumberInput_description_text =>
+ 'Un Phone Number (ou champ de saisie de numéro de téléphone) est un élément d’interface utilisateur qui permet de saisir et de valider des numéros de téléphone au format international.';
+
+ @override
+ String get app_components_phoneNumberInput_country_selector_label =>
+ 'Country selector';
+
+ @override
+ String get app_components_phoneNumberInput_prefix_label => 'Prefix';
+
+ @override
+ String get app_components_phoneNumberInput_error_label =>
+ 'The phone number can\'t be empty.';
+
+ @override
+ String get app_components_link_label => 'Link';
+
+ @override
+ String get app_components_link_description_text =>
+ 'Un Link (ou lien) est un élément d\'interface utilisateur qui permet de naviguer d\'un emplacement à un autre, que ce soit au sein de la même page, entre différentes pages de la même ressource ou vers une ressource externe.';
+
+ @override
+ String get app_components_link_backLayout_label => 'Back';
+
+ @override
+ String get app_components_link_nextLayout_label => 'Next';
+
+ @override
+ String get app_components_passwordInput_label => 'Password input';
+
+ @override
+ String get app_components_passwordInput_description_text =>
+ 'Un Password input (ou champ de saisie de mot de passe) est un élément d\'interface utilisateur qui permet de capturer de manière sécurisée et confidentielle le mot de passe d\'un utilisateur.';
+
+ @override
+ String get app_components_passwordInput_error_label =>
+ 'Please enter your password.';
+
+ @override
+ String get app_components_pinCodeInput_label => 'Pin code input';
+
+ @override
+ String get app_components_pinCodeInput_length_label => 'Length';
+
+ @override
+ String get app_components_pinCodeInput_description_text =>
+ 'Un PIN code input (ou champ de saisie de code PIN) est un élément d\'interface utilisateur qui permet de capturer des codes numériques courts et de longueur fixe, généralement à des fins d\'authentification ou de confirmation, tels qu\'un numéro d\'identification personnel (PIN) à quatre, six ou huit chiffres.';
+
+ @override
+ String get app_components_pinCodeInput_helperText_description_text_4 =>
+ 'Enter the 4-digit code sent to your phone.';
+
+ @override
+ String get app_components_pinCodeInput_helperText_description_text_6 =>
+ 'Enter the 6-digit code sent to your phone.';
+
+ @override
+ String get app_components_pinCodeInput_helperText_description_text_8 =>
+ 'Enter the 8-digit code sent to your phone.';
+
+ @override
+ String get app_components_pinCodeInput_error_label =>
+ 'Please enter the verification code.';
+
+ @override
+ String get app_components_pinCodeInput_verification_error_label =>
+ 'Verification failed. Check and enter the correct code.';
+
+ @override
+ String get app_components_pinCodeInput_hidden_password_label =>
+ 'Hidden Password';
+
+ @override
+ String get app_components_navigationBar_label => 'Bottom Bar';
+
+ @override
+ String get app_components_navigationBar_description_text =>
+ 'Une Bottom bar (ou barre inférieure) permet d\'accéder aux principales destinations d\'une application grâce à 3 à 5 onglets permanents. Chaque destination est représentée par une icône et, éventuellement, par un libellé textuel.';
+
+ @override
+ String get app_components_navigationBar_itemCount_label => 'Item count';
+
+ @override
+ String get app_components_navigationBar_lastItemBadge_label =>
+ 'Last item badge';
+
+ @override
+ String get app_about_name_label => 'Boîte à outils du système de conception';
+
+ @override
+ String get app_about_privacyPolicy_label => 'Politique de confidentialité';
+
+ @override
+ String get app_about_legalInformation_label => 'Informations légales';
+
+ @override
+ String get app_about_materialComponents_label => 'Composants Material 3';
+
+ @override
+ String get app_about_changelog_label => 'Journal des modifications';
+
+ @override
+ String get app_about_appSettings_label =>
+ 'Ouvrir les paramètres de l\'application';
+
+ @override
+ String get app_about_details_themeCoreVersion =>
+ 'Version de la bibliothèque de tokens core Ouds :';
+
+ @override
+ String get app_about_details_themeOrangeCoreVersion =>
+ 'Version de la bibliothèque de tokens core Orange :';
+
+ @override
+ String get app_about_details_themeOrangeBrandVersion =>
+ 'Version de la bibliothèque de tokens de la marque Orange :';
+
+ @override
+ String get app_about_details_themeOrangeCompactBrandVersion =>
+ 'Version de la bibliothèque de tokens compacte de la marque Orange :';
+
+ @override
+ String get app_about_details_themeSoshCoreVersion =>
+ 'Version de la bibliothèque de tokens core Sosh :';
+
+ @override
+ String get app_about_details_themeSoshBrandVersion =>
+ 'Version de la bibliothèque de tokens de la marque Sosh :';
+
+ @override
+ String get app_about_details_themeWireframeCoreVersion =>
+ 'Version de la bibliothèque de tokens core Wireframe :';
+
+ @override
+ String get app_about_details_themeWireframeBrandVersion =>
+ 'Version de la bibliothèque de tokens de la marque Wireframe :';
+
+ @override
+ String get app_about_details_androidCoreVersion =>
+ 'Version de la bibliothèque de tokens core Android :';
+
+ @override
+ String get app_about_details_androidSystemVersion =>
+ 'Version de la bibliothèque de tokens système Android :';
+}
diff --git a/app/lib/l10n/ouds_flutter_ar.arb b/app/lib/l10n/ouds_flutter_ar.arb
index 5f0403285..2432bd395 100644
--- a/app/lib/l10n/ouds_flutter_ar.arb
+++ b/app/lib/l10n/ouds_flutter_ar.arb
@@ -49,23 +49,23 @@
"app_components_common_textInputClearIcon_a11y": "مسح المدخلات",
"@_components_button": {},
- "app_components_button_description_text": "تسمح Buttons للمستخدمين باتخاذ قرارات أو تنفيذ إجراءات. وتتوفر بأنماط متعددة لتلبية احتياجات مختلفة.",
+ "app_components_button_description_text": "Button هو عنصر واجهة مستخدم يُستخدم لتحفيز إجراء أو حدث، ويستخدم لبدء المهام أو تأكيد إجراء معين.",
"@_components_checkbox": {},
- "app_components_checkbox_description_text": "تتيح checkboxs للمستخدمين تحديد خيار واحد أو خيارات متعددة من القائمة، أو تشغيل الإعدادات أو إيقاف تشغيلها، أو تأكيد إجراء ما.",
+ "app_components_checkbox_description_text": "Checkbox هو عنصر واجهة مستخدم يسمح باختيار خيارات متعددة من مجموعة من الخيارات غير الحصرية.",
"@_components_divider": {},
- "app_components_divider_description_text": " ينظم divider واجهة المستخدم بصريًا عن طريق فصل أقسام المحتوى بوضوح. يساعد على تحسين قابلية القراءة وتنظيم المحتوى دون إضافة تسلسل هرمي قوي كما في العناوين أو الحاويات.",
+ "app_components_divider_description_text": "Divider هو عنصر واجهة مستخدم يسمح بتنظيم المحتوى عن طريق فصل مناطق المحتوى بصريًا",
"@_components_radio_button": {},
- "app_components_radioButton_description_text": "يسمح Radio button للمستخدمين بتحديد خيار واحد فقط من بين مجموعة من الخيارات المتبادلة الحصرية، ويُعرض عادةً كإدخال دائري يحتوي على تسمية يتم تعبئتها عند التحديد.",
+ "app_components_radioButton_description_text": "Radio button هو عنصر واجهة مستخدم يسمح باختيار خيار واحد فقط من مجموعة من الخيارات المتعارضة.",
"@_components_switch": {},
- "app_components_switch_description_text": "يتيح switch للمستخدم التبديل بين حالتين، عادةً تشغيل و إيقاف. يتم تمثيله غالبًا كزر أو شريط منزلق يتغير موقعه أو لونه للإشارة إلى الحالة الحالية. تُستخدم المفاتيح لتمكين أو تعطيل الميزات أو الخيارات أو الإعدادات بطريقة بصرية وفهمها بسهولة.",
+ "app_components_switch_description_text": "Switch هو عنصر واجهة مستخدم يسمح بالتبديل بين حالتين، عادةً \"تشغيل\" و \"إيقاف\"، ويستخدم لتمكين أو تعطيل الميزات أو الخيارات أو الإعدادات.",
"app_components_switch_switch_a11y": "وصف محتوى المفتاح",
"@_components_badge": {},
- "app_components_badge_description_text":"badge هي عنصر صغير في واجهة المستخدم يُستخدم لتسليط الضوء على الحالة أو الإشعارات أو التصنيف داخل الواجهة. غالبًا ما يتم عرضها كعلامة أو مؤشر بلون خلفية مميز ونص.",
+ "app_components_badge_description_text":"Badge هي عنصر صغير في واجهة المستخدم يُستخدم لتسليط الضوء على الحالة أو الإشعارات أو التصنيف داخل الواجهة. غالبًا ما يتم عرضها كعلامة أو مؤشر بلون خلفية مميز ونص.",
"app_components_badge_notification_label_a11y": "إشعار",
"app_components_badge_success_label_a11y": "نجاح",
"app_components_badge_important_label_a11y": "مهم",
@@ -75,31 +75,31 @@
"@_components_chip": {},
"app_components_chip_description_text": "تساعد Chips المستخدمين على إدخال المعلومات، القيام باختيارات، تصفية المحتوى، أو تنفيذ إجراءات.",
- "app_components_chip_suggestionChip_description_text": "Suggestion Chip هو مكون صغير في واجهة المستخدم يُستخدم لعرض خيارات مقترحة أو تنبؤية بناءً على إدخال المستخدم أو السياق. غالبًا ما يظهر في شريط البحث، النماذج، أو واجهات المحادثة، ويساعد المستخدمين على اختيار اقتراحات ذات صلة بسرعة. عادةً ما يكون غير محدد بشكل افتراضي، ويمكن النقر عليه لتطبيق الاقتراح، مما يُبسّط إدخال البيانات ويحسن من سهولة الاستخدام.",
- "app_components_chip_filterChip_description_text": "Filter Chip هو مكون صغير في واجهة المستخدم يُمثل خيار تصفية يمكن للمستخدم تحديده أو إلغاء تحديده. يُستخدم هذا النوع من العناصر لتصفية المحتوى أو البيانات بطريقة تفاعلية وبصرية، ويُساهم في تحسين تجربة المستخدم من خلال التحكم في عرض المعلومات.",
+ "app_components_chip_suggestionChip_description_text": "Suggestion Chip هي عنصر واجهة مستخدم يسمح بعرض الخيارات الموصى بها أو التنبئية استنادًا إلى مدخلات المستخدم أو السياق، وتُستخدم عادةً لالتقاط قرارات التصفية.",
+ "app_components_chip_filterChip_description_text": "Filter Chip هي عنصر واجهة مستخدم يسمح باختيار أو إلغاء اختيار خيار ضمن سلسلة، وتُستخدم عادةً لالتقاط قرارات التصفية.",
"@_components_tag": {},
- "app_components_tag_description_text": "Tag هو عنصر صغير يُستخدم لعرض معلومات قصيرة مثل تسمية أو كلمة مفتاحية أو تصنيف. يساعد المستخدمين على العثور على المحتوى بسرعة أو تجميعه أو فهمه.",
- "app_components_inputTag_description_text": "Inpu Tag هو مكوّن يسمح للمستخدمين بإدخال عدة قيم، حيث يتم تمثيل كل قيمة كوسم. عند الكتابة والضغط على زر الإدخال (Enter) أو الفاصلة أو زر الجدولة (Tab)، يتم تحويل كل قيمة إلى وسم.",
+ "app_components_tag_description_text": "Tag هي عنصر واجهة مستخدم يعرض معلومات قصيرة مثل تسمية أو كلمة مفتاحية أو فئة",
+ "app_components_inputTag_description_text": "Input tag هي عنصر واجهة مستخدم يسمح بعرض القيمة المدخلة كعلامة، لعرض معلومات قصيرة مثل تسمية، كلمة مفتاحية أو فئة",
"@_components_textInput": {},
- "app_components_textInput_description_text": "Text Input هو أحد مكونات واجهة المستخدم، ويُتيح للمستخدمين إدخال بيانات نصية أحادية السطر أو تحريرها أو تحديدها. وهو أحد أهم عناصر النموذج المستخدمة لتسجيل بيانات المستخدم، مثل الأسماء ورسائل البريد الإلكتروني وكلمات المرور واستعلامات البحث",
+ "app_components_textInput_description_text": "Text input هو عنصر واجهة مستخدم يسمح بكتابة أو تحرير أو اختيار سطر واحد من البيانات النصية، مثل الأسماء أو البريد الإلكتروني أو استعلامات البحث.",
"app_components_textInput_trailingAction_a11y": "وصف محتوى أيقونة النهاية",
"@_components_phone_number_input": {},
- "app_components_phoneNumberInput_description_text": "Phone Number هو حقل نموذج مصمم خصيصًا لالتقاط أرقام الهواتف والتحقق منها، وغالبًا ما يكون بتنسيق دولي. عادةً ما يتضمن محددًا للدولة، مما يسمح للمستخدمين باختيار بلدهم وتطبيق رمز الاتصال المقابل تلقائيًا (مثل 33 لفرنسا).",
+ "app_components_phoneNumberInput_description_text": "Phone Number Input هو عنصر واجهة مستخدم يسمح بالتقاط والتحقق من أرقام الهواتف، بصيغة دولية.",
+ "app_components_phoneNumberInput_error_label": "لا يمكن أن يكون رقم الهاتف فارغًا.",
"@_components_link": {},
- "app_components_link_description_text": "تُستخدم links لتوجيه المستخدمين إلى موارد أو أقسام إضافية، سواء كانت داخلية (ضمن نفس التطبيق) أو خارجية (مثل موقع إلكتروني أو مستند).",
+ "app_components_link_description_text": "Link هو عنصر واجهة مستخدم يسمح بالتنقل من مكان إلى آخر، سواء داخل نفس الصفحة أو عبر صفحات مختلفة في نفس المورد، أو إلى مورد خارجي",
"@_components_password_input": {},
"app_components_passwordInput_description_text": "Password Input هو حقل نموذج مصمم خصيصًا لالتقاط كلمة مرور المستخدم بسرية. يقوم بإخفاء الأحرف أثناء الكتابة، عادةً باستبدالها بنقاط، لحماية الإدخال من قراءته من قبل الآخرين القريبين. بينما الهدف الأساسي هو تعزيز الخصوصية والأمان، قد يتضمن الحقل أيضًا ميزات سهولة الاستخدام مثل تبديل إظهار/إخفاء كلمة المرور ونص المساعدة لتوجيه إنشاء كلمة المرور.",
"@_components_pin_code_input": {},
- "app_components_pinCodeInput_description_text": "PIN Code Input هو حقل مخصص لإدخال رموز رقمية قصيرة وثابتة الطول، يُستخدم عادةً للمصادقة أو لتأكيد العمليات، مثل الرقم السري الشخصي المكوَّن من 4 أو 6 أو 8 أرقام.",
+ "app_components_pinCodeInput_description_text": "PIN Code Input هو عنصر واجهة مستخدم يسمح بالتقاط رموز رقمية قصيرة ذات طول ثابت، عادةً لأغراض المصادقة أو التأكيد، مثل رقم التعريف الشخصي (PIN) المكون من أربعة أو ستة أو ثمانية أرقام.",
"@_components_navigation_bar": {},
- "app_components_navigationBar_label": "Bottom Bar",
"app_components_navigationBar_description_text": "Bottom bars يوفر الوصول إلى الوجهات الرئيسية للتطبيق باستخدام 3 إلى 5 علامات تبويب دائمة. يتم تمثيل كل وجهة بواسطة أيقونة وعلامة نصية اختيارية.",
"@_about_screen": {},
diff --git a/app/lib/l10n/ouds_flutter_en.arb b/app/lib/l10n/ouds_flutter_en.arb
index e6b60d813..d4fb13b90 100644
--- a/app/lib/l10n/ouds_flutter_en.arb
+++ b/app/lib/l10n/ouds_flutter_en.arb
@@ -119,12 +119,12 @@
"@_components_button": {},
"app_components_button_label": "Button",
- "app_components_button_description_text": "Buttons allow users to make choices or perform an action. They have multiple styles for various needs.",
+ "app_components_button_description_text": "Button is a UI element that triggers an action or event, and is used to initiate tasks or confirming an action.",
"app_components_button_fullWidth_label": "Full width",
"@_components_checkbox": {},
"app_components_checkbox_label": "Checkbox",
- "app_components_checkbox_description_text": "Checkboxes allows users to select one or multiple options from a list, toggle settings on or off, or confirm an action.",
+ "app_components_checkbox_description_text": "Checkbox is a UI element that allows to select multiple options from a set of mutually non exclusive choices.",
"app_components_checkbox_checkbox_label": "Checkbox",
"app_components_checkbox_checkboxItem_label": "Checkbox item",
"app_components_checkbox_indeterminateCheckbox_label": "Indeterminate checkbox",
@@ -138,13 +138,13 @@
"@_components_divider": {},
"app_components_divider_label": "Divider",
- "app_components_divider_description_text": "A divider visually structures an interface by clearly separating content sections. It helps to improve readability and content organization without introducing a strong hierarchy like a heading or a container would.",
+ "app_components_divider_description_text": "Divider is a UI element that allows to structure the content by visually separating the content zones.",
"app_components_divider_horizontalDivider_label": "Horizontal divider",
"app_components_divider_verticalDivider_label": "Vertical divider",
"@_components_radio_button": {},
"app_components_radioButton_label": "Radio Button",
- "app_components_radioButton_description_text": "A radio button allows users to select a single option from a set of mutually exclusive choices, typically displayed as a circular input with a label that becomes filled when selected.",
+ "app_components_radioButton_description_text": "Radio button is a UI element that allows to select a single option from a set of mutually exclusive choices.",
"app_components_radioButton_radioButton_label": "Radio button",
"app_components_radioButton_radioButtonItem_label": "Radio Button Item",
"app_components_radioButton_radioButtonItem_extraLabel_label": "Extra label",
@@ -152,13 +152,13 @@
"@_components_switch": {},
"app_components_switch_label": "Switch",
"app_components_switch_switch_label": "Switch",
- "app_components_switch_description_text": "A switch allows the user to toggle between two states, typically on and off. It is often represented as a button or a slider that changes position or color to indicate the current state. Switches are used to enable or disable features, options, or settings in an intuitive and visual manner.",
+ "app_components_switch_description_text": "Switch is a UI element that allows to toggle between two states, typically “On” and “Off”, and used to enable or disable features, options or settings.",
"app_components_switch_switchItem_label" : "Switch item",
"app_components_switch_switch_a11y": "Switch content description",
"@_components_badge": {},
"app_components_badge_label": "Badge",
- "app_components_badge_description_text":"The Badge is a small UI element used to highlight status, notifications, or categorization within an interface. It is often displayed as a label or indicator with a distinct background color and text.",
+ "app_components_badge_description_text":"Badge is a UI element that emphasizes system notifications, status, or the categorization of an information, throughout colour only.",
"app_components_badge_type_label" : "Type",
"app_components_badge_standardType_label": "Standard",
"app_components_badge_countType_label" : "Count",
@@ -173,24 +173,24 @@
"@_components_chip": {},
"app_components_chip_label": "Chip",
- "app_components_chip_description_text": "Chips help people enter information, make selections, filter content, or trigger actions.",
+ "app_components_chip_description_text": "Chip helps people enter information, make selections, filter content, or trigger actions.",
"app_components_suggestionChip_label": "Suggestion Chip",
- "app_components_chip_suggestionChip_description_text": "A suggestion chip is a compact UI element used to present recommended or predictive options based on user input or context. Often found in search bars, forms, or messaging interfaces, suggestion chips help users quickly select from relevant suggestions. They are typically non-selected by default and can be tapped or clicked to apply the suggestion, streamlining user input and enhancing usability.",
+ "app_components_chip_suggestionChip_description_text": "Suggestion chip is a UI element that allows to present recommended or predictive options based on user’s input or context, and is commonly used to capture filtering decisions.",
"app_components_filterChip_label": "Filter Chip",
- "app_components_chip_filterChip_description_text": "A filter chip is a compact UI element used in a design system to represent a filter option that can be selected or deselected by the user. Filter chips allow users to refine content or data by applying one or more filters in a visually accessible and interactive way.",
+ "app_components_chip_filterChip_description_text": "Filter chip is a UI element that allows to select or deselect an option within a series, and is commonly used to capture filtering decisions.",
"@_components_tag": {},
"app_components_tag_label": "Tag",
"app_components_tag_tag_label": "Tag",
- "app_components_tag_description_text": "A tag is a small element that shows short info like a label, keyword, or category.It helps users quickly find, group, or understand content.",
+ "app_components_tag_description_text": "Tag is a UI element that displays short information such as a label, a keyword or a category.",
"app_components_tag_inputTag_label": "Input tag",
- "app_components_inputTag_description_text": "An Input tag is a component that allows users to enter multiple values, each represented as a tag. As users type and submit values (usually by pressing enter, comma, or tab), each value is transformed into a Tag.",
+ "app_components_inputTag_description_text": "Input tag is a UI element that allows to render an inputed value as a Tag, in order to display short information such as a label, a keyword or a category.",
"app_components_tag_textAndBulletLayout_label": "Text + Bullet",
"@_components_text_input": {},
"app_components_textInput_label": "Text input",
- "app_components_textInput_description_text": "A Text Input is a user interface component that allows users to enter, edit, or select single-line textual data. It's one of the most fundamental form elements used to capture user input such as names, emails, passwords, or search queries.",
+ "app_components_textInput_description_text": "Text input is a UI element that allows to type, edit, or select single line of textual data, such as names, emails or search queries.",
"app_components_textInput_leadingIcon_label": "Leading icon",
"app_components_textInput_trailingAction_label": "Trailing action",
"app_components_textInput_prefix_label": "Prefix",
@@ -202,26 +202,26 @@
"@_components_phone_number_input": {},
"app_components_phoneNumberInput_label": "Phone number input",
- "app_components_phoneNumberInput_description_text": "A Phone Number Input is a form field specifically designed to capture and validate telephone numbers, often in international format. It typically integrates a country selector, allowing users to choose their country and automatically apply the corresponding dialing code (such as +33 for France).",
+ "app_components_phoneNumberInput_description_text": "Phone number Input is a UI element that allows to capture and validate telephone numbers, in international format.",
"app_components_phoneNumberInput_country_selector_label": "Country selector",
"app_components_phoneNumberInput_prefix_label": "Prefix",
"app_components_phoneNumberInput_error_label": "The phone number can't be empty.",
"@_components_link": {},
"app_components_link_label": "Link",
- "app_components_link_description_text": "Links direct users to other resources or sections, whether internal (within the same application) or external (to a website or document).",
+ "app_components_link_description_text": "Link is a UI element that allows to navigate from one location to another, either within the same page or across different pages in the same resource, or to an external resource.",
"app_components_link_backLayout_label": "Back",
"app_components_link_nextLayout_label": "Next",
"@_components_password_input": {},
"app_components_passwordInput_label": "Password input",
- "app_components_passwordInput_description_text": "A password input is a form field specifically designed to securely capture a user’s confidential password. It masks the characters as they are typed, typically replacing them with dots, in order to protect the input from being read by others nearby. While the primary goal is to enhance privacy and security, the field may also include usability features such as a show/hide password toggle and helper text to guide password creation.",
+ "app_components_passwordInput_description_text": "Password input is a UI element that allows to securely and confidentially capture a user’s password.",
"app_components_passwordInput_error_label": "Please enter your password.",
"@_components_pin_code_input": {},
"app_components_pinCodeInput_label": "Pin code input",
"app_components_pinCodeInput_length_label": "Length",
- "app_components_pinCodeInput_description_text": "A PIN code input is a specialized form field used to capture short, fixed-length numeric codes, typically for authentication or confirmation purposes, such as a 4, 6 or 8-digit personal identification number (PIN).",
+ "app_components_pinCodeInput_description_text": "PIN code input is a UI element that allows to capture short, fixed-length numeric codes, typically for authentication or confirmation purposes, such as a four, six or height-digit personal identification number (PIN).",
"app_components_pinCodeInput_helperText_description_text_4": "Enter the 4-digit code sent to your phone.",
"app_components_pinCodeInput_helperText_description_text_6": "Enter the 6-digit code sent to your phone.",
"app_components_pinCodeInput_helperText_description_text_8": "Enter the 8-digit code sent to your phone.",
diff --git a/app/lib/l10n/ouds_flutter_fr.arb b/app/lib/l10n/ouds_flutter_fr.arb
new file mode 100644
index 000000000..709e8e9dc
--- /dev/null
+++ b/app/lib/l10n/ouds_flutter_fr.arb
@@ -0,0 +1,119 @@
+{
+ "app_name": "DesignToolbox",
+
+ "@_common": {},
+ "app_common_back_a11y": "Retour",
+ "app_common_copyCode_a11y": "Copier le code",
+ "app_common_selected_a11y": "Sélectionné",
+ "app_common_unselected_a11y": "Non sélectionné",
+ "app_common_codeCopied_text": "Code copié dans le presse-papiers",
+ "app_common_collapsed_a11y": "Repliée",
+ "app_common_expanded_a11y": "Dépliée",
+ "app_common_bottomSheetExpanded_a11y": "Bottom sheet depliée",
+ "app_common_bottomSheetCollapsed_a11y": "Bottom sheet repliée",
+ "app_common_customize_label": "Paramétrer",
+ "app_common_customizeChipList_a11y": "Liste de puces",
+ "app_common_customizeChipsHint_a11y": "Veuillez sélectionner une puce en naviguant parmi les options",
+
+ "@_top_bar": {},
+ "app_topBar_theme_button_a11y": "Changer le thème",
+ "app_topBar_darkMode_button_a11y": "Appliquer le mode sombre",
+ "app_topBar_lightMode_button_a11y": "Appliquer le mode clair",
+ "app_topBar_systemMode_button_a11y": "Appliquer le mode système",
+
+ "@_bottom_navigation": {},
+ "app_bottomBar_tokens_label": "Tokens",
+ "app_bottomBar_components_label": "Composants",
+ "app_bottomBar_about_label": "À propos",
+
+ "@_tokens": {},
+ "app_tokens_viewCodeExample_label": "Voir l'exemple de code du token",
+
+ "@_token_color": {},
+ "app_tokens_color_description_text": "La couleur renforce notre identité de marque et garantit une expérience utilisateur cohérente sur tous nos produits. Les tokens sémantiques décrits ici sont ceux à utiliser lors du développement d'une application mobile.",
+
+ "@_token_elevation": {},
+ "app_tokens_elevation_description_text": "L'élévation est utilisée pour donner une impression de distance entre les surfaces, ajoutant ainsi de la profondeur à nos designs.",
+
+ "@_token_opacity": {},
+ "app_tokens_opacity_description_text": "L'opacité peut aider à distinguer les éléments en premier plan de ceux en arrière-plan, rendant le contenu plus lisible et les actions importantes plus visibles.",
+
+ "@_token_typography": {},
+ "app_tokens_typography_description_text": "La typographie est notre système de polices et de styles de texte. Elle améliore la communication et renforce l'identité de la marque.",
+
+ "@_token_border": {},
+ "app_tokens_border_description_text": "Les bordures servent à définir la couleur des traits dans les composants, ainsi que la couleur des lignes de séparation des composants tels que les tableaux.",
+
+ "@_components_button": {},
+ "app_components_button_description_text": "Un Button (ou bouton) est un élément d'interface utilisateur qui déclenche une action ou un événement, et sert à lancer des tâches ou à confirmer une action.",
+
+ "@_components_checkbox": {},
+ "app_components_checkbox_description_text": "Une Checkbox (ou case à cocher) est un élément d'interface utilisateur qui permet de sélectionner plusieurs options parmi un ensemble de choix non exclusifs.",
+
+ "@_components_divider": {},
+ "app_components_divider_description_text": "Un Divider (ou séparateur) est un élément d'interface utilisateur qui permet de structurer le contenu en séparant visuellement les zones de contenu.",
+
+ "@_components_radio_button": {},
+ "app_components_radioButton_description_text": "Un Radio button (ou bouton radio) est un élément d'interface utilisateur qui permet de sélectionner une seule option parmi un ensemble de choix mutuellement exclusifs.",
+
+ "@_components_switch": {},
+ "app_components_switch_description_text": "Un Switch (ou interrupteur) est un élément d'interface utilisateur qui permet de basculer entre deux états, généralement « Marche » et « Arrêt », et qui sert à activer ou désactiver des fonctionnalités, des options ou des paramètres.",
+ "app_components_switch_switch_a11y": "Description du contenu de l'interrupteur",
+
+ "@_components_badge": {},
+ "app_components_badge_description_text": "Un Badge est un élément d'interface utilisateur qui met en évidence les notifications système, l'état ou la catégorisation d'une information, uniquement par le biais de la couleur.",
+ "app_components_badge_notification_label_a11y": "Notification",
+ "app_components_badge_success_label_a11y": "Succès",
+ "app_components_badge_important_label_a11y": "Important",
+ "app_components_badge_info_label_a11y": "Information",
+ "app_components_badge_warning_label_a11y": "Avertissement",
+ "app_components_badge_negative_label_a11y": "Erreur",
+
+ "@_components_chip": {},
+ "app_components_chip_description_text": "Un Chip aide les utilisateurs à saisir des informations, faire des sélections, filtrer du contenu ou déclencher des actions.",
+ "app_components_chip_suggestionChip_description_text": "Un suggestion chip est un petit élément d'interface utilisé pour présenter des options recommandées ou prédictives basées sur la saisie ou le contexte de l'utilisateur. Souvent trouvée dans les barres de recherche, formulaires ou interfaces de messagerie, elle aide l'utilisateur à sélectionner rapidement parmi des suggestions pertinentes. Elle n'est généralement pas sélectionnée par défaut et peut être tapée ou cliquée pour appliquer la suggestion, simplifiant la saisie et améliorant l'utilisabilité.",
+ "app_components_chip_filterChip_description_text": "Un filter chip est un petit élément d'interface utilisé dans un système de conception pour représenter une option de filtre qui peut être sélectionnée ou désélectionnée par l'utilisateur. Elle permet de préciser le contenu ou les données en appliquant un ou plusieurs filtres de manière visuelle et interactive.",
+
+ "@_components_tag": {},
+ "app_components_tag_description_text": "Un Tag (ou étiquette) est un élément d'interface utilisateur qui affiche de courtes informations telles qu'un libellé, un mot-clé ou une catégorie.",
+ "app_components_inputTag_description_text": "Un Input Tag (ou étiquette de saisie) est un élément d'interface utilisateur qui permettant de saisir plusieurs valeurs, chacune étant représentée par une étiquette. Lorsque l'utilisateur saisit et valide des valeurs (généralement en appuyant sur Entrée, virgule ou tabulation), chaque valeur est transformée en une étiquette. Le champ de saisie est souvent utilisé pour ajouter des libellés, des catégories ou des participants.",
+
+ "@_components_text_input": {},
+ "app_components_textInput_description_text": "Un Text input (ou champ de saisie de texte) est un élément d'interface utilisateur qui permet de saisir, de modifier ou de sélectionner une seule ligne de données textuelles, telles que des noms, des adresses électroniques ou des requêtes de recherche.",
+ "app_components_textInput_trailingAction_a11y": "Description du contenu de l'action de fin",
+
+ "@_components_phone_number_input": {},
+ "app_components_phoneNumberInput_description_text": "Un Phone Number (ou champ de saisie de numéro de téléphone) est un élément d’interface utilisateur qui permet de saisir et de valider des numéros de téléphone au format international.",
+
+ "@_components_link": {},
+ "app_components_link_description_text": "Un Link (ou lien) est un élément d'interface utilisateur qui permet de naviguer d'un emplacement à un autre, que ce soit au sein de la même page, entre différentes pages de la même ressource ou vers une ressource externe.",
+
+ "@_components_password_input": {},
+ "app_components_passwordInput_description_text": "Un Password input (ou champ de saisie de mot de passe) est un élément d'interface utilisateur qui permet de capturer de manière sécurisée et confidentielle le mot de passe d'un utilisateur.",
+
+ "@_components_pin_code_input": {},
+ "app_components_pinCodeInput_description_text": "Un PIN code input (ou champ de saisie de code PIN) est un élément d'interface utilisateur qui permet de capturer des codes numériques courts et de longueur fixe, généralement à des fins d'authentification ou de confirmation, tels qu'un numéro d'identification personnel (PIN) à quatre, six ou huit chiffres.",
+
+ "@_components_navigation_bar": {},
+ "app_components_navigationBar_description_text": "Une Bottom bar (ou barre inférieure) permet d'accéder aux principales destinations d'une application grâce à 3 à 5 onglets permanents. Chaque destination est représentée par une icône et, éventuellement, par un libellé textuel.",
+
+ "@_about_screen": {},
+ "app_about_name_label": "Boîte à outils du système de conception",
+ "app_about_tokensVersion_label": "Version des tokens %s",
+ "app_about_privacyPolicy_label": "Politique de confidentialité",
+ "app_about_legalInformation_label": "Informations légales",
+ "app_about_materialComponents_label": "Composants Material 3",
+ "app_about_changelog_label": "Journal des modifications",
+ "app_about_appSettings_label": "Ouvrir les paramètres de l'application",
+ "app_about_details_themeCoreVersion": "Version de la bibliothèque de tokens core Ouds :",
+ "app_about_details_themeOrangeCoreVersion": "Version de la bibliothèque de tokens core Orange :",
+ "app_about_details_themeOrangeBrandVersion": "Version de la bibliothèque de tokens de la marque Orange :",
+ "app_about_details_themeOrangeCompactBrandVersion": "Version de la bibliothèque de tokens compacte de la marque Orange :",
+ "app_about_details_themeSoshCoreVersion": "Version de la bibliothèque de tokens core Sosh :",
+ "app_about_details_themeSoshBrandVersion": "Version de la bibliothèque de tokens de la marque Sosh :",
+ "app_about_details_themeWireframeCoreVersion": "Version de la bibliothèque de tokens core Wireframe :",
+ "app_about_details_themeWireframeBrandVersion": "Version de la bibliothèque de tokens de la marque Wireframe :",
+ "app_about_details_androidCoreVersion": "Version de la bibliothèque de tokens core Android :",
+ "app_about_details_androidSystemVersion": "Version de la bibliothèque de tokens système Android :"
+
+}
diff --git a/app/lib/ui/tokens/border/border_screen.dart b/app/lib/ui/tokens/border/border_screen.dart
index ad5b01b0d..e3cc3fa96 100644
--- a/app/lib/ui/tokens/border/border_screen.dart
+++ b/app/lib/ui/tokens/border/border_screen.dart
@@ -49,7 +49,7 @@ class BorderScreen extends StatelessWidget {
child: Column(
children: [
Text(
- context.l10n.app_tokens_elevation_description_text,
+ context.l10n.app_tokens_border_description_text,
style: Theme.of(context).textTheme.bodyMedium,
),
],
diff --git a/app/lib/ui/tokens/tokens.dart b/app/lib/ui/tokens/tokens.dart
index 9321d2043..f6e1bc8f7 100644
--- a/app/lib/ui/tokens/tokens.dart
+++ b/app/lib/ui/tokens/tokens.dart
@@ -29,18 +29,18 @@ List tokens(BuildContext context) {
context.l10n.app_tokens_border_description_text,
BorderScreen(illustration: AppAssets.images.ilTokenBorder),
),
- Token(
- context.l10n.app_tokens_elevation_label,
- AdaptiveImageHelper.getImage(context, AppAssets.images.ilTokensElevation),
- context.l10n.app_tokens_elevation_description_text,
- ElevationScreen(illustration: AppAssets.images.ilTokensElevation),
- ),
Token(
context.l10n.app_tokens_color_label,
AdaptiveImageHelper.getImage(context, AppAssets.images.ilTokensColor),
context.l10n.app_tokens_color_description_text,
ColorScreen(illustration: AppAssets.images.ilTokensColor),
),
+ Token(
+ context.l10n.app_tokens_elevation_label,
+ AdaptiveImageHelper.getImage(context, AppAssets.images.ilTokensElevation),
+ context.l10n.app_tokens_elevation_description_text,
+ ElevationScreen(illustration: AppAssets.images.ilTokensElevation),
+ ),
Token(
context.l10n.app_tokens_opacity_label,
AdaptiveImageHelper.getImage(context, AppAssets.images.ilTokensOpacity),
diff --git a/ouds_core/CHANGELOG.md b/ouds_core/CHANGELOG.md
index d8cf29fc5..ddd2b2a73 100644
--- a/ouds_core/CHANGELOG.md
+++ b/ouds_core/CHANGELOG.md
@@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased](https://github.com/Orange-OpenSource/ouds-flutter/compare/1.1.2...develop)
### Added
+- [Library] Add french Language ([#638](https://github.com/Orange-OpenSource/ouds-flutter/issues/638))
+- [Library] Update the components definitions where relevant ([#549](https://github.com/Orange-OpenSource/ouds-flutter/issues/549))
- [Library] Manage Helvetica Neue Arabic font ([#404](https://github.com/Orange-OpenSource/ouds-flutter/issues/404))
### Changed
diff --git a/ouds_core/lib/components/button/ouds_button.dart b/ouds_core/lib/components/button/ouds_button.dart
index ce3c788a7..83ec9b9fd 100644
--- a/ouds_core/lib/components/button/ouds_button.dart
+++ b/ouds_core/lib/components/button/ouds_button.dart
@@ -58,7 +58,8 @@ enum OudsButtonLayout {
///
/// **Reference design version : 3.2.0**
///
-/// Buttons are interactive elements designed to trigger specific actions or events when tapped by a user.
+/// Button is a UI element that triggers an action or event, and is used to initiate tasks or confirming an action.
+/// Button appears in different layouts, styles and states to indicate hierarchy or emphasis.
///
/// This version of the button uses the *text only* layout which is the most used layout.
/// Other layouts are available for this component: *text + icon* and *icon only*.
diff --git a/ouds_core/lib/components/checkbox/ouds_checkbox.dart b/ouds_core/lib/components/checkbox/ouds_checkbox.dart
index f069c6c76..07cfd4951 100644
--- a/ouds_core/lib/components/checkbox/ouds_checkbox.dart
+++ b/ouds_core/lib/components/checkbox/ouds_checkbox.dart
@@ -33,7 +33,8 @@ enum ToggleableState { off, indeterminate, on }
///
/// **Reference design version : 2.4.0**
///
-/// Checkboxes are input controls that allow users to select one or more options from a number of choices.
+/// Checkbox is a UI element that allows to select multiple options from a set of mutually non exclusive choices. Checkbox that does not show icon or text,
+/// provides greater flexibility when creating other components that require a checkbox to be displayed.
///
/// This checkbox supports the indeterminate state: Checkboxes can have a parent-child relationship with other checkboxes. When the parent checkbox is checked,
/// all child checkboxes are checked. If a parent checkbox is unchecked, all child checkboxes are unchecked. If some, but not all, child checkboxes are checked,
@@ -136,7 +137,7 @@ class _OudsCheckboxState extends State {
return Semantics(
enabled: widget.onChanged != null && !(widget.readOnly),
value: '${l10n?.core_checkbox_trait_a11y}. $semanticValue',
- hint: widget.isError ? '${'${l10n!.core_common_onError_a11y}, '}$toggleActionLabel' : toggleActionLabel,
+ hint: widget.isError ? '${'${l10n!.core_common_error_a11y}, '}$toggleActionLabel' : toggleActionLabel,
// onTap allows TalkBack to say "double tap to activate," so we need to do an exclude semantics here.
excludeSemantics: true,
child: Material(
diff --git a/ouds_core/lib/components/checkbox/ouds_checkbox_item.dart b/ouds_core/lib/components/checkbox/ouds_checkbox_item.dart
index 743a370c0..f5a77d473 100644
--- a/ouds_core/lib/components/checkbox/ouds_checkbox_item.dart
+++ b/ouds_core/lib/components/checkbox/ouds_checkbox_item.dart
@@ -22,7 +22,8 @@ import 'package:ouds_core/l10n/gen/ouds_localizations.dart';
///
/// **Reference design version : 2.4.0**
///
-/// Checkboxes are input controls that allow users to select one or more options from a number of choices.
+/// Checkbox item is a UI element that allows to select multiple options from a set of mutually non exclusive choices. Checkbox item covers a wider range of
+/// contexts by allowing to toggle the visibility of additional text labels and icon assets.
///
/// The **checkbox item variant** can function as a simple input with a label, or it can be combined with optional elements such as helper text, a divider, or an icon,
/// allowing it to suit various use cases.
diff --git a/ouds_core/lib/components/chip/ouds_filter_chip.dart b/ouds_core/lib/components/chip/ouds_filter_chip.dart
index 96fb0d789..1447c237d 100644
--- a/ouds_core/lib/components/chip/ouds_filter_chip.dart
+++ b/ouds_core/lib/components/chip/ouds_filter_chip.dart
@@ -46,10 +46,9 @@ enum OudsChipStyle {
///
/// **Reference design version : 1.3.0**
///
-/// A filter chip is a compact UI element used in a design system to represent a filter option that can be selected or deselected by the user.
-/// Filter chips allow users to refine content or data by applying one or more filters in a visually accessible and interactive way.
-/// Purpose: Allows users to filter content by selecting or deselecting specific categories or attributes.
-/// Behavior: Can be toggled on/off to refine displayed results. Selected chips remain visually distinct to indicate active filters.
+/// Filter chip is a UI element that allows to select or deselect an option within a series, and is commonly used to capture filtering decisions.
+/// Filter chip allows to filter content by being selected or deselected. It can be toggled "On" or "Off" to refine displayed results,
+/// and selected Filter Chips remain visually distinct to indicate active filters.
///
/// This version of the filter chip uses the *text only* layout which is the most used layout.
/// Other layouts are available for this component: *text + icon* and *icon only*.
@@ -173,7 +172,7 @@ class _OudsFilterChipState extends State {
final borderTokens = OudsTheme.of(context).borderTokens;
final l10n = OudsLocalizations.of(context);
final enabled = widget.onSelected != null;
- String semanticsLabel = '${widget.selected == true ? l10n?.core_filterChip_selected_a11y : l10n?.core_filterChip_unselected_a11y},'
+ String semanticsLabel = '${widget.selected == true ? l10n?.core_common_selected_a11y : l10n?.core_common_unselected_a11y},'
' ${widget.label ?? ""}, '
'${enabled && widget.selected == true ? l10n?.core_filterChip_hint_unselected_a11y : enabled && widget.selected == false ? l10n?.core_filterChip_hint_selected_a11y : ''}';
diff --git a/ouds_core/lib/components/chip/ouds_suggestion_chip.dart b/ouds_core/lib/components/chip/ouds_suggestion_chip.dart
index 8a8d9cd6f..d8b4d7d96 100644
--- a/ouds_core/lib/components/chip/ouds_suggestion_chip.dart
+++ b/ouds_core/lib/components/chip/ouds_suggestion_chip.dart
@@ -44,9 +44,8 @@ enum OudsChipStyle {
///
/// **Reference design version : 1.3.0**
///
-/// A suggestion chip is a compact UI element used to present recommended or predictive options based on user input or context.
-/// Often found in search bars, forms, or messaging interfaces, suggestion chips help users quickly select from relevant suggestions.
-/// They are typically non-selected by default and can be tapped or clicked to apply the suggestion, streamlining user input and enhancing usability.
+/// Suggestion chip is a UI element that allows to present recommended or predictive options
+/// based on user’s input or context, and is commonly used to capture filtering decisions.
///
/// This version of the suggestion chip uses the *text only* layout which is the most used layout.
/// Other layouts are available for this component: *text + icon* and *icon only*.
diff --git a/ouds_core/lib/components/divider/ouds_divider.dart b/ouds_core/lib/components/divider/ouds_divider.dart
index 25557914b..09c82d94c 100644
--- a/ouds_core/lib/components/divider/ouds_divider.dart
+++ b/ouds_core/lib/components/divider/ouds_divider.dart
@@ -20,10 +20,8 @@ import 'package:ouds_theme_contract/ouds_theme.dart';
///
/// **Reference design version : 1.0.0**
///
-/// An [OUDS Divider] component as per the design guidelines of OUDS.
-///
-/// Dividers are used to visually structure an interface by clearly separating content sections. It helps to improve readability and content organization
-/// without introducing a strong hierarchy like a heading or a container would.
+/// Divider is a UI element that allows to structure the content by visually separating the content zones. Divider improves readability
+/// and content organization without introducing a stronger visual hierarchy like a heading or a container would.
///
/// You can choose the orientation by using one of the named constructors:
/// - [OudsDivider.horizontal]
diff --git a/ouds_core/lib/components/form_input/ouds_phone_number_input.dart b/ouds_core/lib/components/form_input/ouds_phone_number_input.dart
index 8172bc37a..e4e63d001 100644
--- a/ouds_core/lib/components/form_input/ouds_phone_number_input.dart
+++ b/ouds_core/lib/components/form_input/ouds_phone_number_input.dart
@@ -38,6 +38,11 @@ import 'package:ouds_theme_contract/theme/tokens/components/ouds_textInput_token
///
/// **Reference design version : 1.3.0**
///
+/// Phone number Input is a UI element that allows to capture and validate telephone numbers, in international format.
+/// Phone number Input integrates a country selector, allowing users to choose their country and automatically apply the corresponding dialing code (such as +33 for France).
+/// Dialing code is displayed as a non-editable prefix within the field to guide the user and ensure consistent formatting.
+/// Real-time formatting or masking is included to improve readability during input, and validation rules tailored to the number structure of the selected country.
+///
/// This widget allows users to enter a phone number with support for country selection,
/// automatic formatting, and visual icons or status indicators.
///
@@ -280,7 +285,7 @@ class _OudsPhoneNumberInputState extends State {
return Semantics(
label: l10n?.core_phoneNumberInput_a11y,
- value: isError ? l10n?.core_common_onError_a11y : null,
+ value: isError ? l10n?.core_common_error_a11y : null,
//hint: widget.decoration.hintText ?? "", // if we want to display value in a11Y activate hint
focused: effectiveFocusNode != null,
focusable: true,
diff --git a/ouds_core/lib/components/form_input/ouds_text_input.dart b/ouds_core/lib/components/form_input/ouds_text_input.dart
index 0935c62d4..2b0618e28 100644
--- a/ouds_core/lib/components/form_input/ouds_text_input.dart
+++ b/ouds_core/lib/components/form_input/ouds_text_input.dart
@@ -33,8 +33,9 @@ import 'package:ouds_theme_contract/theme/tokens/components/ouds_textInput_token
///
/// **Reference design version : 1.3.0**
///
-/// `OudsTextField` is a customizable text input field that allows users
-/// to enter, edit, or read text.
+/// Text input is a UI element that allows to enter, edit, or select single-line textual data. Text input is one of the most fundamental form elements used
+/// to capture user input such as names, emails, passwords, or search queries. It provides a visual and interactive affordance for text entry
+/// while supporting labels, placeholders, icons, descriptions, and validation feedback.
///
/// This version supports fully configurable styling, including prefix
/// and suffix icons, error states, loading states, and helper or error messages.
@@ -259,7 +260,7 @@ class _OudsTextInputState extends State {
return Semantics(
label: semanticsValue,
hint: l10n?.core_common_hint_a11y,
- value: isError ? l10n?.core_common_onError_a11y : null,
+ value: isError ? l10n?.core_common_error_a11y : null,
focused: effectiveFocusNode != null,
focusable: true,
child: ConstrainedBox(
diff --git a/ouds_core/lib/components/form_input/password_input/ouds_password_input.dart b/ouds_core/lib/components/form_input/password_input/ouds_password_input.dart
index f8fd8ae37..11f63467c 100644
--- a/ouds_core/lib/components/form_input/password_input/ouds_password_input.dart
+++ b/ouds_core/lib/components/form_input/password_input/ouds_password_input.dart
@@ -32,8 +32,9 @@ import 'package:ouds_theme_contract/theme/tokens/components/ouds_textInput_token
///
/// **Reference design version : 1.3.0**
///
-/// `OudsPasswordInput` is a customizable password input field that allows users
-/// to enter, edit, or read their password securely.
+/// Password input is a UI element that allows to securely and confidentially capture a user's password.
+/// Password Input enhances privacy by replacing characters with dots, while they are being typed;
+/// and also embeds usability features such as the ability to show and hide password, and helper text to guide password creation.
///
/// This version supports fully configurable styling, including prefix
/// and suffix icons, error states, loading states, and helper or error messages.
@@ -232,7 +233,7 @@ class _OudsPasswordInputState extends State {
" ${widget.decoration.labelText ?? ""} "
"$prefixText $contentText, $helperText, "
"${widget.enabled == false || widget.readOnly == true ? l10n?.core_common_disabled_a11y : ""}",
- value: isError ? l10n?.core_common_onError_a11y : null,
+ value: isError ? l10n?.core_common_error_a11y : null,
hint: l10n?.core_common_hint_a11y,
focused: effectiveFocusNode != null,
focusable: true,
diff --git a/ouds_core/lib/components/link/ouds_link.dart b/ouds_core/lib/components/link/ouds_link.dart
index f07d98542..56cfa8d18 100644
--- a/ouds_core/lib/components/link/ouds_link.dart
+++ b/ouds_core/lib/components/link/ouds_link.dart
@@ -45,12 +45,9 @@ enum OudsLinkSize {
///
/// **Reference design version : 2.2.0**
///
-/// A link is a user interface element that allows navigation from one location to another,
-/// either within the same page, across different pages of a site (or application), or to an external resource.
-/// Typically rendered as underlined or styled text,
-/// a link communicates its interactive nature visually and semantically.
-/// It should always lead to a valid destination and be clearly labeled to describe the target or purpose.
-/// Unlike a button, which triggers an action, a link’s primary function is navigation.
+/// Link is a UI element that allows to navigate from one location to another, either within the same page
+/// or across different pages in the same resource, or to an external resource. Link's primary function is navigation
+/// and it communicates its interactive nature visually and semantically.
///
///
/// parameters :
diff --git a/ouds_core/lib/components/navigation/ouds_navigation_bar.dart b/ouds_core/lib/components/navigation/ouds_navigation_bar.dart
index 577eea295..6db78d747 100644
--- a/ouds_core/lib/components/navigation/ouds_navigation_bar.dart
+++ b/ouds_core/lib/components/navigation/ouds_navigation_bar.dart
@@ -29,8 +29,9 @@ const double _oudsNavigationBarHeight = 80.0;
///
/// **Reference design version: 1.0.0**
///
-/// The OUDS Navigation Bar is a reusable component for switching between
-/// top-level views or pages in an application.
+/// The Navigation bar (aka Bottom navigation bar on Material 2) provides access to an app’s primary destinations using 3 to 5 persistent tabs.
+/// Each destination is represented by an icon and optionally a text label. Positioned at the bottom of the screen, it supports quick switching
+/// between top-level sections, following Material Design navigation patterns.
///
/// This widget is backed by the Material 3 [NavigationBar] (Android/Material-style bottom navigation)
/// and expects a list of destination widgets built from OUDS items
diff --git a/ouds_core/lib/components/navigation/ouds_tab_bar.dart b/ouds_core/lib/components/navigation/ouds_tab_bar.dart
index bf43e7159..e4da0117a 100644
--- a/ouds_core/lib/components/navigation/ouds_tab_bar.dart
+++ b/ouds_core/lib/components/navigation/ouds_tab_bar.dart
@@ -27,8 +27,10 @@ import 'package:ouds_theme_contract/ouds_theme.dart';
///
/// **Reference design version: 1.0.0**
///
-/// The OUDS Tab Bar is a reusable component for switching between top-level
-/// views or pages in an application on iOS.
+/// The Tab bar is a system navigation component positioned at the bottom of the screen.
+/// It allows users to switch between the primary sections of an app.
+/// Each tab is represented by an icon, optionally paired with a label,
+/// and maintains persistent visibility across top-level destinations.
///
/// This widget is backed by Cupertino's [CupertinoTabBar] (iOS-style bottom tab bar)
/// and expects a list of [BottomNavigationBarItem] built from OUDS destinations
diff --git a/ouds_core/lib/components/pin_code_input/ouds_pin_code_input.dart b/ouds_core/lib/components/pin_code_input/ouds_pin_code_input.dart
index f0d770bf4..22f36cde0 100644
--- a/ouds_core/lib/components/pin_code_input/ouds_pin_code_input.dart
+++ b/ouds_core/lib/components/pin_code_input/ouds_pin_code_input.dart
@@ -43,8 +43,9 @@ enum OudsPinCodeInputLength {
///
/// **Reference design version : 1.2.0**
///
-/// A PIN code input is a specialized form field used to capture short, fixed-length numeric codes,
-/// typically for authentication or confirmation purposes, such as a 4, 6 or 8-digit personal identification number (PIN).
+/// PIN code input is a UI element that allows to capture short, fixed-length numeric codes,
+/// typically for authentication or confirmation purposes, such as a four,
+/// six or height-digit personal identification number (PIN).
///
/// It is often presented as a series of individual input fields or boxes, each representing a single digit,
/// to enhance readability and encourage accurate input.
@@ -192,7 +193,7 @@ class _OudsPinCodeInputState extends State {
children: [
Semantics(
hint: l10n?.core_common_hint_a11y,
- label: isError ? l10n?.core_common_onError_a11y : l10n?.core_pinCodeInput_pinCode_label_a11y(digitsCount),
+ label: isError ? l10n?.core_common_error_a11y : l10n?.core_pinCodeInput_pinCode_label_a11y(digitsCount),
child: Row(
mainAxisAlignment: widget.digitInputDecoration.constrainedMaxWidth ? MainAxisAlignment.start : MainAxisAlignment.center,
spacing: widget.length == OudsPinCodeInputLength.eight ? 6 : pinCodeToken.spaceColumnGapDigitInput,
diff --git a/ouds_core/lib/components/radio_button/ouds_radio_button.dart b/ouds_core/lib/components/radio_button/ouds_radio_button.dart
index 7df17dbf7..24cde81a8 100644
--- a/ouds_core/lib/components/radio_button/ouds_radio_button.dart
+++ b/ouds_core/lib/components/radio_button/ouds_radio_button.dart
@@ -33,7 +33,8 @@ import 'package:ouds_theme_contract/ouds_theme.dart';
///
/// **Reference design version : 1.4.0**
///
-/// An OUDS radio button widget.
+/// Radio button is a UI element that allows to select a single option from a set of mutually exclusive choices. Radio button that does not show icon or text,
+/// provides greater flexibility when creating other components that require a Radio button to be displayed.
///
/// This widget displays a radio button that is part of a group. It determines its selected state
/// by comparing its own [value] with the current [groupValue]. It also supports an error state
@@ -135,7 +136,7 @@ class OudsRadioButtonState extends State> {
enabled: widget.onChanged != null && !(widget.readOnly),
label: "${_selected ? l10n?.core_common_selected_a11y : l10n?.core_common_unselected_a11y} "
"${l10n?.core_radioButton_radioButton_a11y}",
- value: widget.isError ? l10n?.core_common_onError_a11y : null,
+ value: widget.isError ? l10n?.core_common_error_a11y : null,
child: SizedBox(
width: radioButton.sizeMinWidth,
child: InkWell(
diff --git a/ouds_core/lib/components/radio_button/ouds_radio_button_item.dart b/ouds_core/lib/components/radio_button/ouds_radio_button_item.dart
index de773eca9..a592d937a 100644
--- a/ouds_core/lib/components/radio_button/ouds_radio_button_item.dart
+++ b/ouds_core/lib/components/radio_button/ouds_radio_button_item.dart
@@ -24,8 +24,8 @@ import 'package:ouds_core/components/radio_button/ouds_radio_button.dart';
///
/// **Reference design version : 1.4.0**
///
-/// The **Radio button item variant** can function as a simple input with a label, or it can be combined with optional elements such as helper text,
-/// additional a divider, an outlined, or an icon, allowing it to suit various use cases.
+/// Radio button item is a UI element that allows to select a single option from a set of mutually exclusive choices.
+/// Radio button item covers a wider range of contexts by allowing to toggle the visibility of additional text labels and icon assets.
///
/// The OUDS Radio button item layout contains an [OudsRadioButton]. By clicking on a radiobutton item, the user changes the checked state of its radio button.
///
diff --git a/ouds_core/lib/components/switch/ouds_switch.dart b/ouds_core/lib/components/switch/ouds_switch.dart
index af88b59e2..ea0dfa521 100644
--- a/ouds_core/lib/components/switch/ouds_switch.dart
+++ b/ouds_core/lib/components/switch/ouds_switch.dart
@@ -28,8 +28,9 @@ import 'package:ouds_theme_contract/theme/tokens/components/ouds_switch_tokens.d
///
/// **Reference design version : 1.5.0**
///
-/// Switches allow the user to toggle between two states, typically "on" and "off". It is represented as a slider that changes its position or color to indicate
-/// the current state. Switches are used to enable or disable features, options, or settings in an intuitive and visual manner.
+/// Switch is a UI element that allows to toggle between two states, typically "On" and "Off",
+/// and used to enable or disable features, options or settings. Switch that does not show icon or text,
+/// provides greater flexibility when creating other components that require a Switch to be displayed.
///
/// The **standalone switch variant** can be used when the switch selector control is nested within another component and an alternative label is provided.
///
diff --git a/ouds_core/lib/components/switch/ouds_switch_item.dart b/ouds_core/lib/components/switch/ouds_switch_item.dart
index 483cf0516..d8c3b1255 100644
--- a/ouds_core/lib/components/switch/ouds_switch_item.dart
+++ b/ouds_core/lib/components/switch/ouds_switch_item.dart
@@ -22,8 +22,8 @@ import 'package:ouds_core/l10n/gen/ouds_localizations.dart';
///
/// **Reference design version : 1.5.0**
///
-/// The **Switch item variant** can function as a simple input with a label, or it can be combined with optional elements such as helper text,
-/// additional a divider, an outlined, or an icon, allowing it to suit various use cases.
+/// Switch item is a UI element that allows to toggle between two states, typically "On" and "Off", and used to enable or disable features,
+/// options or settings. Switch Item covers a wider range of contexts by allowing to toggle the visibility of additional text labels and icon assets.
///
/// The OUDS Switch item layout contains an [OudsSwitch]. By clicking on a Switch item, the user changes the selected state of its switch.
///
@@ -109,7 +109,7 @@ class OudsSwitchButtonItem extends StatelessWidget {
toggled: value,
readOnly: readOnly,
enabled: onChanged != null && !readOnly,
- hint: isError ? l10n?.core_common_onError_a11y : null,
+ hint: isError ? l10n?.core_common_error_a11y : null,
child: OudsControlItem(
text: title,
description: helperTitle,
diff --git a/ouds_core/lib/components/tag/ouds_input_tag.dart b/ouds_core/lib/components/tag/ouds_input_tag.dart
index da2b59903..8c52c484e 100644
--- a/ouds_core/lib/components/tag/ouds_input_tag.dart
+++ b/ouds_core/lib/components/tag/ouds_input_tag.dart
@@ -32,10 +32,9 @@ import 'internal/ouds_tag_control_state.dart';
///
/// **Reference design version : 1.4.0**
///
-/// A Tag Input is a component that allows users to enter multiple values, each represented as a tag input.
-/// As users type and submit values (usually by pressing enter, comma, or tab), each value is transformed into a Tag.
-/// Tag Inputs are often used for adding labels, categories, or participants.
-/// They typically support editing, removing, and validating individual tags.
+/// Input tag is a UI element that allows to enter multiple values, each represented as a tag.
+/// As users type and submit values (usually by pressing enter, comma, or tab),
+/// each value is transformed into a tag. Input tag is often used for adding labels, categories, or participants.
///
/// Each tag displays a remove (close) icon. Users can remove a tag by clicking or tapping the remove icon.
/// Tags can also be removed using the keyboard: when a tag is focused, pressing Backspace or Delete removes it.
diff --git a/ouds_core/lib/l10n/gen/ouds_localizations.dart b/ouds_core/lib/l10n/gen/ouds_localizations.dart
index afdbc4dbd..748216425 100644
--- a/ouds_core/lib/l10n/gen/ouds_localizations.dart
+++ b/ouds_core/lib/l10n/gen/ouds_localizations.dart
@@ -10,6 +10,7 @@ import 'package:intl/intl.dart' as intl;
import 'ouds_localizations_ar.dart';
import 'ouds_localizations_en.dart';
+import 'ouds_localizations_fr.dart';
// ignore_for_file: type=lint
@@ -98,14 +99,15 @@ abstract class OudsLocalizations {
/// A list of this localizations delegate's supported locales.
static const List supportedLocales = [
Locale('ar'),
- Locale('en')
+ Locale('en'),
+ Locale('fr')
];
- /// No description provided for @core_common_onError_a11y.
+ /// No description provided for @core_common_error_a11y.
///
/// In en, this message translates to:
/// **'Is on error'**
- String get core_common_onError_a11y;
+ String get core_common_error_a11y;
/// No description provided for @core_common_selected_a11y.
///
@@ -167,18 +169,6 @@ abstract class OudsLocalizations {
/// **'Tap to expand or collapse the bottom sheet'**
String get core_bottom_sheets_hint_a11y;
- /// No description provided for @core_filterChip_selected_a11y.
- ///
- /// In en, this message translates to:
- /// **'Selected'**
- String get core_filterChip_selected_a11y;
-
- /// No description provided for @core_filterChip_unselected_a11y.
- ///
- /// In en, this message translates to:
- /// **'Unselected'**
- String get core_filterChip_unselected_a11y;
-
/// No description provided for @core_filterChip_hint_unselected_a11y.
///
/// In en, this message translates to:
@@ -342,7 +332,7 @@ class _OudsLocalizationsDelegate
@override
bool isSupported(Locale locale) =>
- ['ar', 'en'].contains(locale.languageCode);
+ ['ar', 'en', 'fr'].contains(locale.languageCode);
@override
bool shouldReload(_OudsLocalizationsDelegate old) => false;
@@ -355,6 +345,8 @@ OudsLocalizations lookupOudsLocalizations(Locale locale) {
return OudsLocalizationsAr();
case 'en':
return OudsLocalizationsEn();
+ case 'fr':
+ return OudsLocalizationsFr();
}
throw FlutterError(
diff --git a/ouds_core/lib/l10n/gen/ouds_localizations_ar.dart b/ouds_core/lib/l10n/gen/ouds_localizations_ar.dart
index c892ce100..1d6f6c144 100644
--- a/ouds_core/lib/l10n/gen/ouds_localizations_ar.dart
+++ b/ouds_core/lib/l10n/gen/ouds_localizations_ar.dart
@@ -12,7 +12,7 @@ class OudsLocalizationsAr extends OudsLocalizations {
OudsLocalizationsAr([String locale = 'ar']) : super(locale);
@override
- String get core_common_onError_a11y => 'يوجد خطأ';
+ String get core_common_error_a11y => 'يوجد خطأ';
@override
String get core_common_selected_a11y => 'محدد';
@@ -45,12 +45,6 @@ class OudsLocalizationsAr extends OudsLocalizations {
String get core_bottom_sheets_hint_a11y =>
'اضغط لتوسيع أو طي النافذة السفلية';
- @override
- String get core_filterChip_selected_a11y => 'Selected';
-
- @override
- String get core_filterChip_unselected_a11y => 'Unselected';
-
@override
String get core_filterChip_hint_unselected_a11y => 'Double-tap to unselect';
diff --git a/ouds_core/lib/l10n/gen/ouds_localizations_en.dart b/ouds_core/lib/l10n/gen/ouds_localizations_en.dart
index 30e70157b..9afa6e616 100644
--- a/ouds_core/lib/l10n/gen/ouds_localizations_en.dart
+++ b/ouds_core/lib/l10n/gen/ouds_localizations_en.dart
@@ -12,7 +12,7 @@ class OudsLocalizationsEn extends OudsLocalizations {
OudsLocalizationsEn([String locale = 'en']) : super(locale);
@override
- String get core_common_onError_a11y => 'Is on error';
+ String get core_common_error_a11y => 'Is on error';
@override
String get core_common_selected_a11y => 'Selected';
@@ -45,12 +45,6 @@ class OudsLocalizationsEn extends OudsLocalizations {
String get core_bottom_sheets_hint_a11y =>
'Tap to expand or collapse the bottom sheet';
- @override
- String get core_filterChip_selected_a11y => 'Selected';
-
- @override
- String get core_filterChip_unselected_a11y => 'Unselected';
-
@override
String get core_filterChip_hint_unselected_a11y => 'Double-tap to unselect';
diff --git a/ouds_core/lib/l10n/gen/ouds_localizations_fr.dart b/ouds_core/lib/l10n/gen/ouds_localizations_fr.dart
new file mode 100644
index 000000000..8e288d760
--- /dev/null
+++ b/ouds_core/lib/l10n/gen/ouds_localizations_fr.dart
@@ -0,0 +1,133 @@
+/// @nodoc
+library;
+
+// ignore: unused_import
+import 'package:intl/intl.dart' as intl;
+import 'ouds_localizations.dart';
+
+// ignore_for_file: type=lint
+
+/// The translations for French (`fr`).
+class OudsLocalizationsFr extends OudsLocalizations {
+ OudsLocalizationsFr([String locale = 'fr']) : super(locale);
+
+ @override
+ String get core_common_error_a11y => 'Erreur';
+
+ @override
+ String get core_common_selected_a11y => 'Sélectionné';
+
+ @override
+ String get core_common_unselected_a11y => 'Non sélectionné';
+
+ @override
+ String get core_common_loading_a11y => 'Chargement';
+
+ @override
+ String get core_common_disabled_a11y => 'Désactivé';
+
+ @override
+ String get core_common_hint_a11y => 'Double tap pour modifier';
+
+ @override
+ String get core_button_icon_only_a11y => 'Icône';
+
+ @override
+ String get core_bottom_sheets_label_a11y => 'Bottom sheet';
+
+ @override
+ String get core_bottom_sheets_expanded_a11y => 'Dépliée';
+
+ @override
+ String get core_bottom_sheets_collapsed_a11y => 'Repliée';
+
+ @override
+ String get core_bottom_sheets_hint_a11y =>
+ 'Tapoter pour déployer ou réduire la feuille inférieure';
+
+ @override
+ String get core_filterChip_hint_unselected_a11y =>
+ 'Double tap pour désélectionner';
+
+ @override
+ String get core_filterChip_hint_selected_a11y =>
+ 'Double tap pour sélectionner';
+
+ @override
+ String get core_chip_chip_label_a11y => 'Chip label';
+
+ @override
+ String get core_chip_chip_icon_a11y => 'Icône';
+
+ @override
+ String get core_checkbox_trait_a11y => 'Case à cocher';
+
+ @override
+ String get core_checkbox_checked_a11y => 'Coché';
+
+ @override
+ String get core_checkbox_unchecked_a11y => 'Non coché';
+
+ @override
+ String get core_checkbox_indeterminate_a11y => 'Indéterminé';
+
+ @override
+ String get core_checkbox_hint_a11y => 'Double tap pour basculer';
+
+ @override
+ String get core_radioButton_radioButton_a11y => 'Bouton radio';
+
+ @override
+ String get core_link_trait_a11y => 'Lien';
+
+ @override
+ String get core_inputTag_hint_a11y => 'Double tap pour supprimer';
+
+ @override
+ String get core_tag_tag_input_role_a11y => 'Option';
+
+ @override
+ String get core_inputTag_delete_a11y => 'Supprimer l’étiquette';
+
+ @override
+ String core_tag_tag_input_removed_a11y(Object label) {
+ return 'Étiquette $label supprimée';
+ }
+
+ @override
+ String get core_textInput_trait_a11y => 'Champ de texte';
+
+ @override
+ String get core_phoneNumberInput_a11y => 'Numéro de téléphone';
+
+ @override
+ String get core_phoneNumberInput_countrySelector_a11y => 'Sélecteur de pays';
+
+ @override
+ String get core_phoneNumberInput_countrySelector_hint_a11y =>
+ 'Double tap pour sélectionner un pays';
+
+ @override
+ String get core_password_input_hidden_a11y => 'Password hidden';
+
+ @override
+ String get core_password_input_visible_a11y => 'Password visible';
+
+ @override
+ String get core_password_input_hint_show_a11y =>
+ 'Double tap to show password';
+
+ @override
+ String get core_password_input_hint_hide_a11y =>
+ 'Double tap to hide password';
+
+ @override
+ String core_pinCodeInput_digitCode_label_a11y(Object current) {
+ return 'Code à chiffres $current';
+ }
+
+ @override
+ String core_pinCodeInput_pinCode_label_a11y(Object digitsCount) {
+ return 'Entrez votre code à $digitsCount chiffres';
+ }
+}
diff --git a/ouds_core/lib/l10n/ouds_flutter_ar.arb b/ouds_core/lib/l10n/ouds_flutter_ar.arb
index a6b8a97a0..33a95ee9d 100644
--- a/ouds_core/lib/l10n/ouds_flutter_ar.arb
+++ b/ouds_core/lib/l10n/ouds_flutter_ar.arb
@@ -1,6 +1,6 @@
{
"@_OUDS_COMMON": {},
- "core_common_onError_a11y": "يوجد خطأ",
+ "core_common_error_a11y": "يوجد خطأ",
"core_common_selected_a11y": "محدد",
"core_common_unselected_a11y": "غير محدد",
"core_common_loading_a11y": "جاري التحميل",
@@ -17,8 +17,6 @@
"core_bottom_sheets_hint_a11y": "اضغط لتوسيع أو طي النافذة السفلية",
"@_OUDS_CHIP": {},
- "core_chip_selected_a11y": "محدد",
- "core_chip_unselected_a11y": "غير محدد",
"core_chip_unselectAction_a11y": "انقر مرتين لإلغاء التحديد",
"core_chip_selectAction_a11y": "انقر مرتين لتحديد",
"core_chip_chip_label_a11y": "تسمية الشارة",
diff --git a/ouds_core/lib/l10n/ouds_flutter_en.arb b/ouds_core/lib/l10n/ouds_flutter_en.arb
index f6c024cd2..648e1e052 100644
--- a/ouds_core/lib/l10n/ouds_flutter_en.arb
+++ b/ouds_core/lib/l10n/ouds_flutter_en.arb
@@ -1,6 +1,6 @@
{
"@_OUDS_COMMON": {},
- "core_common_onError_a11y": "Is on error",
+ "core_common_error_a11y": "Is on error",
"core_common_selected_a11y": "Selected",
"core_common_unselected_a11y": "Unselected",
"core_common_loading_a11y": "Loading",
@@ -17,8 +17,6 @@
"core_bottom_sheets_hint_a11y": "Tap to expand or collapse the bottom sheet",
"@_OUDS_CHIP": {},
- "core_filterChip_selected_a11y": "Selected",
- "core_filterChip_unselected_a11y": "Unselected",
"core_filterChip_hint_unselected_a11y": "Double-tap to unselect",
"core_filterChip_hint_selected_a11y": "Double-tap to select",
"core_chip_chip_label_a11y": "Chip label",
diff --git a/ouds_core/lib/l10n/ouds_flutter_fr.arb b/ouds_core/lib/l10n/ouds_flutter_fr.arb
new file mode 100644
index 000000000..e958c682a
--- /dev/null
+++ b/ouds_core/lib/l10n/ouds_flutter_fr.arb
@@ -0,0 +1,60 @@
+{
+ "@_OUDS_COMMON": {},
+ "core_common_error_a11y": "Erreur",
+ "core_common_selected_a11y": "Sélectionné",
+ "core_common_unselected_a11y": "Non sélectionné",
+ "core_common_loading_a11y": "Chargement",
+ "core_common_disabled_a11y": "Désactivé",
+ "core_common_hint_a11y": "Double tap pour modifier",
+
+ "@_OUDS_BUTTON": {},
+ "core_button_icon_only_a11y": "Icône",
+
+ "@_OUDS_BOTTOM_SHEETS": {},
+ "core_bottom_sheets_label_a11y": "Bottom sheet",
+ "core_bottom_sheets_expanded_a11y": "Dépliée",
+ "core_bottom_sheets_collapsed_a11y": "Repliée",
+ "core_bottom_sheets_hint_a11y": "Tapoter pour déployer ou réduire la feuille inférieure",
+
+ "@_OUDS_CHIP": {},
+ "core_filterChip_hint_unselected_a11y": "Double tap pour désélectionner",
+ "core_filterChip_hint_selected_a11y": "Double tap pour sélectionner",
+ "core_chip_chip_icon_a11y": "Icône",
+
+ "@_OUDS_Checkbox": {},
+ "core_checkbox_trait_a11y": "Case à cocher",
+ "core_checkbox_checked_a11y": "Coché",
+ "core_checkbox_unchecked_a11y": "Non coché",
+ "core_checkbox_indeterminate_a11y": "Indéterminé",
+ "core_checkbox_hint_a11y": "Double tap pour basculer",
+
+ "@_OUDS_RadioButton": {},
+ "core_radioButton_radioButton_a11y": "Bouton radio",
+
+ "@_OUDS_LINK": {},
+ "core_link_trait_a11y": "Lien",
+
+ "@_OUDS_TAG": {},
+ "core_inputTag_hint_a11y": "Double tap pour supprimer",
+ "core_tag_tag_input_role_a11y": "Option",
+ "core_inputTag_delete_a11y": "Supprimer l’étiquette",
+ "core_tag_tag_input_removed_a11y": "Étiquette {label} supprimée",
+
+ "@_OUDS_TEXT_INPUT": {},
+ "core_textInput_trait_a11y": "Champ de texte",
+
+ "@_OUDS_PHONE_NUMBER_INPUT": {},
+ "core_phoneNumberInput_a11y": "Numéro de téléphone",
+ "core_phoneNumberInput_countrySelector_a11y": "Sélecteur de pays",
+ "core_phoneNumberInput_countrySelector_hint_a11y": "Double tap pour sélectionner un pays",
+
+ "@_OUDS_PASSWORD_INPUT": {},
+ "core_passwordInput_showPassword_a11y": "Afficher le mot de passe",
+ "core_passwordInput_hidePassword_a11y": "Masquer le mot de passe",
+
+
+ "@_OUDS_PIN_CODE_INPUT": {},
+ "core_pinCodeInput_digitCode_label_a11y": "Code à chiffres {current}",
+ "core_pinCodeInput_pinCode_label_a11y": "Entrez votre code à {digitsCount} chiffres",
+ "core_pinCodeInput_trait_a11y": "Champ de saisie"
+}
\ No newline at end of file