From 29de145525177dd379b5d24de3d49075b4c90b06 Mon Sep 17 00:00:00 2001 From: cedvdb Date: Mon, 5 Feb 2024 15:54:01 +0100 Subject: [PATCH] 9.0.0 (#214) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: disable country chip when field is disabled (#202) * fix: disable country chip when field is disabled * fixup! fix: disable country chip when field is disabled * fixup! fixup! fix: disable country chip when field is disabled * add ku and ckb translations (#209) * fix: copy/paste wasn't possible due to context menu builder being passed as null (#198) Co-authored-by: Mattias Siø Fjellvang * bugfix: close keyboard on scroll (#162) * Supported safe area in bottom sheet of country selector (#153) Co-authored-by: Serge Shkurko * update intl to 18.0 (#156) * 7.0.6 * Fix search cursor color and initial bottom sheet height (#157) * downgrade intl * fix cursor color * fix panel height * enlarge prefix hit area * added cursor fix * revert changes from incorrect pr * feature: allow searching by ISO code * feature: search by submitting form * bugfix: fixed issue where it would double pop the route if submitting form and both lists had results * feature: search by submitting form (#160) * feature: search by submitting form * bugfix: fixed issue where it would double pop the route if submitting form and both lists had results * feature: allow searching by ISO code (#161) * bugfix: hide the keyboard when scrolling list, so it doesn't overlap * feature: use autofill hints for search input * feature: auto-submit when autofilling/pasting country * refactor: move change handler into seperate method * refactor: fixed deprecated window usage * fix: copy/paste wasn't possible due to context menu builder being passed as null * fix: remove listener on dispose --------- Co-authored-by: Serge Shkurko Co-authored-by: Serge Shkurko Co-authored-by: zitob9 Co-authored-by: cedvdb Co-authored-by: cizmarf <37090294+cizmarf@users.noreply.github.com> Co-authored-by: Mattias Siø Fjellvang * feature: autofill country (#163) * Supported safe area in bottom sheet of country selector (#153) Co-authored-by: Serge Shkurko * update intl to 18.0 (#156) * 7.0.6 * Fix search cursor color and initial bottom sheet height (#157) * downgrade intl * fix cursor color * fix panel height * enlarge prefix hit area * added cursor fix * revert changes from incorrect pr * feature: allow searching by ISO code * feature: search by submitting form * bugfix: fixed issue where it would double pop the route if submitting form and both lists had results * feature: search by submitting form (#160) * feature: search by submitting form * bugfix: fixed issue where it would double pop the route if submitting form and both lists had results * feature: allow searching by ISO code (#161) * bugfix: hide the keyboard when scrolling list, so it doesn't overlap * feature: use autofill hints for search input * feature: auto-submit when autofilling/pasting country * refactor: move change handler into seperate method * refactor: fixed deprecated window usage * fix: copy/paste wasn't possible due to context menu builder being passed as null * fix: remove listener on dispose --------- Co-authored-by: Serge Shkurko Co-authored-by: Serge Shkurko Co-authored-by: zitob9 Co-authored-by: cedvdb Co-authored-by: cizmarf <37090294+cizmarf@users.noreply.github.com> Co-authored-by: Mattias Siø Fjellvang * feat: add ability to customise search delegate app bar theme (#208) * Refactor (#212) * fix merge issue * remove generated files from git * saving * refactor * improve search ux * refactor * saving * refactor * rm * upgrade flag cache * cache * saving * refa * refactor * comment * validation * moving tests * saving * language * fixing tests * fix tests * saving * saving * saving * fix all tests * External country selector (#213) * fix merge issue * remove generated files from git * saving * refactor * improve search ux * refactor * saving * refactor * rm * upgrade flag cache * cache * saving * refa * refactor * comment * validation * moving tests * saving * language * fixing tests * fix tests * saving * saving * saving * fix all tests * localization * readd example * localization * dart fix * external country selector * cc --------- Co-authored-by: Tautvydas Šidlauskas Co-authored-by: Ahmad Najm <86409804+ahmadnajmdev@users.noreply.github.com> Co-authored-by: Mattias Fjellvang Co-authored-by: Mattias Siø Fjellvang Co-authored-by: Serge Shkurko Co-authored-by: Serge Shkurko Co-authored-by: zitob9 Co-authored-by: cizmarf <37090294+cizmarf@users.noreply.github.com> --- .github/workflows/deploy_demo.yml | 49 + .github/workflows/{ci.yml => tests.yml} | 0 .gitignore | 6 +- .pubignore | 36 - CHANGELOG.md | 18 + README.md | 113 +- build.sh | 1 - demo_image.png | Bin 131018 -> 0 bytes example/.github/workflows/ci.yml | 23 - example/.gitignore | 4 +- example/.metadata | 39 +- example/.pubignore | 76 - example/README.md | 8 +- example/analysis_options.yaml | 3 +- example/android/app/build.gradle | 23 +- .../android/app/src/debug/AndroidManifest.xml | 6 +- .../android/app/src/main/AndroidManifest.xml | 5 +- .../app/src/main/res/values-night/styles.xml | 2 +- .../app/src/main/res/values/styles.xml | 2 +- .../app/src/profile/AndroidManifest.xml | 6 +- example/android/build.gradle | 5 +- example/android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- example/android/settings.gradle | 34 +- example/ios/Flutter/AppFrameworkInfo.plist | 2 +- example/ios/Runner.xcodeproj/project.pbxproj | 139 +- .../xcshareddata/xcschemes/Runner.xcscheme | 13 +- .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 1418 bytes example/ios/Runner/Info.plist | 2 - example/ios/RunnerTests/RunnerTests.swift | 12 + example/lib/main.dart | 110 +- example/linux/.gitignore | 1 + example/linux/CMakeLists.txt | 145 ++ example/linux/flutter/CMakeLists.txt | 88 + example/linux/flutter/generated_plugins.cmake | 23 + example/linux/main.cc | 6 + example/linux/my_application.cc | 104 + example/linux/my_application.h | 18 + example/macos/.gitignore | 7 + example/macos/Flutter/Flutter-Debug.xcconfig | 1 + .../macos/Flutter/Flutter-Release.xcconfig | 1 + .../Flutter/GeneratedPluginRegistrant.swift | 10 + .../ephemeral/Flutter-Generated.xcconfig | 11 + .../ephemeral/flutter_export_environment.sh | 12 + .../macos/Runner.xcodeproj/project.pbxproj | 695 +++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + example/macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes example/macos/Runner/Base.lproj/MainMenu.xib | 343 ++++ example/macos/Runner/Configs/AppInfo.xcconfig | 14 + example/macos/Runner/Configs/Debug.xcconfig | 2 + example/macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 12 + example/macos/Runner/Info.plist | 32 + example/macos/Runner/MainFlutterWindow.swift | 15 + example/macos/Runner/Release.entitlements | 8 + example/macos/RunnerTests/RunnerTests.swift | 12 + example/pubspec.lock | 34 +- example/pubspec.yaml | 2 +- example/web/index.html | 81 +- example/windows/CMakeLists.txt | 29 +- example/windows/flutter/CMakeLists.txt | 8 +- .../flutter/generated_plugin_registrant.cc | 11 - .../flutter/generated_plugin_registrant.h | 15 - example/windows/runner/CMakeLists.txt | 23 + example/windows/runner/Runner.rc | 12 +- example/windows/runner/flutter_window.cpp | 10 + example/windows/runner/main.cpp | 2 +- example/windows/runner/runner.exe.manifest | 2 +- example/windows/runner/utils.cpp | 13 +- example/windows/runner/win32_window.cpp | 55 +- example/windows/runner/win32_window.h | 20 +- l10n.yaml | 9 +- l10n/ar.arb | 8 + l10n/ckb.arb | 8 + l10n/de.arb | 8 + l10n/el.arb | 8 + l10n/en.arb | 21 + l10n/es.arb | 8 + l10n/fa.arb | 8 + l10n/fr.arb | 8 + l10n/hi.arb | 8 + l10n/it.arb | 8 + l10n/ku.arb | 8 + l10n/nb.arb | 8 + l10n/nl.arb | 8 + l10n/pt.arb | 8 + l10n/ru.arb | 8 + l10n/sv.arb | 8 + l10n/tr.arb | 8 + l10n/uk.arb | 8 + l10n/uz.arb | 8 + l10n/zh.arb | 8 + lib/l10n/ar.arb | 254 --- lib/l10n/de.arb | 254 --- lib/l10n/el.arb | 252 --- lib/l10n/en.arb | 252 --- lib/l10n/es.arb | 254 --- lib/l10n/fa.arb | 252 --- lib/l10n/fr.arb | 254 --- .../generated/phone_field_localization.dart | 1709 ----------------- .../phone_field_localization_ar.dart | 753 -------- .../phone_field_localization_de.dart | 753 -------- .../phone_field_localization_el.dart | 753 -------- .../phone_field_localization_en.dart | 753 -------- .../phone_field_localization_es.dart | 753 -------- .../phone_field_localization_fa.dart | 753 -------- .../phone_field_localization_fr.dart | 753 -------- .../phone_field_localization_hi.dart | 753 -------- .../phone_field_localization_it.dart | 753 -------- .../phone_field_localization_nb.dart | 753 -------- .../phone_field_localization_nl.dart | 753 -------- .../phone_field_localization_pt.dart | 753 -------- .../phone_field_localization_ru.dart | 753 -------- .../phone_field_localization_sv.dart | 753 -------- .../phone_field_localization_tr.dart | 753 -------- .../phone_field_localization_uk.dart | 753 -------- .../phone_field_localization_uz.dart | 754 -------- .../phone_field_localization_zh.dart | 753 -------- lib/l10n/hi.arb | 254 --- lib/l10n/it.arb | 254 --- lib/l10n/nb.arb | 252 --- lib/l10n/nl.arb | 254 --- lib/l10n/pt.arb | 254 --- lib/l10n/ru.arb | 254 --- lib/l10n/sv.arb | 254 --- lib/l10n/tr.arb | 254 --- lib/l10n/uk.arb | 252 --- lib/l10n/uz.arb | 252 --- lib/l10n/zh.arb | 254 --- lib/phone_form_field.dart | 14 +- lib/src/controllers/phone_controller.dart | 28 - .../controllers/phone_field_controller.dart | 64 - lib/src/country/country_button.dart | 80 + lib/src/country_button.dart | 86 + .../country_selector_navigator.dart | 174 +- .../phone_field_localization_impl.dart | 267 +++ .../phone_field_localization_impl_ar.dart | 29 + .../phone_field_localization_impl_ckb.dart | 30 + .../phone_field_localization_impl_de.dart | 29 + .../phone_field_localization_impl_el.dart | 30 + .../phone_field_localization_impl_en.dart | 29 + .../phone_field_localization_impl_es.dart | 29 + .../phone_field_localization_impl_fa.dart | 29 + .../phone_field_localization_impl_fr.dart | 30 + .../phone_field_localization_impl_hi.dart | 29 + .../phone_field_localization_impl_it.dart | 29 + .../phone_field_localization_impl_ku.dart | 30 + .../phone_field_localization_impl_nb.dart | 29 + .../phone_field_localization_impl_nl.dart | 29 + .../phone_field_localization_impl_pt.dart | 29 + .../phone_field_localization_impl_ru.dart | 30 + .../phone_field_localization_impl_sv.dart | 29 + .../phone_field_localization_impl_tr.dart | 30 + .../phone_field_localization_impl_uk.dart | 30 + .../phone_field_localization_impl_uz.dart | 30 + .../phone_field_localization_impl_zh.dart | 29 + lib/src/localization/localization.dart | 17 + lib/src/phone_controller.dart | 108 ++ lib/src/phone_form_field.dart | 194 ++ lib/src/phone_form_field_state.dart | 200 ++ .../allowed_characters.dart} | 2 +- .../localized_validation_error.dart | 3 + lib/src/validation/phone_validator.dart | 134 +- lib/src/validation/validator_translator.dart | 45 - lib/src/widgets/country_code_chip.dart | 57 - lib/src/widgets/country_selector/country.dart | 35 - .../country_selector/country_finder.dart | 81 - .../country_selector/country_list.dart | 110 -- .../country_selector/country_selector.dart | 167 -- .../country_selector_page.dart | 143 -- .../localized_country_registry.dart | 287 --- .../widgets/country_selector/search_box.dart | 50 - lib/src/widgets/phone_field.dart | 127 -- lib/src/widgets/phone_field_state.dart | 185 -- lib/src/widgets/phone_form_field.dart | 229 --- lib/src/widgets/phone_form_field_state.dart | 114 -- pubspec.yaml | 15 +- test/_country_selector_test.dart | 251 --- ...t => country_selector_navigator_test.dart} | 26 +- test/phone_form_field_test.dart | 524 +++-- test/phone_validator_test.dart | 203 -- 206 files changed, 4588 insertions(+), 22858 deletions(-) create mode 100644 .github/workflows/deploy_demo.yml rename .github/workflows/{ci.yml => tests.yml} (100%) delete mode 100644 .pubignore delete mode 100644 build.sh delete mode 100644 demo_image.png delete mode 100644 example/.github/workflows/ci.yml delete mode 100644 example/.pubignore create mode 100644 example/ios/RunnerTests/RunnerTests.swift create mode 100644 example/linux/.gitignore create mode 100644 example/linux/CMakeLists.txt create mode 100644 example/linux/flutter/CMakeLists.txt create mode 100644 example/linux/flutter/generated_plugins.cmake create mode 100644 example/linux/main.cc create mode 100644 example/linux/my_application.cc create mode 100644 example/linux/my_application.h create mode 100644 example/macos/.gitignore create mode 100644 example/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 example/macos/Flutter/Flutter-Release.xcconfig create mode 100644 example/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 example/macos/Flutter/ephemeral/Flutter-Generated.xcconfig create mode 100644 example/macos/Flutter/ephemeral/flutter_export_environment.sh create mode 100644 example/macos/Runner.xcodeproj/project.pbxproj create mode 100644 example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 example/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 example/macos/Runner/AppDelegate.swift create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 example/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 example/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 example/macos/Runner/Configs/Debug.xcconfig create mode 100644 example/macos/Runner/Configs/Release.xcconfig create mode 100644 example/macos/Runner/Configs/Warnings.xcconfig create mode 100644 example/macos/Runner/DebugProfile.entitlements create mode 100644 example/macos/Runner/Info.plist create mode 100644 example/macos/Runner/MainFlutterWindow.swift create mode 100644 example/macos/Runner/Release.entitlements create mode 100644 example/macos/RunnerTests/RunnerTests.swift delete mode 100644 example/windows/flutter/generated_plugin_registrant.cc delete mode 100644 example/windows/flutter/generated_plugin_registrant.h create mode 100644 l10n/ar.arb create mode 100644 l10n/ckb.arb create mode 100644 l10n/de.arb create mode 100644 l10n/el.arb create mode 100644 l10n/en.arb create mode 100644 l10n/es.arb create mode 100644 l10n/fa.arb create mode 100644 l10n/fr.arb create mode 100644 l10n/hi.arb create mode 100644 l10n/it.arb create mode 100644 l10n/ku.arb create mode 100644 l10n/nb.arb create mode 100644 l10n/nl.arb create mode 100644 l10n/pt.arb create mode 100644 l10n/ru.arb create mode 100644 l10n/sv.arb create mode 100644 l10n/tr.arb create mode 100644 l10n/uk.arb create mode 100644 l10n/uz.arb create mode 100644 l10n/zh.arb delete mode 100644 lib/l10n/ar.arb delete mode 100644 lib/l10n/de.arb delete mode 100644 lib/l10n/el.arb delete mode 100644 lib/l10n/en.arb delete mode 100644 lib/l10n/es.arb delete mode 100644 lib/l10n/fa.arb delete mode 100644 lib/l10n/fr.arb delete mode 100644 lib/l10n/generated/phone_field_localization.dart delete mode 100644 lib/l10n/generated/phone_field_localization_ar.dart delete mode 100644 lib/l10n/generated/phone_field_localization_de.dart delete mode 100644 lib/l10n/generated/phone_field_localization_el.dart delete mode 100644 lib/l10n/generated/phone_field_localization_en.dart delete mode 100644 lib/l10n/generated/phone_field_localization_es.dart delete mode 100644 lib/l10n/generated/phone_field_localization_fa.dart delete mode 100644 lib/l10n/generated/phone_field_localization_fr.dart delete mode 100644 lib/l10n/generated/phone_field_localization_hi.dart delete mode 100644 lib/l10n/generated/phone_field_localization_it.dart delete mode 100644 lib/l10n/generated/phone_field_localization_nb.dart delete mode 100644 lib/l10n/generated/phone_field_localization_nl.dart delete mode 100644 lib/l10n/generated/phone_field_localization_pt.dart delete mode 100644 lib/l10n/generated/phone_field_localization_ru.dart delete mode 100644 lib/l10n/generated/phone_field_localization_sv.dart delete mode 100644 lib/l10n/generated/phone_field_localization_tr.dart delete mode 100644 lib/l10n/generated/phone_field_localization_uk.dart delete mode 100644 lib/l10n/generated/phone_field_localization_uz.dart delete mode 100644 lib/l10n/generated/phone_field_localization_zh.dart delete mode 100644 lib/l10n/hi.arb delete mode 100644 lib/l10n/it.arb delete mode 100644 lib/l10n/nb.arb delete mode 100644 lib/l10n/nl.arb delete mode 100644 lib/l10n/pt.arb delete mode 100644 lib/l10n/ru.arb delete mode 100644 lib/l10n/sv.arb delete mode 100644 lib/l10n/tr.arb delete mode 100644 lib/l10n/uk.arb delete mode 100644 lib/l10n/uz.arb delete mode 100644 lib/l10n/zh.arb delete mode 100644 lib/src/controllers/phone_controller.dart delete mode 100644 lib/src/controllers/phone_field_controller.dart create mode 100644 lib/src/country/country_button.dart create mode 100644 lib/src/country_button.dart rename lib/src/{widgets/country_selector => }/country_selector_navigator.dart (71%) create mode 100644 lib/src/localization/generated/phone_field_localization_impl.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_ar.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_ckb.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_de.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_el.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_en.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_es.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_fa.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_fr.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_hi.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_it.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_ku.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_nb.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_nl.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_pt.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_ru.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_sv.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_tr.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_uk.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_uz.dart create mode 100644 lib/src/localization/generated/phone_field_localization_impl_zh.dart create mode 100644 lib/src/localization/localization.dart create mode 100644 lib/src/phone_controller.dart create mode 100644 lib/src/phone_form_field.dart create mode 100644 lib/src/phone_form_field_state.dart rename lib/src/{constants/patterns.dart => validation/allowed_characters.dart} (90%) create mode 100644 lib/src/validation/localized_validation_error.dart delete mode 100644 lib/src/validation/validator_translator.dart delete mode 100644 lib/src/widgets/country_code_chip.dart delete mode 100644 lib/src/widgets/country_selector/country.dart delete mode 100644 lib/src/widgets/country_selector/country_finder.dart delete mode 100644 lib/src/widgets/country_selector/country_list.dart delete mode 100644 lib/src/widgets/country_selector/country_selector.dart delete mode 100644 lib/src/widgets/country_selector/country_selector_page.dart delete mode 100644 lib/src/widgets/country_selector/localized_country_registry.dart delete mode 100644 lib/src/widgets/country_selector/search_box.dart delete mode 100644 lib/src/widgets/phone_field.dart delete mode 100644 lib/src/widgets/phone_field_state.dart delete mode 100644 lib/src/widgets/phone_form_field.dart delete mode 100644 lib/src/widgets/phone_form_field_state.dart delete mode 100644 test/_country_selector_test.dart rename test/{_country_selector_navigator_test.dart => country_selector_navigator_test.dart} (61%) delete mode 100644 test/phone_validator_test.dart diff --git a/.github/workflows/deploy_demo.yml b/.github/workflows/deploy_demo.yml new file mode 100644 index 00000000..9de33649 --- /dev/null +++ b/.github/workflows/deploy_demo.yml @@ -0,0 +1,49 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy static content to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + - name: Install deps + run: flutter pub get + working-directory: ./example + - name: build + run: flutter build web --base-href "/phone_form_field/" + working-directory: ./example + - name: Setup Pages + uses: actions/configure-pages@v4 + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./example/build/web + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/ci.yml b/.github/workflows/tests.yml similarity index 100% rename from .github/workflows/ci.yml rename to .github/workflows/tests.yml diff --git a/.gitignore b/.gitignore index 5bce2af0..2aad77e9 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,8 @@ .dart_tool/ .packages build/ -example/build \ No newline at end of file +example/build +**/generated_plugin_registrant.dart +**/generated_plugin_registrant.cc +**/generated_plugin_registrant.h +**/generated_plugin_registrant.cmake diff --git a/.pubignore b/.pubignore deleted file mode 100644 index d01dc04c..00000000 --- a/.pubignore +++ /dev/null @@ -1,36 +0,0 @@ -docs/ -example/build -example/windows -example/web -example/android -example/ios -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ -demo_image.png - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. -/pubspec.lock -**/doc/api/ -.dart_tool/ -.packages -build/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 3524e354..aa938b90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +## [9.0.0] + +- Big Internal refactor in the hope of making contribution easier +- Various fixes for country selection UX +- Various fixes for input cursor issues +- Improve accessibility touches surfaces +- Improve accessibility labels +- Some visual tweaks +- Added some missing countries +- [Breaking] : no validation done by default +- [Breaking] : provided validators now require a context parameter +- [Breaking] : `LocalizedCountryRegistry` removed. If you were using it to localize a country name, you should use `PhoneFieldLocalization.of(context).countryName(isoCode)`. +- [Deprecated] : `isCountryChipPersistent` in favor of `isCountryButtonPersistent`. +- [Deprecated] : `shouldFormat`, it is now always ON by default +- [Deprecated] : `defaultCountry`, you should now use either `initialValue` or provide a controller with an initial value. +- [Deprecated] : `CountrySelectorNavigator.searchDelegate()` changed into `CountrySelectorNavigator.PageNavigator()`. + + ## [8.1.1] - Upgraded phone_numbers_parser lib to 8.1.0 - Added norwegian language (PR #203) thanks @sidlatau diff --git a/README.md b/README.md index 9ea08993..58860224 100644 --- a/README.md +++ b/README.md @@ -5,52 +5,42 @@ Flutter phone input integrated with flutter internationalization ## Features - Totally cross platform, this is a dart only package / dependencies -- Internationalization +- Internationalization: many languages supported +- Semantics - Phone formatting localized by region - Phone number validation (built-in validators included for main use cases) -- Support autofill and copy paste -- Extends Flutter's FormField +- Support auto fill and copy paste +- Form field - Uses dart phone_numbers_parser for parsing - ## Demo Demo available at https://cedvdb.github.io/phone_form_field/ - ## Usage ```dart - -// works without any param PhoneFormField(); -// all params +/// params PhoneFormField( - key: Key('phone-field') - controller: null, // controller & initialValue value - initialValue: null, // can't be supplied simultaneously - shouldFormat: true // default - defaultCountry: IsoCode.US, // default - decoration: InputDecoration( - labelText: 'Phone', // default to null - border: OutlineInputBorder() // default to UnderlineInputBorder(), - // ... - ), - validator: PhoneValidator.validMobile(), // default PhoneValidator.valid() - isCountryChipPersistent: false, // default - isCountrySelectionEnabled: true, // default - countrySelectorNavigator: CountrySelectorNavigator.bottomSheet(), - showFlagInInput: true, // default - flagSize: 16, // default - autofillHints: [AutofillHints.telephoneNumber], // default to null - enabled: true, // default - autofocus: false, // default - onSaved: (PhoneNumber p) => print('saved $p'), // default null - onChanged: (PhoneNumber p) => print('saved $p'), // default null - // ... + other textfield params -) - + initialValue: PhoneNumber.parse('+33'), // or use the controller + validator: PhoneValidator.compose( + [PhoneValidator.required(), PhoneValidator.validMobile()]), + countrySelectorNavigator: const CountrySelectorNavigator.page(), + onChanged: (phoneNumber) => print('changed into $phoneNumber'), + enabled: true, + countryButtonPadding: null, + isCountrySelectionEnabled: true, + isCountryButtonPersistent: true, + showDialCode: true, + showIsoCodeInInput: true, + showFlagInInput: true, + flagSize: 16 + // + all parameters of TextField + // + all parameters of FormField + // ... +); ``` ## Validation @@ -68,7 +58,6 @@ PhoneFormField( ### Validators details * Each validator has an optional `errorText` property to override built-in translated text -* Most of them have an optional `allowEmpty` (default is true) preventing to flag an empty field as valid. Consider using a composed validator with a first `PhoneValidator.required` when a different text is needed for empty field. ### Composing validators @@ -103,8 +92,8 @@ Here are the list of the parameters available for all built-in country selector ### Built-in country selector -* **CountrySelectorNavigator.searchDelegate** - Open a dialog to select the country. +* **CountrySelectorNavigator.page** + Open a page to select the country. No extra parameters * **CountrySelectorNavigator.dialog** @@ -134,11 +123,11 @@ Here are the list of the parameters available for all built-in country selector ### Custom Country Selector Navigator You can use your own country selector by creating a class that implements `CountrySelectorNavigator` -It has one required method `navigate` expected to return the selected country: +It has one required method `show` expected to return the selected country: ```dart class CustomCountrySelectorNavigator implements CountrySelectorNavigator { - Future navigate(BuildContext context) { + Future show(BuildContext context) { // ask user for a country and return related `Country` class } } @@ -153,6 +142,12 @@ PhoneFormField( ## Internationalization +### Dynamic localization + +This package uses the `flutter_country_selector` package under the hood, which exports a method for dynamic localization `CountrySelectorLocalization.of(context).countryName(isoCode)`. + +### Setup + Include the delegate ```dart @@ -175,26 +170,26 @@ PhoneFormField( That's it. - A bunch of languages are built-in: - - - 'ar', - - 'de', - - 'en', - - 'el' - - 'es', - - 'fr', - - 'hin', - - 'it', - - 'nb', - - 'nl', - - 'pt', - - 'ru', - - 'uz', - - 'uk', - - 'tr', - - 'zh', - - 'sv', - +### Supported languages + + - ar + - de + - el + - en + - es + - fa + - fr + - hi + - it + - ku + - nb + - nl + - pt + - ru + - sv + - tr + - uk + - uz + - zh - If one of the language you target is not supported you can submit a - pull request with the translated file in src/l10n +If one of the language you target is not supported you can submit a pull request in flutter_country_selector and phone_form_field repositories. diff --git a/build.sh b/build.sh deleted file mode 100644 index 27451c48..00000000 --- a/build.sh +++ /dev/null @@ -1 +0,0 @@ -rm docs -rf && cd example && flutter build web --release && cd .. && mkdir docs && mv example/build/web/* docs \ No newline at end of file diff --git a/demo_image.png b/demo_image.png deleted file mode 100644 index 3ce97c4ded06771c39d6749c355e11ac1aff04a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131018 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

-o77QyHQxXu5yxL6~6 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 V-3*VU$%ChoIUz5Zc>IFPe*g&~yU73m diff --git a/example/.github/workflows/ci.yml b/example/.github/workflows/ci.yml deleted file mode 100644 index 2fd394ce..00000000 --- a/example/.github/workflows/ci.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: default - -on: - pull_request: - branches: - - 'dev' - - 'main' - -jobs: - flutter_test: - name: runs analyze and tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - with: - java-version: '12.x' - - uses: subosito/flutter-action@v1 - with: - channel: 'stable' # or: 'beta', 'dev' or 'master' - - run: flutter pub get - - run: flutter analyze - - run: flutter test diff --git a/example/.gitignore b/example/.gitignore index a1345d01..29a3a501 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -8,6 +8,7 @@ .buildlog/ .history .svn/ +migrate_working_dir/ # IntelliJ related *.iml @@ -26,13 +27,10 @@ .dart_tool/ .flutter-plugins .flutter-plugins-dependencies -.packages .pub-cache/ .pub/ /build/ -# Web related - # Symbolication related app.*.symbols diff --git a/example/.metadata b/example/.metadata index 0a999ee9..b5c370f3 100644 --- a/example/.metadata +++ b/example/.metadata @@ -4,7 +4,42 @@ # This file should be version controlled and should not be manually edited. version: - revision: db747aa1331bd95bc9b3874c842261ca2d302cd5 - channel: stable + revision: "41456452f29d64e8deb623a3c927524bcf9f111b" + channel: "stable" project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + - platform: android + create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + - platform: ios + create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + - platform: linux + create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + - platform: macos + create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + - platform: web + create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + - platform: windows + create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/example/.pubignore b/example/.pubignore deleted file mode 100644 index b349b8a0..00000000 --- a/example/.pubignore +++ /dev/null @@ -1,76 +0,0 @@ -docs/ - -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -build/ - -# Android related -**/android/**/gradle-wrapper.jar -**/android/.gradle -**/android/captures/ -**/android/gradlew -**/android/gradlew.bat -**/android/local.properties -**/android/**/GeneratedPluginRegistrant.java - -# iOS/XCode related -**/ios/**/*.mode1v3 -**/ios/**/*.mode2v3 -**/ios/**/*.moved-aside -**/ios/**/*.pbxuser -**/ios/**/*.perspectivev3 -**/ios/**/*sync/ -**/ios/**/.sconsign.dblite -**/ios/**/.tags* -**/ios/**/.vagrant/ -**/ios/**/DerivedData/ -**/ios/**/Icon? -**/ios/**/Pods/ -**/ios/**/.symlinks/ -**/ios/**/profile -**/ios/**/xcuserdata -**/ios/.generated/ -**/ios/Flutter/App.framework -**/ios/Flutter/Flutter.framework -**/ios/Flutter/Flutter.podspec -**/ios/Flutter/Generated.xcconfig -**/ios/Flutter/app.flx -**/ios/Flutter/app.zip -**/ios/Flutter/flutter_assets/ -**/ios/Flutter/flutter_export_environment.sh -**/ios/ServiceDefinitions.json -**/ios/Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!**/ios/**/default.mode1v3 -!**/ios/**/default.mode2v3 -!**/ios/**/default.pbxuser -!**/ios/**/default.perspectivev3 diff --git a/example/README.md b/example/README.md index a1356260..2b3fce4c 100644 --- a/example/README.md +++ b/example/README.md @@ -8,9 +8,9 @@ This project is a starting point for a Flutter application. A few resources to get you started if this is your first Flutter project: -- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) -For help getting started with Flutter, view our -[online documentation](https://flutter.dev/docs), which offers tutorials, +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, samples, guidance on mobile development, and a full API reference. diff --git a/example/analysis_options.yaml b/example/analysis_options.yaml index 61b6c4de..0d290213 100644 --- a/example/analysis_options.yaml +++ b/example/analysis_options.yaml @@ -13,8 +13,7 @@ linter: # The lint rules applied to this project can be customized in the # section below to disable rules from the `package:flutter_lints/flutter.yaml` # included above or to enable additional rules. A list of all available lints - # and their documentation is published at - # https://dart-lang.github.io/linter/lints/index.html. + # and their documentation is published at https://dart.dev/lints. # # Instead of disabling a lint rule for the entire project in the # section below, it can also be suppressed for a single line of code diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 5fe3c929..118ee1d9 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,12 +22,10 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { + namespace "com.example.example" compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -44,6 +43,8 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.example" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() @@ -63,6 +64,4 @@ flutter { source '../..' } -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} +dependencies {} diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml index c208884f..399f6981 100644 --- a/example/android/app/src/debug/AndroidManifest.xml +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -1,6 +1,6 @@ - - diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 3f41384d..19b862ec 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - - + diff --git a/example/android/app/src/main/res/values-night/styles.xml b/example/android/app/src/main/res/values-night/styles.xml index 3db14bb5..06952be7 100644 --- a/example/android/app/src/main/res/values-night/styles.xml +++ b/example/android/app/src/main/res/values-night/styles.xml @@ -3,7 +3,7 @@ diff --git a/example/android/build.gradle b/example/android/build.gradle index 4256f917..e83fb5da 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,12 +1,11 @@ buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -26,6 +25,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 94adc3a3..598d13fe 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1,3 +1,3 @@ -org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx4G android.useAndroidX=true android.enableJetifier=true diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index bc6a58af..3c472b99 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Jun 23 08:50:38 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 44e62bcf..7cd71285 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,11 +1,29 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" + plugins { + id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.3.0" apply false +} + +include ":app" diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist index 9625e105..7c569640 100644 --- a/example/ios/Flutter/AppFrameworkInfo.plist +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 11.0 + 12.0 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index fe3d67b2..69cdaed8 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -13,8 +13,19 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXCopyFilesBuildPhase section */ 9705A1C41CF9048500538489 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -42,6 +53,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -66,12 +79,21 @@ name = Flutter; sourceTree = ""; }; + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; 97C146E51CF9000F007C117D = { isa = PBXGroup; children = ( 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, ); sourceTree = ""; }; @@ -79,6 +101,7 @@ isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, ); name = Products; sourceTree = ""; @@ -101,6 +124,24 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807E294A63A400263BE5 /* Frameworks */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 97C146ED1CF9000F007C117D /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; @@ -127,9 +168,14 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; @@ -150,11 +196,19 @@ projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EC1CF9000F007C117D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -176,6 +230,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -202,6 +257,14 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EA1CF9000F007C117D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -213,6 +276,14 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ 97C146FA1CF9000F007C117D /* Main.storyboard */ = { isa = PBXVariantGroup; @@ -274,7 +345,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -304,6 +375,56 @@ }; name = Profile; }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AE0B7B92F70575B8D7E0D07E /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 89B67EB44CE7B6631473024E /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 640959BDD8F10B91D80A66BE /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -351,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -400,7 +521,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -457,6 +578,16 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a3..87131a09 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ + + + + Gw7hsN~k)CYt4dQDFxbs5*_&e@Hj)wtt(&JE<3Eq*D z;_gQLvqXoKv=I*gWqM9C(Tvu0>=?hTbOp9!6k6AF;>f6|S5%jGEE}TA9h)e`Yuiu8 d7)l?o1NFcJg%EAfM$P~L002ovPDHLkV1g^Dnv?(l delta 550 zcmV+>0@?ki0<;8>8Gi-<0051N9Sr~g00DDSM?wIu&K&6g00HhvL_t(I5v`QFOB_)Y z#?QI;j_a;jjf#Z$YJ7mH(xecJU?W)A`9CN~KrBV85C}GDQ=|;GDFPNjtWty!L{u=? zh>8yo%^GE+J9o~_IZFoiamQVQXP7%LzTbT3F@uf+9x&7cvVV%GdjTaC;zf>@mq<=3 z!c<%*UT)@yJ|0BK6~d4Jx-*KV`ZQ(@VyUPupum=XhInNG#Z_k-X|hK{B}~9IfiWx} zLD5QY6Vm)p0NrWymdkrHPN5Vgwd>5>4HI1=@PA+e^rq~CEj|n2X`??)0mUI*D{KBn zjv{V=y5X9|X@3grkpcXC6oou4ML~ezCc2EtnsQTB4tWNg?4bkf;hG7IMfhgNI(FV5 zGs4|*GyMTIY0$B=_*mso9+>eB z?J{?+FLkYu+4_Uk`r_>LHF~flZm0oBf#vr8%vJ>#p~!KNvqGG3)|f1T_)ydeh8$vDceZ>oNbH^|*hJ*t?Yc*1`WB&W>VYVEzu) zq#7;;VjO)t*nbgf(!`OXJBr45rP>>AQr$6c7slJWvbpNW@KTwna6d?PP>hvXCcp=4 zF;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f<+$JJpcdz delta 1274 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 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png index 4cde12118dda48d71e01fcb589a74d069c5d7cb5..4cd7b0099ca80c806f8fe495613e8d6c69460d76 100644 GIT binary patch delta 266 zcmV+l0rmcY2$}+r8Gi!+003c4mpuRg09{Z_R7L;)|5U~JDYo_jSDX9(|7FYh`2GLd z^Zv2r{H^2sT*&w!Y^SB+`<>qVZqE6)=lqo0`vF#&*75!I`TIh@_d&k*HoEtQyV-iD z%Xz2D9EQRbeYh5Nr~y=#0ZD;^+vz0$004MNL_t(2&&|%+4u6C&2tZM$Wf&dzefR%A z(^3-?6X>hnCz2Ba@RH&`m!pgy?n@#@AuLYB&}Q)FGY`?vcft0!vht0Z@M&ZeNCWXh75gzRTXR8EE3oN&6 Q00000NkvXXt^-0~g5kS`djJ3c delta 1014 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 Zxpx7IC@PekH?;r&002ovPDHLkV1i)CYaajr delta 1916 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 delta 1274 zcmV@pi1MCNO0zH7s z{8#}P0)7Ba8DqYf&QgSne>X__O83t$NZM4&R0{XJq|x}oAU?tcfC@|eNz$04T}34& z8DJf78R&>*Zz`k$q{`#gfGHnx7nlH^G{y`jfER)1<_fNi<9aM%_zrm1C`yPkKma(+ ztQ;y*CR2bbBYz>zG*SVsfpkGU(q>uHZf3iogk_%#9E|5SWeHrmAo>P;ejX7mwq#*} zW25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+X$F_KMdb6sRz!~7K zkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&IDi_4_D!s#MVXp|-XhH;H z#&@_;oApJVd}}5O@b=X_gJboD^-fM@6|#V@sA%X)Rlkd}3MLH0dGXGG&-HX|aD~|M zC)W#H7=H?AbtdaV#dGpubj_O^J-SlWpVNv-5(;wR%mvE9`Qaqo>03b&##eNNf=m#B z9@^lsd8tJ;BvI86kNV zc~0CY(7V{s+h%cWG|y=gt|q`z$l<(@qU=i?9q#uz`G?PgDMK!VMGidHZt*N+1L0ZI zFkH=mFtywc6rJ}C_?)=m)18V!ZQ`*-j(D`gCFK|nt#{bk*%%zuQ7o7kvJgA^=(^7b zzkm5GZ;jxRn{Wup8IOUx8D4uh&(=Ox-7$a;U><*5L^!% zxRlw)vAbh;sdlR||&e}8_8%)c2Fwy=F& zH|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}Jb#viX>Oi;kBKp1x_fc0#UIbIeSJ^EkWFox zijdim{ojmn@#7EC*aY;fC0W*WN+DmQtE06pNK3SfZ^#@2K`6RgEuU_KwJTQ>E?Yar zc_9e#I$F8%>kuy-JI6ocSsYvQGbsxUCx04(w1z-pMRz9`kH5smmF@WHEG?dcYkv){ zV?kn3XB$_3zr*h1Uow)(<5)w5;3Wh1jHI)`ZlXp&!yEV{Y_~@;?CLwq;4eeaGOe6( zEsSSbwSGD0-`dUUl014$1_O8Gi!+006nq0-pc?0H{z*R7L;)|5U~JDYo_jSDXF*|5nEMy6F5^ z$M}8I`uzU?*Yf=uXr;5|{0m;6_Wb|A>ik^D_|)+I$?g3CSDK^3+eX0mD!2CP`2NN0 z{dLg!a?km&%iyTt`yiax0acdp`~T(l{$a`ZF1YpsRg(cvjDG_-U$Er-fz#Bw>2W$eUI#iU z)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G!hkE!s;%oku3;IwG3U^2k zw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn_j%}l|2+O?a>_7qq7W zmx(qtA2nV^tZlLpy_#$U%ZNx5;$`0L&dZ!@e7rFXPGAOup%q`|03hpdtXsPP0000< KMNUMnLSTZ1N;Pr- delta 1891 zcmV-p2b}oI1m_Nr8Gi-<0052=@~r>>2QEoOK~#9!?VW3E6jc<*XLh$yKNt;)Mial3 z7z%<>zxaV5DhMs*(b6YIW1=KP6Jj(m21QYbiJ}su&;o5EN=$%gptMj6p|(7#AOTUJ zlt8fsX(iGq?ZQ50=XmbU+~w|cmz~|6$KBbz$-g^IcV>Hk`+q<8%-p?uMi3G-0B~!5 ze-yPCwFPw?HGmpMc~K)7BCq;C528+>zC*o^8h^XKC)IFgkv#xzm!ewK7j|kRa9dFo zC>MoDSR@P2#cWSU{i1oH5K2-Xb3jRz>|h7VOh0K` zhq^--L3H}A0r)nr z;Tr|-kPjB1s=ItpnS`oT%|U=a4oK-ZFIE^YBLH{u2#~@%%D^K)$`9*Tg(~9M-B+Zj z;~H?4LVsEt0eFtN4&>H(DZ@KpI6RhBKLL21CxC`J&m4Gc^9wwMZU#7SR1+KtuhSZM z+yLY}Vekzw6T_ApfEkuB_yU;e&a)L@rX~z70A_N+upOXN!qygmPDmKG0d%7CECcAI zgkd>ArzH$a0XjKsO$X@IgkcH5Y;m3`0G*yNOn(KK4GF_EfL4aB5i1j9o&Z{vFk~k> z&?@K2jQcJO%W!cddG(_DyfSoO55bUMHtbDF8DPkwF^~Ql#Eq4w15k{h%ML5Ar&pzi zl-D7v8kQXQ!&RRgKCW#5DZB$$6?mjWm50rRw*ukK>P-GkA|k69h{NARc>e}uLx+U4 z0DqE>7pa}9Fez+Vc-3jb`%i^uulglFoMzAVR|2%rf= zf#;74FXF^Ku_4+G&-4$KVy%YP>%2rxu2VG_cdm?XRjEhF&wPXJ># z_Q2+jGs=l~Fyx#MmGn+PZ0`@kBfGp|fO;Vov<$;z`(+sSZ7;Y=zXaF(8rb@CuQDV^ zq3i(2LfqO%AS!Ss>V%j7%>{6mtbYQrtQK5V4InPq0NZSaXv+f2U=&2}Z6OvkBfNHi z{LSaVJ!d5dC2K*ft_L^DRk;boQhOoVw!~Kt#0b2vd%!(&DF|~u1F@nG#LA5zR&7Fv z4GKgXooMSKb1g)6Obo-rgpuEP20T;W0Aa>55KC4gtQrKkAq-Hgs@FigV1GG8+rQ=z z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRet3L_uNyQ*c zE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=kyx=~RKa4{iT zm{_>_vSCm?$Ej=i6@=m%@PE9t1zZaoM}@2|h!#1K02~31S_I<0ZV=|K0}n!RRX6Ac zXmMf*5P-dLW}WPVsCKq)-x(0*txpZ2xrv3cxJ%l=7lpoNCyG< zK92ySAcmb-3m&}s@VwXv9(0#p<>B-5$bMxT;rk;OmENa6eM4D&LVo~01soUL39?R{ zyFLt3m|v?rCK7#KNu9E9Q4KV-pEUv^{rrClE&X&9I4-e7%pu_31#zGTOfC=ab%w20R*zBP+uT#l2{a~~~0wuG%6 zco*tVxK&e>%SJj*K!2tq*_h&ES5S9@TKb8WzpK;`&b9dNdxh4S)z%Q)o`aYWUh}9L z(`p!#WO5IxI|nf?yz{90R93Ed6@2qim*}Zjj$H&Esd`?JsFJUnDfiAgF_eYiWR3GC z>M9SHDylEWrA(%mfm~;u7OU9!Wz^!7Z%jZF zi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i0WYBP d*#0Ks^FNSabJA*5${_#%002ovPDHLkV1gB0Vle;! diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..0ec303439225b78712f49115768196d8d76f6790 100644 GIT binary patch delta 850 zcmV-Y1Fih&6y64q8Gi!+000iU#^3+|0OwFlR7L;)|5U~J09TtSw)Xt~|5(QO`~Ck( z!T0|D|3<*~RmJ%E{r+;#`2ba!klFf7!uJMSo%Q?vP{jByxcAZE>;OrUCbaZYjJo^$ z{nGILmD~Da$@upC{`C6(Ey4dPw)Pyc^>5DkHoEo!QcuK-Jwl-l}t(fQKv z{dds$V#@dygS`PvhX6is7Z+@*x-d;$ zb=6f@U3Jw}_s+W3%*+b9H_vS)-R#9?zrXogeLVI2We2RFTTAL}&3C8PS~<5D&v@UI z+`s*$wqQ=yd$laNUY-|ovcS9~n_90tFUdl#qq0tEUXle|k{Op|DHpSrbxEeZ5~$>o%>OSe z^=41qvh3LlC2xXzu+-2eQoqs1^L>7ylB$bCP);(%(xYZL1 cY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f@rA97ytkO literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..0ec303439225b78712f49115768196d8d76f6790 100644 GIT binary patch delta 850 zcmV-Y1Fih&6y64q8Gi!+000iU#^3+|0OwFlR7L;)|5U~J09TtSw)Xt~|5(QO`~Ck( z!T0|D|3<*~RmJ%E{r+;#`2ba!klFf7!uJMSo%Q?vP{jByxcAZE>;OrUCbaZYjJo^$ z{nGILmD~Da$@upC{`C6(Ey4dPw)Pyc^>5DkHoEo!QcuK-Jwl-l}t(fQKv z{dds$V#@dygS`PvhX6is7Z+@*x-d;$ zb=6f@U3Jw}_s+W3%*+b9H_vS)-R#9?zrXogeLVI2We2RFTTAL}&3C8PS~<5D&v@UI z+`s*$wqQ=yd$laNUY-|ovcS9~n_90tFUdl#qq0tEUXle|k{Op|DHpSrbxEeZ5~$>o%>OSe z^=41qvh3LlC2xXzu+-2eQoqs1^L>7ylB$bCP);(%(xYZL1 cY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f@rA97ytkO literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..e9f5fea27c705180eb716271f41b582e76dcbd90 100644 GIT binary patch delta 1668 zcmV-~27CGU9f}Q*8Gi!+000UT_5c6?0S-`1R7L;)|5U~JDYo_jSDRJE`2GI>`u+b> z#Q0do`1}6<{Qdq#!1wR$2T#*AweE>Ub09v4>;QIg_I^_2LtK$20(D{zn_^HL*3Rj70 z%=tLH_b#{gK7W9-03t&#zyHMQ{FK}Jd(rva=I|w|=9#+Ihp*3ip1$;$>j3}&1vg1V zK~#9!?b~^C5-}JC@Pyrv-6dSEqJqT}#j9#dJ@GzT@B8}xU&J@bBI>f6w6en+CeI)3 z^kC*U?}X%OD8$Fd$H&LV$H&LV$H&LV#|K5~mLYf|Vt-;AMv#QX1a!Ta~6|O(zp+Uvg&Aa=+vBNz0Rs{AlWy-99x<(ohfpEcFpW=7o}_1 z>s&Ou*hMLxE-GxhC`Z*r>&|vj>R7LXbI`f|486`~uft__uGhI}_Fc5H63j7aDDIx{dZl^-u)&qKP!qC^RMF(PhHK^33eOuhHu{hoSl0 zKYv6olX!V%A;_nLc2Q<$rqPnk@(F#u5rszb!OdKo$uh%0J)j}CG3VDtWHIM%xMVXV zmTF#h81iB>r55Is`L$8KI@d+*%{=Nx+FXJ98L0PjFIu;rGnnfYn1R5Qnp<{Jq0M1v zX=X&F8g4GYHsMFm8dDG!y@wy0LzrDkP5n}RZ}&a^{lJ!qV}DSMg`_~iho-+ zYhFY`V=ZZN~BQ&RAHmG&4 z!(on%X00A@4(8Rri!ZBBU(}gmP=BAPwO^0~hnWE5<&o5gK6CEuqlcu2V{xeEaUGt9 zX7jznS5T?%9I4$fnuB2<)EHiTmPxeQU>*)T8~uk^)KEOM+F)+AI>Y`eP$PIFuu==9 zE-`OPbnDbc|0)^xP^m`+=GW8BO)yJ!f5Qc}G(Wj}SEB>1?)30sXn)??nxVBC z)wA(BsB`AW54N{|qmikJR*%x0c`{LGsSfa|NK61pYH(r-UQ4_JXd!Rsz)=kL{GMc5{h13 z8)fF5CzHEDM>+FqY)$pdM}M_8rrW{O4m<%Dt1&gzy8K(_+x-vIN$cs;K#LctaW&OA zAuk_42tYgpa$&Njilse`1^L+zfE<)2YpPh<)0mJ;*IFF|TA%1xX3fZ$kxPfoYE=Ci z)BrMgp=;8Y9L43*j@*RFlXvO-jQ`tkm#McyC%N^n#@P}`4hjO2}V z1RP0E%rxTfpJbnekUwBp-VB(r604xuJ$!t8e0+R-e0+R-e0+R-^7#e&>dm?Lo++vT O0000jJBgitF5mAp-i>4+KS_oR{|13AP->1TD4=w)g|)JHOx|a2Wk1Va z!k)vP$UcQ#mdj%wNQoaJ!w>jv_6&JPyutpQps?s5dmDQ>`%?Bvj>o<%kYG!YW6H-z zu`g$@mp`;qDR!51QaS}|ZToSuAGcJ7$2HF0z`ln4t!#Yg46>;vGG9N9{V@9z#}6v* zfP?}r6b{*-C*)(S>NECI_E~{QYzN5SXRmVnP<=gzP+_Sp(Aza_hKlZ{C1D&l*(7IKXxQC1Z9#6wx}YrGcn~g%;icdw>T0Rf^w0{ z$_wn1J+C0@!jCV<%Go5LA45e{5gY9PvZp8uM$=1}XDI+9m7!A95L>q>>oe0$nC->i zeexUIvq%Uk<-$>DiDb?!In)lAmtuMWxvWlk`2>4lNuhSsjAf2*2tjT`y;@d}($o)S zn(+W&hJ1p0xy@oxP%AM15->wPLp{H!k)BdBD$toBpJh+crWdsNV)qsHaqLg2_s|Ih z`8E9z{E3sA!}5aKu?T!#enD(wLw?IT?k-yWVHZ8Akz4k5(TZJN^zZgm&zM28sfTD2BYJ|Fde3Xzh;;S` z=GXTnY4Xc)8nYoz6&vF;P7{xRF-{|2Xs5>a5)@BrnQ}I(_x7Cgpx#5&Td^4Q9_FnQ zX5so*;#8-J8#c$OlA&JyPp$LKUhC~-e~Ij!L%uSMu!-VZG7Hx-L{m2DVR2i=GR(_% zCVD!4N`I)&Q5S`?P&fQZ=4#Dgt_v2-DzkT}K(9gF0L(owe-Id$Rc2qZVLqI_M_DyO z9@LC#U28_LU{;wGZ&))}0R2P4MhajKCd^K#D+JJ&JIXZ_p#@+7J9A&P<0kdRujtQ_ zOy>3=C$kgi6$0pW06KaLz!21oOryKM3ZUOWqppndxfH}QpgjEJ`j7Tzn5bk6K&@RA?vl##y z$?V~1E(!wB5rH`>3nc&@)|#<1dN2cMzzm=PGhQ|Yppne(C-Vlt450IXc`J4R0W@I7 zd1e5uW6juvO%ni(WX7BsKx3MLngO7rHO;^R5I~0^nE^9^E_eYLgiR9&KnJ)pBbfno zSVnW$0R+&6jOOsZ82}nJ126+c|%svPo;TeUku<2G7%?$oft zyaO;tVo}(W)VsTUhq^XmFi#2z%-W9a{7mXn{uzivYQ_d6b7VJG{77naW(vHt-uhnY zVN#d!JTqVh(7r-lhtXVU6o})aZbDt_;&wJVGl2FKYFBFpU-#9U)z#(A%=IVnqytR$SY-sO( z($oNE09{D^@OuYPz&w~?9>Fl5`g9u&ecFGhqX=^#fmR=we0CJw+5xna*@oHnkahk+ z9aWeE3v|An+O5%?4fA&$Fgu~H_YmqR!yIU!bFCk4!#pAj%(lI(A5n)n@Id#M)O9Yx zJU9oKy{sRAIV3=5>(s8n{8ryJ!;ho}%pn6hZKTKbqk=&m=f*UnK$zW3YQP*)pw$O* zIfLA^!-bmBl6%d_n$#tP8Zd_(XdA*z*WH|E_yILwjtI~;jK#v-6jMl^?<%Y%`gvpwv&cFb$||^v4D&V=aNy?NGo620jL3VZnA%s zH~I|qPzB~e(;p;b^gJr7Ure#7?8%F0m4vzzPy^^(q4q1OdthF}Fi*RmVZN1OwTsAP zn9CZP`FazX3^kG(KodIZ=Kty8DLTy--UKfa1$6XugS zk%6v$Kmxt6U!YMx0JQ)0qX*{CXwZZk$vEROidEc7=J-1;peNat!vS<3P-FT5po>iE z!l3R+<`#x|+_hw!HjQGV=8!q|76y8L7N8gP3$%0kfush|u0uU^?dKBaeRSBUpOZ0c z62;D&Mdn2}N}xHRFTRI?zRv=>=AjHgH}`2k4WK=#AHB)UFrR-J87GgX*x5fL^W2#d z=(%K8-oZfMO=i{aWRDg=FX}UubM4eotRDcn;OR#{3q=*?3mE3_oJ-~prjhxh%PgQT zyn)Qozaq0@o&|LEgS{Ind4Swsr;b`u185hZPOBLL<`d2%^Yp1?oL)=jnLi;Zo0ZDliTtQ^b5SmfIMe{T==zZkbvn$KTQGlbG8w}s@M3TZnde;1Am46P3juKb zl9GU&3F=q`>j!`?SyH#r@O59%@aMX^rx}Nxe<>NqpUp5=lX1ojGDIR*-D^SDuvCKF z?3$xG(gVUsBERef_YjPFl^rU9EtD{pt z0CXwpN7BN3!8>hajGaTVk-wl=9rxmfWtIhC{mheHgStLi^+Nz12a?4r(fz)?3A%at zMlvQmL<2-R)-@G1wJ0^zQK%mR=r4d{Y3fHp){nWXUL#|CqXl(+v+qDh>FkF9`eWrW zfr^D%LNfOcTNvtx0JXR35J0~Jpi2#P3Q&80w+nqNfc}&G0A~*)lGHKv=^FE+b(37|)zL;KLF>oiGfb(?&1 zV3XRu!Sw>@quKiab%g6jun#oZ%!>V#A%+lNc?q>6+VvyAn=kf_6z^(TZUa4Eelh{{ zqFX-#dY(EV@7l$NE&kv9u9BR8&Ojd#ZGJ6l8_BW}^r?DIS_rU2(XaGOK z225E@kH5Opf+CgD^{y29jD4gHbGf{1MD6ggQ&%>UG4WyPh5q_tb`{@_34B?xfSO*| zZv8!)q;^o-bz`MuxXk*G^}(6)ACb@=Lfs`Hxoh>`Y0NE8QRQ!*p|SH@{r8=%RKd4p z+#Ty^-0kb=-H-O`nAA3_6>2z(D=~Tbs(n8LHxD0`R0_ATFqp-SdY3(bZ3;VUM?J=O zKCNsxsgt@|&nKMC=*+ZqmLHhX1KHbAJs{nGVMs6~TiF%Q)P@>!koa$%oS zjXa=!5>P`vC-a}ln!uH1ooeI&v?=?v7?1n~P(wZ~0>xWxd_Aw;+}9#eULM7M8&E?Y zC-ZLhi3RoM92SXUb-5i-Lmt5_rfjE{6y^+24`y$1lywLyHO!)Boa7438K4#iLe?rh z2O~YGSgFUBH?og*6=r9rme=peP~ah`(8Zt7V)j5!V0KPFf_mebo3z95U8(up$-+EA^9dTRLq>Yl)YMBuch9%=e5B`Vnb>o zt03=kq;k2TgGe4|lGne&zJa~h(UGutjP_zr?a7~#b)@15XNA>Dj(m=gg2Q5V4-$)D|Q9}R#002ovPDHLkV1o7DH3k3x diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..84ac32ae7d989f82d5e46a60405adcc8279e8001 100644 GIT binary patch delta 749 zcmVg;Ps8|O$@u8^{Z_{KM!@$5TAfS6_e#O{MZfpz`2O`0$7~@NRr(1{THzH08y3x{{PYM{eL;T_A9^tcF_4Sxb`8l z_9V3RD6;a(-0A^Pjsi!1?)d#Ap4Tk3^CP0(07;VpJ7@tgQ}z4)*zx@&yZwC9`DV-b z0ZobH_5IB4{KxD3;p_6%|f=bdFhu+F!zMZ2UFj;GUKX7tI;hv3{q~!*pMj75WP_c}> z6)IWvg5_yyg<9Op()eD1hWC19M@?_9_MHec{Z8n3FMs~w_u?Av_yNBmRxVYrpi(M% zFMP21g+hmocQp3ay*Su=qM6He)*HaaTg$E^sym`(t%s3A)x!M+vfjXUBEpK6X9%iU zU!u9jj3(-$dM~sJ%Liy#?|+!6IY#MTau#O6vVj`yh_7%Ni!?!VS+MPTO(_fG+1<#p zqu;A#i+_(N%CmVnYvb>#nA{>Q%3E`Ds7<~jZMywn@h2t>G-LrYy7?Dj{aZqhQd6tzX%(Trn+ z)HNF}%-F{rr=m*0{=a;s#YDL00000NkvXXu0mjfaGjYE delta 1884 zcmV-i2c!7<1>g>l8Gi-<0076AQ7Zrd2Pa8HK~#9!?VNjT6h$1z_m0EFf5bmb1dTDK zp;kdKV1h(V(8Sc1M<37!RE>znAk{x4#zX@eOeE1j3~!+nB5IL z<xS}u?#DBMB>w^b($1Z)`9G?eP95EKi& z$eOy@K%h;ryrR3la%;>|o*>CgB(s>dDcNOXg}CK9SPmD?Uu$P4(=PGA0ShFasNfcIHTL?9WjB9#(2xSLC z`0%$#9DW9F;B4mbU{BlaYx!SjF!QSeF~(msQRxwboh5B_O$BWOQja)GboJz$&!?mgB&3$ytsA zvns&b3Cl5Hx#%p%faR*Q906u&fbXy$maV`n?S>A)vJIH!F-vxCrY+rq5_JA(GcOgu7(Ky4X3ATR9z8*%k&<5qYeV&4Y`~}XYmK(j{)!g8d2UgHXIINM!Rvn zKtEq~Foe0s!U{kux~F6Y7Sp+2f|*Cc${S{@oh8D0=XhB8Ec-w9CflfL+te4ium2cU zoPTCj_m<3d#gjK=<*8R`HP^C$lOPM5d~UhKhRRmvv{LI za^|oavk1$QiEApSrP@~Jjbg`<*dW4TO@DPEEX$Tg$xh?Y>Qd}y@kaH~IT8!lLpS^J zR7(&wZSI6+>Eb)tX>9Z?GX#q$u z4I>7e#b7ojyJ1grOh!^}s8S#ubi^Jkd1?UK)3mp6rI^_zxRY zrx6_QmhoWoDR`fp4R7gu6@OBFGu7IDVR6~nJsB{^f5jHn<{WJ&&f^X?3f8TIk3#U& zu1*Q-e@;snJxNx8-PBnpI|uFTKN!+Lp;fPfZ+eqqU^Y1|#DJY~126?zOx-+d>%4*? z&o`TbrXSNXZW^!P0t2>@$6&aiBtUDh2wLXLD9&a(1J=k_FK|iGbAQ@x4Qmx}Ms+*; zze&q6bH(=wYuXHfz0H6<05!LkE4rl~v^!bj=^9d+vI5fN<;GP>*Pas=q2l9RxDkk` zPRk&EQI+t_0$Y%nKE)Ma)W?jaA@4Z{h zTk*7;;#lG?hvTN_On=Jaxp%bdE;mDq(q#dgdYF|-?wrMeI4h`$idZ6^VyXZVlaCd0 z;i)OYR3npf@9>00Gqn##Zb4HRurgaWFCzL9u6@J@sse>Z1XznxWvSy%Td32I3!#YN zXt9v0)RQtDDZRd?#WY?~KF7A0UcR{jt9 W+;fr}hV%pg0000&=UXv0SHh`R7L;)|5U~JDYo_jSDRDC`1<|-SjPDL z{{Q{{{{H{}09Kk-#rR9Y_viNgVafPO!S|ls`uzR=MZfp^{QU=8od8La1X`Tr_Wmff z_5e$ivgQ1@=KMy$_g9a+`TPAle6cOJ_Fc#L7qIpvwDkd1mw$fK`6IOUD75rX!}mad zv(fMTE4=(Nx%L54lL1hVF1YpqNrC`FddBPg#_Ietx%Lrkq5wX00X1L{S%Cm9QY*av z#_Rh5PKy9KYTWbvz3BX9%J>0Hi1+#X{rLA{m%$Kamk?i!03AC38#Yrxs)5QTeTVRiEmz~MKK1WAjCw(c-JK6eox;2O)?`?TG`AHia671e^vgmp!llK zp|=5sVHk#C7=~epA~VAf-~%aPC=%Qw01h8mnSZ|p?tc*y?iZ$PR7_ceEIapF3KB14K0Pog?7wtd+^xgUCa_GVmlD z<^nU>AU_Yn-JU?NFdu|wf^bTCNf-wSBYVZltDdvGBln-YrbeGvJ!|s{#`gjN@yAMb zM6cjFz0eFECCsc|_8hTa3*9-JQGehksdoVP^K4m?&wpA~+|b%{EP5D-+7h)6CE; z*{>BP=GRR3Ea}xyV*bqry{l^J=0#DaC4ej;1qs8_by?H6Tr@7hl>UKNZt)^B&yl;)&oqzLg zcfZxpE?3k%_iTOVywh%`XVN-E#COl+($9{v(pqSQcrz=)>G!!3HeNxbXGM@})1|9g zG4*@(OBaMvY0P0_TfMFPh fVHk#CZX3S=^^2mI>Ux-D00000NkvXXu0mjfzK(<8 literal 3294 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 cX)(b1KSk$MOV07*qoM6N<$f&{Qds= z{r_0T`1}6fwc-8!#-TGX}_?g)CZq4{k!uZ_g@DrQdoW0kI zu+W69&uN^)W`CK&06mMNcYMVF00dG=L_t(|+U?wHQxh>12H+Dm+1+fh+IF>G0SjJM zkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJTkdTm&kdTm&kdTm&kdP`e zsgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>VI$fQI%^ugM`#6By?GeadWcu z0gy9!D`m!H>Bd!JW(@avE8`|5XX(0PN}!8K>`dkavs;rHL+wy96QGNT=S@#7%xtlm zIW!++@*2zm-Py#Zr`DzqsLm!b{iskFNULSqE9A>SqHem>o31A%XL>S_5?=;V_i_y+ z(xxXhnt#r-l1Y8_*h`r?8Tr|)(RAiO)4jQR`13X0mx07C&p@KBP_2s``KEhv^|*8c z$$_T(v6^1Ig=#R}sE{vjA?ErGDZGUsyoJuWdJMc7Nb1^KF)-u<7q zPy$=;)0>vuWuK2hQhswLf!9yg`88u&eBbR8uhod?Nw09AXH}-#qOLLxeT2%C;R)QQ$Za#qp~cM&YVmS4i-*Fpd!cC zBXc?(4wcg>sHmXGd^VdE<5QX{Kyz$;$sCPl(_*-P2Iw?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF34$0Z;QO!J zOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUCUoZo%k(yku QW&i*H07*qoM6N<$g47z!?*IS* literal 3612 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 iW8UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UIViewControllerBasedStatusBarAppearance - CADisableMinimumFrameDurationOnPhone UIApplicationSupportsIndirectInputEvents diff --git a/example/ios/RunnerTests/RunnerTests.swift b/example/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..86a7c3b1 --- /dev/null +++ b/example/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/example/lib/main.dart b/example/lib/main.dart index 2f0b915b..9bab2010 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:phone_form_field/phone_form_field.dart'; void main() { @@ -11,35 +10,33 @@ void main() { // For a simpler example see the README class PhoneFieldView extends StatelessWidget { - final Key inputKey; final PhoneController controller; + final FocusNode focusNode; final CountrySelectorNavigator selectorNavigator; final bool withLabel; final bool outlineBorder; - final bool shouldFormat; - final bool isCountryChipPersistent; + final bool isCountryButtonPersistant; final bool mobileOnly; final bool useRtl; const PhoneFieldView({ Key? key, - required this.inputKey, required this.controller, + required this.focusNode, required this.selectorNavigator, required this.withLabel, required this.outlineBorder, - required this.shouldFormat, - required this.isCountryChipPersistent, + required this.isCountryButtonPersistant, required this.mobileOnly, required this.useRtl, }) : super(key: key); - PhoneNumberInputValidator? _getValidator() { + PhoneNumberInputValidator? _getValidator(BuildContext context) { List validators = []; if (mobileOnly) { - validators.add(PhoneValidator.validMobile()); + validators.add(PhoneValidator.validMobile(context)); } else { - validators.add(PhoneValidator.valid()); + validators.add(PhoneValidator.valid(context)); } return validators.isNotEmpty ? PhoneValidator.compose(validators) : null; } @@ -50,13 +47,12 @@ class PhoneFieldView extends StatelessWidget { child: Directionality( textDirection: useRtl ? TextDirection.rtl : TextDirection.ltr, child: PhoneFormField( - key: inputKey, + focusNode: focusNode, controller: controller, - shouldFormat: shouldFormat && !useRtl, + isCountryButtonPersistent: isCountryButtonPersistant, autofocus: false, autofillHints: const [AutofillHints.telephoneNumber], countrySelectorNavigator: selectorNavigator, - defaultCountry: IsoCode.US, decoration: InputDecoration( label: withLabel ? const Text('Phone') : null, border: outlineBorder @@ -67,14 +63,13 @@ class PhoneFieldView extends StatelessWidget { enabled: true, showIsoCodeInInput: false, showFlagInInput: true, - validator: _getValidator(), + validator: _getValidator(context), autovalidateMode: AutovalidateMode.onUserInteraction, cursorColor: Theme.of(context).colorScheme.primary, // ignore: avoid_print onSaved: (p) => print('saved $p'), // ignore: avoid_print onChanged: (p) => print('changed $p'), - isCountryChipPersistent: isCountryChipPersistent, ), ), ); @@ -87,10 +82,7 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - localizationsDelegates: const [ - ...GlobalMaterialLocalizations.delegates, - PhoneFieldLocalization.delegate - ], + localizationsDelegates: PhoneFieldLocalization.delegates, supportedLocales: const [ Locale('en', ''), Locale('fr', ''), @@ -106,7 +98,7 @@ class MyApp extends StatelessWidget { ], title: 'Phone field demo', theme: ThemeData( - brightness: Brightness.light, + brightness: Brightness.dark, primarySwatch: Colors.blue, ), home: const PhoneFormFieldScreen(), @@ -123,21 +115,21 @@ class PhoneFormFieldScreen extends StatefulWidget { class PhoneFormFieldScreenState extends State { late PhoneController controller; + final FocusNode focusNode = FocusNode(); + bool outlineBorder = true; bool mobileOnly = true; - bool shouldFormat = true; - bool isCountryChipPersistent = false; + bool isCountryButtonPersistent = true; bool withLabel = true; bool useRtl = false; CountrySelectorNavigator selectorNavigator = - const CountrySelectorNavigator.searchDelegate(); + const CountrySelectorNavigator.page(); final formKey = GlobalKey(); - final phoneKey = GlobalKey>(); @override initState() { super.initState(); - controller = PhoneController(null); + controller = PhoneController(); controller.addListener(() => setState(() {})); } @@ -150,7 +142,6 @@ class PhoneFormFieldScreenState extends State { @override Widget build(BuildContext context) { return Scaffold( - // drawer: AppDrawer(), appBar: AppBar( title: const Text('Phone_form_field'), ), @@ -174,9 +165,9 @@ class PhoneFormFieldScreenState extends State { title: const Text('Label'), ), SwitchListTile( - value: isCountryChipPersistent, + value: isCountryButtonPersistent, onChanged: (v) => - setState(() => isCountryChipPersistent = v), + setState(() => isCountryButtonPersistent = v), title: const Text('Persistent country chip'), ), SwitchListTile( @@ -184,11 +175,6 @@ class PhoneFormFieldScreenState extends State { onChanged: (v) => setState(() => mobileOnly = v), title: const Text('Mobile phone number only'), ), - SwitchListTile( - value: shouldFormat, - onChanged: (v) => setState(() => shouldFormat = v), - title: const Text('Should format'), - ), SwitchListTile( value: useRtl, onChanged: (v) { @@ -211,7 +197,8 @@ class PhoneFormFieldScreenState extends State { }, items: const [ DropdownMenuItem( - value: CountrySelectorNavigator.bottomSheet(), + value: CountrySelectorNavigator.bottomSheet( + favorites: [IsoCode.GU, IsoCode.GY]), child: Text('Bottom sheet'), ), DropdownMenuItem( @@ -221,19 +208,17 @@ class PhoneFormFieldScreenState extends State { ), DropdownMenuItem( value: - CountrySelectorNavigator.modalBottomSheet( - favorites: [IsoCode.US, IsoCode.BE], - ), + CountrySelectorNavigator.modalBottomSheet(), child: Text('Modal sheet'), ), DropdownMenuItem( - value: - CountrySelectorNavigator.dialog(width: 720), + value: CountrySelectorNavigator.dialog( + width: 720, + ), child: Text('Dialog'), ), DropdownMenuItem( - value: - CountrySelectorNavigator.searchDelegate(), + value: CountrySelectorNavigator.page(), child: Text('Page'), ), ], @@ -244,42 +229,45 @@ class PhoneFormFieldScreenState extends State { const SizedBox(height: 40), Form( key: formKey, - child: PhoneFieldView( - inputKey: phoneKey, - controller: controller, - selectorNavigator: selectorNavigator, - withLabel: withLabel, - outlineBorder: outlineBorder, - isCountryChipPersistent: isCountryChipPersistent, - mobileOnly: mobileOnly, - shouldFormat: shouldFormat, - useRtl: useRtl, + child: Column( + children: [ + PhoneFieldView( + controller: controller, + focusNode: focusNode, + selectorNavigator: selectorNavigator, + withLabel: withLabel, + outlineBorder: outlineBorder, + isCountryButtonPersistant: + isCountryButtonPersistent, + mobileOnly: mobileOnly, + useRtl: useRtl, + ), + ], ), ), const SizedBox(height: 12), Text(controller.value.toString()), Text('is valid mobile number ' - '${controller.value?.isValid(type: PhoneNumberType.mobile) ?? 'false'}'), + '${controller.value.isValid(type: PhoneNumberType.mobile)}'), Text( - 'is valid fixed line number ${controller.value?.isValid(type: PhoneNumberType.fixedLine) ?? 'false'}'), + 'is valid fixed line number ${controller.value.isValid(type: PhoneNumberType.fixedLine)}'), const SizedBox(height: 12), ElevatedButton( - onPressed: controller.value == null - ? null - : () => controller.reset(), + onPressed: () => formKey.currentState?.reset(), child: const Text('reset'), ), const SizedBox(height: 12), ElevatedButton( - onPressed: () => controller.selectNationalNumber(), + onPressed: () { + controller.selectNationalNumber(); + focusNode.requestFocus(); + }, child: const Text('Select national number'), ), const SizedBox(height: 12), ElevatedButton( - onPressed: () => controller.value = PhoneNumber.parse( - '699999999', - destinationCountry: IsoCode.FR, - ), + onPressed: () => controller.value = + PhoneNumber.parse('+33 699 999 999'), child: const Text('Set +33 699 999 999'), ), ], diff --git a/example/linux/.gitignore b/example/linux/.gitignore new file mode 100644 index 00000000..d3896c98 --- /dev/null +++ b/example/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/example/linux/CMakeLists.txt b/example/linux/CMakeLists.txt new file mode 100644 index 00000000..9cb0d1dd --- /dev/null +++ b/example/linux/CMakeLists.txt @@ -0,0 +1,145 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "example") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.example.example") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/example/linux/flutter/CMakeLists.txt b/example/linux/flutter/CMakeLists.txt new file mode 100644 index 00000000..d5bd0164 --- /dev/null +++ b/example/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/example/linux/flutter/generated_plugins.cmake b/example/linux/flutter/generated_plugins.cmake new file mode 100644 index 00000000..2e1de87a --- /dev/null +++ b/example/linux/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/example/linux/main.cc b/example/linux/main.cc new file mode 100644 index 00000000..e7c5c543 --- /dev/null +++ b/example/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/example/linux/my_application.cc b/example/linux/my_application.cc new file mode 100644 index 00000000..0ba8f430 --- /dev/null +++ b/example/linux/my_application.cc @@ -0,0 +1,104 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "example"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "example"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/example/linux/my_application.h b/example/linux/my_application.h new file mode 100644 index 00000000..72271d5e --- /dev/null +++ b/example/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/example/macos/.gitignore b/example/macos/.gitignore new file mode 100644 index 00000000..746adbb6 --- /dev/null +++ b/example/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/example/macos/Flutter/Flutter-Debug.xcconfig b/example/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 00000000..c2efd0b6 --- /dev/null +++ b/example/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/macos/Flutter/Flutter-Release.xcconfig b/example/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 00000000..c2efd0b6 --- /dev/null +++ b/example/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/example/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 00000000..cccf817a --- /dev/null +++ b/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,10 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { +} diff --git a/example/macos/Flutter/ephemeral/Flutter-Generated.xcconfig b/example/macos/Flutter/ephemeral/Flutter-Generated.xcconfig new file mode 100644 index 00000000..d4135f11 --- /dev/null +++ b/example/macos/Flutter/ephemeral/Flutter-Generated.xcconfig @@ -0,0 +1,11 @@ +// This is a generated file; do not edit or check into version control. +FLUTTER_ROOT=C:\dev\flutter +FLUTTER_APPLICATION_PATH=C:\Users\cedva\Documents\Dev\countries\phone_form_field\example +COCOAPODS_PARALLEL_CODE_SIGN=true +FLUTTER_BUILD_DIR=build +FLUTTER_BUILD_NAME=1.0.0 +FLUTTER_BUILD_NUMBER=1 +DART_OBFUSCATION=false +TRACK_WIDGET_CREATION=true +TREE_SHAKE_ICONS=false +PACKAGE_CONFIG=.dart_tool/package_config.json diff --git a/example/macos/Flutter/ephemeral/flutter_export_environment.sh b/example/macos/Flutter/ephemeral/flutter_export_environment.sh new file mode 100644 index 00000000..faefe6b3 --- /dev/null +++ b/example/macos/Flutter/ephemeral/flutter_export_environment.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# This is a generated file; do not edit or check into version control. +export "FLUTTER_ROOT=C:\dev\flutter" +export "FLUTTER_APPLICATION_PATH=C:\Users\cedva\Documents\Dev\countries\phone_form_field\example" +export "COCOAPODS_PARALLEL_CODE_SIGN=true" +export "FLUTTER_BUILD_DIR=build" +export "FLUTTER_BUILD_NAME=1.0.0" +export "FLUTTER_BUILD_NUMBER=1" +export "DART_OBFUSCATION=false" +export "TRACK_WIDGET_CREATION=true" +export "TREE_SHAKE_ICONS=false" +export "PACKAGE_CONFIG=.dart_tool/package_config.json" diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/example/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..27e0f506 --- /dev/null +++ b/example/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,695 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* example.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* example.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1430; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/example"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/example"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/example"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..397f3d33 --- /dev/null +++ b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/example/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/example/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/example/macos/Runner/AppDelegate.swift b/example/macos/Runner/AppDelegate.swift new file mode 100644 index 00000000..d53ef643 --- /dev/null +++ b/example/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..a2ec33f1 --- /dev/null +++ b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 zcmeEugo5nb1G~3xi~y`}h6XHx5j$(L*3|5S2UfkG$|UCNI>}4f?MfqZ+HW-sRW5RKHEm z^unW*Xx{AH_X3Xdvb%C(Bh6POqg==@d9j=5*}oEny_IS;M3==J`P0R!eD6s~N<36C z*%-OGYqd0AdWClO!Z!}Y1@@RkfeiQ$Ib_ z&fk%T;K9h`{`cX3Hu#?({4WgtmkR!u3ICS~|NqH^fdNz>51-9)OF{|bRLy*RBv#&1 z3Oi_gk=Y5;>`KbHf~w!`u}!&O%ou*Jzf|Sf?J&*f*K8cftMOKswn6|nb1*|!;qSrlw= zr-@X;zGRKs&T$y8ENnFU@_Z~puu(4~Ir)>rbYp{zxcF*!EPS6{(&J}qYpWeqrPWW< zfaApz%<-=KqxrqLLFeV3w0-a0rEaz9&vv^0ZfU%gt9xJ8?=byvNSb%3hF^X_n7`(fMA;C&~( zM$cQvQ|g9X)1AqFvbp^B{JEX$o;4iPi?+v(!wYrN{L}l%e#5y{j+1NMiT-8=2VrCP zmFX9=IZyAYA5c2!QO96Ea-6;v6*$#ZKM-`%JCJtrA3d~6h{u+5oaTaGE)q2b+HvdZ zvHlY&9H&QJ5|uG@wDt1h99>DdHy5hsx)bN`&G@BpxAHh$17yWDyw_jQhhjSqZ=e_k z_|r3=_|`q~uA47y;hv=6-o6z~)gO}ZM9AqDJsR$KCHKH;QIULT)(d;oKTSPDJ}Jx~G#w-(^r<{GcBC*~4bNjfwHBumoPbU}M)O za6Hc2ik)2w37Yyg!YiMq<>Aov?F2l}wTe+>h^YXcK=aesey^i)QC_p~S zp%-lS5%)I29WfywP(r4@UZ@XmTkqo51zV$|U|~Lcap##PBJ}w2b4*kt7x6`agP34^ z5fzu_8rrH+)2u*CPcr6I`gL^cI`R2WUkLDE5*PX)eJU@H3HL$~o_y8oMRoQ0WF9w| z6^HZDKKRDG2g;r8Z4bn+iJNFV(CG;K-j2>aj229gl_C6n12Jh$$h!}KVhn>*f>KcH z;^8s3t(ccVZ5<{>ZJK@Z`hn_jL{bP8Yn(XkwfRm?GlEHy=T($8Z1Mq**IM`zxN9>-yXTjfB18m_$E^JEaYn>pj`V?n#Xu;Z}#$- zw0Vw;T*&9TK$tKI7nBk9NkHzL++dZ^;<|F6KBYh2+XP-b;u`Wy{~79b%IBZa3h*3^ zF&BKfQ@Ej{7ku_#W#mNJEYYp=)bRMUXhLy2+SPMfGn;oBsiG_6KNL8{p1DjuB$UZB zA)a~BkL)7?LJXlCc}bB~j9>4s7tlnRHC5|wnycQPF_jLl!Avs2C3^lWOlHH&v`nGd zf&U!fn!JcZWha`Pl-B3XEe;(ks^`=Z5R zWyQR0u|do2`K3ec=YmWGt5Bwbu|uBW;6D8}J3{Uep7_>L6b4%(d=V4m#(I=gkn4HT zYni3cnn>@F@Wr<hFAY3Y~dW+3bte;70;G?kTn4Aw5nZ^s5|47 z4$rCHCW%9qa4)4vE%^QPMGf!ET!^LutY$G zqdT(ub5T5b+wi+OrV}z3msoy<4)`IPdHsHJggmog0K*pFYMhH!oZcgc5a)WmL?;TPSrerTVPp<#s+imF3v#!FuBNNa`#6 z!GdTCF|IIpz#(eV^mrYKThA4Bnv&vQet@%v9kuRu3EHx1-2-it@E`%9#u`)HRN#M? z7aJ{wzKczn#w^`OZ>Jb898^Xxq)0zd{3Tu7+{-sge-rQ z&0PME&wIo6W&@F|%Z8@@N3)@a_ntJ#+g{pUP7i?~3FirqU`rdf8joMG^ld?(9b7Iv z>TJgBg#)(FcW)h!_if#cWBh}f+V08GKyg|$P#KTS&%=!+0a%}O${0$i)kn9@G!}En zv)_>s?glPiLbbx)xk(lD-QbY(OP3;MSXM5E*P&_`Zks2@46n|-h$Y2L7B)iH{GAAq19h5-y0q>d^oy^y+soJu9lXxAe%jcm?=pDLFEG2kla40e!5a}mpe zdL=WlZ=@U6{>g%5a+y-lx)01V-x;wh%F{=qy#XFEAqcd+m}_!lQ)-9iiOL%&G??t| z?&NSdaLqdPdbQs%y0?uIIHY7rw1EDxtQ=DU!i{)Dkn~c$LG5{rAUYM1j5*G@oVn9~ zizz{XH(nbw%f|wI=4rw^6mNIahQpB)OQy10^}ACdLPFc2@ldVi|v@1nWLND?)53O5|fg`RZW&XpF&s3@c-R?aad!$WoH6u0B|}zt)L($E^@U- zO#^fxu9}Zw7Xl~nG1FVM6DZSR0*t!4IyUeTrnp@?)Z)*!fhd3)&s(O+3D^#m#bAem zpf#*aiG_0S^ofpm@9O7j`VfLU0+{$x!u^}3!zp=XST0N@DZTp!7LEVJgqB1g{psNr za0uVmh3_9qah14@M_pi~vAZ#jc*&aSm$hCNDsuQ-zPe&*Ii#2=2gP+DP4=DY z_Y0lUsyE6yaV9)K)!oI6+*4|spx2at*30CAx~6-5kfJzQ`fN8$!lz%hz^J6GY?mVH zbYR^JZ(Pmj6@vy-&!`$5soyy-NqB^8cCT40&R@|6s@m+ZxPs=Bu77-+Os7+bsz4nA3DrJ8#{f98ZMaj-+BD;M+Jk?pgFcZIb}m9N z{ct9T)Kye&2>l^39O4Q2@b%sY?u#&O9PO4@t0c$NUXG}(DZJ<;_oe2~e==3Z1+`Zo zFrS3ns-c}ZognVBHbg#e+1JhC(Yq7==rSJQ8J~}%94(O#_-zJKwnBXihl#hUd9B_>+T& z7eHHPRC?5ONaUiCF7w|{J`bCWS7Q&xw-Sa={j-f)n5+I=9s;E#fBQB$`DDh<^mGiF zu-m_k+)dkBvBO(VMe2O4r^sf3;sk9K!xgXJU>|t9Vm8Ty;fl5pZzw z9j|}ZD}6}t;20^qrS?YVPuPRS<39d^y0#O1o_1P{tN0?OX!lc-ICcHI@2#$cY}_CY zev|xdFcRTQ_H)1fJ7S0*SpPs8e{d+9lR~IZ^~dKx!oxz?=Dp!fD`H=LH{EeC8C&z-zK$e=!5z8NL=4zx2{hl<5z*hEmO=b-7(k5H`bA~5gT30Sjy`@-_C zKM}^so9Ti1B;DovHByJkTK87cfbF16sk-G>`Q4-txyMkyQS$d}??|Aytz^;0GxvOs zPgH>h>K+`!HABVT{sYgzy3CF5ftv6hI-NRfgu613d|d1cg^jh+SK7WHWaDX~hlIJ3 z>%WxKT0|Db1N-a4r1oPKtF--^YbP=8Nw5CNt_ZnR{N(PXI>Cm$eqi@_IRmJ9#)~ZHK_UQ8mi}w^`+4$OihUGVz!kW^qxnCFo)-RIDbA&k-Y=+*xYv5y4^VQ9S)4W5Pe?_RjAX6lS6Nz#!Hry=+PKx2|o_H_3M`}Dq{Bl_PbP(qel~P@=m}VGW*pK96 zI@fVag{DZHi}>3}<(Hv<7cVfWiaVLWr@WWxk5}GDEbB<+Aj;(c>;p1qmyAIj+R!`@#jf$ zy4`q23L-72Zs4j?W+9lQD;CYIULt%;O3jPWg2a%Zs!5OW>5h1y{Qof!p&QxNt5=T( zd5fy&7=hyq;J8%86YBOdc$BbIFxJx>dUyTh`L z-oKa=OhRK9UPVRWS`o2x53bAv+py)o)kNL6 z9W1Dlk-g6Ht@-Z^#6%`9S9`909^EMj?9R^4IxssCY-hYzei^TLq7Cj>z$AJyaU5=z zl!xiWvz0U8kY$etrcp8mL;sYqGZD!Hs-U2N{A|^oEKA482v1T%cs%G@X9M?%lX)p$ zZoC7iYTPe8yxY0Jne|s)fCRe1mU=Vb1J_&WcIyP|x4$;VSVNC`M+e#oOA`#h>pyU6 z?7FeVpk`Hsu`~T3i<_4<5fu?RkhM;@LjKo6nX>pa%8dSdgPO9~Jze;5r>Tb1Xqh5q z&SEdTXevV@PT~!O6z|oypTk7Qq+BNF5IQ(8s18c=^0@sc8Gi|3e>VKCsaZ?6=rrck zl@oF5Bd0zH?@15PxSJIRroK4Wa?1o;An;p0#%ZJ^tI=(>AJ2OY0GP$E_3(+Zz4$AQ zW)QWl<4toIJ5TeF&gNXs>_rl}glkeG#GYbHHOv-G!%dJNoIKxn)FK$5&2Zv*AFic! z@2?sY&I*PSfZ8bU#c9fdIJQa_cQijnj39-+hS@+~e*5W3bj%A}%p9N@>*tCGOk+cF zlcSzI6j%Q|2e>QG3A<86w?cx6sBtLNWF6_YR?~C)IC6_10SNoZUHrCpp6f^*+*b8` zlx4ToZZuI0XW1W)24)92S)y0QZa);^NRTX6@gh8@P?^=#2dV9s4)Q@K+gnc{6|C}& zDLHr7nDOLrsH)L@Zy{C_2UrYdZ4V{|{c8&dRG;wY`u>w%$*p>PO_}3`Y21pk?8Wtq zGwIXTulf7AO2FkPyyh2TZXM1DJv>hI`}x`OzQI*MBc#=}jaua&czSkI2!s^rOci|V zFkp*Vbiz5vWa9HPFXMi=BV&n3?1?%8#1jq?p^3wAL`jgcF)7F4l<(H^!i=l-(OTDE zxf2p71^WRIExLf?ig0FRO$h~aA23s#L zuZPLkm>mDwBeIu*C7@n@_$oSDmdWY7*wI%aL73t~`Yu7YwE-hxAATmOi0dmB9|D5a zLsR7OQcA0`vN9m0L|5?qZ|jU+cx3_-K2!K$zDbJ$UinQy<9nd5ImWW5n^&=Gg>Gsh zY0u?m1e^c~Ug39M{{5q2L~ROq#c{eG8Oy#5h_q=#AJj2Yops|1C^nv0D1=fBOdfAG z%>=vl*+_w`&M7{qE#$xJJp_t>bSh7Mpc(RAvli9kk3{KgG5K@a-Ue{IbU{`umXrR3ra5Y7xiX42+Q%N&-0#`ae_ z#$Y6Wa++OPEDw@96Zz##PFo9sADepQe|hUy!Zzc2C(L`k9&=a8XFr+!hIS>D2{pdGP1SzwyaGLiH3j--P>U#TWw90t8{8Bt%m7Upspl#=*hS zhy|(XL6HOqBW}Og^tLX7 z+`b^L{O&oqjwbxDDTg2B;Yh2(fW>%S5Pg8^u1p*EFb z`(fbUM0`afawYt%VBfD&b3MNJ39~Ldc@SAuzsMiN%E}5{uUUBc7hc1IUE~t-Y9h@e7PC|sv$xGx=hZiMXNJxz5V(np%6u{n24iWX#!8t#>Ob$in<>dw96H)oGdTHnU zSM+BPss*5)Wz@+FkooMxxXZP1{2Nz7a6BB~-A_(c&OiM)UUNoa@J8FGxtr$)`9;|O z(Q?lq1Q+!E`}d?KemgC!{nB1JJ!B>6J@XGQp9NeQvtbM2n7F%v|IS=XWPVZY(>oq$ zf=}8O_x`KOxZoGnp=y24x}k6?gl_0dTF!M!T`={`Ii{GnT1jrG9gPh)R=RZG8lIR| z{ZJ6`x8n|y+lZuy${fuEDTAf`OP!tGySLXD}ATJO5UoZv|Xo3%7O~L63+kw}v)Ci=&tWx3bQJfL@5O18CbPlkR^IcKA zy1=^Vl-K-QBP?9^R`@;czcUw;Enbbyk@vJQB>BZ4?;DM%BUf^eZE+sOy>a){qCY6Y znYy;KGpch-zf=5|p#SoAV+ie8M5(Xg-{FoLx-wZC9IutT!(9rJ8}=!$!h%!J+vE2e z(sURwqCC35v?1>C1L)swfA^sr16{yj7-zbT6Rf26-JoEt%U?+|rQ zeBuGohE?@*!zR9)1P|3>KmJSgK*fOt>N>j}LJB`>o(G#Dduvx7@DY7};W7K;Yj|8O zGF<+gTuoIKe7Rf+LQG3-V1L^|E;F*}bQ-{kuHq}| ze_NwA7~US19sAZ)@a`g*zkl*ykv2v3tPrb4Og2#?k6Lc7@1I~+ew48N&03hW^1Cx+ zfk5Lr4-n=#HYg<7ka5i>2A@ZeJ60gl)IDX!!p zzfXZQ?GrT>JEKl7$SH!otzK6=0dIlqN)c23YLB&Krf9v-{@V8p+-e2`ujFR!^M%*; ze_7(Jh$QgoqwB!HbX=S+^wqO15O_TQ0-qX8f-|&SOuo3ZE{{9Jw5{}>MhY}|GBhO& zv48s_B=9aYQfa;d>~1Z$y^oUUaDer>7ve5+Gf?rIG4GZ!hRKERlRNgg_C{W_!3tsI2TWbX8f~MY)1Q`6Wj&JJ~*;ay_0@e zzx+mE-pu8{cEcVfBqsnm=jFU?H}xj@%CAx#NO>3 z_re3Rq%d1Y7VkKy{=S73&p;4^Praw6Y59VCP6M?!Kt7{v#DG#tz?E)`K95gH_mEvb z%$<~_mQ$ad?~&T=O0i0?`YSp?E3Dj?V>n+uTRHAXn`l!pH9Mr}^D1d@mkf+;(tV45 zH_yfs^kOGLXlN*0GU;O&{=awxd?&`{JPRr$z<1HcAO2K`K}92$wC}ky&>;L?#!(`w z68avZGvb728!vgw>;8Z8I@mLtI`?^u6R>sK4E7%=y)jpmE$fH!Dj*~(dy~-2A5Cm{ zl{1AZw`jaDmfvaB?jvKwz!GC}@-Dz|bFm1OaPw(ia#?>vF7Y5oh{NVbyD~cHB1KFn z9C@f~X*Wk3>sQH9#D~rLPslAd26@AzMh=_NkH_yTNXx6-AdbAb z{Ul89YPHslD?xAGzOlQ*aMYUl6#efCT~WI zOvyiewT=~l1W(_2cEd(8rDywOwjM-7P9!8GCL-1<9KXXO=6%!9=W++*l1L~gRSxLVd8K=A7&t52ql=J&BMQu{fa6y zXO_e>d?4X)xp2V8e3xIQGbq@+vo#&n>-_WreTTW0Yr?|YRPP43cDYACMQ(3t6(?_k zfgDOAU^-pew_f5U#WxRXB30wcfDS3;k~t@b@w^GG&<5n$Ku?tT(%bQH(@UHQGN)N|nfC~7?(etU`}XB)$>KY;s=bYGY#kD%i9fz= z2nN9l?UPMKYwn9bX*^xX8Y@%LNPFU>s#Ea1DaP%bSioqRWi9JS28suTdJycYQ+tW7 zrQ@@=13`HS*dVKaVgcem-45+buD{B;mUbY$YYULhxK)T{S?EB<8^YTP$}DA{(&)@S zS#<8S96y9K2!lG^VW-+CkfXJIH;Vo6wh)N}!08bM$I7KEW{F6tqEQ?H@(U zAqfi%KCe}2NUXALo;UN&k$rU0BLNC$24T_mcNY(a@lxR`kqNQ0z%8m>`&1ro40HX} z{{3YQ;2F9JnVTvDY<4)x+88i@MtXE6TBd7POk&QfKU-F&*C`isS(T_Q@}K)=zW#K@ zbXpcAkTT-T5k}Wj$dMZl7=GvlcCMt}U`#Oon1QdPq%>9J$rKTY8#OmlnNWBYwafhx zqFnym@okL#Xw>4SeRFejBnZzY$jbO)e^&&sHBgMP%Ygfi!9_3hp17=AwLBNFTimf0 zw6BHNXw19Jg_Ud6`5n#gMpqe%9!QB^_7wAYv8nrW94A{*t8XZu0UT&`ZHfkd(F{Px zD&NbRJP#RX<=+sEeGs2`9_*J2OlECpR;4uJie-d__m*(aaGE}HIo+3P{my@;a~9Y$ zHBXVJ83#&@o6{M+pE9^lI<4meLLFN_3rwgR4IRyp)~OF0n+#ORrcJ2_On9-78bWbG zuCO0esc*n1X3@p1?lN{qWS?l7J$^jbpeel{w~51*0CM+q9@9X=>%MF(ce~om(}?td zjkUmdUR@LOn-~6LX#=@a%rvj&>DFEoQscOvvC@&ZB5jVZ-;XzAshwx$;Qf@U41W=q zOSSjQGQV8Qi3*4DngNMIM&Cxm7z*-K`~Bl(TcEUxjQ1c=?)?wF8W1g;bAR%sM#LK( z_Op?=P%)Z+J!>vpN`By0$?B~Out%P}kCriDq@}In&fa_ZyKV+nLM0E?hfxuu%ciUz z>yAk}OydbWNl7{)#112j&qmw;*Uj&B;>|;Qwfc?5wIYIHH}s6Mve@5c5r+y)jK9i( z_}@uC(98g)==AGkVN?4>o@w=7x9qhW^ zB(b5%%4cHSV?3M?k&^py)j*LK16T^Ef4tb05-h-tyrjt$5!oo4spEfXFK7r_Gfv7#x$bsR7T zs;dqxzUg9v&GjsQGKTP*=B(;)be2aN+6>IUz+Hhw-n>^|`^xu*xvjGPaDoFh2W4-n z@Wji{5Y$m>@Vt7TE_QVQN4*vcfWv5VY-dT0SV=l=8LAEq1go*f zkjukaDV=3kMAX6GAf0QOQHwP^{Z^=#Lc)sh`QB)Ftl&31jABvq?8!3bt7#8vxB z53M{4{GR4Hl~;W3r}PgXSNOt477cO62Yj(HcK&30zsmWpvAplCtpp&mC{`2Ue*Bwu zF&UX1;w%`Bs1u%RtGPFl=&sHu@Q1nT`z={;5^c^^S~^?2-?<|F9RT*KQmfgF!7=wD@hytxbD;=9L6PZrK*1<4HMObNWehA62DtTy)q5H|57 z9dePuC!1;0MMRRl!S@VJ8qG=v^~aEU+}2Qx``h1LII!y{crP2ky*R;Cb;g|r<#ryo zju#s4dE?5CTIZKc*O4^3qWflsQ(voX>(*_JP7>Q&$%zCAIBTtKC^JUi@&l6u&t0hXMXjz_y!;r@?k|OU9aD%938^TZ>V? zqJmom_6dz4DBb4Cgs_Ef@}F%+cRCR%UMa9pi<-KHN;t#O@cA%(LO1Rb=h?5jiTs93 zPLR78p+3t>z4|j=<>2i4b`ketv}9Ax#B0)hn7@bFl;rDfP8p7u9XcEb!5*PLKB(s7wQC2kzI^@ae)|DhNDmSy1bOLid%iIap@24A(q2XI!z_hkl-$1T10 z+KKugG4-}@u8(P^S3PW4x>an;XWEF-R^gB{`t8EiP{ZtAzoZ!JRuMRS__-Gg#Qa3{<;l__CgsF+nfmFNi}p z>rV!Y6B@cC>1up)KvaEQiAvQF!D>GCb+WZsGHjDeWFz?WVAHP65aIA8u6j6H35XNYlyy8>;cWe3ekr};b;$9)0G`zsc9LNsQ&D?hvuHRpBxH)r-1t9|Stc*u<}Ol&2N+wPMom}d15_TA=Aprp zjN-X3*Af$7cDWMWp##kOH|t;c2Pa9Ml4-)o~+7P;&q8teF-l}(Jt zTGKOQqJTeT!L4d}Qw~O0aanA$Vn9Rocp-MO4l*HK)t%hcp@3k0%&_*wwpKD6ThM)R z8k}&7?)YS1ZYKMiy?mn>VXiuzX7$Ixf7EW8+C4K^)m&eLYl%#T=MC;YPvD&w#$MMf zQ=>`@rh&&r!@X&v%ZlLF42L_c=5dSU^uymKVB>5O?AouR3vGv@ei%Z|GX5v1GK2R* zi!!}?+-8>J$JH^fPu@)E6(}9$d&9-j51T^n-e0Ze%Q^)lxuex$IL^XJ&K2oi`wG}QVGk2a7vC4X?+o^z zsCK*7`EUfSuQA*K@Plsi;)2GrayQOG9OYF82Hc@6aNN5ulqs1Of-(iZQdBI^U5of^ zZg2g=Xtad7$hfYu6l~KDQ}EU;oIj(3nO#u9PDz=eO3(iax7OCmgT2p_7&^3q zg7aQ;Vpng*)kb6=sd5?%j5Dm|HczSChMo8HHq_L8R;BR5<~DVyU$8*Tk5}g0eW5x7 z%d)JFZ{(Y<#OTKLBA1fwLM*fH7Q~7Sc2Ne;mVWqt-*o<;| z^1@vo_KTYaMnO$7fbLL+qh#R$9bvnpJ$RAqG+z8h|} z3F5iwG*(sCn9Qbyg@t0&G}3fE0jGq3J!JmG2K&$urx^$z95) z7h?;4vE4W=v)uZ*Eg3M^6f~|0&T)2D;f+L_?M*21-I1pnK(pT$5l#QNlT`SidYw~o z{`)G)Asv#cue)Ax1RNWiRUQ(tQ(bzd-f2U4xlJK+)ZWBxdq#fp=A>+Qc%-tl(c)`t z$e2Ng;Rjvnbu7((;v4LF9Y1?0el9hi!g>G{^37{ z`^s-03Z5jlnD%#Mix19zkU_OS|86^_x4<0(*YbPN}mi-$L?Z4K(M|2&VV*n*ZYN_UqI?eKZi3!b)i z%n3dzUPMc-dc|q}TzvPy!VqsEWCZL(-eURDRG4+;Eu!LugSSI4Fq$Ji$Dp08`pfP_C5Yx~`YKcywlMG;$F z)R5!kVml_Wv6MSpeXjG#g?kJ0t_MEgbXlUN3k|JJ%N>|2xn8yN>>4qxh!?dGI}s|Y zDTKd^JCrRSN+%w%D_uf=Tj6wIV$c*g8D96jb^Kc#>5Fe-XxKC@!pIJw0^zu;`_yeb zhUEm-G*C=F+jW%cP(**b61fTmPn2WllBr4SWNdKe*P8VabZsh0-R|?DO=0x`4_QY) zR7sthW^*BofW7{Sak&S1JdiG?e=SfL24Y#w_)xrBVhGB-13q$>mFU|wd9Xqe-o3{6 zSn@@1@&^)M$rxb>UmFuC+pkio#T;mSnroMVZJ%nZ!uImi?%KsIX#@JU2VY(`kGb1A z7+1MEG)wd@)m^R|a2rXeviv$!emwcY(O|M*xV!9%tBzarBOG<4%gI9SW;Um_gth4=gznYzOFd)y8e+3APCkL)i-OI`;@7-mCJgE`js(M} z;~ZcW{{FMVVO)W>VZ}ILouF#lWGb%Couu}TI4kubUUclW@jEn6B_^v!Ym*(T*4HF9 zWhNKi8%sS~viSdBtnrq!-Dc5(G^XmR>DFx8jhWvR%*8!m*b*R8e1+`7{%FACAK`7 zzdy8TmBh?FVZ0vtw6npnWwM~XjF2fNvV#ZlGG z?FxHkXHN>JqrBYoPo$)zNC7|XrQfcqmEXWud~{j?La6@kbHG@W{xsa~l1=%eLly8B z4gCIH05&Y;6O2uFSopNqP|<$ml$N40^ikxw0`o<~ywS1(qKqQN!@?Ykl|bE4M?P+e zo$^Vs_+x)iuw?^>>`$&lOQOUkZ5>+OLnRA)FqgpDjW&q*WAe(_mAT6IKS9;iZBl8M z<@=Y%zcQUaSBdrs27bVK`c$)h6A1GYPS$y(FLRD5Yl8E3j0KyH08#8qLrsc_qlws; znMV%Zq8k+&T2kf%6ZO^2=AE9>?a587g%-={X}IS~P*I(NeCF9_9&`)|ok0iiIun zo+^odT0&Z4k;rn7I1v87=z!zKU(%gfB$(1mrRYeO$sbqM22Kq68z9wgdg8HBxp>_< zn9o%`f?sVO=IN#5jSX&CGODWlZfQ9A)njK2O{JutYwRZ?n0G_p&*uwpE`Md$iQxrd zoQfF^b8Ou)+3BO_3_K5y*~?<(BF@1l+@?Z6;^;U>qlB)cdro;rxOS1M{Az$s^9o5sXDCg8yD<=(pKI*0e zLk>@lo#&s0)^*Q+G)g}C0IErqfa9VbL*Qe=OT@&+N8m|GJF7jd83vY#SsuEv2s{Q> z>IpoubNs>D_5?|kXGAPgF@mb_9<%hjU;S0C8idI)a=F#lPLuQJ^7OnjJlH_Sks9JD zMl1td%YsWq3YWhc;E$H1<0P$YbSTqs`JKY%(}svsifz|h8BHguL82dBl+z0^YvWk8 zGy;7Z0v5_FJ2A$P0wIr)lD?cPR%cz>kde!=W%Ta^ih+Dh4UKdf7ip?rBz@%y2&>`6 zM#q{JXvW9ZlaSk1oD!n}kSmcDa2v6T^Y-dy+#fW^y>eS8_%<7tWXUp8U@s$^{JFfKMjDAvR z$YmVB;n3ofl!ro9RNT!TpQpcycXCR}$9k5>IPWDXEenQ58os?_weccrT+Bh5sLoiH zZ_7~%t(vT)ZTEO= zb0}@KaD{&IyK_sd8b$`Qz3%UA`nSo zn``!BdCeN!#^G;lK@G2ron*0jQhbdw)%m$2;}le@z~PSLnU-z@tL)^(p%P>OO^*Ff zNRR9oQ`W+x^+EU+3BpluwK77|B3=8QyT|$V;02bn_LF&3LhLA<#}{{)jE)}CiW%VEU~9)SW+=F%7U-iYlQ&q!#N zwI2{(h|Pi&<8_fqvT*}FLN^0CxN}#|3I9G_xmVg$gbn2ZdhbmGk7Q5Q2Tm*ox8NMo zv`iaZW|ZEOMyQga5fts?&T-eCCC9pS0mj7v0SDkD=*^MxurP@89v&Z#3q{FM!a_nr zb?KzMv`BBFOew>4!ft@A&(v-kWXny-j#egKef|#!+3>26Qq0 zv!~8ev4G`7Qk>V1TaMT-&ziqoY3IJp8_S*%^1j73D|=9&;tDZH^!LYFMmME4*Wj(S zRt~Q{aLb_O;wi4u&=}OYuj}Lw*j$@z*3>4&W{)O-oi@9NqdoU!=U%d|se&h?^$Ip# z)BY+(1+cwJz!yy4%l(aLC;T!~Ci>yAtXJb~b*yr&v7f{YCU8P|N1v~H`xmGsG)g)y z4%mv=cPd`s7a*#OR7f0lpD$ueP>w8qXj0J&*7xX+U!uat5QNk>zwU$0acn5p=$88L=jn_QCSYkTV;1~(yUem#0gB`FeqY98sf=>^@ z_MCdvylv~WL%y_%y_FE1)j;{Szj1+K7Lr_y=V+U zk6Tr;>XEqlEom~QGL!a+wOf(@ZWoxE<$^qHYl*H1a~kk^BLPn785%nQb$o;Cuz0h& za9LMx^bKEbPS%e8NM33Jr|1T|ELC(iE!FUci38xW_Y7kdHid#2ie+XZhP;2!Z;ZAM zB_cXKm)VrPK!SK|PY00Phwrpd+x0_Aa;}cDQvWKrwnQrqz##_gvHX2ja?#_{f#;bz`i>C^^ zTLDy;6@HZ~XQi7rph!mz9k!m;KchA)uMd`RK4WLK7)5Rl48m#l>b(#`WPsl<0j z-sFkSF6>Nk|LKnHtZ`W_NnxZP62&w)S(aBmmjMDKzF%G;3Y?FUbo?>b5;0j8Lhtc4 zr*8d5Y9>g@FFZaViw7c16VsHcy0u7M%6>cG1=s=Dtx?xMJSKIu9b6GU8$uSzf43Y3 zYq|U+IWfH;SM~*N1v`KJo!|yfLxTFS?oHsr3qvzeVndVV^%BWmW6re_S!2;g<|Oao z+N`m#*i!)R%i1~NO-xo{qpwL0ZrL7hli;S z3L0lQ_z}z`fdK39Mg~Zd*%mBdD;&5EXa~@H(!###L`ycr7gW`f)KRuqyHL3|uyy3h zSS^td#E&Knc$?dXs*{EnPYOp^-vjAc-h4z#XkbG&REC7;0>z^^Z}i8MxGKerEY z>l?(wReOlXEsNE5!DO&ZWyxY)gG#FSZs%fXuzA~XIAPVp-%yb2XLSV{1nH6{)5opg z(dZKckn}Q4Li-e=eUDs1Psg~5zdn1>ql(*(nn6)iD*OcVkwmKL(A{fix(JhcVB&}V zVt*Xb!{gzvV}dc446>(D=SzfCu7KB`oMjv6kPzSv&B>>HLSJP|wN`H;>oRw*tl#N) z*zZ-xwM7D*AIsBfgqOjY1Mp9aq$kRa^dZU_xw~KxP;|q(m+@e+YSn~`wEJzM|Ippb zzb@%;hB7iH4op9SqmX?j!KP2chsb79(mFossBO-Zj8~L}9L%R%Bw<`^X>hjkCY5SG z7lY!8I2mB#z)1o;*3U$G)3o0A&{0}#B;(zPd2`OF`Gt~8;0Re8nIseU z_yzlf$l+*-wT~_-cYk$^wTJ@~7i@u(CZs9FVkJCru<*yK8&>g+t*!JqCN6RH%8S-P zxH8+Cy#W?!;r?cLMC(^BtAt#xPNnwboI*xWw#T|IW^@3|q&QYY6Ehxoh@^URylR|T zne-Y6ugE^7p5bkRDWIh)?JH5V^ub82l-LuVjDr7UT^g`q4dB&mBFRWGL_C?hoeL(% zo}ocH5t7|1Mda}T!^{Qt9vmA2ep4)dQSZO>?Eq8}qRp&ZJ?-`Tnw+MG(eDswP(L*X3ahC2Ad0_wD^ff9hfzb%Jd`IXx5 zae@NMzBXJDwJS?7_%!TB^E$N8pvhOHDK$7YiOelTY`6KX8hK6YyT$tk*adwN>s^Kp zwM3wGVPhwKU*Yq-*BCs}l`l#Tej(NQ>jg*S0TN%D+GcF<14Ms6J`*yMY;W<-mMN&-K>((+P}+t+#0KPGrzjP zJ~)=Bcz%-K!L5ozIWqO(LM)l_9lVOc4*S65&DKM#TqsiWNG{(EZQw!bc>qLW`=>p-gVJ;T~aN2D_- z{>SZC=_F+%hNmH6ub%Ykih0&YWB!%sd%W5 zHC2%QMP~xJgt4>%bU>%6&uaDtSD?;Usm}ari0^fcMhi_)JZgb1g5j zFl4`FQ*%ROfYI}e7RIq^&^a>jZF23{WB`T>+VIxj%~A-|m=J7Va9FxXV^%UwccSZd zuWINc-g|d6G5;95*%{e;9S(=%yngpfy+7ao|M7S|Jb0-4+^_q-uIqVS&ufU880UDH*>(c)#lt2j zzvIEN>>$Y(PeALC-D?5JfH_j+O-KWGR)TKunsRYKLgk7eu4C{iF^hqSz-bx5^{z0h ze2+u>Iq0J4?)jIo)}V!!m)%)B;a;UfoJ>VRQ*22+ncpe9f4L``?v9PH&;5j{WF?S_C>Lq>nkChZB zjF8(*v0c(lU^ZI-)_uGZnnVRosrO4`YinzI-RSS-YwjYh3M`ch#(QMNw*)~Et7Qpy z{d<3$4FUAKILq9cCZpjvKG#yD%-juhMj>7xIO&;c>_7qJ%Ae8Z^m)g!taK#YOW3B0 zKKSMOd?~G4h}lrZbtPk)n*iOC1~mDhASGZ@N{G|dF|Q^@1ljhe=>;wusA&NvY*w%~ zl+R6B^1yZiF)YN>0ms%}qz-^U-HVyiN3R9k1q4)XgDj#qY4CE0)52%evvrrOc898^ z*^)XFR?W%g0@?|6Mxo1ZBp%(XNv_RD-<#b^?-Fs+NL^EUW=iV|+Vy*F%;rBz~pN7%-698U-VMfGEVnmEz7fL1p)-5sLT zL;Iz>FCLM$p$c}g^tbkGK1G$IALq1Gd|We@&TtW!?4C7x4l*=4oF&&sr0Hu`x<5!m zhX&&Iyjr?AkNXU_5P_b^Q3U9sy#f6ZF@2C96$>1k*E-E%DjwvA{VL0PdU~suN~DZo zm{T!>sRdp`Ldpp9olrH@(J$QyGq!?#o1bUo=XP2OEuT3`XzI>s^0P{manUaE4pI%! zclQq;lbT;nx7v3tR9U)G39h?ryrxzd0xq4KX7nO?piJZbzT_CU&O=T(Vt;>jm?MgC z2vUL#*`UcMsx%w#vvjdamHhmN!(y-hr~byCA-*iCD};#l+bq;gkwQ0oN=AyOf@8ow>Pj<*A~2*dyjK}eYdN);%!t1 z6Y=|cuEv-|5BhA?n2Db@4s%y~(%Wse4&JXw=HiO48%c6LB~Z0SL1(k^9y?ax%oj~l zf7(`iAYLdPRq*ztFC z7VtAb@s{as%&Y;&WnyYl+6Wm$ru*u!MKIg_@01od-iQft0rMjIj8e7P9eKvFnx_X5 zd%pDg-|8<>T2Jdqw>AII+fe?CgP+fL(m0&U??QL8YzSjV{SFi^vW~;wN@or_(q<0Y zRt~L}#JRcHOvm$CB)T1;;7U>m%)QYBLTR)KTARw%zoDxgssu5#v{UEVIa<>{8dtkm zXgbCGp$tfue+}#SD-PgiNT{Zu^YA9;4BnM(wZ9-biRo_7pN}=aaimjYgC=;9@g%6< zxol5sT_$<8{LiJ6{l1+sV)Z_QdbsfEAEMw!5*zz6)Yop?T0DMtR_~wfta)E6_G@k# zZRP11D}$ir<`IQ`<(kGfAS?O-DzCyuzBq6dxGTNNTK?r^?zT30mLY!kQ=o~Hv*k^w zvq!LBjW=zzIi%UF@?!g9vt1CqdwV(-2LYy2=E@Z?B}JDyVkluHtzGsWuI1W5svX~K z&?UJ45$R7g>&}SFnLnmw09R2tUgmr_w6mM9C}8GvQX>nL&5R#xBqnp~Se(I>R42`T zqZe9p6G(VzNB3QD><8+y%{e%6)sZDRXTR|MI zM#eZmao-~_`N|>Yf;a;7yvd_auTG#B?Vz5D1AHx=zpVUFe7*hME z+>KH5h1In8hsVhrstc>y0Q!FHR)hzgl+*Q&5hU9BVJlNGRkXiS&06eOBV^dz3;4d5 zeYX%$62dNOprZV$px~#h1RH?_E%oD6y;J;pF%~y8M)8pQ0olYKj6 zE+hd|7oY3ot=j9ZZ))^CCPADL6Jw%)F@A{*coMApcA$7fZ{T@3;WOQ352F~q6`Mgi z$RI6$8)a`Aaxy<8Bc;{wlDA%*%(msBh*xy$L-cBJvQ8hj#FCyT^%+Phw1~PaqyDou^JR0rxDkSrmAdjeYDFDZ`E z)G3>XtpaSPDlydd$RGHg;#4|4{aP5c_Om z2u5xgnhnA)K%8iU==}AxPxZCYC)lyOlj9as#`5hZ=<6<&DB%i_XCnt5=pjh?iusH$ z>)E`@HNZcAG&RW3Ys@`Ci{;8PNzE-ZsPw$~Wa!cP$ye+X6;9ceE}ah+3VY7Mx}#0x zbqYa}eO*FceiY2jNS&2cH9Y}(;U<^^cWC5Ob&)dZedvZA9HewU3R;gRQ)}hUdf+~Q zS_^4ds*W1T#bxS?%RH&<739q*n<6o|mV;*|1s>ly-Biu<2*{!!0#{_234&9byvn0* z5=>{95Zfb{(?h_Jk#ocR$FZ78O*UTOxld~0UF!kyGM|nH%B*qf)Jy}N!uT9NGeM19 z-@=&Y0yGGo_dw!FD>juk%P$6$qJkj}TwLBoefi;N-$9LAeV|)|-ET&culW9Sb_pc_ zp{cXI0>I0Jm_i$nSvGnYeLSSj{ccVS2wyL&0x~&5v;3Itc82 z5lIAkfn~wcY-bQB$G!ufWt%qO;P%&2B_R5UKwYxMemIaFm)qF1rA zc>gEihb=jBtsXCi0T%J37s&kt*3$s7|6)L(%UiY)6axuk{6RWIS8^+u;)6!R?Sgap z9|6<0bx~AgVi|*;zL@2x>Pbt2Bz*uv4x-`{F)XatTs`S>unZ#P^ZiyjpfL_q2z^fqgR-fbOcG=Y$q>ozkw1T6dH8-)&ww+z?E0 zR|rV(9bi6zpX3Ub>PrPK!{X>e$C66qCXAeFm)Y+lX8n2Olt7PNs*1^si)j!QmFV#t z0P2fyf$N^!dyTot&`Ew5{i5u<8D`8U`qs(KqaWq5iOF3x2!-z65-|HsyYz(MAKZ?< zCpQR;E)wn%s|&q(LVm0Ab>gdmCFJeKwVTnv@Js%!At;I=A>h=l=p^&<4;Boc{$@h< z38v`3&2wJtka@M}GS%9!+SpJ}sdtoYzMevVbnH+d_eMxN@~~ zZq@k)7V5f8u!yAX2qF3qjS7g%n$JuGrMhQF!&S^7(%Y{rP*w2FWj(v_J{+Hg*}wdWOd~pHQ19&n3RWeljK9W%sz&Y3Tm3 zR`>6YR54%qBHGa)2xbs`9cs_EsNHxsfraEgZ)?vrtooeA0sPKJK7an){ngtV@{SBa zkO6ORr1_Xqp+`a0e}sC*_y(|RKS13ikmHp3C^XkE@&wjbGWrt^INg^9lDz#B;bHiW zkK4{|cg08b!yHFSgPca5)vF&gqCgeu+c82%&FeM^Bb}GUxLy-zo)}N;#U?sJ2?G2BNe*9u_7kE5JeY!it=f`A_4gV3} z`M!HXZy#gN-wS!HvHRqpCHUmjiM;rVvpkC!voImG%OFVN3k(QG@X%e``VJSJ@Z7tb z*Onlf>z^D+&$0!4`IE$;2-NSO9HQWd+UFW(r;4hh;(j^p4H-~6OE!HQp^96v?{9Zt z;@!ZcccV%C2s6FMP#qvo4kG6C04A>XILt>JW}%0oE&HM5f6 zYLD!;My>CW+j<~=Wzev{aYtx2ZNw|ptTFV(4;9`6Tmbz6K1)fv4qPXa2mtoPt&c?P zhmO+*o8uP3ykL6E$il00@TDf6tOW7fmo?Oz_6GU^+5J=c22bWyuH#aNj!tT-^IHrJ zu{aqTYw@q;&$xDE*_kl50Jb*dp`(-^p={z}`rqECTi~3 z>0~A7L6X)=L5p#~$V}gxazgGT7$3`?a)zen>?TvAuQ+KAIAJ-s_v}O6@`h9n-sZk> z`3{IJeb2qu9w=P*@q>iC`5wea`KxCxrx{>(4{5P+!cPg|pn~;n@DiZ0Y>;k5mnKeS z!LIfT4{Lgd=MeysR5YiQKCeNhUQ;Os1kAymg6R!u?j%LF z4orCszIq_n52ulpes{(QN|zirdtBsc{9^Z72Ycb2ht?G^opkT_#|4$wa9`)8k3ilU z%ntAi`nakS1r10;#k^{-ZGOD&Z2|k=p40hRh5D7(&JG#Cty|ECOvwsSHkkSa)36$4 z?;v#%@D(=Raw(HP5s>#4Bm?f~n1@ebH}2tv#7-0l-i^H#H{PC|F@xeNS+Yw{F-&wH z07)bj8MaE6`|6NoqKM~`4%X> zKFl&7g1$Z3HB>lxn$J`P`6GSb6CE6_^NA1V%=*`5O!zP$a7Vq)IwJAki~XBLf=4TF zPYSL}>4nOGZ`fyHChq)jy-f{PKFp6$plHB2=;|>%Z^%)ecVue(*mf>EH_uO^+_zm? zJATFa9SF~tFwR#&0xO{LLf~@}s_xvCPU8TwIJgBs%FFzjm`u?1699RTui;O$rrR{# z1^MqMl5&6)G%@_k*$U5Kxq84!AdtbZ!@8FslBML}<`(Jr zenXrC6bFJP=R^FMBg7P?Pww-!a%G@kJH_zezKvuWU0>m1uyy}#Vf<$>u?Vzo3}@O% z1JR`B?~Tx2)Oa|{DQ_)y9=oY%haj!80GNHw3~qazgU-{|q+Bl~H94J!a%8UR?XsZ@ z0*ZyQugyru`V9b(0OrJOKISfi89bSVR zQy<+i_1XY}4>|D%X_`IKZUPz6=TDb)t1mC9eg(Z=tv zq@|r37AQM6A%H%GaH3szv1L^ku~H%5_V*fv$UvHl*yN4iaqWa69T2G8J2f3kxc7UE zOia@p0YNu_q-IbT%RwOi*|V|&)e5B-u>4=&n@`|WzH}BK4?33IPpXJg%`b=dr_`hU z8JibW_3&#uIN_#D&hX<)x(__jUT&lIH$!txEC@cXv$7yB&Rgu){M`9a`*PH} zRcU)pMWI2O?x;?hzR{WdzKt^;_pVGJAKKd)F$h;q=Vw$MP1XSd<;Mu;EU5ffyKIg+ z&n-Nb?h-ERN7(fix`htopPIba?0Gd^y(4EHvfF_KU<4RpN0PgVxt%7Yo99X*Pe|zR z?ytK&5qaZ$0KSS$3ZNS$$k}y(2(rCl=cuYZg{9L?KVgs~{?5adxS))Upm?LDo||`H zV)$`FF3icFmxcQshXX*1k*w3O+NjBR-AuE70=UYM*7>t|I-oix=bzDwp2*RoIwBp@r&vZukG; zyi-2zdyWJ3+E?{%?>e2Ivk`fAn&Ho(KhGSVE4C-zxM-!j01b~mTr>J|5={PrZHOgO zw@ND3=z(J7D>&C7aw{zT>GHhL2BmUX0GLt^=31RRPSnjoUO9LYzh_yegyPoAKhAQE z>#~O27dR4&LdQiak6={9_{LN}Z>;kyVYKH^d^*!`JVSXJlx#&r4>VnP$zb{XoTb=> zZsLvh>keP3fkLTIDdpf-@(ADfq4=@X=&n>dyU0%dwD{zsjCWc;r`-e~X$Q3NTz_TJ zOXG|LMQQIjGXY3o5tBm9>k6y<6XNO<=9H@IXF;63rzsC=-VuS*$E{|L_i;lZmHOD< zY92;>4spdeRn4L6pY4oUKZG<~+8U-q7ZvNOtW0i*6Q?H`9#U3M*k#4J;ek(MwF02x zUo1wgq9o6XG#W^mxl>pAD)Ll-V5BNsdVQ&+QS0+K+?H-gIBJ-ccB1=M_hxB6qcf`C zJ?!q!J4`kLhAMry4&a_0}up{CFevcjBl|N(uDM^N5#@&-nQt2>z*U}eJGi}m5f}l|IRVj-Q;a>wcLpK5RRWJ> zysdd$)Nv0tS?b~bw1=gvz3L_ZAIdDDPj)y|bp1;LE`!av!rODs-tlc}J#?erTgXRX z$@ph%*~_wr^bQYHM7<7=Q=45v|Hk7T=mDpW@OwRy3A_v`ou@JX5h!VI*e((v*5Aq3 zVYfB4<&^Dq5%^?~)NcojqK`(VXP$`#w+&VhQOn%;4pCkz;NEH6-FPHTQ+7I&JE1+Ozq-g43AEZV>ceQ^9PCx zZG@OlEF~!Lq@5dttlr%+gNjRyMwJdJU(6W_KpuVnd{3Yle(-p#6erIRc${l&qx$HA z89&sp=rT7MJ=DuTL1<5{)wtUfpPA|Gr6Q2T*=%2RFm@jyo@`@^*{5{lFPgv>84|pv z%y{|cVNz&`9C*cUely>-PRL)lHVErAKPO!NQ3<&l5(>Vp(MuJnrOf^4qpIa!o3D7( z1bjn#Vv$#or|s7Hct5D@%;@48mM%ISY7>7@ft8f?q~{s)@BqGiupoK1BAg?PyaDQ1 z`YT8{0Vz{zBwJ={I4)#ny{RP{K1dqzAaQN_aaFC%Z>OZ|^VhhautjDavGtsQwx@WH zr|1UKk^+X~S*RjCY_HN!=Jx>b6J8`Q(l4y|mc<6jnkHVng^Wk(A13-;AhawATsmmE#H%|8h}f1frs2x@Fwa_|ea+$tdG2Pz{7 z!ox^w^>^Cv4e{Xo7EQ7bxCe8U+LZG<_e$RnR?p3t?s^1Mb!ieB z#@45r*PTc_yjh#P=O8Zogo+>1#|a2nJvhOjIqKK1U&6P)O%5s~M;99O<|Y9zomWTL z666lK^QW`)cXV_^Y05yQZH3IRCW%25BHAM$c0>w`x!jh^15Zp6xYb!LoQ zr+RukTw0X2mxN%K0%=8|JHiaA3pg5+GMfze%9o5^#upx0M?G9$+P^DTx7~qq9$Qoi zV$o)yy zuUq>3c{_q+HA5OhdN*@*RkxRuD>Bi{Ttv_hyaaB;XhB%mJ2Cb{yL;{Zu@l{N?!GKE7es6_9J{9 zO(tmc0ra2;@oC%SS-8|D=omQ$-Dj>S)Utkthh{ovD3I%k}HoranSepC_yco2Q8 zY{tAuPIhD{X`KbhQIr%!t+GeH%L%q&p z3P%<-S0YY2Emjc~Gb?!su85}h_qdu5XN2XJUM}X1k^!GbwuUPT(b$Ez#LkG6KEWQB z7R&IF4srHe$g2R-SB;inW9T{@+W+~wi7VQd?}7||zi!&V^~o0kM^aby7YE_-B63^d zf_uo8#&C77HBautt_YH%v6!Q>H?}(0@4pv>cM6_7dHJ)5JdyV0Phi!)vz}dv{*n;t zf(+#Hdr=f8DbJqbMez)(n>@QT+amJ7g&w6vZ-vG^H1v~aZqG~u!1D(O+jVAG0EQ*aIsr*bsBdbD`)i^FNJ z&B@yxqPFCRGT#}@dmu-{0vp47xk(`xNM6E=7QZ5{tg6}#zFrd8Pb_bFg7XP{FsYP8 zbvWqG6#jfg*4gvY9!gJxJ3l2UjP}+#QMB(*(?Y&Q4PO`EknE&Cb~Yb@lCbk;-KY)n zzbjS~W5KZ3FV%y>S#$9Sqi$FIBCw`GfPDP|G=|y32VV-g@a1D&@%_oAbB@cAUx#aZ zlAPTJ{iz#Qda8(aNZE&0q+8r3&z_Ln)b=5a%U|OEcc3h1f&8?{b8ErEbilrun}mh3 z$1o^$-XzIiH|iGoJA`w`o|?w3m*NX|sd$`Mt+f*!hyJvQ2fS*&!SYn^On-M|pHGlu z4SC5bM7f6BAkUhGuN*w`97LLkbCx=p@K5RL2p>YpDtf{WTD|d3ucb6iVZ-*DRtoEA zCC5(x)&e=giR_id>5bE^l%Mxx>0@FskpCD4oq@%-Fg$8IcdRwkfn;DsjoX(v;mt3d z_4Mnf#Ft4x!bY!7Hz?RRMq9;5FzugD(sbt4up~6j?-or+ch~y_PqrM2hhTToJjR_~ z)E1idgt7EW>G*9%Q^K;o_#uFjX!V2pwfpgi>}J&p_^QlZki!@#dkvR`p?bckC`J*g z=%3PkFT3HAX2Q+dShHUbb1?ZcK8U7oaufLTCB#1W{=~k0Jabgv>q|H+GU=f-y|{p4 zwN|AE+YbCgx=7vlXE?@gkXW9PaqbO#GB=4$o0FkNT#EI?aLVd2(qnPK$Yh%YD%v(mdwn}bgsxyIBI^)tY?&G zi^2JfClZ@4b{xFjyTY?D61w@*ez2@5rWLpG#34id?>>oPg{`4F-l`7Lg@D@Hc}On} zx%BO4MsLYosLGACJ-d?ifZ35r^t*}wde>AAWO*J-X%jvD+gL9`u`r=kP zyeJ%FqqKfz8e_3K(M1RmB?gIYi{W7Z<THP2ihue0mbpu5n(x_l|e1tw(q!#m5lmef6ktqIb${ zV+ee#XRU}_dDDUiV@opHZ@EbQ<9qIZJMDsZDkW0^t3#j`S)G#>N^ZBs8k+FJhAfu< z%u!$%dyP3*_+jUvCf-%{x#MyDAK?#iPfE<(@Q0H7;a125eD%I(+!x1f;Sy`e<9>nm zQH4czZDQmW7^n>jL)@P@aAuAF$;I7JZE5a8~AJI5CNDqyf$gjloKR7C?OPt9yeH}n5 zNF8Vhmd%1O>T4EZD&0%Dt7YWNImmEV{7QF(dy!>q5k>Kh&Xy8hcBMUvVV~Xn8O&%{ z&q=JCYw#KlwM8%cu-rNadu(P~i3bM<_a{3!J*;vZhR6dln6#eW0^0kN)Vv3!bqM`w z{@j*eyzz=743dgFPY`Cx3|>ata;;_hQ3RJd+kU}~p~aphRx`03B>g4*~f%hUV+#D9rYRbsGD?jkB^$3XcgB|3N1L& zrmk9&Dg450mAd=Q_p?gIy5Zx7vRL?*rpNq76_rysFo)z)tp0B;7lSb9G5wX1vC9Lc z5Q8tb-alolVNWFsxO_=12o}X(>@Mwz1mkYh1##(qQwN=7VKz?61kay8A9(94Ky(4V zq6qd2+4a20Z0QRrmp6C?4;%U?@MatfXnkj&U6bP_&2Ny}BF%4{QhNx*Tabik9Y-~Z z@0WV6XD}aI(%pN}oW$X~Qo_R#+1$@J8(31?zM`#e`#(0f<-AZ^={^NgH#lc?oi(Mu zMk|#KR^Q;V@?&(sh5)D;-fu)rx%gXZ1&5)MR+Mhssy+W>V%S|PRNyTAd}74<(#J>H zR(1BfM%eIv0+ngHH6(i`?-%_4!6PpK*0X)79SX0X$`lv_q>9(E2kkkP;?c@rW2E^Q zs<;`9dg|lDMNECFrD3jTM^Mn-C$44}9d9Kc z#>*k&e#25;D^%82^1d@Yt{Y91MbEu0C}-;HR4+IaCeZ`l?)Q8M2~&E^FvJ?EBJJ(% zz1>tCW-E~FB}DI}z#+fUo+=kQME^=eH>^%V8w)dh*ugPFdhMUi3R2Cg}Zak4!k_8YW(JcR-)hY8C zXja}R7@%Q0&IzQTk@M|)2ViZDNCDRLNI)*lH%SDa^2TG4;%jE4n`8`aQAA$0SPH2@ z)2eWZuP26+uGq+m8F0fZn)X^|bNe z#f{qYZS!(CdBdM$N2(JH_a^b#R2=>yVf%JI_ieRFB{w&|o9txwMrVxv+n78*aXFGb z>Rkj2yq-ED<)A46T9CL^$iPynv`FoEhUM10@J+UZ@+*@_gyboQ>HY9CiwTUo7OM=w zd~$N)1@6U8H#Zu(wGLa_(Esx%h@*pmm5Y9OX@CY`3kPYPQx@z8yAgtm(+agDU%4?c zy8pR4SYbu8vY?JX6HgVq7|f=?w(%`m-C+a@E{euXo>XrGmkmFGzktI*rj*8D z)O|CHKXEzH{~iS+6)%ybRD|JRQ6j<+u_+=SgnJP%K+4$st+~XCVcAjI9e5`RYq$n{ zzy!X9Nv7>T4}}BZpSj9G9|(4ei-}Du<_IZw+CB`?fd$w^;=j8?vlp(#JOWiHaXJjB0Q00RHJ@sG6N#y^H7t^&V} z;VrDI4?75G$q5W9mV=J2iP24NHJy&d|HWHva>FaS#3AO?+ohh1__FMx;?`f{HG3v0 ztiO^Wanb>U4m9eLhoc_2B(ca@YdnHMB*~aYO+AE(&qh@?WukLbf_y z>*3?Xt-lxr?#}y%kTv+l8;!q?Hq8XSU+1E8x~o@9$)zO2z9K#(t`vPDri`mKhv|sh z{KREcy`#pnV>cTT7dm7M9B@9qJRt3lfo(C`CNkIq@>|2<(yn!AmVN?ST zbX_`JjtWa3&N*U{K7FYX8})*D#2@KBae` zhKS~s!r%SrXdhCsv~sF}7?ocyS?afya6%rDBu6g^b2j#TOGp^1zrMR}|70Z>CeYq- z1o|-=FBKlu{@;pm@QQJ_^!&hzi;0Z_Ho){x3O1KQ#TYk=rAt9`YKC0Y^}8GWIN{QW znYJyVTrmNvl!L=YS1G8BAxGmMUPi+Q7yb0XfG`l+L1NQVSbe^BICYrD;^(rke{jWCEZOtVv3xFze!=Z&(7}!)EcN;v0Dbit?RJ6bOr;N$ z=nk8}H<kCEE+IK3z<+3mkn4q!O7TMWpKShWWWM)X*)m6k%3luF6c>zOsFccvfLWf zH+mNkh!H@vR#~oe=ek}W3!71z$Dlj0c(%S|sJr>rvw!x;oCek+8f8s!U{DmfHcNpO z9>(IKOMfJwv?ey`V2ysSx2Npeh_x#bMh)Ngdj$al;5~R7Ac5R2?*f{hI|?{*$0qU- zY$6}ME%OGh^zA^z9zJUs-?a4ni8cw_{cYED*8x{bWg!Fn9)n;E9@B+t;#k}-2_j@# zg#b%R(5_SJAOtfgFCBZc`n<&z6)%nOIu@*yo!a% zpLg#36KBN$01W{b;qWN`Tp(T#jh%;Zp_zpS64lvBVY2B#UK)p`B4Oo)IO3Z&D6<3S zfF?ZdeNEnzE{}#gyuv)>;z6V{!#bx)` zY;hL*f(WVD*D9A4$WbRKF2vf;MoZVdhfWbWhr{+Db5@M^A4wrFReuWWimA4qp`GgoL2`W4WPUL5A=y3Y3P z%G?8lLUhqo@wJW8VDT`j&%YY7xh51NpVYlsrk_i4J|pLO(}(b8_>%U2M`$iVRDc-n zQiOdJbroQ%*vhN{!{pL~N|cfGooK_jTJCA3g_qs4c#6a&_{&$OoSQr_+-O^mKP=Fu zGObEx`7Qyu{nHTGNj(XSX*NPtAILL(0%8Jh)dQh+rtra({;{W2=f4W?Qr3qHi*G6B zOEj7%nw^sPy^@05$lOCjAI)?%B%&#cZ~nC|=g1r!9W@C8T0iUc%T*ne z)&u$n>Ue3FN|hv+VtA+WW)odO-sdtDcHfJ7s&|YCPfWaVHpTGN46V7Lx@feE#Od%0XwiZy40plD%{xl+K04*se zw@X4&*si2Z_0+FU&1AstR)7!Th(fdaOlsWh`d!y=+3m!QC$Zlkg8gnz!}_B7`+wSz z&kD?6{zPnE3uo~Tv8mLP%RaNt2hcCJBq=0T>%MW~Q@Tpt2pPP1?KcywH>in5@ zx+5;xu-ltFfo5vLU;2>r$-KCHjwGR&1XZ0YNyrXXAUK!FLM_7mV&^;;X^*YH(FLRr z`0Jjg7wiq2bisa`CG%o9i)o1`uG?oFjU_Zrv1S^ipz$G-lc^X@~6*)#%nn+RbgksJfl{w=k31(q>7a!PCMp5YY{+Neh~mo zG-3dd!0cy`F!nWR?=9f_KP$X?Lz&cLGm_ohy-|u!VhS1HG~e7~xKpYOh=GmiiU;nu zrZ5tWfan3kp-q_vO)}vY6a$19Q6UL0r znJ+iSHN-&w@vDEZ0V%~?(XBr|jz&vrBNLOngULxtH(Rp&U*rMY42n;05F11xh?k;n_DX2$4|vWIkXnbwfC z=ReH=(O~a;VEgVO?>qsP*#eOC9Y<_9Yt<6X}X{PyF7UXIA$f)>NR5P&4G_Ygq(9TwwQH*P>Rq>3T4I+t2X(b5ogXBAfNf!xiF#Gilm zp2h{&D4k!SkKz-SBa%F-ZoVN$7GX2o=(>vkE^j)BDSGXw?^%RS9F)d_4}PN+6MlI8*Uk7a28CZ)Gp*EK)`n5i z){aq=0SFSO-;sw$nAvJU-$S-cW?RSc7kjEBvWDr1zxb1J7i;!i+3PQwb=)www?7TZ zE~~u)vO>#55eLZW;)F(f0KFf8@$p)~llV{nO7K_Nq-+S^h%QV_CnXLi)p*Pq&`s!d zK2msiR;Hk_rO8`kqe_jfTmmv|$MMo0ll}mI)PO4!ikVd(ZThhi&4ZwK?tD-}noj}v zBJ?jH-%VS|=t)HuTk?J1XaDUjd_5p1kPZi6y#F6$lLeRQbj4hsr=hX z4tXkX2d5DeLMcAYTeYm|u(XvG5JpW}hcOs4#s8g#ihK%@hVz|kL=nfiBqJ{*E*WhC zht3mi$P3a(O5JiDq$Syu9p^HY&9~<#H89D8 zJm84@%TaL_BZ+qy8+T3_pG7Q%z80hnjN;j>S=&WZWF48PDD%55lVuC0%#r5(+S;WH zS7!HEzmn~)Ih`gE`faPRjPe^t%g=F ztpGVW=Cj5ZkpghCf~`ar0+j@A=?3(j@7*pq?|9)n*B4EQTA1xj<+|(Y72?m7F%&&& zdO44owDBPT(8~RO=dT-K4#Ja@^4_0v$O3kn73p6$s?mCmVDUZ+Xl@QcpR6R3B$=am z%>`r9r2Z79Q#RNK?>~lwk^nQlR=Hr-ji$Ss3ltbmB)x@0{VzHL-rxVO(++@Yr@Iu2 zTEX)_9sVM>cX$|xuqz~Y8F-(n;KLAfi*63M7mh&gsPR>N0pd9h!0bm%nA?Lr zS#iEmG|wQd^BSDMk0k?G>S-uE$vtKEF8Dq}%vLD07zK4RLoS?%F1^oZZI$0W->7Z# z?v&|a`u#UD=_>i~`kzBGaPj!mYX5g?3RC4$5EV*j0sV)>H#+$G6!ci=6`)85LWR=FCp-NUff`;2zG9nU6F~ z;3ZyE*>*LvUgae+uMf}aV}V*?DCM>{o31+Sx~6+sz;TI(VmIpDrN3z+BUj`oGGgLP z>h9~MP}Pw#YwzfGP8wSkz`V#}--6}7S9yZvb{;SX?6PM_KuYpbi~*=teZr-ga2QqIz{QrEyZ@>eN*qmy;N@FCBbRNEeeoTmQyrX;+ zCkaJ&vOIbc^2BD6_H+Mrcl?Nt7O{xz9R_L0ZPV_u!sz+TKbXmhK)0QWoe-_HwtKJ@@7=L+ z+K8hhf=4vbdg3GqGN<;v-SMIzvX=Z`WUa_91Yf89^#`G(f-Eq>odB^p-Eqx}ENk#&MxJ+%~Ad2-*`1LNT>2INPw?*V3&kE;tt?rQyBw? zI+xJD04GTz1$7~KMnfpkPRW>f%n|0YCML@ODe`10;^DXX-|Hb*IE%_Vi#Pn9@#ufA z_8NY*1U%VseqYrSm?%>F@`laz+f?+2cIE4Jg6 z_VTcx|DSEA`g!R%RS$2dSRM|9VQClsW-G<~=j5T`pTbu-x6O`R z98b;}`rPM(2={YiytrqX+uh65f?%XiPp`;4CcMT*E*dQJ+if9^D>c_Dk8A(cE<#r=&!& z_`Z01=&MEE+2@yr!|#El=yM}v>i=?w^2E_FLPy(*4A9XmCNy>cBWdx3U>1RylsItO z4V8T$z3W-qqq*H`@}lYpfh=>C!tieKhoMGUi)EpWDr;yIL&fy};Y&l|)f^QE*k~4C zH>y`Iu%#S)z)YUqWO%el*Z)ME#p{1_8-^~6UF;kBTW zMQ!eXQuzkR#}j{qb(y9^Y!X7&T}}-4$%4w@w=;w+>Z%uifR9OoQ>P?0d9xpcwa>7kTv2U zT-F?3`Q`7xOR!gS@j>7In>_h){j#@@(ynYh;nB~}+N6qO(JO1xA z@59Pxc#&I~I64slNR?#hB-4XE>EFU@lUB*D)tu%uEa))B#eJ@ZOX0hIulfnDQz-y8 z`CX@(O%_VC{Ogh&ot``jlDL%R!f>-8yq~oLGxBO?+tQb5%k@a9zTs!+=NOwSVH-cR zqFo^jHeXDA_!rx$NzdP;>{-j5w3QUrR<;}=u2|FBJ;D#v{SK@Z6mjeV7_kFmWt95$ zeGaF{IU?U>?W`jzrG_9=9}yN*LKyzz))PLE+)_jc#4Rd$yFGol;NIk(qO1$5VXR)+ zxF7%f4=Q!NzR>DVXUB&nUT&>Nyf+5QRF+Z`X-bB*7=`|Go5D1&h~ zflKLw??kpiRm0h3|1GvySC2^#kcFz^5{79KKlq@`(leBa=_4CgV9sSHr{RIJ^KwR_ zY??M}-x^=MD+9`v@I3jue=OCn0kxno#6i>b(XKk_XTp_LpI}X*UA<#* zsgvq@yKTe_dTh>q1aeae@8yur08S(Q^8kXkP_ty48V$pX#y9)FQa~E7P7}GP_CbCm zc2dQxTeW(-~Y6}im24*XOC8ySfH*HMEnW3 z4CXp8iK(Nk<^D$g0kUW`8PXn2kdcDk-H@P0?G8?|YVlIFb?a>QunCx%B9TzsqQQ~HD!UO7zq^V!v9jho_FUob&Hxi ztU1nNOK)a!gkb-K4V^QVX05*>-^i|{b`hhvQLyj`E1vAnj0fbqqO%r z6Q;X1x0dL~GqMv%8QindZ4CZ%7pYQW~ z9)I*#Gjref-q(4Z*E#1c&rE0-_(4;_M(V7rgH_7H;ps1s%GBmU z{4a|X##j#XUF2n({v?ZUUAP5k>+)^F)7n-npbV3jAlY8V3*W=fwroDS$c&r$>8aH` zH+irV{RG3^F3oW2&E%5hXgMH9>$WlqX76Cm+iFmFC-DToTa`AcuN9S!SB+BT-IA#3P)JW1m~Cuwjs`Ep(wDXE4oYmt*aU z!Naz^lM}B)JFp7ejro7MU9#cI>wUoi{lylR2~s)3M!6a=_W~ITXCPd@U9W)qA5(mdOf zd3PntGPJyRX<9cgX?(9~TZB5FdEHW~gkJXY51}?s4ZT_VEdwOwD{T2E-B>oC8|_ZwsPNj=-q(-kwy%xX2K0~H z{*+W`-)V`7@c#Iuaef=?RR2O&x>W0A^xSwh5MsjTz(DVG-EoD@asu<>72A_h<39_# zawWVU<9t{r*e^u-5Q#SUI6dV#p$NYEGyiowT>>d*or=Ps!H$-3={bB|An$GPkP5F1 zTnu=ktmF|6E*>ZQvk^~DX(k!N`tiLut*?3FZhs$NUEa4ccDw66-~P;x+0b|<!ZN7Z%A`>2tN#CdoG>((QR~IV_Gj^Yh%!HdA~4C3jOXaqb6Ou z21T~Wmi9F6(_K0@KR@JDTh3-4mv2=T7&ML<+$4;b9SAtv*Uu`0>;VVZHB{4?aIl3J zL(rMfk?1V@l)fy{J5DhVlj&cWKJCcrpOAad(7mC6#%|Sn$VwMjtx6RDx1zbQ|Ngg8N&B56DGhu;dYg$Z{=YmCNn+?ceDclp65c_RnKs4*vefnhudSlrCy6-96vSB4_sFAj# zftzECwmNEOtED^NUt{ZDjT7^g>k1w<=af>+0)%NA;IPq6qx&ya7+QAu=pk8t>KTm` zEBj9J*2t|-(h)xc>Us*jHs)w9qmA>8@u21UqzKk*Ei#0kCeW6o z-2Q+Tvt25IUkb}-_LgD1_FUJ!U8@8OC^9(~Kd*0#zr*8IQkD)6Keb(XFai5*DYf~` z@U?-{)9X&BTf!^&@^rjmvea#9OE~m(D>qfM?CFT9Q4RxqhO0sA7S)=--^*Q=kNh7Y zq%2mu_d_#23d`+v`Ol263CZ<;D%D8Njj6L4T`S*^{!lPL@pXSm>2;~Da- zBX97TS{}exvSva@J5FJVCM$j4WDQuME`vTw>PWS0!;J7R+Kq zVUy6%#n5f7EV(}J#FhDpts;>=d6ow!yhJj8j>MJ@Wr_?x30buuutIG97L1A*QFT$c ziC5rBS;#qj=~yP-yWm-p(?llTwDuhS^f&<(9vA9@UhMH2-Fe_YAG$NvK6X{!mvPK~ zuEA&PA}meylmaIbbJXDOzuIn8cJNCV{tUA<$Vb?57JyAM`*GpEfMmFq>)6$E(9e1@W`l|R%-&}38#bl~levA#fx2wiBk^)mPj?<=S&|gv zQO)4*91$n08@W%2b|QxEiO0KxABAZC{^4BX^6r>Jm?{!`ZId9jjz<%pl(G5l));*`UU3KfnuXSDj2aP>{ zRIB$9pm7lj3*Xg)c1eG!cb+XGt&#?7yJ@C)(Ik)^OZ5><4u$VLCqZ#q2NMCt5 z6$|VN(RWM;5!JV?-h<JkEZ(SZF zC(6J+>A6Am9H7OlOFq6S62-2&z^Np=#xXsOq0WUKr zY_+Ob|CQd1*!Hirj5rn*=_bM5_zKmq6lG zn*&_=x%?ATxZ8ZTzd%biKY_qyNC#ZQ1vX+vc48N>aJXEjs{Y*3Op`Q7-oz8jyAh>d zNt_qvn`>q9aO~7xm{z`ree%lJ3YHCyC`q`-jUVCn*&NIml!uuMNm|~u3#AV?6kC+B z?qrT?xu2^mobSlzb&m(8jttB^je0mx;TT8}`_w(F11IKz83NLj@OmYDpCU^u?fD{) z&=$ptwVw#uohPb2_PrFX;X^I=MVXPDpqTuYhRa>f-=wy$y3)40-;#EUDYB1~V9t%$ z^^<7Zbs0{eB93Pcy)96%XsAi2^k`Gmnypd-&x4v9rAq<>a(pG|J#+Q>E$FvMLmy7T z5_06W=*ASUyPRfgCeiPIe{b47Hjqpb`9Xyl@$6*ntH@SV^bgH&Fk3L9L=6VQb)Uqa z33u#>ecDo&bK(h1WqSH)b_Th#Tvk&%$NXC@_pg5f-Ma#7q;&0QgtsFO~`V&{1b zbSP*X)jgLtd@9XdZ#2_BX4{X~pS8okF7c1xUhEV9>PZco>W-qz7YMD`+kCGULdK|^ zE7VwQ-at{%&fv`a+b&h`TjzxsyQX05UB~a0cuU-}{*%jR48J+yGWyl3Kdz5}U>;lE zgkba*yI5>xqIPz*Y!-P$#_mhHB!0Fpnv{$k-$xxjLAc`XdmHd1k$V@2QlblfJPrly z*~-4HVCq+?9vha>&I6aRGyq2VUon^L1a)g`-Xm*@bl2|hi2b|UmVYW|b+Gy?!aS-p z86a}Jep6Mf>>}n^*Oca@Xz}kxh)Y&pX$^CFAmi#$YVf57X^}uQD!IQSN&int=D> zJ>_|au3Be?hmPKK)1^JQ(O29eTf`>-x^jF2xYK6j_9d_qFkWHIan5=7EmDvZoQWz5 zZGb<{szHc9Nf@om)K_<=FuLR<&?5RKo3LONFQZ@?dyjemAe4$yDrnD zglU#XYo6|~L+YpF#?deK6S{8A*Ou;9G`cdC4S0U74EW18bc5~4>)<*}?Z!1Y)j;Ot zosEP!pc$O^wud(={WG%hY07IE^SwS-fGbvpP?;l8>H$;}urY2JF$u#$q}E*ZG%fR# z`p{xslcvG)kBS~B*^z6zVT@e}imYcz_8PRzM4GS52#ms5Jg9z~ME+uke`(Tq1w3_6 zxUa{HerS7!Wq&y(<9yyN@P^PrQT+6ij_qW3^Q)I53iIFCJE?MVyGLID!f?QHUi1tq z0)RNIMGO$2>S%3MlBc09l!6_(ECxXTU>$KjWdZX^3R~@3!SB zah5Za2$63;#y!Y}(wg1#shMePQTzfQfXyJ-Tf`R05KYcyvo8UW9-IWGWnzxR6Vj8_la;*-z5vWuwUe7@sKr#Tr51d z2PWn5h@|?QU3>k=s{pZ9+(}oye zc*95N_iLmtmu}H-t$smi49Y&ovX}@mKYt2*?C-i3Lh4*#q5YDg1Mh`j9ovRDf9&& zp_UMQh`|pC!|=}1uWoMK5RAjdTg3pXPCsYmRkWW}^m&)u-*c_st~gcss(`haA)xVw zAf=;s>$`Gq_`A}^MjY_BnCjktBNHY1*gzh(i0BFZ{Vg^F?Pbf`8_clvdZ)5(J4EWzAP}Ba5zX=S(2{gDugTQ3`%!q`h7kYSnwC`zEWeuFlODKiityMaM9u{Z%E@@y1jmZA#ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 zcmaiYXH?Tqu=Xz`p-L#B_gI#0we$cm_HcmYFP$?wjD#BaCN4mzC5#`>w9y6=ThxrYZc0WPXprg zYjB`UsV}0=eUtY$(P6YW}npdd;%9pi?zS3k-nqCob zSX_AQEf|=wYT3r?f!*Yt)ar^;l3Sro{z(7deUBPd2~(SzZ-s@0r&~Km2S?8r##9-< z)2UOSVaHqq6}%sA9Ww;V2LG=PnNAh6mA2iWOuV7T_lRDR z&N8-eN=U)-T|;wo^Wv=34wtV0g}sAAe}`Ph@~!|<;z7*K8(qkX0}o=!(+N*UWrkEja*$_H6mhK1u{P!AC39} z|3+Z(mAOq#XRYS)TLoHv<)d%$$I@+x+2)V{@o~~J-!YUI-Q9%!Ldi4Op&Lw&B>jj* zwAgC#Y>gbIqv!d|J5f!$dbCXoq(l3GR(S>(rtZ~Z*agXMMKN!@mWT_vmCbSd3dUUm z4M&+gz?@^#RRGal%G3dDvj7C5QTb@9+!MG+>0dcjtZEB45c+qx*c?)d<%htn1o!#1 zpIGonh>P1LHu3s)fGFF-qS}AXjW|M*2Xjkh7(~r(lN=o#mBD9?jt74=Rz85I4Nfx_ z7Z)q?!};>IUjMNM6ee2Thq7))a>My?iWFxQ&}WvsFP5LP+iGz+QiYek+K1`bZiTV- zHHYng?ct@Uw5!gquJ(tEv1wTrRR7cemI>aSzLI^$PxW`wL_zt@RSfZ1M3c2sbebM* ze0=;sy^!90gL~YKISz*x;*^~hcCoO&CRD)zjT(A2b_uRue=QXFe5|!cf0z1m!iwv5GUnLw9Dr*Ux z)3Lc!J@Ei;&&yxGpf2kn@2wJ2?t6~obUg;?tBiD#uo$SkFIasu+^~h33W~`r82rSa ztyE;ehFjC2hjpJ-e__EH&z?!~>UBb=&%DS>NT)1O3Isn-!SElBV2!~m6v0$vx^a<@ISutdTk1@?;i z<8w#b-%|a#?e5(n@7>M|v<<0Kpg?BiHYMRe!3Z{wYc2hN{2`6(;q`9BtXIhVq6t~KMH~J0~XtUuT06hL8c1BYZWhN zk4F2I;|za*R{ToHH2L?MfRAm5(i1Ijw;f+0&J}pZ=A0;A4M`|10ZskA!a4VibFKn^ zdVH4OlsFV{R}vFlD~aA4xxSCTTMW@Gws4bFWI@xume%smAnuJ0b91QIF?ZV!%VSRJ zO7FmG!swKO{xuH{DYZ^##gGrXsUwYfD0dxXX3>QmD&`mSi;k)YvEQX?UyfIjQeIm! z0ME3gmQ`qRZ;{qYOWt}$-mW*>D~SPZKOgP)T-Sg%d;cw^#$>3A9I(%#vsTRQe%moT zU`geRJ16l>FV^HKX1GG7fR9AT((jaVb~E|0(c-WYQscVl(z?W!rJp`etF$dBXP|EG z=WXbcZ8mI)WBN>3<@%4eD597FD5nlZajwh8(c$lum>yP)F}=(D5g1-WVZRc)(!E3} z-6jy(x$OZOwE=~{EQS(Tp`yV2&t;KBpG*XWX!yG+>tc4aoxbXi7u@O*8WWFOxUjcq z^uV_|*818$+@_{|d~VOP{NcNi+FpJ9)aA2So<7sB%j`$Prje&auIiTBb{oD7q~3g0 z>QNIwcz(V-y{Ona?L&=JaV5`o71nIsWUMA~HOdCs10H+Irew#Kr(2cn>orG2J!jvP zqcVX0OiF}c<)+5&p}a>_Uuv)L_j}nqnJ5a?RPBNi8k$R~zpZ33AA4=xJ@Z($s3pG9 zkURJY5ZI=cZGRt_;`hs$kE@B0FrRx(6K{`i1^*TY;Vn?|IAv9|NrN*KnJqO|8$e1& zb?OgMV&q5|w7PNlHLHF) zB+AK#?EtCgCvwvZ6*u|TDhJcCO+%I^@Td8CR}+nz;OZ*4Dn?mSi97m*CXXc=};!P`B?}X`F-B5v-%ACa8fo0W++j&ztmqK z;&A)cT4ob9&MxpQU41agyMU8jFq~RzXOAsy>}hBQdFVL%aTn~M>5t9go2j$i9=(rZ zADmVj;Qntcr3NIPPTggpUxL_z#5~C!Gk2Rk^3jSiDqsbpOXf^f&|h^jT4|l2ehPat zb$<*B+x^qO8Po2+DAmrQ$Zqc`1%?gp*mDk>ERf6I|42^tjR6>}4`F_Mo^N(~Spjcg z_uY$}zui*PuDJjrpP0Pd+x^5ds3TG#f?57dFL{auS_W8|G*o}gcnsKYjS6*t8VI<) zcjqTzW(Hk*t-Qhq`Xe+x%}sxXRerScbPGv8hlJ;CnU-!Nl=# zR=iTFf9`EItr9iAlAGi}i&~nJ-&+)Y| zMZigh{LXe)uR+4D_Yb+1?I93mHQ5{pId2Fq%DBr7`?ipi;CT!Q&|EO3gH~7g?8>~l zT@%*5BbetH)~%TrAF1!-!=)`FIS{^EVA4WlXYtEy^|@y@yr!C~gX+cp2;|O4x1_Ol z4fPOE^nj(}KPQasY#U{m)}TZt1C5O}vz`A|1J!-D)bR%^+=J-yJsQXDzFiqb+PT0! zIaDWWU(AfOKlSBMS};3xBN*1F2j1-_=%o($ETm8@oR_NvtMDVIv_k zlnNBiHU&h8425{MCa=`vb2YP5KM7**!{1O>5Khzu+5OVGY;V=Vl+24fOE;tMfujoF z0M``}MNnTg3f%Uy6hZi$#g%PUA_-W>uVCYpE*1j>U8cYP6m(>KAVCmbsDf39Lqv0^ zt}V6FWjOU@AbruB7MH2XqtnwiXS2scgjVMH&aF~AIduh#^aT1>*V>-st8%=Kk*{bL zzbQcK(l2~)*A8gvfX=RPsNnjfkRZ@3DZ*ff5rmx{@iYJV+a@&++}ZW+za2fU>&(4y`6wgMpQGG5Ah(9oGcJ^P(H< zvYn5JE$2B`Z7F6ihy>_49!6}(-)oZ(zryIXt=*a$bpIw^k?>RJ2 zQYr>-D#T`2ZWDU$pM89Cl+C<;J!EzHwn(NNnWpYFqDDZ_*FZ{9KQRcSrl5T>dj+eA zi|okW;6)6LR5zebZJtZ%6Gx8^=2d9>_670!8Qm$wd+?zc4RAfV!ZZ$jV0qrv(D`db zm_T*KGCh3CJGb(*X6nXzh!h9@BZ-NO8py|wG8Qv^N*g?kouH4%QkPU~Vizh-D3<@% zGomx%q42B7B}?MVdv1DFb!axQ73AUxqr!yTyFlp%Z1IAgG49usqaEbI_RnbweR;Xs zpJq7GKL_iqi8Md?f>cR?^0CA+Uk(#mTlGdZbuC*$PrdB$+EGiW**=$A3X&^lM^K2s zzwc3LtEs5|ho z2>U(-GL`}eNgL-nv3h7E<*<>C%O^=mmmX0`jQb6$mP7jUKaY4je&dCG{x$`0=_s$+ zSpgn!8f~ya&U@c%{HyrmiW2&Wzc#Sw@+14sCpTWReYpF9EQ|7vF*g|sqG3hx67g}9 zwUj5QP2Q-(KxovRtL|-62_QsHLD4Mu&qS|iDp%!rs(~ah8FcrGb?Uv^Qub5ZT_kn%I^U2rxo1DDpmN@8uejxik`DK2~IDi1d?%~pR7i#KTS zA78XRx<(RYO0_uKnw~vBKi9zX8VnjZEi?vD?YAw}y+)wIjIVg&5(=%rjx3xQ_vGCy z*&$A+bT#9%ZjI;0w(k$|*x{I1c!ECMus|TEA#QE%#&LxfGvijl7Ih!B2 z6((F_gwkV;+oSKrtr&pX&fKo3s3`TG@ye+k3Ov)<#J|p8?vKh@<$YE@YIU1~@7{f+ zydTna#zv?)6&s=1gqH<-piG>E6XW8ZI7&b@-+Yk0Oan_CW!~Q2R{QvMm8_W1IV8<+ zQTyy=(Wf*qcQubRK)$B;QF}Y>V6d_NM#=-ydM?%EPo$Q+jkf}*UrzR?Nsf?~pzIj$ z<$wN;7c!WDZ(G_7N@YgZ``l;_eAd3+;omNjlpfn;0(B7L)^;;1SsI6Le+c^ULe;O@ zl+Z@OOAr4$a;=I~R0w4jO`*PKBp?3K+uJ+Tu8^%i<_~bU!p%so z^sjol^slR`W@jiqn!M~eClIIl+`A5%lGT{z^mRbpv}~AyO%R*jmG_Wrng{B9TwIuS z0!@fsM~!57K1l0%{yy(#no}roy#r!?0wm~HT!vLDfEBs9x#`9yCKgufm0MjVRfZ=f z4*ZRc2Lgr(P+j2zQE_JzYmP0*;trl7{*N341Cq}%^M^VC3gKG-hY zmPT>ECyrhIoFhnMB^qpdbiuI}pk{qPbK^}0?Rf7^{98+95zNq6!RuV_zAe&nDk0;f zez~oXlE5%ve^TmBEt*x_X#fs(-En$jXr-R4sb$b~`nS=iOy|OVrph(U&cVS!IhmZ~ zKIRA9X%Wp1J=vTvHZ~SDe_JXOe9*fa zgEPf;gD^|qE=dl>Qkx3(80#SE7oxXQ(n4qQ#by{uppSKoDbaq`U+fRqk0BwI>IXV3 zD#K%ASkzd7u>@|pA=)Z>rQr@dLH}*r7r0ng zxa^eME+l*s7{5TNu!+bD{Pp@2)v%g6^>yj{XP&mShhg9GszNu4ITW=XCIUp2Xro&1 zg_D=J3r)6hp$8+94?D$Yn2@Kp-3LDsci)<-H!wCeQt$e9Jk)K86hvV^*Nj-Ea*o;G zsuhRw$H{$o>8qByz1V!(yV{p_0X?Kmy%g#1oSmlHsw;FQ%j9S#}ha zm0Nx09@jmOtP8Q+onN^BAgd8QI^(y!n;-APUpo5WVdmp8!`yKTlF>cqn>ag`4;o>i zl!M0G-(S*fm6VjYy}J}0nX7nJ$h`|b&KuW4d&W5IhbR;-)*9Y0(Jj|@j`$xoPQ=Cl literal 0 HcmV?d00001 diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/macos/Runner/Configs/AppInfo.xcconfig b/example/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 00000000..92fb3cd5 --- /dev/null +++ b/example/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = example + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.example + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved. diff --git a/example/macos/Runner/Configs/Debug.xcconfig b/example/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 00000000..36b0fd94 --- /dev/null +++ b/example/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/example/macos/Runner/Configs/Release.xcconfig b/example/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 00000000..dff4f495 --- /dev/null +++ b/example/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/example/macos/Runner/Configs/Warnings.xcconfig b/example/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 00000000..42bcbf47 --- /dev/null +++ b/example/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/example/macos/Runner/DebugProfile.entitlements b/example/macos/Runner/DebugProfile.entitlements new file mode 100644 index 00000000..dddb8a30 --- /dev/null +++ b/example/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/example/macos/Runner/Info.plist b/example/macos/Runner/Info.plist new file mode 100644 index 00000000..4789daa6 --- /dev/null +++ b/example/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/example/macos/Runner/MainFlutterWindow.swift b/example/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 00000000..3cc05eb2 --- /dev/null +++ b/example/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/example/macos/Runner/Release.entitlements b/example/macos/Runner/Release.entitlements new file mode 100644 index 00000000..852fa1a4 --- /dev/null +++ b/example/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/example/macos/RunnerTests/RunnerTests.swift b/example/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..5418c9f5 --- /dev/null +++ b/example/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import FlutterMacOS +import Cocoa +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/example/pubspec.lock b/example/pubspec.lock index eff4efaa..841f7661 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: circle_flags - sha256: cac0fe72ad731cae5984e30be536814d7df37eeb7efc388ba76fdb84dab47ac4 + sha256: "61bccd6a5f9bf3790ea0d42419c6942f0f60b2df510f948e154606e0bb55bbae" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "4.0.1" clock: dependency: transitive description: @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: diacritic - sha256: a84e03ec2779375fb86430dbe9d8fba62c68376f2499097a5f6e75556babe706 + sha256: "96db5db6149cbe4aa3cfcbfd170aca9b7648639be7e48025f9d458517f807fe4" url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "0.1.5" fake_async: dependency: transitive description: @@ -78,6 +78,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_country_selector: + dependency: transitive + description: + name: flutter_country_selector + sha256: cb9d9ba5b979432f8015a17aeb803be123c0af0c0bbfac006529013bbf03e2af + url: "https://pub.dev" + source: hosted + version: "1.0.2" flutter_lints: dependency: "direct dev" description: @@ -179,10 +187,10 @@ packages: dependency: transitive description: name: phone_numbers_parser - sha256: "17a6686350c574a08f7beb839c5f908cc19b9c0eabd6e97029b517527a49da02" + sha256: d0dad4f5b61c3d959b069df088ef7242ffed42a3cf74c7549fd7c324e1eb964e url: "https://pub.dev" source: hosted - version: "8.1.0" + version: "8.1.3" sky_engine: dependency: transitive description: flutter @@ -240,26 +248,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "0f0c746dd2d6254a0057218ff980fc7f5670fd0fcf5e4db38a490d31eed4ad43" + sha256: "18f6690295af52d081f6808f2f7c69f0eed6d7e23a71539d75f4aeb8f0062172" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.9+2" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "0edf6d630d1bfd5589114138ed8fada3234deacc37966bec033d3047c29248b7" + sha256: "531d20465c10dfac7f5cd90b60bbe4dd9921f1ec4ca54c83ebb176dbacb7bb2d" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.9+2" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: d24333727332d9bd20990f1483af4e09abdb9b1fc7c3db940b56ab5c42790c26 + sha256: "03012b0a33775c5530576b70240308080e1d5050f0faf000118c20e6463bc0ad" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.9+2" vector_math: dependency: transitive description: @@ -285,5 +293,5 @@ packages: source: hosted version: "6.5.0" sdks: - dart: ">=3.2.0 <4.0.0" + dart: ">=3.2.4 <4.0.0" flutter: ">=3.7.0-0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 72f9f1a6..904c4b41 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -19,7 +19,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^2.0.1 + flutter_lints: ^2.0.3 flutter: uses-material-design: true diff --git a/example/web/index.html b/example/web/index.html index b6b9dd23..45cf2ca3 100644 --- a/example/web/index.html +++ b/example/web/index.html @@ -31,74 +31,29 @@ example + + + + - diff --git a/example/windows/CMakeLists.txt b/example/windows/CMakeLists.txt index 1633297a..d960948a 100644 --- a/example/windows/CMakeLists.txt +++ b/example/windows/CMakeLists.txt @@ -1,13 +1,16 @@ +# Project-level configuration. cmake_minimum_required(VERSION 3.14) project(example LANGUAGES CXX) +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. set(BINARY_NAME "example") -cmake_policy(SET CMP0063 NEW) +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Configure build options. +# Define build configuration option. get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(IS_MULTICONFIG) set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" @@ -20,7 +23,7 @@ else() "Debug" "Profile" "Release") endif() endif() - +# Define settings for the Profile build mode. set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") @@ -30,6 +33,10 @@ set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") add_definitions(-DUNICODE -D_UNICODE) # Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. function(APPLY_STANDARD_SETTINGS TARGET) target_compile_features(${TARGET} PUBLIC cxx_std_17) target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") @@ -38,14 +45,14 @@ function(APPLY_STANDARD_SETTINGS TARGET) target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") endfunction() -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") - # Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") add_subdirectory(${FLUTTER_MANAGED_DIR}) -# Application build +# Application build; see runner/CMakeLists.txt. add_subdirectory("runner") + # Generated plugin build rules, which manage building the plugins and adding # them to the application. include(flutter/generated_plugins.cmake) @@ -80,6 +87,12 @@ if(PLUGIN_BUNDLED_LIBRARIES) COMPONENT Runtime) endif() +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + # Fully re-copy the assets directory on each build to avoid having stale files # from a previous install. set(FLUTTER_ASSET_DIR_NAME "flutter_assets") diff --git a/example/windows/flutter/CMakeLists.txt b/example/windows/flutter/CMakeLists.txt index b2e4bd8d..903f4899 100644 --- a/example/windows/flutter/CMakeLists.txt +++ b/example/windows/flutter/CMakeLists.txt @@ -1,3 +1,4 @@ +# This file controls Flutter-level build steps. It should not be edited. cmake_minimum_required(VERSION 3.14) set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") @@ -9,6 +10,11 @@ include(${EPHEMERAL_DIR}/generated_config.cmake) # https://github.com/flutter/flutter/issues/57146. set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + # === Flutter Library === set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") @@ -91,7 +97,7 @@ add_custom_command( COMMAND ${CMAKE_COMMAND} -E env ${FLUTTER_TOOL_ENVIRONMENT} "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ + ${FLUTTER_TARGET_PLATFORM} $ VERBATIM ) add_custom_target(flutter_assemble DEPENDS diff --git a/example/windows/flutter/generated_plugin_registrant.cc b/example/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 8b6d4680..00000000 --- a/example/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void RegisterPlugins(flutter::PluginRegistry* registry) { -} diff --git a/example/windows/flutter/generated_plugin_registrant.h b/example/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d85..00000000 --- a/example/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void RegisterPlugins(flutter::PluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/example/windows/runner/CMakeLists.txt b/example/windows/runner/CMakeLists.txt index de2d8916..394917c0 100644 --- a/example/windows/runner/CMakeLists.txt +++ b/example/windows/runner/CMakeLists.txt @@ -1,6 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(runner LANGUAGES CXX) +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. add_executable(${BINARY_NAME} WIN32 "flutter_window.cpp" "main.cpp" @@ -10,8 +15,26 @@ add_executable(${BINARY_NAME} WIN32 "Runner.rc" "runner.exe.manifest" ) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/example/windows/runner/Runner.rc b/example/windows/runner/Runner.rc index 5fdea291..687e6bd2 100644 --- a/example/windows/runner/Runner.rc +++ b/example/windows/runner/Runner.rc @@ -60,14 +60,14 @@ IDI_APP_ICON ICON "resources\\app_icon.ico" // Version // -#ifdef FLUTTER_BUILD_NUMBER -#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD #else -#define VERSION_AS_NUMBER 1,0,0 +#define VERSION_AS_NUMBER 1,0,0,0 #endif -#ifdef FLUTTER_BUILD_NAME -#define VERSION_AS_STRING #FLUTTER_BUILD_NAME +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION #else #define VERSION_AS_STRING "1.0.0" #endif @@ -93,7 +93,7 @@ BEGIN VALUE "FileDescription", "example" "\0" VALUE "FileVersion", VERSION_AS_STRING "\0" VALUE "InternalName", "example" "\0" - VALUE "LegalCopyright", "Copyright (C) 2022 com.example. All rights reserved." "\0" + VALUE "LegalCopyright", "Copyright (C) 2024 com.example. All rights reserved." "\0" VALUE "OriginalFilename", "example.exe" "\0" VALUE "ProductName", "example" "\0" VALUE "ProductVersion", VERSION_AS_STRING "\0" diff --git a/example/windows/runner/flutter_window.cpp b/example/windows/runner/flutter_window.cpp index b43b9095..955ee303 100644 --- a/example/windows/runner/flutter_window.cpp +++ b/example/windows/runner/flutter_window.cpp @@ -26,6 +26,16 @@ bool FlutterWindow::OnCreate() { } RegisterPlugins(flutter_controller_->engine()); SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + return true; } diff --git a/example/windows/runner/main.cpp b/example/windows/runner/main.cpp index bcb57b0e..a61bf80d 100644 --- a/example/windows/runner/main.cpp +++ b/example/windows/runner/main.cpp @@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, FlutterWindow window(project); Win32Window::Point origin(10, 10); Win32Window::Size size(1280, 720); - if (!window.CreateAndShow(L"example", origin, size)) { + if (!window.Create(L"example", origin, size)) { return EXIT_FAILURE; } window.SetQuitOnClose(true); diff --git a/example/windows/runner/runner.exe.manifest b/example/windows/runner/runner.exe.manifest index c977c4a4..a42ea768 100644 --- a/example/windows/runner/runner.exe.manifest +++ b/example/windows/runner/runner.exe.manifest @@ -7,7 +7,7 @@ - + diff --git a/example/windows/runner/utils.cpp b/example/windows/runner/utils.cpp index d19bdbbc..b2b08734 100644 --- a/example/windows/runner/utils.cpp +++ b/example/windows/runner/utils.cpp @@ -47,16 +47,17 @@ std::string Utf8FromUtf16(const wchar_t* utf16_string) { } int target_length = ::WideCharToMultiByte( CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, nullptr, 0, nullptr, nullptr); - if (target_length == 0) { - return std::string(); - } + -1, nullptr, 0, nullptr, nullptr) + -1; // remove the trailing null character + int input_length = (int)wcslen(utf16_string); std::string utf8_string; + if (target_length <= 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } utf8_string.resize(target_length); int converted_length = ::WideCharToMultiByte( CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, utf8_string.data(), - target_length, nullptr, nullptr); + input_length, utf8_string.data(), target_length, nullptr, nullptr); if (converted_length == 0) { return std::string(); } diff --git a/example/windows/runner/win32_window.cpp b/example/windows/runner/win32_window.cpp index c10f08dc..60608d0f 100644 --- a/example/windows/runner/win32_window.cpp +++ b/example/windows/runner/win32_window.cpp @@ -1,13 +1,31 @@ #include "win32_window.h" +#include #include #include "resource.h" namespace { +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + // The number of Win32Window objects that currently exist. static int g_active_window_count = 0; @@ -31,8 +49,8 @@ void EnableFullDpiSupportIfAvailable(HWND hwnd) { GetProcAddress(user32_module, "EnableNonClientDpiScaling")); if (enable_non_client_dpi_scaling != nullptr) { enable_non_client_dpi_scaling(hwnd); - FreeLibrary(user32_module); } + FreeLibrary(user32_module); } } // namespace @@ -42,7 +60,7 @@ class WindowClassRegistrar { public: ~WindowClassRegistrar() = default; - // Returns the singleton registar instance. + // Returns the singleton registrar instance. static WindowClassRegistrar* GetInstance() { if (!instance_) { instance_ = new WindowClassRegistrar(); @@ -102,9 +120,9 @@ Win32Window::~Win32Window() { Destroy(); } -bool Win32Window::CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size) { +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { Destroy(); const wchar_t* window_class = @@ -117,7 +135,7 @@ bool Win32Window::CreateAndShow(const std::wstring& title, double scale_factor = dpi / 96.0; HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), Scale(size.width, scale_factor), Scale(size.height, scale_factor), nullptr, nullptr, GetModuleHandle(nullptr), this); @@ -126,9 +144,15 @@ bool Win32Window::CreateAndShow(const std::wstring& title, return false; } + UpdateTheme(window); + return OnCreate(); } +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + // static LRESULT CALLBACK Win32Window::WndProc(HWND const window, UINT const message, @@ -188,6 +212,10 @@ Win32Window::MessageHandler(HWND hwnd, SetFocus(child_content_); } return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; } return DefWindowProc(window_handle_, message, wparam, lparam); @@ -243,3 +271,18 @@ bool Win32Window::OnCreate() { void Win32Window::OnDestroy() { // No-op; provided for subclasses. } + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/example/windows/runner/win32_window.h b/example/windows/runner/win32_window.h index 17ba4311..e901dde6 100644 --- a/example/windows/runner/win32_window.h +++ b/example/windows/runner/win32_window.h @@ -28,15 +28,16 @@ class Win32Window { Win32Window(); virtual ~Win32Window(); - // Creates and shows a win32 window with |title| and position and size using + // Creates a win32 window with |title| that is positioned and sized using // |origin| and |size|. New windows are created on the default monitor. Window // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size to will treat the width height passed in to this function - // as logical pixels and scale to appropriate for the default monitor. Returns - // true if the window was created successfully. - bool CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size); + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); // Release OS resources associated with window. void Destroy(); @@ -76,7 +77,7 @@ class Win32Window { // OS callback called by message pump. Handles the WM_NCCREATE message which // is passed when the non-client area is being created and enables automatic // non-client DPI scaling so that the non-client area automatically - // responsponds to changes in DPI. All other messages are handled by + // responds to changes in DPI. All other messages are handled by // MessageHandler. static LRESULT CALLBACK WndProc(HWND const window, UINT const message, @@ -86,6 +87,9 @@ class Win32Window { // Retrieves a class instance pointer for |window| static Win32Window* GetThisFromHandle(HWND const window) noexcept; + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + bool quit_on_close_ = false; // window handle for top level window. diff --git a/l10n.yaml b/l10n.yaml index 5482d2f7..3f90898b 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -1,6 +1,7 @@ -arb-dir: lib/l10n +arb-dir: l10n template-arb-file: en.arb -output-localization-file: phone_field_localization.dart -output-class: PhoneFieldLocalization -output-dir: lib/l10n/generated +output-localization-file: phone_field_localization_impl.dart +output-class: PhoneFieldLocalizationImpl +output-dir: lib/src/localization/generated synthetic-package: false +format: true diff --git a/l10n/ar.arb b/l10n/ar.arb new file mode 100644 index 00000000..d5db5683 --- /dev/null +++ b/l10n/ar.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "ar", + "invalidPhoneNumber": "رقم الهاتف غير صحيح", + "invalidCountry": "دولة غير صحيح", + "invalidMobilePhoneNumber": "رقم الهاتف الخلوي غير صحيح", + "invalidFixedLinePhoneNumber": "رقم الهاتف الثابت غير صحيح", + "requiredPhoneNumber": "رقم الهاتف مطلوب" +} \ No newline at end of file diff --git a/l10n/ckb.arb b/l10n/ckb.arb new file mode 100644 index 00000000..f6d83e93 --- /dev/null +++ b/l10n/ckb.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "ckb", + "invalidPhoneNumber": "ژمارەی تەلەفۆنی نادروست", + "invalidCountry": "وڵاتێکی نادروست", + "invalidMobilePhoneNumber": "ژمارەی مۆبایل نادروستە", + "invalidFixedLinePhoneNumber": "ژمارەی تەلەفۆنی هێڵی جێگیر نادروستە", + "requiredPhoneNumber": "ژمارەی تەلەفۆنی پێویست" +} \ No newline at end of file diff --git a/l10n/de.arb b/l10n/de.arb new file mode 100644 index 00000000..9f989b0c --- /dev/null +++ b/l10n/de.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "de", + "invalidPhoneNumber": "Ungültige Telefonnummer", + "invalidCountry": "Ungültiges Land", + "invalidMobilePhoneNumber": "Ungültige Handynummer", + "invalidFixedLinePhoneNumber": "Ungültige Festnetznummer", + "requiredPhoneNumber": "Telefonnummer erforderlich" +} \ No newline at end of file diff --git a/l10n/el.arb b/l10n/el.arb new file mode 100644 index 00000000..a2ee764b --- /dev/null +++ b/l10n/el.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "el", + "invalidPhoneNumber": "Μη έγκυρος αριθμός τηλεφώνου", + "invalidCountry": "Μη έγκυρη χώρα", + "invalidMobilePhoneNumber": "Μη έγκυρος αριθμός κινητού τηλεφώνου", + "invalidFixedLinePhoneNumber": "Μη έγκυρος αριθμός σταθερού τηλεφώνου", + "requiredPhoneNumber": "Απαιτούμενος αριθμός τηλεφώνου" +} \ No newline at end of file diff --git a/l10n/en.arb b/l10n/en.arb new file mode 100644 index 00000000..d8b2e7d2 --- /dev/null +++ b/l10n/en.arb @@ -0,0 +1,21 @@ +{ + "@@locale": "en", + "invalidPhoneNumber": "Invalid phone number", + "invalidCountry": "Invalid country", + "invalidMobilePhoneNumber": "Invalid mobile phone number", + "invalidFixedLinePhoneNumber": "Invalid fixed line phone number", + "requiredPhoneNumber": "Required phone number", + "tapToSelectACountry": "Tap to select a country. Current selection: {countryName} {countryDialCode}", + "@tapToSelectACountry": { + "description": "semantic description of the country button", + "placeholders": { + "countryName": { + "type": "String" + }, + "countryDialCode": { + "type": "String" + } + } + }, + "enterPhoneNumber": "Enter your phone number" +} \ No newline at end of file diff --git a/l10n/es.arb b/l10n/es.arb new file mode 100644 index 00000000..866dfa69 --- /dev/null +++ b/l10n/es.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "es", + "invalidPhoneNumber": "Numero de telefono invalido", + "invalidCountry": "País invalido", + "invalidMobilePhoneNumber": "Número de teléfono celular invalido", + "invalidFixedLinePhoneNumber": "Número de teléfono fijo invalido", + "requiredPhoneNumber": "Número de teléfono obligatorio" +} \ No newline at end of file diff --git a/l10n/fa.arb b/l10n/fa.arb new file mode 100644 index 00000000..b1b5c1a9 --- /dev/null +++ b/l10n/fa.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "fa", + "invalidPhoneNumber": "شماره تلفن نامعتبر است", + "invalidCountry": "کشور نامعتبر است", + "invalidMobilePhoneNumber": "شماره تلفن همراه نامعتبر است", + "invalidFixedLinePhoneNumber": "شماره تلفن ثابت نامعتبر است", + "requiredPhoneNumber": "شماره تلفن الزامی است" +} \ No newline at end of file diff --git a/l10n/fr.arb b/l10n/fr.arb new file mode 100644 index 00000000..85c5a0b3 --- /dev/null +++ b/l10n/fr.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "fr", + "invalidPhoneNumber": "Numéro de téléphone invalide", + "invalidCountry": "Pays invalide", + "invalidMobilePhoneNumber": "Numéro de téléphone portable invalide", + "invalidFixedLinePhoneNumber": "Numéro de téléphone fixe invalide", + "requiredPhoneNumber": "Numéro de téléphone requis" +} \ No newline at end of file diff --git a/l10n/hi.arb b/l10n/hi.arb new file mode 100644 index 00000000..2fb8d481 --- /dev/null +++ b/l10n/hi.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "hi", + "invalidPhoneNumber": "अवैध फोन नंबर", + "invalidCountry": "अवैध देश", + "invalidMobilePhoneNumber": "अमान्य सेल फ़ोन नंबर", + "invalidFixedLinePhoneNumber": "अवैध लैंडलाइन नंबर", + "requiredPhoneNumber": "फ़ोन नंबर आवश्यक" +} \ No newline at end of file diff --git a/l10n/it.arb b/l10n/it.arb new file mode 100644 index 00000000..4a1fac6f --- /dev/null +++ b/l10n/it.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "it", + "invalidPhoneNumber": "Numero di telefono invalido", + "invalidCountry": "Paese invalido", + "invalidMobilePhoneNumber": "Numero di cellulare invalido", + "invalidFixedLinePhoneNumber": "Numero di rete fissa invalido", + "requiredPhoneNumber": "Numero di telefono richiesto" +} \ No newline at end of file diff --git a/l10n/ku.arb b/l10n/ku.arb new file mode 100644 index 00000000..12a72ec6 --- /dev/null +++ b/l10n/ku.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "ku", + "invalidPhoneNumber": "ژمارەی تەلەفۆنی نادروست", + "invalidCountry": "وڵاتێکی نادروست", + "invalidMobilePhoneNumber": "ژمارەی مۆبایل نادروستە", + "invalidFixedLinePhoneNumber": "ژمارەی تەلەفۆنی هێڵی جێگیر نادروستە", + "requiredPhoneNumber": "ژمارەی تەلەفۆنی پێویست" +} \ No newline at end of file diff --git a/l10n/nb.arb b/l10n/nb.arb new file mode 100644 index 00000000..3cf2db0e --- /dev/null +++ b/l10n/nb.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "nb", + "invalidPhoneNumber": "Ugyldig telefonnummer", + "invalidCountry": "Ugyldig land", + "invalidMobilePhoneNumber": "Ugyldig mobilnummer", + "invalidFixedLinePhoneNumber": "Ugyldig fasttelefonnummer", + "requiredPhoneNumber": "Telefonnummer er påkrevd" +} \ No newline at end of file diff --git a/l10n/nl.arb b/l10n/nl.arb new file mode 100644 index 00000000..51acf71c --- /dev/null +++ b/l10n/nl.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "nl", + "invalidPhoneNumber": "Ongeldig telefoonnummer", + "invalidCountry": "Ongeldig land", + "invalidMobilePhoneNumber": "Ongeldig mobiel nummer", + "invalidFixedLinePhoneNumber": "Ongeldig vast nummer", + "requiredPhoneNumber": "Telefoonnummer vereist" +} \ No newline at end of file diff --git a/l10n/pt.arb b/l10n/pt.arb new file mode 100644 index 00000000..a179e575 --- /dev/null +++ b/l10n/pt.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "pt", + "invalidPhoneNumber": "Número de telefone inválido", + "invalidCountry": "País inválido", + "invalidMobilePhoneNumber": "Número de telefone celular inválido", + "invalidFixedLinePhoneNumber": "Número de telefone fixo inválido", + "requiredPhoneNumber": "Número de telefone obrigatório" +} \ No newline at end of file diff --git a/l10n/ru.arb b/l10n/ru.arb new file mode 100644 index 00000000..11bff31c --- /dev/null +++ b/l10n/ru.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "ru", + "invalidPhoneNumber": "Неправильный номер телефона", + "invalidCountry": "Неверная страна", + "invalidMobilePhoneNumber": "Неверный номер мобильного телефона", + "invalidFixedLinePhoneNumber": "Недействительный номер стационарного телефона", + "requiredPhoneNumber": "Требуется номер телефона" +} \ No newline at end of file diff --git a/l10n/sv.arb b/l10n/sv.arb new file mode 100644 index 00000000..f9349d95 --- /dev/null +++ b/l10n/sv.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "sv", + "invalidPhoneNumber": "Ogiltigt telefonnummer", + "invalidCountry": "Ogiltigt land", + "invalidMobilePhoneNumber": "Ogiltigt mobilnummer", + "invalidFixedLinePhoneNumber": "Ogiltigt fast telefonnummer", + "requiredPhoneNumber": "Obligatoriskt telefonnummer" +} \ No newline at end of file diff --git a/l10n/tr.arb b/l10n/tr.arb new file mode 100644 index 00000000..a522c126 --- /dev/null +++ b/l10n/tr.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "tr", + "invalidPhoneNumber": "Geçersiz telefon numarası", + "invalidCountry": "Geçersiz ülke", + "invalidMobilePhoneNumber": "Geçersiz cep telefonu numarası", + "invalidFixedLinePhoneNumber": "Geçersiz sabit hat telefon numarası", + "requiredPhoneNumber": "Telefon numarası gerekli" +} \ No newline at end of file diff --git a/l10n/uk.arb b/l10n/uk.arb new file mode 100644 index 00000000..4bcc75b8 --- /dev/null +++ b/l10n/uk.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "uk", + "invalidPhoneNumber": "Невірний номер телефону", + "invalidCountry": "Недійсна країна", + "invalidMobilePhoneNumber": "Невірний номер мобільного телефону", + "invalidFixedLinePhoneNumber": "Невірний номер стаціонарного телефону", + "requiredPhoneNumber": "Необхідний номер телефону" +} \ No newline at end of file diff --git a/l10n/uz.arb b/l10n/uz.arb new file mode 100644 index 00000000..c17feeaf --- /dev/null +++ b/l10n/uz.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "uz", + "invalidPhoneNumber": "Telefon raqami noto‘g‘ri", + "invalidCountry": "Yaroqsiz mamlakat", + "invalidMobilePhoneNumber": "Telfon raqami noto‘g‘ri", + "invalidFixedLinePhoneNumber": "Ruxsat etilgan telefon raqami yaroqsiz", + "requiredPhoneNumber": "Telfon raqami majburiy" +} \ No newline at end of file diff --git a/l10n/zh.arb b/l10n/zh.arb new file mode 100644 index 00000000..6286aac9 --- /dev/null +++ b/l10n/zh.arb @@ -0,0 +1,8 @@ +{ + "@@locale": "zh", + "invalidPhoneNumber": "无效的电话号码", + "invalidCountry": "无效国家", + "invalidMobilePhoneNumber": "无效的手机号码", + "invalidFixedLinePhoneNumber": "无效的固定电话号码", + "requiredPhoneNumber": "需要电话号码" +} \ No newline at end of file diff --git a/lib/l10n/ar.arb b/lib/l10n/ar.arb deleted file mode 100644 index 898255fd..00000000 --- a/lib/l10n/ar.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "ar", - "invalidPhoneNumber": "رقم الهاتف غير صحيح", - "invalidCountry": "دولة غير صحيح", - "invalidMobilePhoneNumber": "رقم الهاتف الخلوي غير صحيح", - "invalidFixedLinePhoneNumber": "رقم الهاتف الثابت غير صحيح", - "requiredPhoneNumber": "رقم الهاتف مطلوب", - "noResultMessage": "لا نتيجة", - "ac_": "جزيرة أسنسيون", - "ad_": "أندورا", - "ae_": "الإمارات العربية المتحدة", - "af_": "أفغانستان", - "ag_": "أنتيغوا وبربودا", - "ai_": "أنغيلا", - "al_": "ألبانيا", - "am_": "أرمينيا", - "an_": "جزر الأنتيل الهولندية", - "ao_": "أنغولا", - "aq_": "أنتاركتيكا", - "ar_": "الأرجنتين", - "as_": "ساموا الأمريكية", - "at_": "النمسا", - "au_": "أستراليا", - "aw_": "أروبا", - "ax_": "جزر آلاند", - "az_": "أذربيجان", - "ba_": "البوسنة والهرسك", - "bb_": "بربادوس", - "bd_": "بنغلاديش", - "be_": "بلجيكا", - "bf_": "بوركينا فاسو", - "bg_": "بلغاريا", - "bh_": "البحرين", - "bi_": "بوروندي", - "bj_": "بنين", - "bl_": "سانت بارتيليمي", - "bm_": "برمودا", - "bn_": "بروناي دار السلام", - "bo_": "بوليفيا ، دولة متعددة القوميات", - "bq_": "بونير", - "br_": "البرازيل", - "bs_": "جزر البهاما", - "bt_": "بوتان", - "bw_": "بوتسوانا", - "by_": "بيلاروسيا", - "bz_": "بليز", - "ca_": "كندا", - "cc_": "جزر كوكوس (كيلينغ)", - "cd_": "الكونغو ، جمهورية الكونغو الديمقراطية", - "cf_": "جمهورية افريقيا الوسطى", - "cg_": "الكونغو", - "ch_": "سويسرا", - "ci_": "كوت ديفوار", - "ck_": "جزر كوك", - "cl_": "تشيلي", - "cm_": "الكاميرون", - "cn_": "الصين", - "co_": "كولومبيا", - "cr_": "كوستا ريكا", - "cu_": "كوبا", - "cv_": "الرأس الأخضر", - "cx_": "جزيرة الكريسماس", - "cy_": "قبرص", - "cz_": "الجمهورية التشيكية", - "de_": "ألمانيا", - "dj_": "جيبوتي", - "dk_": "الدنمارك", - "dm_": "دومينيكا", - "do_": "جمهورية الدومينيكان", - "dz_": "الجزائر", - "ec_": "الاكوادور", - "ee_": "إستونيا", - "eg_": "مصر", - "er_": "إريتريا", - "es_": "إسبانيا", - "et_": "أثيوبيا", - "fi_": "فنلندا", - "fj_": "فيجي", - "fk_": "جزر فوكلاند (مالفيناس)", - "fm_": "ولايات ميكرونيزيا الموحدة", - "fo_": "جزر فاروس", - "fr_": "فرنسا", - "ga_": "الجابون", - "gb_": "المملكة المتحدة", - "gd_": "غرينادا", - "ge_": "جورجيا", - "gf_": "غيانا الفرنسية", - "gg_": "غيرنسي", - "gh_": "غانا", - "gi_": "جبل طارق", - "gl_": "الأرض الخضراء", - "gm_": "غامبيا", - "gn_": "غينيا", - "gp_": "جوادلوب", - "gq_": "غينيا الإستوائية", - "gr_": "اليونان", - "gs_": "جورجيا الجنوبية وجزر ساندويتش الجنوبية", - "gt_": "غواتيمالا", - "gu_": "غوام", - "gw_": "غينيا بيساو", - "gy_": "غيانا", - "hk_": "هونج كونج", - "hn_": "هندوراس", - "hr_": "كرواتيا", - "ht_": "هايتي", - "hu_": "هنغاريا", - "id_": "إندونيسيا", - "ie_": "أيرلندا", - "il_": "إسرائيل", - "im_": "جزيرة آيل أوف مان", - "in_": "الهند", - "io_": "إقليم المحيط البريطاني الهندي", - "iq_": "العراق", - "ir_": "إيران ، جمهورية الخليج الإسلامية", - "is_": "أيسلندا", - "it_": "إيطاليا", - "je_": "جيرسي", - "jm_": "جامايكا", - "jo_": "الأردن", - "jp_": "اليابان", - "ke_": "كينيا", - "kg_": "قيرغيزستان", - "kh_": "كمبوديا", - "ki_": "كيريباتي", - "km_": "جزر القمر", - "kn_": "سانت كيتس ونيفيس", - "kp_": "كوريا ، جمهورية كوريا الشعبية الديمقراطية", - "kr_": "كوريا ، جمهورية كوريا الجنوبية", - "kw_": "الكويت", - "ky_": "جزر كايمان", - "kz_": "كازاخستان", - "la_": "لاوس", - "lb_": "لبنان", - "lc_": "القديسة لوسيا", - "li_": "ليختنشتاين", - "lk_": "سيريلانكا", - "lr_": "ليبيريا", - "ls_": "ليسوتو", - "lt_": "ليتوانيا", - "lu_": "لوكسمبورغ", - "lv_": "لاتفيا", - "ly_": "ليبيا", - "ma_": "المغرب", - "mc_": "موناكو", - "md_": "مولدوفا", - "me_": "الجبل الأسود", - "mf_": "القديس مارتن", - "mg_": "مدغشقر", - "mh_": "جزر مارشال", - "mk_": "مقدونيا", - "ml_": "مالي", - "mm_": "ميانمار", - "mn_": "منغوليا", - "mo_": "ماكاو", - "mp_": "جزر مريانا الشمالية", - "mq_": "مارتينيك", - "mr_": "موريتانيا", - "ms_": "مونتسيرات", - "mt_": "مالطا", - "mu_": "موريشيوس", - "mv_": "جزر المالديف", - "mw_": "ملاوي", - "mx_": "المكسيك", - "my_": "ماليزيا", - "mz_": "موزمبيق", - "na_": "ناميبيا", - "nc_": "كاليدونيا الجديدة", - "ne_": "النيجر", - "nf_": "جزيرة نورفولك", - "ng_": "نيجيريا", - "ni_": "نيكاراغوا", - "nl_": "هولندا", - "no_": "النرويج", - "np_": "نيبال", - "nr_": "ناورو", - "nu_": "نيوي", - "nz_": "نيوزيلاندا", - "om_": "سلطنة عمان", - "pa_": "بنما", - "pe_": "بيرو", - "pf_": "بولينيزيا الفرنسية", - "pg_": "بابوا غينيا الجديدة", - "ph_": "فيلبيني", - "pk_": "باكستان", - "pl_": "بولندا", - "pm_": "سانت بيير وميكلون", - "pn_": "بيتكيرن", - "pr_": "بورتوريكو", - "ps_": "الأراضي الفلسطينية المحتلة", - "pt_": "البرتغال", - "pw_": "بالاو", - "py_": "باراغواي", - "qa_": "دولة قطر", - "re_": "جمع شمل", - "ro_": "رومانيا", - "rs_": "صربيا", - "ru_": "روسيا", - "rw_": "رواندا", - "sa_": "المملكة العربية السعودية", - "sb_": "جزر سليمان", - "sc_": "سيشيل", - "sd_": "السودان", - "se_": "السويد", - "sg_": "سنغافورة", - "sh_": "سانت هيلانة وأسنسيون وتريستان دا كونها", - "si_": "سلوفينيا", - "sj_": "سفالبارد وجان ماين", - "sk_": "سلوفاكيا", - "sl_": "سيرا ليون", - "sm_": "سان مارينو", - "sn_": "السنغال", - "so_": "الصومال", - "sr_": "سورينام", - "ss_": "جنوب السودان", - "st_": "ساو تومي وبرينسيبي", - "sv_": "السلفادور", - "sy_": "الجمهورية العربية السورية", - "sz_": "سوازيلاند", - "ta_": "تريستان دا كونها", - "tc_": "جزر تركس وكايكوس", - "td_": "تشاد", - "tg_": "توجو", - "th_": "تايلاند", - "tj_": "طاجيكستان", - "tk_": "توكيلاو", - "tl_": "تيمور ليشتي", - "tm_": "تركمانستان", - "tn_": "تونس", - "to_": "تونغا", - "tr_": "ديك رومى", - "tt_": "ترينداد وتوباغو", - "tv_": "توفالو", - "tw_": "تايوان", - "tz_": "تنزانيا ، جمهورية تنزانيا المتحدة", - "ua_": "أوكرانيا", - "ug_": "أوغندا", - "us_": "الولايات المتحدة الأمريكية", - "uy_": "أوروغواي", - "uz_": "أوزبكستان", - "va_": "الكرسي الرسولي (دولة الفاتيكان)", - "vc_": "سانت فنسنت وجزر غرينادين", - "ve_": "فنزويلا", - "vg_": "جزر العذراء البريطانية", - "vi_": "جزر فيرجن الأمريكية", - "vn_": "فيتنام", - "vu_": "فانواتو", - "wf_": "واليس وفوتونا", - "ws_": "ساموا", - "ye_": "اليمن", - "yt_": "مايوت", - "za_": "جنوب أفريقيا", - "zm_": "زامبيا", - "zw_": "زيمبابوي" -} \ No newline at end of file diff --git a/lib/l10n/de.arb b/lib/l10n/de.arb deleted file mode 100644 index 4d13f843..00000000 --- a/lib/l10n/de.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "de", - "invalidPhoneNumber": "Ungültige Telefonnummer", - "invalidCountry": "Ungültiges Land", - "invalidMobilePhoneNumber": "Ungültige Handynummer", - "invalidFixedLinePhoneNumber": "Ungültige Festnetznummer", - "requiredPhoneNumber": "Telefonnummer erforderlich", - "noResultMessage": "Kein Ergebnis", - "ac_": "Himmelfahrtsinsel", - "ad_": "Andorra", - "ae_": "Vereinigte Arabische Emirate", - "af_": "Afghanistan", - "ag_": "Antigua und Barbuda", - "ai_": "Anguilla", - "al_": "Albanien", - "am_": "Armenien", - "an_": "Niederländische Antillen", - "ao_": "Angola", - "aq_": "Antarktis", - "ar_": "Argentinien", - "as_": "Amerikanischen Samoa-Inseln", - "at_": "Österreich", - "au_": "Australien", - "aw_": "Aruba", - "ax_": "Aland Islands", - "az_": "Aserbaidschan", - "ba_": "Bosnien und Herzegowina", - "bb_": "Barbados", - "bd_": "Bangladesch", - "be_": "Belgien", - "bf_": "Burkina Faso", - "bg_": "Bulgarien", - "bh_": "Bahrain", - "bi_": "Burundi", - "bj_": "Benin", - "bl_": "Heiliger Barthelemy", - "bm_": "Bermuda", - "bn_": "Brunei Darussalam", - "bo_": "Bolivien, Plurinationaler Staat", - "bq_": "Bonaire", - "br_": "Brasilien", - "bs_": "Bahamas", - "bt_": "Bhutan", - "bw_": "Botswana", - "by_": "Weißrussland", - "bz_": "Belize", - "ca_": "Kanada", - "cc_": "Kokosinseln (Keelinginseln)", - "cd_": "Kongo, Demokratische Republik Kongo", - "cf_": "Zentralafrikanische Republik", - "cg_": "Kongo", - "ch_": "Schweiz", - "ci_": "Elfenbeinküste", - "ck_": "Cookinseln", - "cl_": "Chile", - "cm_": "Kamerun", - "cn_": "China", - "co_": "Kolumbien", - "cr_": "Costa Rica", - "cu_": "Kuba", - "cv_": "Kap Verde", - "cx_": "Weihnachtsinsel", - "cy_": "Zypern", - "cz_": "Tschechien", - "de_": "Deutschland", - "dj_": "Dschibuti", - "dk_": "Dänemark", - "dm_": "Dominica", - "do_": "Dominikanische Republik", - "dz_": "Algerien", - "ec_": "Ecuador", - "ee_": "Estland", - "eg_": "Ägypten", - "er_": "Eritrea", - "es_": "Spanien", - "et_": "Äthiopien", - "fi_": "Finnland", - "fj_": "Fidschi", - "fk_": "Falklandinseln (Malvinas)", - "fm_": "Mikronesien, Föderierte Staaten von Mikronesien", - "fo_": "Färöer Inseln", - "fr_": "Frankreich", - "ga_": "Gabun", - "gb_": "Vereinigtes Königreich", - "gd_": "Grenada", - "ge_": "Georgia", - "gf_": "Französisch-Guayana", - "gg_": "Guernsey", - "gh_": "Ghana", - "gi_": "Gibraltar", - "gl_": "Grönland", - "gm_": "Gambia", - "gn_": "Guinea", - "gp_": "Guadeloupe", - "gq_": "Äquatorialguinea", - "gr_": "Griechenland", - "gs_": "Süd-Georgien und die südlichen Sandwich-Inseln", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Guinea-Bissau", - "gy_": "Guyana", - "hk_": "Hongkong", - "hn_": "Honduras", - "hr_": "Kroatien", - "ht_": "Haiti", - "hu_": "Ungarn", - "id_": "Indonesien", - "ie_": "Irland", - "il_": "Israel", - "im_": "Isle of Man", - "in_": "Indien", - "io_": "Britisches Territorium des Indischen Ozeans", - "iq_": "Irak", - "ir_": "Iran, Islamische Republik Persischer Golf", - "is_": "Island", - "it_": "Italien", - "je_": "Jersey", - "jm_": "Jamaika", - "jo_": "Jordanien", - "jp_": "Japan", - "ke_": "Kenia", - "kg_": "Kirgisistan", - "kh_": "Kambodscha", - "ki_": "Kiribati", - "km_": "Komoren", - "kn_": "St. Kitts und Nevis", - "kp_": "Korea, Demokratische Volksrepublik Korea", - "kr_": "Korea, Republik Südkorea", - "kw_": "Kuwait", - "ky_": "Cayman Inseln", - "kz_": "Kasachstan", - "la_": "Laos", - "lb_": "Libanon", - "lc_": "St. Lucia", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Liberia", - "ls_": "Lesotho", - "lt_": "Litauen", - "lu_": "Luxemburg", - "lv_": "Lettland", - "ly_": "Libyscher arabischer Jamahiriya", - "ma_": "Marokko", - "mc_": "Monaco", - "md_": "Moldawien", - "me_": "Montenegro", - "mf_": "Sankt Martin", - "mg_": "Madagaskar", - "mh_": "Marshallinseln", - "mk_": "Mazedonien", - "ml_": "Mali", - "mm_": "Myanmar", - "mn_": "Mongolei", - "mo_": "Macao", - "mp_": "Nördliche Marianneninseln", - "mq_": "Martinique", - "mr_": "Mauretanien", - "ms_": "Montserrat", - "mt_": "Malta", - "mu_": "Mauritius", - "mv_": "Malediven", - "mw_": "Malawi", - "mx_": "Mexiko", - "my_": "Malaysia", - "mz_": "Mosambik", - "na_": "Namibia", - "nc_": "Neu-Kaledonien", - "ne_": "Niger", - "nf_": "Norfolkinsel", - "ng_": "Nigeria", - "ni_": "Nicaragua", - "nl_": "Niederlande", - "no_": "Norwegen", - "np_": "Nepal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "Neuseeland", - "om_": "Oman", - "pa_": "Panama", - "pe_": "Peru", - "pf_": "Französisch Polynesien", - "pg_": "Papua Neu-Guinea", - "ph_": "Philippinen", - "pk_": "Pakistan", - "pl_": "Polen", - "pm_": "Saint Pierre und Miquelon", - "pn_": "Pitcairn", - "pr_": "Puerto Rico", - "ps_": "Besetzte palästinensische Gebiete", - "pt_": "Portugal", - "pw_": "Palau", - "py_": "Paraguay", - "qa_": "Katar", - "re_": "Wiedervereinigung", - "ro_": "Rumänien", - "rs_": "Serbien", - "ru_": "Russland", - "rw_": "Ruanda", - "sa_": "Saudi-Arabien", - "sb_": "Salomon-Inseln", - "sc_": "Seychellen", - "sd_": "Sudan", - "se_": "Schweden", - "sg_": "Singapur", - "sh_": "St. Helena, Himmelfahrt und Tristan Da Cunha", - "si_": "Slowenien", - "sj_": "Spitzbergen und Jan Mayen", - "sk_": "Slowakei", - "sl_": "Sierra Leone", - "sm_": "San Marino", - "sn_": "Senegal", - "so_": "Somalia", - "sr_": "Suriname", - "ss_": "Südsudan", - "st_": "Sao Tome und Principe", - "sv_": "El Salvador", - "sy_": "Syrische Arabische Republik", - "sz_": "Swasiland", - "ta_": "Tristan da Cunha", - "tc_": "Turks- und Caicosinseln", - "td_": "Tschad", - "tg_": "Gehen", - "th_": "Thailand", - "tj_": "Tadschikistan", - "tk_": "Tokelau", - "tl_": "Timor-Leste", - "tm_": "Turkmenistan", - "tn_": "Tunesien", - "to_": "Tonga", - "tr_": "Truthahn", - "tt_": "Trinidad und Tobago", - "tv_": "Tuvalu", - "tw_": "Taiwan", - "tz_": "Tansania, Vereinigte Republik Tansania", - "ua_": "Ukraine", - "ug_": "Uganda", - "us_": "Vereinigte Staaten", - "uy_": "Uruguay", - "uz_": "Usbekistan", - "va_": "Heiliger Stuhl (Staat der Vatikanstadt)", - "vc_": "St. Vincent und die Grenadinen", - "ve_": "Venezuela", - "vg_": "Virgin Inseln, Britisch", - "vi_": "Jungferninseln, USA", - "vn_": "Vietnam", - "vu_": "Vanuatu", - "wf_": "Wallis und Futuna", - "ws_": "Samoa", - "ye_": "Jemen", - "yt_": "Mayotte", - "za_": "Südafrika", - "zm_": "Sambia", - "zw_": "Zimbabwe" -} \ No newline at end of file diff --git a/lib/l10n/el.arb b/lib/l10n/el.arb deleted file mode 100644 index a4826dfe..00000000 --- a/lib/l10n/el.arb +++ /dev/null @@ -1,252 +0,0 @@ -{ - "@@locale": "el", - "invalidPhoneNumber": "Μη έγκυρος αριθμός τηλεφώνου", - "invalidCountry": "Μη έγκυρη χώρα", - "invalidMobilePhoneNumber": "Μη έγκυρος αριθμός κινητού τηλεφώνου", - "invalidFixedLinePhoneNumber": "Μη έγκυρος αριθμός σταθερού τηλεφώνου", - "requiredPhoneNumber": "Απαιτούμενος αριθμός τηλεφώνου", - "noResultMessage": "Κανένα αποτέλεσμα", - "ac_": "Νησί της Ανάληψης", - "ad_": "Ανδόρα", - "ae_": "Ηνωμένα Αραβικά Εμιράτα", - "af_": "Αφγανιστάν", - "ag_": "Αντίγκουα και Μπαρμπούντα", - "ai_": "Ανγκουίλα", - "al_": "Αλβανία", - "am_": "Αρμενία", - "an_": "Ολλανδικές Αντίλλες", - "ao_": "Αγκόλα", - "aq_": "Ανταρκτική", - "ar_": "Αργεντίνη", - "as_": "Αμερικάνικη Σαμόα", - "at_": "Αυστρία", - "au_": "Αυστραλία", - "aw_": "Αρούμπα", - "ax_": "Νησιά Άλαντ", - "az_": "Αζερμπαϊτζάν", - "ba_": "Βοσνία και Ερζεγοβίνη", - "bb_": "Μπαρμπάντος", - "bd_": "Μπαγκλαντές", - "be_": "Βέλγιο", - "bf_": "Μπουρκίνα Φάσο", - "bg_": "Βουλγαρία", - "bh_": "Μπαχρέιν", - "bi_": "Μπουρούντι", - "bj_": "Μπενίν", - "bl_": "Άγιος Βαρθολομαίος", - "bm_": "Βερμούδα", - "bn_": "Μπρουνάι Νταρουσαλάμ", - "bo_": "Βολιβία, πολυεθνικό κράτος της", - "bq_": "Μποναίρ", - "br_": "Βραζιλία", - "bs_": "Μπαχάμες", - "bt_": "Μπουτάν", - "bw_": "Μποτσουάνα", - "by_": "Λευκορωσία", - "bz_": "Μπελίζ", - "ca_": "Καναδάς", - "cc_": "Νησιά Cocos (Keeling).", - "cd_": "Κονγκό, Λαϊκή Δημοκρατία του Κονγκό", - "cf_": "Δημοκρατία Κεντρικής Αφρικής", - "cg_": "Κογκό", - "ch_": "Ελβετία", - "ci_": "Ακτή Ελεφαντοστού", - "ck_": "Νήσοι Κουκ", - "cl_": "Χιλή", - "cm_": "Καμερούν", - "cn_": "Κίνα", - "co_": "Κολομβία", - "cr_": "Κόστα Ρίκα", - "cu_": "Κούβα", - "cv_": "Πράσινο Ακρωτήριο", - "cx_": "Νησί των Χριστουγέννων", - "cy_": "Κύπρος", - "cz_": "Τσεχική Δημοκρατία", - "de_": "Γερμανία", - "dj_": "Τζιμπουτί", - "dk_": "Δανία", - "dm_": "Δομίνικα", - "do_": "Δομινικανή Δημοκρατία", - "dz_": "Αλγερία", - "ec_": "Εκουαδόρ", - "ee_": "Εσθονία", - "eg_": "Αίγυπτος", - "er_": "Ερυθραία", - "es_": "Ισπανία", - "et_": "Αιθιοπία", - "fi_": "Φινλανδία", - "fj_": "Φίτζι", - "fk_": "Νησιά Φώκλαντ (Μαλβίνες)", - "fm_": "Μικρονησία, Ομόσπονδα Κράτη της Μικρονησίας", - "fo_": "Νήσοι Φερόες", - "fr_": "Γαλλία", - "ga_": "Γκαμπόν", - "gb_": "Ηνωμένο Βασίλειο", - "gd_": "Γρενάδα", - "ge_": "Γεωργία", - "gf_": "Γαλλική Γουιάνα", - "gg_": "Γκέρνσεϊ", - "gh_": "Γκάνα", - "gi_": "Γιβραλτάρ", - "gl_": "Γροιλανδία", - "gm_": "Γκάμπια", - "gn_": "Γκινέα", - "gp_": "Γουαδελούπη", - "gq_": "Ισημερινή Γουινέα", - "gr_": "Ελλάδα", - "gs_": "Νότια Γεωργία και τα Νότια Σάντουιτς Νησιά", - "gt_": "Γουατεμάλα", - "gu_": "Γκουάμ", - "gw_": "Γουινέα-Μπισάου", - "gy_": "Γουιάνα", - "hk_": "Χονγκ Κονγκ", - "hn_": "Ονδούρα", - "hr_": "Κροατία", - "ht_": "Αΐτη", - "hu_": "Ουγγαρία", - "id_": "Ινδονησία", - "ie_": "Ιρλανδία", - "il_": "Ισραήλ", - "im_": "Isle of Man", - "in_": "Ινδία", - "io_": "Βρετανική επικράτεια Ινδικού Ωκεανού", - "iq_": "Ιράκ", - "ir_": "Ιράν, Ισλαμική Δημοκρατία του Περσικού Κόλπου", - "is_": "Ισλανδία", - "it_": "Ιταλία", - "je_": "Φανέλα", - "jm_": "Ιαμαϊκή", - "jo_": "Ιορδανία", - "jp_": "Ιαπωνία", - "ke_": "Κενύα", - "kg_": "Κιργιζιστάν", - "kh_": "Καμπότζη", - "ki_": "Κιριμπάτι", - "km_": "Κομόρες", - "kn_": "Saint Kitts and Nevis", - "kp_": "Κορέα, Λαϊκή Δημοκρατία της Κορέας", - "kr_": "Κορέα, Δημοκρατία της Νότιας Κορέας", - "kw_": "Κουβέιτ", - "ky_": "Νησιά Κέιμαν", - "kz_": "Καζακστάν", - "la_": "Λάος", - "lb_": "Λίβανος", - "lc_": "Αγία Λουκία", - "li_": "Λιχτενστάιν", - "lk_": "Σρι Λάνκα", - "lr_": "Λιβερία", - "ls_": "Λεσότο", - "lt_": "Λιθουανία", - "lu_": "Λουξεμβούργο", - "lv_": "Λετονία", - "ly_": "Λιβυκή Αραβική Τζαμαχίρια", - "ma_": "Μαρόκο", - "mc_": "Μονακό", - "md_": "Μολδαβία", - "me_": "Μαυροβούνιο", - "mf_": "Άγιος Μαρτίνος", - "mg_": "Μαδαγασκάρη", - "mh_": "Νήσοι Μάρσαλ", - "mk_": "Μακεδόνια", - "ml_": "Μάλι", - "mm_": "Μιανμάρ", - "mn_": "Μογγολία", - "mo_": "Μακάο", - "mp_": "Βορεια Νησια Μαριανα", - "mq_": "Μαρτινίκα", - "mr_": "Μαυριτανία", - "ms_": "Μονσεράτ", - "mt_": "Μάλτα", - "mu_": "Μαυρίκιος", - "mv_": "Μαλδίβες", - "mw_": "Μαλάουι", - "mx_": "Μεξικό", - "my_": "Μαλαισία", - "mz_": "Μοζαμβίκη", - "na_": "Ναμίμπια", - "nc_": "Νέα Καληδονία", - "ne_": "Νίγηρας", - "nf_": "Νησί Νόρφολκ", - "ng_": "Νιγηρία", - "ni_": "Νικαράγουα", - "nl_": "Ολλανδία", - "no_": "Νορβηγία", - "np_": "Νεπάλ", - "nr_": "Ναούρου", - "nu_": "Niue", - "nz_": "Νέα Ζηλανδία", - "om_": "Ομάν", - "pa_": "Παναμάς", - "pe_": "Περού", - "pf_": "Γαλλική Πολυνησία", - "pg_": "Παπούα Νέα Γουινέα", - "ph_": "Φιλιππίνες", - "pk_": "Πακιστάν", - "pl_": "Πολωνία", - "pm_": "Saint Pierre and Miquelon", - "pn_": "Πίτκερν", - "pr_": "Πουέρτο Ρίκο", - "ps_": "Παλαιστινιακό έδαφος, κατεχόμενο", - "pt_": "Πορτογαλία", - "pw_": "Παλάου", - "py_": "Παραγουάη", - "qa_": "Κατάρ", - "re_": "Επανένωση", - "ro_": "Ρουμανία", - "rs_": "Σερβία", - "ru_": "Ρωσία", - "rw_": "Ρουάντα", - "sa_": "Σαουδική Αραβία", - "sb_": "Νησιά του Σολομώντα", - "sc_": "Σεϋχέλλες", - "sd_": "Σουδάν", - "se_": "Σουηδία", - "sg_": "Σιγκαπούρη", - "si_": "Σλοβενία", - "sk_": "Σλοβακία", - "sl_": "Σιέρρα Λεόνε", - "sm_": "Σαν Μαρίνο", - "sn_": "Σενεγάλη", - "so_": "Σομαλία", - "sr_": "Σουρινάμ", - "ss_": "Νότιο Σουδάν", - "st_": "Σάο Τομέ και Πρίνσιπε", - "sv_": "Ελ Σαλβαδόρ", - "sy_": "Αραβική Δημοκρατία της Συρίας", - "sz_": "Σουαζιλάνδη", - "ta_": "Τριστάν ντα Κούνια", - "tc_": "Νήσοι Τερκς και Κάικος", - "td_": "Τσαντ", - "tg_": "Τογκό", - "th_": "Ταϊλάνδη", - "tj_": "Τατζικιστάν", - "tk_": "Τοκελάου", - "tl_": "Ανατολικό Τιμόρ", - "tm_": "Τουρκμενιστάν", - "tn_": "Τυνησία", - "to_": "Τόνγκα", - "tr_": "Τουρκία", - "tt_": "Τρινιντάντ και Τομπάγκο", - "tv_": "Τουβαλού", - "tw_": "Ταϊβάν", - "tz_": "Τανζανία, Ενωμένη Δημοκρατία της Τανζανίας", - "ua_": "Ουκρανία", - "ug_": "Ουγκάντα", - "us_": "Ηνωμένες Πολιτείες", - "uy_": "Ουρουγουάη", - "uz_": "Ουζμπεκιστάν", - "va_": "Αγία Έδρα (Κράτος της Πόλης του Βατικανού)", - "vc_": "Άγιος Βικέντιος και Γρεναδίνες", - "ve_": "Βενεζουέλα", - "vg_": "Παρθένοι Νήσοι, Βρετανοί", - "vi_": "Παρθένοι Νήσοι, Η.Π.Α.", - "vn_": "Βιετνάμ", - "vu_": "Βανουάτου", - "wf_": "Wallis και Futuna", - "ws_": "Σαμόα", - "ye_": "Γέμενη", - "yt_": "Μαγιότ", - "za_": "Νότια Αφρική", - "zm_": "Ζάμπια", - "zw_": "Ζιμπάμπουe" -} \ No newline at end of file diff --git a/lib/l10n/en.arb b/lib/l10n/en.arb deleted file mode 100644 index 1de71e5d..00000000 --- a/lib/l10n/en.arb +++ /dev/null @@ -1,252 +0,0 @@ -{ - "@@locale": "en", - "invalidPhoneNumber": "Invalid phone number", - "invalidCountry": "Invalid country", - "invalidMobilePhoneNumber": "Invalid mobile phone number", - "invalidFixedLinePhoneNumber": "Invalid fixed line phone number", - "requiredPhoneNumber": "Required phone number", - "noResultMessage": "No result", - "ac_": "Ascension Island", - "ad_": "Andorra", - "ae_": "United Arab Emirates", - "af_": "Afghanistan", - "ag_": "Antigua and Barbuda", - "ai_": "Anguilla", - "al_": "Albania", - "am_": "Armenia", - "an_": "Netherlands Antilles", - "ao_": "Angola", - "aq_": "Antarctica", - "ar_": "Argentina", - "as_": "American Samoa", - "at_": "Austria", - "au_": "Australia", - "aw_": "Aruba", - "ax_": "Aland Islands", - "az_": "Azerbaijan", - "ba_": "Bosnia and Herzegovina", - "bb_": "Barbados", - "bd_": "Bangladesh", - "be_": "Belgium", - "bf_": "Burkina Faso", - "bg_": "Bulgaria", - "bh_": "Bahrain", - "bi_": "Burundi", - "bj_": "Benin", - "bl_": "Saint Barthelemy", - "bm_": "Bermuda", - "bn_": "Brunei Darussalam", - "bo_": "Bolivia, Plurinational State of", - "bq_": "Bonaire", - "br_": "Brazil", - "bs_": "Bahamas", - "bt_": "Bhutan", - "bw_": "Botswana", - "by_": "Belarus", - "bz_": "Belize", - "ca_": "Canada", - "cc_": "Cocos (Keeling) Islands", - "cd_": "Congo, The Democratic Republic of the Congo", - "cf_": "Central African Republic", - "cg_": "Congo", - "ch_": "Switzerland", - "ci_": "Cote d'Ivoire", - "ck_": "Cook Islands", - "cl_": "Chile", - "cm_": "Cameroon", - "cn_": "China", - "co_": "Colombia", - "cr_": "Costa Rica", - "cu_": "Cuba", - "cv_": "Cape Verde", - "cx_": "Christmas Island", - "cy_": "Cyprus", - "cz_": "Czech Republic", - "de_": "Germany", - "dj_": "Djibouti", - "dk_": "Denmark", - "dm_": "Dominica", - "do_": "Dominican Republic", - "dz_": "Algeria", - "ec_": "Ecuador", - "ee_": "Estonia", - "eg_": "Egypt", - "er_": "Eritrea", - "es_": "Spain", - "et_": "Ethiopia", - "fi_": "Finland", - "fj_": "Fiji", - "fk_": "Falkland Islands (Malvinas)", - "fm_": "Micronesia, Federated States of Micronesia", - "fo_": "Faroe Islands", - "fr_": "France", - "ga_": "Gabon", - "gb_": "United Kingdom", - "gd_": "Grenada", - "ge_": "Georgia", - "gf_": "French Guiana", - "gg_": "Guernsey", - "gh_": "Ghana", - "gi_": "Gibraltar", - "gl_": "Greenland", - "gm_": "Gambia", - "gn_": "Guinea", - "gp_": "Guadeloupe", - "gq_": "Equatorial Guinea", - "gr_": "Greece", - "gs_": "South Georgia and the South Sandwich Islands", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Guinea-Bissau", - "gy_": "Guyana", - "hk_": "Hong Kong", - "hn_": "Honduras", - "hr_": "Croatia", - "ht_": "Haiti", - "hu_": "Hungary", - "id_": "Indonesia", - "ie_": "Ireland", - "il_": "Israel", - "im_": "Isle of Man", - "in_": "India", - "io_": "British Indian Ocean Territory", - "iq_": "Iraq", - "ir_": "Iran, Islamic Republic of", - "is_": "Iceland", - "it_": "Italy", - "je_": "Jersey", - "jm_": "Jamaica", - "jo_": "Jordan", - "jp_": "Japan", - "ke_": "Kenya", - "kg_": "Kyrgyzstan", - "kh_": "Cambodia", - "ki_": "Kiribati", - "km_": "Comoros", - "kn_": "Saint Kitts and Nevis", - "kp_": "Korea, Democratic People's Republic of Korea", - "kr_": "Korea, Republic of South Korea", - "kw_": "Kuwait", - "ky_": "Cayman Islands", - "kz_": "Kazakhstan", - "la_": "Laos", - "lb_": "Lebanon", - "lc_": "Saint Lucia", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Liberia", - "ls_": "Lesotho", - "lt_": "Lithuania", - "lu_": "Luxembourg", - "lv_": "Latvia", - "ly_": "Libya", - "ma_": "Morocco", - "mc_": "Monaco", - "md_": "Moldova", - "me_": "Montenegro", - "mf_": "Saint Martin", - "mg_": "Madagascar", - "mh_": "Marshall Islands", - "mk_": "Macedonia", - "ml_": "Mali", - "mm_": "Myanmar", - "mn_": "Mongolia", - "mo_": "Macao", - "mp_": "Northern Mariana Islands", - "mq_": "Martinique", - "mr_": "Mauritania", - "ms_": "Montserrat", - "mt_": "Malta", - "mu_": "Mauritius", - "mv_": "Maldives", - "mw_": "Malawi", - "mx_": "Mexico", - "my_": "Malaysia", - "mz_": "Mozambique", - "na_": "Namibia", - "nc_": "New Caledonia", - "ne_": "Niger", - "nf_": "Norfolk Island", - "ng_": "Nigeria", - "ni_": "Nicaragua", - "nl_": "Netherlands", - "no_": "Norway", - "np_": "Nepal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "New Zealand", - "om_": "Oman", - "pa_": "Panama", - "pe_": "Peru", - "pf_": "French Polynesia", - "pg_": "Papua New Guinea", - "ph_": "Philippines", - "pk_": "Pakistan", - "pl_": "Poland", - "pm_": "Saint Pierre and Miquelon", - "pn_": "Pitcairn", - "pr_": "Puerto Rico", - "ps_": "Palestinian Territory, Occupied", - "pt_": "Portugal", - "pw_": "Palau", - "py_": "Paraguay", - "qa_": "Qatar", - "re_": "Reunion", - "ro_": "Romania", - "rs_": "Serbia", - "ru_": "Russia", - "rw_": "Rwanda", - "sa_": "Saudi Arabia", - "sb_": "Solomon Islands", - "sc_": "Seychelles", - "sd_": "Sudan", - "se_": "Sweden", - "sg_": "Singapore", - "si_": "Slovenia", - "sk_": "Slovakia", - "sl_": "Sierra Leone", - "sm_": "San Marino", - "sn_": "Senegal", - "so_": "Somalia", - "sr_": "Suriname", - "ss_": "South Sudan", - "st_": "Sao Tome and Principe", - "sv_": "El Salvador", - "sy_": "Syrian Arab Republic", - "sz_": "Swaziland", - "ta_": "Tristan da Cunha", - "tc_": "Turks and Caicos Islands", - "td_": "Chad", - "tg_": "Togo", - "th_": "Thailand", - "tj_": "Tajikistan", - "tk_": "Tokelau", - "tl_": "Timor-Leste", - "tm_": "Turkmenistan", - "tn_": "Tunisia", - "to_": "Tonga", - "tr_": "Türkiye", - "tt_": "Trinidad and Tobago", - "tv_": "Tuvalu", - "tw_": "Taiwan", - "tz_": "Tanzania, United Republic of Tanzania", - "ua_": "Ukraine", - "ug_": "Uganda", - "us_": "United States", - "uy_": "Uruguay", - "uz_": "Uzbekistan", - "va_": "Holy See (Vatican City State)", - "vc_": "Saint Vincent and the Grenadines", - "ve_": "Venezuela", - "vg_": "Virgin Islands, British", - "vi_": "Virgin Islands, U.S.", - "vn_": "Vietnam", - "vu_": "Vanuatu", - "wf_": "Wallis and Futuna", - "ws_": "Samoa", - "ye_": "Yemen", - "yt_": "Mayotte", - "za_": "South Africa", - "zm_": "Zambia", - "zw_": "Zimbabwe" -} \ No newline at end of file diff --git a/lib/l10n/es.arb b/lib/l10n/es.arb deleted file mode 100644 index 79484c41..00000000 --- a/lib/l10n/es.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "es", - "invalidPhoneNumber": "Numero de telefono invalido", - "invalidCountry": "País invalido", - "invalidMobilePhoneNumber": "Número de teléfono celular invalido", - "invalidFixedLinePhoneNumber": "Número de teléfono fijo invalido", - "requiredPhoneNumber": "Número de teléfono obligatorio", - "noResultMessage": "Sin resultados", - "ac_": "Isla Ascencion", - "ad_": "Andorra", - "ae_": "Emiratos Árabes Unidos", - "af_": "Afganistán", - "ag_": "Antigua y Barbuda", - "ai_": "Anguila", - "al_": "Albania", - "am_": "Armenia", - "an_": "Antillas Holandesas", - "ao_": "Angola", - "aq_": "Antártida", - "ar_": "Argentina", - "as_": "Samoa Americana", - "at_": "Austria", - "au_": "Australia", - "aw_": "Aruba", - "ax_": "Islas Aland", - "az_": "Azerbaiyán", - "ba_": "Bosnia y Herzegovina", - "bb_": "Barbados", - "bd_": "Bangladesh", - "be_": "Bélgica", - "bf_": "Burkina Faso", - "bg_": "Bulgaria", - "bh_": "Bahréin", - "bi_": "Burundi", - "bj_": "Benin", - "bl_": "San Bartolomé", - "bm_": "islas Bermudas", - "bn_": "Brunei Darussalam", - "bo_": "Bolivia, Estado Plurinacional de", - "bq_": "Bonaire", - "br_": "Brasil", - "bs_": "Bahamas", - "bt_": "Bután", - "bw_": "Botswana", - "by_": "Bielorrusia", - "bz_": "Belice", - "ca_": "Canadá", - "cc_": "Islas Cocos (Keeling)", - "cd_": "Congo, República Democrática del Congo", - "cf_": "República Centroafricana", - "cg_": "Congo", - "ch_": "Suiza", - "ci_": "Costa de Marfil", - "ck_": "Islas Cook", - "cl_": "Chile", - "cm_": "Camerún", - "cn_": "porcelana", - "co_": "Colombia", - "cr_": "Costa Rica", - "cu_": "Cuba", - "cv_": "Cabo Verde", - "cx_": "Isla de Navidad", - "cy_": "Chipre", - "cz_": "República Checa", - "de_": "Alemania", - "dj_": "Djibouti", - "dk_": "Dinamarca", - "dm_": "Dominica", - "do_": "República Dominicana", - "dz_": "Argelia", - "ec_": "Ecuador", - "ee_": "Estonia", - "eg_": "Egipto", - "er_": "Eritrea", - "es_": "España", - "et_": "Etiopía", - "fi_": "Finlandia", - "fj_": "Fiyi", - "fk_": "Islas Falkland (Malvinas)", - "fm_": "Micronesia, Estados Federados de Micronesia", - "fo_": "Islas Faroe", - "fr_": "Francia", - "ga_": "Gabón", - "gb_": "Reino Unido", - "gd_": "Granada", - "ge_": "Georgia", - "gf_": "Guayana Francesa", - "gg_": "Guernsey", - "gh_": "Ghana", - "gi_": "Gibraltar", - "gl_": "Groenlandia", - "gm_": "Gambia", - "gn_": "Guinea", - "gp_": "Guadalupe", - "gq_": "Guinea Ecuatorial", - "gr_": "Grecia", - "gs_": "Georgia del sur y las islas Sandwich del sur", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Guinea-Bissau", - "gy_": "Guayana", - "hk_": "Hong Kong", - "hn_": "Honduras", - "hr_": "Croacia", - "ht_": "Haití", - "hu_": "Hungría", - "id_": "Indonesia", - "ie_": "Irlanda", - "il_": "Israel", - "im_": "Isla del hombre", - "in_": "India", - "io_": "Territorio Británico del Océano Índico", - "iq_": "Irak", - "ir_": "Irán, República Islámica del Golfo Pérsico", - "is_": "Islandia", - "it_": "Italia", - "je_": "Jersey", - "jm_": "Jamaica", - "jo_": "Jordán", - "jp_": "Japón", - "ke_": "Kenia", - "kg_": "Kirguistán", - "kh_": "Camboya", - "ki_": "Kiribati", - "km_": "Comoras", - "kn_": "Saint Kitts y Nevis", - "kp_": "Corea, República Popular Democrática de Corea", - "kr_": "Corea, República de Corea del Sur", - "kw_": "Kuwait", - "ky_": "Islas Caimán", - "kz_": "Kazajstán", - "la_": "Laos", - "lb_": "Líbano", - "lc_": "Santa Lucía", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Liberia", - "ls_": "Lesoto", - "lt_": "Lituania", - "lu_": "Luxemburgo", - "lv_": "Letonia", - "ly_": "Jamahiriya Arabe Libia", - "ma_": "Marruecos", - "mc_": "Mónaco", - "md_": "Moldavia", - "me_": "Montenegro", - "mf_": "San Martín", - "mg_": "Madagascar", - "mh_": "Islas Marshall", - "mk_": "macedonia", - "ml_": "Mali", - "mm_": "Myanmar", - "mn_": "Mongolia", - "mo_": "Macao", - "mp_": "Islas Marianas del Norte", - "mq_": "Martinica", - "mr_": "Mauritania", - "ms_": "Montserrat", - "mt_": "Malta", - "mu_": "Mauricio", - "mv_": "Maldivas", - "mw_": "Malawi", - "mx_": "México", - "my_": "Malasia", - "mz_": "Mozambique", - "na_": "Namibia", - "nc_": "Nueva Caledonia", - "ne_": "Níger", - "nf_": "Isla Norfolk", - "ng_": "Nigeria", - "ni_": "Nicaragua", - "nl_": "Países Bajos", - "no_": "Noruega", - "np_": "Nepal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "Nueva Zelanda", - "om_": "Omán", - "pa_": "Panamá", - "pe_": "Perú", - "pf_": "Polinesia francés", - "pg_": "Papúa Nueva Guinea", - "ph_": "Filipinas", - "pk_": "Pakistán", - "pl_": "Polonia", - "pm_": "San Pedro y Miquelón", - "pn_": "Pitcairn", - "pr_": "Puerto Rico", - "ps_": "Territorio Palestino, Ocupado", - "pt_": "Portugal", - "pw_": "Palau", - "py_": "Paraguay", - "qa_": "Katar", - "re_": "Reunión", - "ro_": "Rumania", - "rs_": "Serbia", - "ru_": "Rusia", - "rw_": "Ruanda", - "sa_": "Arabia Saudita", - "sb_": "Islas Salomón", - "sc_": "Seychelles", - "sd_": "Sudán", - "se_": "Suecia", - "sg_": "Singapur", - "sh_": "Santa Elena, Ascensión y Tristán de Acuña", - "si_": "Eslovenia", - "sj_": "Svalbard y Jan Mayen", - "sk_": "Eslovaquia", - "sl_": "Sierra Leona", - "sm_": "San Marino", - "sn_": "Senegal", - "so_": "Somalia", - "sr_": "Surinam", - "ss_": "Sudán del Sur", - "st_": "Santo Tomé y Príncipe", - "sv_": "El Salvador", - "sy_": "República Árabe Siria", - "sz_": "Swazilandia", - "ta_": "Tristan da Cunha", - "tc_": "Islas Turcas y Caicos", - "td_": "Chad", - "tg_": "Para llevar", - "th_": "Tailandia", - "tj_": "Tayikistán", - "tk_": "Tokelau", - "tl_": "Timor-Leste", - "tm_": "Turkmenistán", - "tn_": "Túnez", - "to_": "Tonga", - "tr_": "pavo", - "tt_": "Trinidad y Tobago", - "tv_": "Tuvalu", - "tw_": "Taiwán", - "tz_": "Tanzania, República Unida de Tanzania", - "ua_": "Ucrania", - "ug_": "Uganda", - "us_": "Estados Unidos", - "uy_": "Uruguay", - "uz_": "Uzbekistán", - "va_": "Santa Sede (Estado de la Ciudad del Vaticano)", - "vc_": "San Vicente y las Granadinas", - "ve_": "Venezuela", - "vg_": "Islas Vírgenes Británicas", - "vi_": "Islas Vírgenes, EE. UU.", - "vn_": "Vietnam", - "vu_": "Vanuatu", - "wf_": "Wallis y Futuna", - "ws_": "Samoa", - "ye_": "Yemen", - "yt_": "Mayotte", - "za_": "Sudáfrica", - "zm_": "Zambia", - "zw_": "Zimbabue" -} \ No newline at end of file diff --git a/lib/l10n/fa.arb b/lib/l10n/fa.arb deleted file mode 100644 index db4bf2e3..00000000 --- a/lib/l10n/fa.arb +++ /dev/null @@ -1,252 +0,0 @@ -{ - "@@locale": "fa", - "invalidPhoneNumber": "شماره تلفن نامعتبر است", - "invalidCountry": "کشور نامعتبر است", - "invalidMobilePhoneNumber": "شماره تلفن همراه نامعتبر است", - "invalidFixedLinePhoneNumber": "شماره تلفن ثابت نامعتبر است", - "requiredPhoneNumber": "شماره تلفن الزامی است", - "noResultMessage": "بدون نتیجه", - "ac_": "جزیره اسنشن", - "ad_": "آندورا", - "ae_": "امارات متحده عربی", - "af_": "افغانستان", - "ag_": "آنتیگوآ و باربودا", - "ai_": "آنگویلا", - "al_": "آلبانی", - "am_": "ارمنستان", - "an_": "آنتیل هلند", - "ao_": "آنگولا", - "aq_": "جنوبگان", - "ar_": "آرژانتین", - "as_": "ساموآی آمریکا", - "at_": "اتریش", - "au_": "استرالیا", - "aw_": "آروبا", - "ax_": "جزایر الند", - "az_": "آذربایجان", - "ba_": "بوسنی و هرزگوین", - "bb_": "باربادوس", - "bd_": "بنگلادش", - "be_": "بلژیک", - "bf_": "بورکینافاسو", - "bg_": "بلغارستان", - "bh_": "بحرین", - "bi_": "بوروندی", - "bj_": "بنین", - "bl_": "سن بارتلمی", - "bm_": "برمودا", - "bn_": "برونئی سرای صلح", - "bo_": "حکومت پلوریناسیونال بولیوی", - "bq_": "بونیر", - "br_": "برزیل", - "bs_": "باهاما", - "bt_": "بوتان", - "bw_": "بوتسوانا", - "by_": "بلاروس", - "bz_": "بلیز", - "ca_": "کانادا", - "cc_": "جزایر (کیلینگ) کوکوس", - "cd_": "کنگو، جمهوری دموکراتیک کنگو", - "cf_": "جمهوری آفریقای مرکزی", - "cg_": "کنگو", - "ch_": "سوئیس", - "ci_": "ساحل عاج", - "ck_": "جزایر کوک", - "cl_": "شیلی", - "cm_": "کامرون", - "cn_": "چین", - "co_": "کلمبیا", - "cr_": "کاستاریکا", - "cu_": "کوبا", - "cv_": "کیپ ورد", - "cx_": "جزیره کریسمس", - "cy_": "قبرس", - "cz_": "جمهوری چک", - "de_": "آلمان", - "dj_": "جیبوتی", - "dk_": "دانمارک", - "dm_": "دومینیکا", - "do_": "جمهوری دومینیکن", - "dz_": "الجزایر", - "ec_": "اکوادور", - "ee_": "استونی", - "eg_": "مصر", - "er_": "اریتره", - "es_": "اسپانیا", - "et_": "اتیوپی", - "fi_": "فنلاند", - "fj_": "فیجی", - "fk_": "جزایر فالکلند (مالویناس)", - "fm_": "میکرونزی، ایالات فدرال میکرونزی", - "fo_": "جزایر فارو", - "fr_": "فرانسه", - "ga_": "گابن", - "gb_": "پادشاهی متحد بریتانیای کبیر و ایرلند شمالی", - "gd_": "گرنادا", - "ge_": "گرجستان", - "gf_": "گویان فرانسه", - "gg_": "گرنزی", - "gh_": "غنا", - "gi_": "جبل‌الطارق", - "gl_": "گرینلند", - "gm_": "گامبیا", - "gn_": "گینه", - "gp_": "گوادلوپ", - "gq_": "گینه استوایی", - "gr_": "یونان", - "gs_": "جزایر جورجیای جنوبی و ساندویچ جنوبی", - "gt_": "گواتمالا", - "gu_": "گوآم", - "gw_": "گینه بیسائو", - "gy_": "گویان", - "hk_": "هنگ کنگ", - "hn_": "هندوراس", - "hr_": "کرواسی", - "ht_": "هائیتی", - "hu_": "مجارستان", - "id_": "اندونزی", - "ie_": "ایرلند", - "il_": "اسرائیل", - "im_": "جزیره من", - "in_": "هند", - "io_": "قلمرو بریتانیا در اقیانوس هند", - "iq_": "عراق", - "ir_": "ایران", - "is_": "ایسلند", - "it_": "ایتالیا", - "je_": "جرزی", - "jm_": "جامائیکا", - "jo_": "اردن", - "jp_": "ژاپن", - "ke_": "کنیا", - "kg_": "قرقیزستان", - "kh_": "کامبوج", - "ki_": "کیریباتی", - "km_": "کومور", - "kn_": "سنت کیتس و نویس", - "kp_": "کره شمالی", - "kr_": "کره، جمهوری کره جنوبی", - "kw_": "کویت", - "ky_": "جزایر کیمن", - "kz_": "قزاقستان", - "la_": "لائوس", - "lb_": "لبنان", - "lc_": "سنت لوسیا", - "li_": "لیختن‌اشتاین", - "lk_": "سری‌لانکا", - "lr_": "لیبریا", - "ls_": "لسوتو", - "lt_": "لیتوانی", - "lu_": "لوکزامبورگ", - "lv_": "لتونی", - "ly_": "لیبی", - "ma_": "مراکش", - "mc_": "موناکو", - "md_": "مولداوی", - "me_": "مونته‌نگرو", - "mf_": "سن مارتن", - "mg_": "ماداگاسکار", - "mh_": "جزایر مارشال", - "mk_": "مقدونیه", - "ml_": "مالی", - "mm_": "میانمار", - "mn_": "مغولستان", - "mo_": "ماکائو", - "mp_": "جزایر ماریانای شمالی", - "mq_": "مارتینیک", - "mr_": "موریتانی", - "ms_": "مونتسرات", - "mt_": "مالت", - "mu_": "موریس", - "mv_": "مالدیو", - "mw_": "مالاوی", - "mx_": "مکزیک", - "my_": "مالزی", - "mz_": "موزامبیک", - "na_": "نامیبیا", - "nc_": "کالدونیای جدید", - "ne_": "نیجر", - "nf_": "جزیره نورفک", - "ng_": "نیجریه", - "ni_": "نیکاراگوئه", - "nl_": "هلند", - "no_": "نروژ", - "np_": "نپال", - "nr_": "نائورو", - "nu_": "نیووی", - "nz_": "نیوزیلند", - "om_": "عمان", - "pa_": "پاناما", - "pe_": "پرو", - "pf_": "پلی‌نزی فرانسه", - "pg_": "پاپوآ گینه نو", - "ph_": "فیلیپین", - "pk_": "پاکستان", - "pl_": "لهستان", - "pm_": "سن-پیر و میکلون", - "pn_": "پیت‌کرن", - "pr_": "پورتوریکو", - "ps_": "سرزمین‌های فلسطینی", - "pt_": "پرتغال", - "pw_": "پالائو", - "py_": "پاراگوئه", - "qa_": "قطر", - "re_": "رئونیون", - "ro_": "رومانی", - "rs_": "صربستان", - "ru_": "روسیه", - "rw_": "رواندا", - "sa_": "عربستان سعودی", - "sb_": "جزایر سلیمان", - "sc_": "سیشل", - "sd_": "سودان", - "se_": "سوئد", - "sg_": "سنگاپور", - "si_": "اسلوونی", - "sk_": "اسلواکی", - "sl_": "سیرالئون", - "sm_": "سان مارینو", - "sn_": "سنگال", - "so_": "سومالی", - "sr_": "سورینام", - "ss_": "سودان جنوبی", - "st_": "سائوتومه و پرنسیپ", - "sv_": "السالوادور", - "sy_": "جمهوری عربی سوریه", - "sz_": "سوازیلند", - "ta_": "تریستان دا کونا", - "tc_": "جزایر تورکس و کایکوس", - "td_": "چاد", - "tg_": "توگو", - "th_": "تایلند", - "tj_": "تاجیکستان", - "tk_": "توکلائو", - "tl_": "تیمور شرقی", - "tm_": "ترکمنستان", - "tn_": "تونس", - "to_": "تونگا", - "tr_": "ترکیه", - "tt_": "ترینیداد و توباگو", - "tv_": "تووالو", - "tw_": "تایوان", - "tz_": "تانزانیا، جمهوری متحد تانزانیا", - "ua_": "اوکراین", - "ug_": "اوگاندا", - "us_": "ایالات متحده آمریکا", - "uy_": "اروگوئه", - "uz_": "ازبکستان", - "va_": "سریر مقدس (ایالت شهر واتیکان)", - "vc_": "سنت وینسنت و گرنادین‌ها", - "ve_": "ونزوئلا", - "vg_": "جزایر ویرجین، بریتانیا", - "vi_": "جزایر ویرجین، ایالات متحده آمریکا", - "vn_": "ویتنام", - "vu_": "وانواتو", - "wf_": "والیس و فوتونا", - "ws_": "ساموآ", - "ye_": "یمن", - "yt_": "مایوت", - "za_": "آفریقای جنوبی", - "zm_": "زامبیا", - "zw_": "زیمبابوه" -} \ No newline at end of file diff --git a/lib/l10n/fr.arb b/lib/l10n/fr.arb deleted file mode 100644 index 98ff2f60..00000000 --- a/lib/l10n/fr.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "fr", - "invalidPhoneNumber": "Numéro de téléphone invalide", - "invalidCountry": "Pays invalide", - "invalidMobilePhoneNumber": "Numéro de téléphone portable invalide", - "invalidFixedLinePhoneNumber": "Numéro de téléphone fixe invalide", - "requiredPhoneNumber": "Numéro de téléphone requis", - "noResultMessage": "Aucun résultat", - "ac_": "Île de l'Ascension", - "ad_": "Andorre", - "ae_": "Emirats Arabes Unis", - "af_": "Afghanistan", - "ag_": "Antigua-et-Barbuda", - "ai_": "Anguilla", - "al_": "Albanie", - "am_": "Arménie", - "an_": "Antilles néerlandaises", - "ao_": "Angola", - "aq_": "Antarctique", - "ar_": "Argentine", - "as_": "Samoa américaines", - "at_": "Autriche", - "au_": "Australie", - "aw_": "Aruba", - "ax_": "Iles Aland", - "az_": "Azerbaïdjan", - "ba_": "Bosnie Herzégovine", - "bb_": "Barbade", - "bd_": "Bangladesh", - "be_": "Belgique", - "bf_": "Burkina Faso", - "bg_": "Bulgarie", - "bh_": "Bahreïn", - "bi_": "Burundi", - "bj_": "Bénin", - "bl_": "Saint Barthélemy", - "bm_": "Bermudes", - "bn_": "Brunei Darussalam", - "bo_": "Bolivie, État plurinational de", - "bq_": "Bonaire", - "br_": "Brésil", - "bs_": "Bahamas", - "bt_": "Bhoutan", - "bw_": "Botswana", - "by_": "Biélorussie", - "bz_": "Belize", - "ca_": "Canada", - "cc_": "Îles Cocos (Keeling)", - "cd_": "Congo, République démocratique du Congo", - "cf_": "République centrafricaine", - "cg_": "Congo", - "ch_": "Suisse", - "ci_": "Côte d'Ivoire", - "ck_": "Îles Cook", - "cl_": "Chili", - "cm_": "Cameroun", - "cn_": "Chine", - "co_": "Colombie", - "cr_": "Costa Rica", - "cu_": "Cuba", - "cv_": "Cap-Vert", - "cx_": "L'île de noël", - "cy_": "Chypre", - "cz_": "République Tchèque", - "de_": "Allemagne", - "dj_": "Djibouti", - "dk_": "Danemark", - "dm_": "Dominique", - "do_": "République Dominicaine", - "dz_": "Algérie", - "ec_": "Equateur", - "ee_": "Estonie", - "eg_": "Egypte", - "er_": "Érythrée", - "es_": "Espagne", - "et_": "Ethiopie", - "fi_": "Finlande", - "fj_": "Fidji", - "fk_": "Îles Falkland (Malvinas)", - "fm_": "Micronésie, États fédérés de Micronésie", - "fo_": "Îles Féroé", - "fr_": "France", - "ga_": "Gabon", - "gb_": "Royaume-Uni", - "gd_": "Grenade", - "ge_": "Géorgie", - "gf_": "Guyane Française", - "gg_": "Guernesey", - "gh_": "Ghana", - "gi_": "Gibraltar", - "gl_": "Groenland", - "gm_": "Gambie", - "gn_": "Guinée", - "gp_": "Guadeloupe", - "gq_": "Guinée Équatoriale", - "gr_": "Grèce", - "gs_": "Géorgie du Sud et îles Sandwich du Sud", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Guinée-Bissau", - "gy_": "Guyane", - "hk_": "Hong Kong", - "hn_": "Honduras", - "hr_": "Croatie", - "ht_": "Haïti", - "hu_": "Hongrie", - "id_": "Indonésie", - "ie_": "Irlande", - "il_": "Israël", - "im_": "île de Man", - "in_": "Inde", - "io_": "Territoire britannique de l'océan Indien", - "iq_": "Irak", - "ir_": "Iran, République islamique du golfe Persique", - "is_": "Islande", - "it_": "Italie", - "je_": "Jersey", - "jm_": "Jamaïque", - "jo_": "Jordan", - "jp_": "Japon", - "ke_": "Kenya", - "kg_": "Kirghizistan", - "kh_": "Cambodge", - "ki_": "Kiribati", - "km_": "Comores", - "kn_": "Saint-Christophe-et-Niévès", - "kp_": "Corée, République populaire démocratique de Corée", - "kr_": "Corée, République de Corée du Sud", - "kw_": "Koweit", - "ky_": "Îles Caïmans", - "kz_": "Kazakhstan", - "la_": "Laos", - "lb_": "Liban", - "lc_": "Sainte-Lucie", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Libéria", - "ls_": "Lesotho", - "lt_": "Lituanie", - "lu_": "Luxembourg", - "lv_": "Lettonie", - "ly_": "Jamahiriya arabe libyenne", - "ma_": "Maroc", - "mc_": "Monaco", - "md_": "Moldavie", - "me_": "Monténégro", - "mf_": "Saint Martin", - "mg_": "Madagascar", - "mh_": "Iles Marshall", - "mk_": "Macédoine", - "ml_": "Mali", - "mm_": "Myanmar", - "mn_": "Mongolie", - "mo_": "Macao", - "mp_": "Îles Mariannes du Nord", - "mq_": "Martinique", - "mr_": "Mauritanie", - "ms_": "Montserrat", - "mt_": "Malte", - "mu_": "Ile Maurice", - "mv_": "Maldives", - "mw_": "Malawi", - "mx_": "Mexique", - "my_": "Malaisie", - "mz_": "Mozambique", - "na_": "Namibie", - "nc_": "Nouvelle Calédonie", - "ne_": "Niger", - "nf_": "l'ile de Norfolk", - "ng_": "Nigeria", - "ni_": "Nicaragua", - "nl_": "Pays-Bas", - "no_": "Norvège", - "np_": "Népal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "Nouvelle-Zélande", - "om_": "Oman", - "pa_": "Panama", - "pe_": "Pérou", - "pf_": "Polynésie française", - "pg_": "Papouasie Nouvelle Guinée", - "ph_": "Philippines", - "pk_": "Pakistan", - "pl_": "Pologne", - "pm_": "Saint-Pierre-et-Miquelon", - "pn_": "Pitcairn", - "pr_": "Porto Rico", - "ps_": "Territoire palestinien, occupé", - "pt_": "Portugal", - "pw_": "Palau", - "py_": "Paraguay", - "qa_": "Qatar", - "re_": "Réunion", - "ro_": "Roumanie", - "rs_": "Serbie", - "ru_": "Russie", - "rw_": "Rwanda", - "sa_": "Arabie Saoudite", - "sb_": "îles Salomon", - "sc_": "Seychelles", - "sd_": "Soudan", - "se_": "Suède", - "sg_": "Singapour", - "sh_": "Sainte-Hélène, Ascension et Tristan Da Cunha", - "si_": "Slovénie", - "sj_": "Svalbard et Jan Mayen", - "sk_": "Slovaquie", - "sl_": "Sierra Leone", - "sm_": "Saint Marin", - "sn_": "Sénégal", - "so_": "Somalie", - "sr_": "Suriname", - "ss_": "Soudan du sud", - "st_": "Sao Tomé et Principe", - "sv_": "Salvador", - "sy_": "République arabe syrienne", - "sz_": "Swaziland", - "ta_": "Tristan da Cunha", - "tc_": "îles Turques-et-Caïques", - "td_": "Tchad", - "tg_": "Aller", - "th_": "Thaïlande", - "tj_": "Tadjikistan", - "tk_": "Tokelau", - "tl_": "Timor-Leste", - "tm_": "Turkménistan", - "tn_": "Tunisie", - "to_": "Tonga", - "tr_": "dinde", - "tt_": "Trinité-et-Tobago", - "tv_": "Tuvalu", - "tw_": "Taïwan", - "tz_": "Tanzanie, République-Unie de Tanzanie", - "ua_": "Ukraine", - "ug_": "Ouganda", - "us_": "États Unis", - "uy_": "Uruguay", - "uz_": "Ouzbékistan", - "va_": "Saint-Siège (État de la Cité du Vatican)", - "vc_": "Saint-Vincent-et-les-Grenadines", - "ve_": "Venezuela", - "vg_": "Îles Vierges britanniques", - "vi_": "Îles Vierges américaines, États-Unis", - "vn_": "Vietnam", - "vu_": "Vanuatu", - "wf_": "Wallis et Futuna", - "ws_": "Samoa", - "ye_": "Yémen", - "yt_": "Mayotte", - "za_": "Afrique du Sud", - "zm_": "Zambie", - "zw_": "Zimbabwe" -} \ No newline at end of file diff --git a/lib/l10n/generated/phone_field_localization.dart b/lib/l10n/generated/phone_field_localization.dart deleted file mode 100644 index 9893da61..00000000 --- a/lib/l10n/generated/phone_field_localization.dart +++ /dev/null @@ -1,1709 +0,0 @@ -import 'dart:async'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/widgets.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:intl/intl.dart' as intl; - -import 'phone_field_localization_ar.dart'; -import 'phone_field_localization_de.dart'; -import 'phone_field_localization_el.dart'; -import 'phone_field_localization_en.dart'; -import 'phone_field_localization_es.dart'; -import 'phone_field_localization_fa.dart'; -import 'phone_field_localization_fr.dart'; -import 'phone_field_localization_hi.dart'; -import 'phone_field_localization_it.dart'; -import 'phone_field_localization_nb.dart'; -import 'phone_field_localization_nl.dart'; -import 'phone_field_localization_pt.dart'; -import 'phone_field_localization_ru.dart'; -import 'phone_field_localization_sv.dart'; -import 'phone_field_localization_tr.dart'; -import 'phone_field_localization_uk.dart'; -import 'phone_field_localization_uz.dart'; -import 'phone_field_localization_zh.dart'; - -/// Callers can lookup localized strings with an instance of PhoneFieldLocalization -/// returned by `PhoneFieldLocalization.of(context)`. -/// -/// Applications need to include `PhoneFieldLocalization.delegate()` in their app's -/// `localizationDelegates` list, and the locales they support in the app's -/// `supportedLocales` list. For example: -/// -/// ```dart -/// import 'generated/phone_field_localization.dart'; -/// -/// return MaterialApp( -/// localizationsDelegates: PhoneFieldLocalization.localizationsDelegates, -/// supportedLocales: PhoneFieldLocalization.supportedLocales, -/// home: MyApplicationHome(), -/// ); -/// ``` -/// -/// ## Update pubspec.yaml -/// -/// Please make sure to update your pubspec.yaml to include the following -/// packages: -/// -/// ```yaml -/// dependencies: -/// # Internationalization support. -/// flutter_localizations: -/// sdk: flutter -/// intl: any # Use the pinned version from flutter_localizations -/// -/// # Rest of dependencies -/// ``` -/// -/// ## iOS Applications -/// -/// iOS applications define key application metadata, including supported -/// locales, in an Info.plist file that is built into the application bundle. -/// To configure the locales supported by your app, you’ll need to edit this -/// file. -/// -/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. -/// Then, in the Project Navigator, open the Info.plist file under the Runner -/// project’s Runner folder. -/// -/// Next, select the Information Property List item, select Add Item from the -/// Editor menu, then select Localizations from the pop-up menu. -/// -/// Select and expand the newly-created Localizations item then, for each -/// locale your application supports, add a new item and select the locale -/// you wish to add from the pop-up menu in the Value field. This list should -/// be consistent with the languages listed in the PhoneFieldLocalization.supportedLocales -/// property. -abstract class PhoneFieldLocalization { - PhoneFieldLocalization(String locale) - : localeName = intl.Intl.canonicalizedLocale(locale.toString()); - - final String localeName; - - static PhoneFieldLocalization? of(BuildContext context) { - return Localizations.of( - context, PhoneFieldLocalization); - } - - static const LocalizationsDelegate delegate = - _PhoneFieldLocalizationDelegate(); - - /// A list of this localizations delegate along with the default localizations - /// delegates. - /// - /// Returns a list of localizations delegates containing this delegate along with - /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, - /// and GlobalWidgetsLocalizations.delegate. - /// - /// Additional delegates can be added by appending to this list in - /// MaterialApp. This list does not have to be used at all if a custom list - /// of delegates is preferred or required. - static const List> localizationsDelegates = - >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; - - /// A list of this localizations delegate's supported locales. - static const List supportedLocales = [ - Locale('ar'), - Locale('de'), - Locale('el'), - Locale('en'), - Locale('es'), - Locale('fa'), - Locale('fr'), - Locale('hi'), - Locale('it'), - Locale('nb'), - Locale('nl'), - Locale('pt'), - Locale('ru'), - Locale('sv'), - Locale('tr'), - Locale('uk'), - Locale('uz'), - Locale('zh') - ]; - - /// No description provided for @invalidPhoneNumber. - /// - /// In en, this message translates to: - /// **'Invalid phone number'** - String get invalidPhoneNumber; - - /// No description provided for @invalidCountry. - /// - /// In en, this message translates to: - /// **'Invalid country'** - String get invalidCountry; - - /// No description provided for @invalidMobilePhoneNumber. - /// - /// In en, this message translates to: - /// **'Invalid mobile phone number'** - String get invalidMobilePhoneNumber; - - /// No description provided for @invalidFixedLinePhoneNumber. - /// - /// In en, this message translates to: - /// **'Invalid fixed line phone number'** - String get invalidFixedLinePhoneNumber; - - /// No description provided for @requiredPhoneNumber. - /// - /// In en, this message translates to: - /// **'Required phone number'** - String get requiredPhoneNumber; - - /// No description provided for @noResultMessage. - /// - /// In en, this message translates to: - /// **'No result'** - String get noResultMessage; - - /// No description provided for @ac_. - /// - /// In en, this message translates to: - /// **'Ascension Island'** - String get ac_; - - /// No description provided for @ad_. - /// - /// In en, this message translates to: - /// **'Andorra'** - String get ad_; - - /// No description provided for @ae_. - /// - /// In en, this message translates to: - /// **'United Arab Emirates'** - String get ae_; - - /// No description provided for @af_. - /// - /// In en, this message translates to: - /// **'Afghanistan'** - String get af_; - - /// No description provided for @ag_. - /// - /// In en, this message translates to: - /// **'Antigua and Barbuda'** - String get ag_; - - /// No description provided for @ai_. - /// - /// In en, this message translates to: - /// **'Anguilla'** - String get ai_; - - /// No description provided for @al_. - /// - /// In en, this message translates to: - /// **'Albania'** - String get al_; - - /// No description provided for @am_. - /// - /// In en, this message translates to: - /// **'Armenia'** - String get am_; - - /// No description provided for @an_. - /// - /// In en, this message translates to: - /// **'Netherlands Antilles'** - String get an_; - - /// No description provided for @ao_. - /// - /// In en, this message translates to: - /// **'Angola'** - String get ao_; - - /// No description provided for @aq_. - /// - /// In en, this message translates to: - /// **'Antarctica'** - String get aq_; - - /// No description provided for @ar_. - /// - /// In en, this message translates to: - /// **'Argentina'** - String get ar_; - - /// No description provided for @as_. - /// - /// In en, this message translates to: - /// **'American Samoa'** - String get as_; - - /// No description provided for @at_. - /// - /// In en, this message translates to: - /// **'Austria'** - String get at_; - - /// No description provided for @au_. - /// - /// In en, this message translates to: - /// **'Australia'** - String get au_; - - /// No description provided for @aw_. - /// - /// In en, this message translates to: - /// **'Aruba'** - String get aw_; - - /// No description provided for @ax_. - /// - /// In en, this message translates to: - /// **'Aland Islands'** - String get ax_; - - /// No description provided for @az_. - /// - /// In en, this message translates to: - /// **'Azerbaijan'** - String get az_; - - /// No description provided for @ba_. - /// - /// In en, this message translates to: - /// **'Bosnia and Herzegovina'** - String get ba_; - - /// No description provided for @bb_. - /// - /// In en, this message translates to: - /// **'Barbados'** - String get bb_; - - /// No description provided for @bd_. - /// - /// In en, this message translates to: - /// **'Bangladesh'** - String get bd_; - - /// No description provided for @be_. - /// - /// In en, this message translates to: - /// **'Belgium'** - String get be_; - - /// No description provided for @bf_. - /// - /// In en, this message translates to: - /// **'Burkina Faso'** - String get bf_; - - /// No description provided for @bg_. - /// - /// In en, this message translates to: - /// **'Bulgaria'** - String get bg_; - - /// No description provided for @bh_. - /// - /// In en, this message translates to: - /// **'Bahrain'** - String get bh_; - - /// No description provided for @bi_. - /// - /// In en, this message translates to: - /// **'Burundi'** - String get bi_; - - /// No description provided for @bj_. - /// - /// In en, this message translates to: - /// **'Benin'** - String get bj_; - - /// No description provided for @bl_. - /// - /// In en, this message translates to: - /// **'Saint Barthelemy'** - String get bl_; - - /// No description provided for @bm_. - /// - /// In en, this message translates to: - /// **'Bermuda'** - String get bm_; - - /// No description provided for @bn_. - /// - /// In en, this message translates to: - /// **'Brunei Darussalam'** - String get bn_; - - /// No description provided for @bo_. - /// - /// In en, this message translates to: - /// **'Bolivia, Plurinational State of'** - String get bo_; - - /// No description provided for @bq_. - /// - /// In en, this message translates to: - /// **'Bonaire'** - String get bq_; - - /// No description provided for @br_. - /// - /// In en, this message translates to: - /// **'Brazil'** - String get br_; - - /// No description provided for @bs_. - /// - /// In en, this message translates to: - /// **'Bahamas'** - String get bs_; - - /// No description provided for @bt_. - /// - /// In en, this message translates to: - /// **'Bhutan'** - String get bt_; - - /// No description provided for @bw_. - /// - /// In en, this message translates to: - /// **'Botswana'** - String get bw_; - - /// No description provided for @by_. - /// - /// In en, this message translates to: - /// **'Belarus'** - String get by_; - - /// No description provided for @bz_. - /// - /// In en, this message translates to: - /// **'Belize'** - String get bz_; - - /// No description provided for @ca_. - /// - /// In en, this message translates to: - /// **'Canada'** - String get ca_; - - /// No description provided for @cc_. - /// - /// In en, this message translates to: - /// **'Cocos (Keeling) Islands'** - String get cc_; - - /// No description provided for @cd_. - /// - /// In en, this message translates to: - /// **'Congo, The Democratic Republic of the Congo'** - String get cd_; - - /// No description provided for @cf_. - /// - /// In en, this message translates to: - /// **'Central African Republic'** - String get cf_; - - /// No description provided for @cg_. - /// - /// In en, this message translates to: - /// **'Congo'** - String get cg_; - - /// No description provided for @ch_. - /// - /// In en, this message translates to: - /// **'Switzerland'** - String get ch_; - - /// No description provided for @ci_. - /// - /// In en, this message translates to: - /// **'Cote d\'Ivoire'** - String get ci_; - - /// No description provided for @ck_. - /// - /// In en, this message translates to: - /// **'Cook Islands'** - String get ck_; - - /// No description provided for @cl_. - /// - /// In en, this message translates to: - /// **'Chile'** - String get cl_; - - /// No description provided for @cm_. - /// - /// In en, this message translates to: - /// **'Cameroon'** - String get cm_; - - /// No description provided for @cn_. - /// - /// In en, this message translates to: - /// **'China'** - String get cn_; - - /// No description provided for @co_. - /// - /// In en, this message translates to: - /// **'Colombia'** - String get co_; - - /// No description provided for @cr_. - /// - /// In en, this message translates to: - /// **'Costa Rica'** - String get cr_; - - /// No description provided for @cu_. - /// - /// In en, this message translates to: - /// **'Cuba'** - String get cu_; - - /// No description provided for @cv_. - /// - /// In en, this message translates to: - /// **'Cape Verde'** - String get cv_; - - /// No description provided for @cx_. - /// - /// In en, this message translates to: - /// **'Christmas Island'** - String get cx_; - - /// No description provided for @cy_. - /// - /// In en, this message translates to: - /// **'Cyprus'** - String get cy_; - - /// No description provided for @cz_. - /// - /// In en, this message translates to: - /// **'Czech Republic'** - String get cz_; - - /// No description provided for @de_. - /// - /// In en, this message translates to: - /// **'Germany'** - String get de_; - - /// No description provided for @dj_. - /// - /// In en, this message translates to: - /// **'Djibouti'** - String get dj_; - - /// No description provided for @dk_. - /// - /// In en, this message translates to: - /// **'Denmark'** - String get dk_; - - /// No description provided for @dm_. - /// - /// In en, this message translates to: - /// **'Dominica'** - String get dm_; - - /// No description provided for @do_. - /// - /// In en, this message translates to: - /// **'Dominican Republic'** - String get do_; - - /// No description provided for @dz_. - /// - /// In en, this message translates to: - /// **'Algeria'** - String get dz_; - - /// No description provided for @ec_. - /// - /// In en, this message translates to: - /// **'Ecuador'** - String get ec_; - - /// No description provided for @ee_. - /// - /// In en, this message translates to: - /// **'Estonia'** - String get ee_; - - /// No description provided for @eg_. - /// - /// In en, this message translates to: - /// **'Egypt'** - String get eg_; - - /// No description provided for @er_. - /// - /// In en, this message translates to: - /// **'Eritrea'** - String get er_; - - /// No description provided for @es_. - /// - /// In en, this message translates to: - /// **'Spain'** - String get es_; - - /// No description provided for @et_. - /// - /// In en, this message translates to: - /// **'Ethiopia'** - String get et_; - - /// No description provided for @fi_. - /// - /// In en, this message translates to: - /// **'Finland'** - String get fi_; - - /// No description provided for @fj_. - /// - /// In en, this message translates to: - /// **'Fiji'** - String get fj_; - - /// No description provided for @fk_. - /// - /// In en, this message translates to: - /// **'Falkland Islands (Malvinas)'** - String get fk_; - - /// No description provided for @fm_. - /// - /// In en, this message translates to: - /// **'Micronesia, Federated States of Micronesia'** - String get fm_; - - /// No description provided for @fo_. - /// - /// In en, this message translates to: - /// **'Faroe Islands'** - String get fo_; - - /// No description provided for @fr_. - /// - /// In en, this message translates to: - /// **'France'** - String get fr_; - - /// No description provided for @ga_. - /// - /// In en, this message translates to: - /// **'Gabon'** - String get ga_; - - /// No description provided for @gb_. - /// - /// In en, this message translates to: - /// **'United Kingdom'** - String get gb_; - - /// No description provided for @gd_. - /// - /// In en, this message translates to: - /// **'Grenada'** - String get gd_; - - /// No description provided for @ge_. - /// - /// In en, this message translates to: - /// **'Georgia'** - String get ge_; - - /// No description provided for @gf_. - /// - /// In en, this message translates to: - /// **'French Guiana'** - String get gf_; - - /// No description provided for @gg_. - /// - /// In en, this message translates to: - /// **'Guernsey'** - String get gg_; - - /// No description provided for @gh_. - /// - /// In en, this message translates to: - /// **'Ghana'** - String get gh_; - - /// No description provided for @gi_. - /// - /// In en, this message translates to: - /// **'Gibraltar'** - String get gi_; - - /// No description provided for @gl_. - /// - /// In en, this message translates to: - /// **'Greenland'** - String get gl_; - - /// No description provided for @gm_. - /// - /// In en, this message translates to: - /// **'Gambia'** - String get gm_; - - /// No description provided for @gn_. - /// - /// In en, this message translates to: - /// **'Guinea'** - String get gn_; - - /// No description provided for @gp_. - /// - /// In en, this message translates to: - /// **'Guadeloupe'** - String get gp_; - - /// No description provided for @gq_. - /// - /// In en, this message translates to: - /// **'Equatorial Guinea'** - String get gq_; - - /// No description provided for @gr_. - /// - /// In en, this message translates to: - /// **'Greece'** - String get gr_; - - /// No description provided for @gs_. - /// - /// In en, this message translates to: - /// **'South Georgia and the South Sandwich Islands'** - String get gs_; - - /// No description provided for @gt_. - /// - /// In en, this message translates to: - /// **'Guatemala'** - String get gt_; - - /// No description provided for @gu_. - /// - /// In en, this message translates to: - /// **'Guam'** - String get gu_; - - /// No description provided for @gw_. - /// - /// In en, this message translates to: - /// **'Guinea-Bissau'** - String get gw_; - - /// No description provided for @gy_. - /// - /// In en, this message translates to: - /// **'Guyana'** - String get gy_; - - /// No description provided for @hk_. - /// - /// In en, this message translates to: - /// **'Hong Kong'** - String get hk_; - - /// No description provided for @hn_. - /// - /// In en, this message translates to: - /// **'Honduras'** - String get hn_; - - /// No description provided for @hr_. - /// - /// In en, this message translates to: - /// **'Croatia'** - String get hr_; - - /// No description provided for @ht_. - /// - /// In en, this message translates to: - /// **'Haiti'** - String get ht_; - - /// No description provided for @hu_. - /// - /// In en, this message translates to: - /// **'Hungary'** - String get hu_; - - /// No description provided for @id_. - /// - /// In en, this message translates to: - /// **'Indonesia'** - String get id_; - - /// No description provided for @ie_. - /// - /// In en, this message translates to: - /// **'Ireland'** - String get ie_; - - /// No description provided for @il_. - /// - /// In en, this message translates to: - /// **'Israel'** - String get il_; - - /// No description provided for @im_. - /// - /// In en, this message translates to: - /// **'Isle of Man'** - String get im_; - - /// No description provided for @in_. - /// - /// In en, this message translates to: - /// **'India'** - String get in_; - - /// No description provided for @io_. - /// - /// In en, this message translates to: - /// **'British Indian Ocean Territory'** - String get io_; - - /// No description provided for @iq_. - /// - /// In en, this message translates to: - /// **'Iraq'** - String get iq_; - - /// No description provided for @ir_. - /// - /// In en, this message translates to: - /// **'Iran, Islamic Republic of'** - String get ir_; - - /// No description provided for @is_. - /// - /// In en, this message translates to: - /// **'Iceland'** - String get is_; - - /// No description provided for @it_. - /// - /// In en, this message translates to: - /// **'Italy'** - String get it_; - - /// No description provided for @je_. - /// - /// In en, this message translates to: - /// **'Jersey'** - String get je_; - - /// No description provided for @jm_. - /// - /// In en, this message translates to: - /// **'Jamaica'** - String get jm_; - - /// No description provided for @jo_. - /// - /// In en, this message translates to: - /// **'Jordan'** - String get jo_; - - /// No description provided for @jp_. - /// - /// In en, this message translates to: - /// **'Japan'** - String get jp_; - - /// No description provided for @ke_. - /// - /// In en, this message translates to: - /// **'Kenya'** - String get ke_; - - /// No description provided for @kg_. - /// - /// In en, this message translates to: - /// **'Kyrgyzstan'** - String get kg_; - - /// No description provided for @kh_. - /// - /// In en, this message translates to: - /// **'Cambodia'** - String get kh_; - - /// No description provided for @ki_. - /// - /// In en, this message translates to: - /// **'Kiribati'** - String get ki_; - - /// No description provided for @km_. - /// - /// In en, this message translates to: - /// **'Comoros'** - String get km_; - - /// No description provided for @kn_. - /// - /// In en, this message translates to: - /// **'Saint Kitts and Nevis'** - String get kn_; - - /// No description provided for @kp_. - /// - /// In en, this message translates to: - /// **'Korea, Democratic People\'s Republic of Korea'** - String get kp_; - - /// No description provided for @kr_. - /// - /// In en, this message translates to: - /// **'Korea, Republic of South Korea'** - String get kr_; - - /// No description provided for @kw_. - /// - /// In en, this message translates to: - /// **'Kuwait'** - String get kw_; - - /// No description provided for @ky_. - /// - /// In en, this message translates to: - /// **'Cayman Islands'** - String get ky_; - - /// No description provided for @kz_. - /// - /// In en, this message translates to: - /// **'Kazakhstan'** - String get kz_; - - /// No description provided for @la_. - /// - /// In en, this message translates to: - /// **'Laos'** - String get la_; - - /// No description provided for @lb_. - /// - /// In en, this message translates to: - /// **'Lebanon'** - String get lb_; - - /// No description provided for @lc_. - /// - /// In en, this message translates to: - /// **'Saint Lucia'** - String get lc_; - - /// No description provided for @li_. - /// - /// In en, this message translates to: - /// **'Liechtenstein'** - String get li_; - - /// No description provided for @lk_. - /// - /// In en, this message translates to: - /// **'Sri Lanka'** - String get lk_; - - /// No description provided for @lr_. - /// - /// In en, this message translates to: - /// **'Liberia'** - String get lr_; - - /// No description provided for @ls_. - /// - /// In en, this message translates to: - /// **'Lesotho'** - String get ls_; - - /// No description provided for @lt_. - /// - /// In en, this message translates to: - /// **'Lithuania'** - String get lt_; - - /// No description provided for @lu_. - /// - /// In en, this message translates to: - /// **'Luxembourg'** - String get lu_; - - /// No description provided for @lv_. - /// - /// In en, this message translates to: - /// **'Latvia'** - String get lv_; - - /// No description provided for @ly_. - /// - /// In en, this message translates to: - /// **'Libya'** - String get ly_; - - /// No description provided for @ma_. - /// - /// In en, this message translates to: - /// **'Morocco'** - String get ma_; - - /// No description provided for @mc_. - /// - /// In en, this message translates to: - /// **'Monaco'** - String get mc_; - - /// No description provided for @md_. - /// - /// In en, this message translates to: - /// **'Moldova'** - String get md_; - - /// No description provided for @me_. - /// - /// In en, this message translates to: - /// **'Montenegro'** - String get me_; - - /// No description provided for @mf_. - /// - /// In en, this message translates to: - /// **'Saint Martin'** - String get mf_; - - /// No description provided for @mg_. - /// - /// In en, this message translates to: - /// **'Madagascar'** - String get mg_; - - /// No description provided for @mh_. - /// - /// In en, this message translates to: - /// **'Marshall Islands'** - String get mh_; - - /// No description provided for @mk_. - /// - /// In en, this message translates to: - /// **'Macedonia'** - String get mk_; - - /// No description provided for @ml_. - /// - /// In en, this message translates to: - /// **'Mali'** - String get ml_; - - /// No description provided for @mm_. - /// - /// In en, this message translates to: - /// **'Myanmar'** - String get mm_; - - /// No description provided for @mn_. - /// - /// In en, this message translates to: - /// **'Mongolia'** - String get mn_; - - /// No description provided for @mo_. - /// - /// In en, this message translates to: - /// **'Macao'** - String get mo_; - - /// No description provided for @mp_. - /// - /// In en, this message translates to: - /// **'Northern Mariana Islands'** - String get mp_; - - /// No description provided for @mq_. - /// - /// In en, this message translates to: - /// **'Martinique'** - String get mq_; - - /// No description provided for @mr_. - /// - /// In en, this message translates to: - /// **'Mauritania'** - String get mr_; - - /// No description provided for @ms_. - /// - /// In en, this message translates to: - /// **'Montserrat'** - String get ms_; - - /// No description provided for @mt_. - /// - /// In en, this message translates to: - /// **'Malta'** - String get mt_; - - /// No description provided for @mu_. - /// - /// In en, this message translates to: - /// **'Mauritius'** - String get mu_; - - /// No description provided for @mv_. - /// - /// In en, this message translates to: - /// **'Maldives'** - String get mv_; - - /// No description provided for @mw_. - /// - /// In en, this message translates to: - /// **'Malawi'** - String get mw_; - - /// No description provided for @mx_. - /// - /// In en, this message translates to: - /// **'Mexico'** - String get mx_; - - /// No description provided for @my_. - /// - /// In en, this message translates to: - /// **'Malaysia'** - String get my_; - - /// No description provided for @mz_. - /// - /// In en, this message translates to: - /// **'Mozambique'** - String get mz_; - - /// No description provided for @na_. - /// - /// In en, this message translates to: - /// **'Namibia'** - String get na_; - - /// No description provided for @nc_. - /// - /// In en, this message translates to: - /// **'New Caledonia'** - String get nc_; - - /// No description provided for @ne_. - /// - /// In en, this message translates to: - /// **'Niger'** - String get ne_; - - /// No description provided for @nf_. - /// - /// In en, this message translates to: - /// **'Norfolk Island'** - String get nf_; - - /// No description provided for @ng_. - /// - /// In en, this message translates to: - /// **'Nigeria'** - String get ng_; - - /// No description provided for @ni_. - /// - /// In en, this message translates to: - /// **'Nicaragua'** - String get ni_; - - /// No description provided for @nl_. - /// - /// In en, this message translates to: - /// **'Netherlands'** - String get nl_; - - /// No description provided for @no_. - /// - /// In en, this message translates to: - /// **'Norway'** - String get no_; - - /// No description provided for @np_. - /// - /// In en, this message translates to: - /// **'Nepal'** - String get np_; - - /// No description provided for @nr_. - /// - /// In en, this message translates to: - /// **'Nauru'** - String get nr_; - - /// No description provided for @nu_. - /// - /// In en, this message translates to: - /// **'Niue'** - String get nu_; - - /// No description provided for @nz_. - /// - /// In en, this message translates to: - /// **'New Zealand'** - String get nz_; - - /// No description provided for @om_. - /// - /// In en, this message translates to: - /// **'Oman'** - String get om_; - - /// No description provided for @pa_. - /// - /// In en, this message translates to: - /// **'Panama'** - String get pa_; - - /// No description provided for @pe_. - /// - /// In en, this message translates to: - /// **'Peru'** - String get pe_; - - /// No description provided for @pf_. - /// - /// In en, this message translates to: - /// **'French Polynesia'** - String get pf_; - - /// No description provided for @pg_. - /// - /// In en, this message translates to: - /// **'Papua New Guinea'** - String get pg_; - - /// No description provided for @ph_. - /// - /// In en, this message translates to: - /// **'Philippines'** - String get ph_; - - /// No description provided for @pk_. - /// - /// In en, this message translates to: - /// **'Pakistan'** - String get pk_; - - /// No description provided for @pl_. - /// - /// In en, this message translates to: - /// **'Poland'** - String get pl_; - - /// No description provided for @pm_. - /// - /// In en, this message translates to: - /// **'Saint Pierre and Miquelon'** - String get pm_; - - /// No description provided for @pn_. - /// - /// In en, this message translates to: - /// **'Pitcairn'** - String get pn_; - - /// No description provided for @pr_. - /// - /// In en, this message translates to: - /// **'Puerto Rico'** - String get pr_; - - /// No description provided for @ps_. - /// - /// In en, this message translates to: - /// **'Palestinian Territory, Occupied'** - String get ps_; - - /// No description provided for @pt_. - /// - /// In en, this message translates to: - /// **'Portugal'** - String get pt_; - - /// No description provided for @pw_. - /// - /// In en, this message translates to: - /// **'Palau'** - String get pw_; - - /// No description provided for @py_. - /// - /// In en, this message translates to: - /// **'Paraguay'** - String get py_; - - /// No description provided for @qa_. - /// - /// In en, this message translates to: - /// **'Qatar'** - String get qa_; - - /// No description provided for @re_. - /// - /// In en, this message translates to: - /// **'Reunion'** - String get re_; - - /// No description provided for @ro_. - /// - /// In en, this message translates to: - /// **'Romania'** - String get ro_; - - /// No description provided for @rs_. - /// - /// In en, this message translates to: - /// **'Serbia'** - String get rs_; - - /// No description provided for @ru_. - /// - /// In en, this message translates to: - /// **'Russia'** - String get ru_; - - /// No description provided for @rw_. - /// - /// In en, this message translates to: - /// **'Rwanda'** - String get rw_; - - /// No description provided for @sa_. - /// - /// In en, this message translates to: - /// **'Saudi Arabia'** - String get sa_; - - /// No description provided for @sb_. - /// - /// In en, this message translates to: - /// **'Solomon Islands'** - String get sb_; - - /// No description provided for @sc_. - /// - /// In en, this message translates to: - /// **'Seychelles'** - String get sc_; - - /// No description provided for @sd_. - /// - /// In en, this message translates to: - /// **'Sudan'** - String get sd_; - - /// No description provided for @se_. - /// - /// In en, this message translates to: - /// **'Sweden'** - String get se_; - - /// No description provided for @sg_. - /// - /// In en, this message translates to: - /// **'Singapore'** - String get sg_; - - /// No description provided for @si_. - /// - /// In en, this message translates to: - /// **'Slovenia'** - String get si_; - - /// No description provided for @sk_. - /// - /// In en, this message translates to: - /// **'Slovakia'** - String get sk_; - - /// No description provided for @sl_. - /// - /// In en, this message translates to: - /// **'Sierra Leone'** - String get sl_; - - /// No description provided for @sm_. - /// - /// In en, this message translates to: - /// **'San Marino'** - String get sm_; - - /// No description provided for @sn_. - /// - /// In en, this message translates to: - /// **'Senegal'** - String get sn_; - - /// No description provided for @so_. - /// - /// In en, this message translates to: - /// **'Somalia'** - String get so_; - - /// No description provided for @sr_. - /// - /// In en, this message translates to: - /// **'Suriname'** - String get sr_; - - /// No description provided for @ss_. - /// - /// In en, this message translates to: - /// **'South Sudan'** - String get ss_; - - /// No description provided for @st_. - /// - /// In en, this message translates to: - /// **'Sao Tome and Principe'** - String get st_; - - /// No description provided for @sv_. - /// - /// In en, this message translates to: - /// **'El Salvador'** - String get sv_; - - /// No description provided for @sy_. - /// - /// In en, this message translates to: - /// **'Syrian Arab Republic'** - String get sy_; - - /// No description provided for @sz_. - /// - /// In en, this message translates to: - /// **'Swaziland'** - String get sz_; - - /// No description provided for @ta_. - /// - /// In en, this message translates to: - /// **'Tristan da Cunha'** - String get ta_; - - /// No description provided for @tc_. - /// - /// In en, this message translates to: - /// **'Turks and Caicos Islands'** - String get tc_; - - /// No description provided for @td_. - /// - /// In en, this message translates to: - /// **'Chad'** - String get td_; - - /// No description provided for @tg_. - /// - /// In en, this message translates to: - /// **'Togo'** - String get tg_; - - /// No description provided for @th_. - /// - /// In en, this message translates to: - /// **'Thailand'** - String get th_; - - /// No description provided for @tj_. - /// - /// In en, this message translates to: - /// **'Tajikistan'** - String get tj_; - - /// No description provided for @tk_. - /// - /// In en, this message translates to: - /// **'Tokelau'** - String get tk_; - - /// No description provided for @tl_. - /// - /// In en, this message translates to: - /// **'Timor-Leste'** - String get tl_; - - /// No description provided for @tm_. - /// - /// In en, this message translates to: - /// **'Turkmenistan'** - String get tm_; - - /// No description provided for @tn_. - /// - /// In en, this message translates to: - /// **'Tunisia'** - String get tn_; - - /// No description provided for @to_. - /// - /// In en, this message translates to: - /// **'Tonga'** - String get to_; - - /// No description provided for @tr_. - /// - /// In en, this message translates to: - /// **'Türkiye'** - String get tr_; - - /// No description provided for @tt_. - /// - /// In en, this message translates to: - /// **'Trinidad and Tobago'** - String get tt_; - - /// No description provided for @tv_. - /// - /// In en, this message translates to: - /// **'Tuvalu'** - String get tv_; - - /// No description provided for @tw_. - /// - /// In en, this message translates to: - /// **'Taiwan'** - String get tw_; - - /// No description provided for @tz_. - /// - /// In en, this message translates to: - /// **'Tanzania, United Republic of Tanzania'** - String get tz_; - - /// No description provided for @ua_. - /// - /// In en, this message translates to: - /// **'Ukraine'** - String get ua_; - - /// No description provided for @ug_. - /// - /// In en, this message translates to: - /// **'Uganda'** - String get ug_; - - /// No description provided for @us_. - /// - /// In en, this message translates to: - /// **'United States'** - String get us_; - - /// No description provided for @uy_. - /// - /// In en, this message translates to: - /// **'Uruguay'** - String get uy_; - - /// No description provided for @uz_. - /// - /// In en, this message translates to: - /// **'Uzbekistan'** - String get uz_; - - /// No description provided for @va_. - /// - /// In en, this message translates to: - /// **'Holy See (Vatican City State)'** - String get va_; - - /// No description provided for @vc_. - /// - /// In en, this message translates to: - /// **'Saint Vincent and the Grenadines'** - String get vc_; - - /// No description provided for @ve_. - /// - /// In en, this message translates to: - /// **'Venezuela'** - String get ve_; - - /// No description provided for @vg_. - /// - /// In en, this message translates to: - /// **'Virgin Islands, British'** - String get vg_; - - /// No description provided for @vi_. - /// - /// In en, this message translates to: - /// **'Virgin Islands, U.S.'** - String get vi_; - - /// No description provided for @vn_. - /// - /// In en, this message translates to: - /// **'Vietnam'** - String get vn_; - - /// No description provided for @vu_. - /// - /// In en, this message translates to: - /// **'Vanuatu'** - String get vu_; - - /// No description provided for @wf_. - /// - /// In en, this message translates to: - /// **'Wallis and Futuna'** - String get wf_; - - /// No description provided for @ws_. - /// - /// In en, this message translates to: - /// **'Samoa'** - String get ws_; - - /// No description provided for @ye_. - /// - /// In en, this message translates to: - /// **'Yemen'** - String get ye_; - - /// No description provided for @yt_. - /// - /// In en, this message translates to: - /// **'Mayotte'** - String get yt_; - - /// No description provided for @za_. - /// - /// In en, this message translates to: - /// **'South Africa'** - String get za_; - - /// No description provided for @zm_. - /// - /// In en, this message translates to: - /// **'Zambia'** - String get zm_; - - /// No description provided for @zw_. - /// - /// In en, this message translates to: - /// **'Zimbabwe'** - String get zw_; -} - -class _PhoneFieldLocalizationDelegate - extends LocalizationsDelegate { - const _PhoneFieldLocalizationDelegate(); - - @override - Future load(Locale locale) { - return SynchronousFuture( - lookupPhoneFieldLocalization(locale)); - } - - @override - bool isSupported(Locale locale) => [ - 'ar', - 'de', - 'el', - 'en', - 'es', - 'fa', - 'fr', - 'hi', - 'it', - 'nb', - 'nl', - 'pt', - 'ru', - 'sv', - 'tr', - 'uk', - 'uz', - 'zh' - ].contains(locale.languageCode); - - @override - bool shouldReload(_PhoneFieldLocalizationDelegate old) => false; -} - -PhoneFieldLocalization lookupPhoneFieldLocalization(Locale locale) { - // Lookup logic when only language code is specified. - switch (locale.languageCode) { - case 'ar': - return PhoneFieldLocalizationAr(); - case 'de': - return PhoneFieldLocalizationDe(); - case 'el': - return PhoneFieldLocalizationEl(); - case 'en': - return PhoneFieldLocalizationEn(); - case 'es': - return PhoneFieldLocalizationEs(); - case 'fa': - return PhoneFieldLocalizationFa(); - case 'fr': - return PhoneFieldLocalizationFr(); - case 'hi': - return PhoneFieldLocalizationHi(); - case 'it': - return PhoneFieldLocalizationIt(); - case 'nb': - return PhoneFieldLocalizationNb(); - case 'nl': - return PhoneFieldLocalizationNl(); - case 'pt': - return PhoneFieldLocalizationPt(); - case 'ru': - return PhoneFieldLocalizationRu(); - case 'sv': - return PhoneFieldLocalizationSv(); - case 'tr': - return PhoneFieldLocalizationTr(); - case 'uk': - return PhoneFieldLocalizationUk(); - case 'uz': - return PhoneFieldLocalizationUz(); - case 'zh': - return PhoneFieldLocalizationZh(); - } - - throw FlutterError( - 'PhoneFieldLocalization.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.'); -} diff --git a/lib/l10n/generated/phone_field_localization_ar.dart b/lib/l10n/generated/phone_field_localization_ar.dart deleted file mode 100644 index 905cc91d..00000000 --- a/lib/l10n/generated/phone_field_localization_ar.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Arabic (`ar`). -class PhoneFieldLocalizationAr extends PhoneFieldLocalization { - PhoneFieldLocalizationAr([super.locale = 'ar']); - - @override - String get invalidPhoneNumber => 'رقم الهاتف غير صحيح'; - - @override - String get invalidCountry => 'دولة غير صحيح'; - - @override - String get invalidMobilePhoneNumber => 'رقم الهاتف الخلوي غير صحيح'; - - @override - String get invalidFixedLinePhoneNumber => 'رقم الهاتف الثابت غير صحيح'; - - @override - String get requiredPhoneNumber => 'رقم الهاتف مطلوب'; - - @override - String get noResultMessage => 'لا نتيجة'; - - @override - String get ac_ => 'جزيرة أسنسيون'; - - @override - String get ad_ => 'أندورا'; - - @override - String get ae_ => 'الإمارات العربية المتحدة'; - - @override - String get af_ => 'أفغانستان'; - - @override - String get ag_ => 'أنتيغوا وبربودا'; - - @override - String get ai_ => 'أنغيلا'; - - @override - String get al_ => 'ألبانيا'; - - @override - String get am_ => 'أرمينيا'; - - @override - String get an_ => 'جزر الأنتيل الهولندية'; - - @override - String get ao_ => 'أنغولا'; - - @override - String get aq_ => 'أنتاركتيكا'; - - @override - String get ar_ => 'الأرجنتين'; - - @override - String get as_ => 'ساموا الأمريكية'; - - @override - String get at_ => 'النمسا'; - - @override - String get au_ => 'أستراليا'; - - @override - String get aw_ => 'أروبا'; - - @override - String get ax_ => 'جزر آلاند'; - - @override - String get az_ => 'أذربيجان'; - - @override - String get ba_ => 'البوسنة والهرسك'; - - @override - String get bb_ => 'بربادوس'; - - @override - String get bd_ => 'بنغلاديش'; - - @override - String get be_ => 'بلجيكا'; - - @override - String get bf_ => 'بوركينا فاسو'; - - @override - String get bg_ => 'بلغاريا'; - - @override - String get bh_ => 'البحرين'; - - @override - String get bi_ => 'بوروندي'; - - @override - String get bj_ => 'بنين'; - - @override - String get bl_ => 'سانت بارتيليمي'; - - @override - String get bm_ => 'برمودا'; - - @override - String get bn_ => 'بروناي دار السلام'; - - @override - String get bo_ => 'بوليفيا ، دولة متعددة القوميات'; - - @override - String get bq_ => 'بونير'; - - @override - String get br_ => 'البرازيل'; - - @override - String get bs_ => 'جزر البهاما'; - - @override - String get bt_ => 'بوتان'; - - @override - String get bw_ => 'بوتسوانا'; - - @override - String get by_ => 'بيلاروسيا'; - - @override - String get bz_ => 'بليز'; - - @override - String get ca_ => 'كندا'; - - @override - String get cc_ => 'جزر كوكوس (كيلينغ)'; - - @override - String get cd_ => 'الكونغو ، جمهورية الكونغو الديمقراطية'; - - @override - String get cf_ => 'جمهورية افريقيا الوسطى'; - - @override - String get cg_ => 'الكونغو'; - - @override - String get ch_ => 'سويسرا'; - - @override - String get ci_ => 'كوت ديفوار'; - - @override - String get ck_ => 'جزر كوك'; - - @override - String get cl_ => 'تشيلي'; - - @override - String get cm_ => 'الكاميرون'; - - @override - String get cn_ => 'الصين'; - - @override - String get co_ => 'كولومبيا'; - - @override - String get cr_ => 'كوستا ريكا'; - - @override - String get cu_ => 'كوبا'; - - @override - String get cv_ => 'الرأس الأخضر'; - - @override - String get cx_ => 'جزيرة الكريسماس'; - - @override - String get cy_ => 'قبرص'; - - @override - String get cz_ => 'الجمهورية التشيكية'; - - @override - String get de_ => 'ألمانيا'; - - @override - String get dj_ => 'جيبوتي'; - - @override - String get dk_ => 'الدنمارك'; - - @override - String get dm_ => 'دومينيكا'; - - @override - String get do_ => 'جمهورية الدومينيكان'; - - @override - String get dz_ => 'الجزائر'; - - @override - String get ec_ => 'الاكوادور'; - - @override - String get ee_ => 'إستونيا'; - - @override - String get eg_ => 'مصر'; - - @override - String get er_ => 'إريتريا'; - - @override - String get es_ => 'إسبانيا'; - - @override - String get et_ => 'أثيوبيا'; - - @override - String get fi_ => 'فنلندا'; - - @override - String get fj_ => 'فيجي'; - - @override - String get fk_ => 'جزر فوكلاند (مالفيناس)'; - - @override - String get fm_ => 'ولايات ميكرونيزيا الموحدة'; - - @override - String get fo_ => 'جزر فاروس'; - - @override - String get fr_ => 'فرنسا'; - - @override - String get ga_ => 'الجابون'; - - @override - String get gb_ => 'المملكة المتحدة'; - - @override - String get gd_ => 'غرينادا'; - - @override - String get ge_ => 'جورجيا'; - - @override - String get gf_ => 'غيانا الفرنسية'; - - @override - String get gg_ => 'غيرنسي'; - - @override - String get gh_ => 'غانا'; - - @override - String get gi_ => 'جبل طارق'; - - @override - String get gl_ => 'الأرض الخضراء'; - - @override - String get gm_ => 'غامبيا'; - - @override - String get gn_ => 'غينيا'; - - @override - String get gp_ => 'جوادلوب'; - - @override - String get gq_ => 'غينيا الإستوائية'; - - @override - String get gr_ => 'اليونان'; - - @override - String get gs_ => 'جورجيا الجنوبية وجزر ساندويتش الجنوبية'; - - @override - String get gt_ => 'غواتيمالا'; - - @override - String get gu_ => 'غوام'; - - @override - String get gw_ => 'غينيا بيساو'; - - @override - String get gy_ => 'غيانا'; - - @override - String get hk_ => 'هونج كونج'; - - @override - String get hn_ => 'هندوراس'; - - @override - String get hr_ => 'كرواتيا'; - - @override - String get ht_ => 'هايتي'; - - @override - String get hu_ => 'هنغاريا'; - - @override - String get id_ => 'إندونيسيا'; - - @override - String get ie_ => 'أيرلندا'; - - @override - String get il_ => 'إسرائيل'; - - @override - String get im_ => 'جزيرة آيل أوف مان'; - - @override - String get in_ => 'الهند'; - - @override - String get io_ => 'إقليم المحيط البريطاني الهندي'; - - @override - String get iq_ => 'العراق'; - - @override - String get ir_ => 'إيران ، جمهورية الخليج الإسلامية'; - - @override - String get is_ => 'أيسلندا'; - - @override - String get it_ => 'إيطاليا'; - - @override - String get je_ => 'جيرسي'; - - @override - String get jm_ => 'جامايكا'; - - @override - String get jo_ => 'الأردن'; - - @override - String get jp_ => 'اليابان'; - - @override - String get ke_ => 'كينيا'; - - @override - String get kg_ => 'قيرغيزستان'; - - @override - String get kh_ => 'كمبوديا'; - - @override - String get ki_ => 'كيريباتي'; - - @override - String get km_ => 'جزر القمر'; - - @override - String get kn_ => 'سانت كيتس ونيفيس'; - - @override - String get kp_ => 'كوريا ، جمهورية كوريا الشعبية الديمقراطية'; - - @override - String get kr_ => 'كوريا ، جمهورية كوريا الجنوبية'; - - @override - String get kw_ => 'الكويت'; - - @override - String get ky_ => 'جزر كايمان'; - - @override - String get kz_ => 'كازاخستان'; - - @override - String get la_ => 'لاوس'; - - @override - String get lb_ => 'لبنان'; - - @override - String get lc_ => 'القديسة لوسيا'; - - @override - String get li_ => 'ليختنشتاين'; - - @override - String get lk_ => 'سيريلانكا'; - - @override - String get lr_ => 'ليبيريا'; - - @override - String get ls_ => 'ليسوتو'; - - @override - String get lt_ => 'ليتوانيا'; - - @override - String get lu_ => 'لوكسمبورغ'; - - @override - String get lv_ => 'لاتفيا'; - - @override - String get ly_ => 'ليبيا'; - - @override - String get ma_ => 'المغرب'; - - @override - String get mc_ => 'موناكو'; - - @override - String get md_ => 'مولدوفا'; - - @override - String get me_ => 'الجبل الأسود'; - - @override - String get mf_ => 'القديس مارتن'; - - @override - String get mg_ => 'مدغشقر'; - - @override - String get mh_ => 'جزر مارشال'; - - @override - String get mk_ => 'مقدونيا'; - - @override - String get ml_ => 'مالي'; - - @override - String get mm_ => 'ميانمار'; - - @override - String get mn_ => 'منغوليا'; - - @override - String get mo_ => 'ماكاو'; - - @override - String get mp_ => 'جزر مريانا الشمالية'; - - @override - String get mq_ => 'مارتينيك'; - - @override - String get mr_ => 'موريتانيا'; - - @override - String get ms_ => 'مونتسيرات'; - - @override - String get mt_ => 'مالطا'; - - @override - String get mu_ => 'موريشيوس'; - - @override - String get mv_ => 'جزر المالديف'; - - @override - String get mw_ => 'ملاوي'; - - @override - String get mx_ => 'المكسيك'; - - @override - String get my_ => 'ماليزيا'; - - @override - String get mz_ => 'موزمبيق'; - - @override - String get na_ => 'ناميبيا'; - - @override - String get nc_ => 'كاليدونيا الجديدة'; - - @override - String get ne_ => 'النيجر'; - - @override - String get nf_ => 'جزيرة نورفولك'; - - @override - String get ng_ => 'نيجيريا'; - - @override - String get ni_ => 'نيكاراغوا'; - - @override - String get nl_ => 'هولندا'; - - @override - String get no_ => 'النرويج'; - - @override - String get np_ => 'نيبال'; - - @override - String get nr_ => 'ناورو'; - - @override - String get nu_ => 'نيوي'; - - @override - String get nz_ => 'نيوزيلاندا'; - - @override - String get om_ => 'سلطنة عمان'; - - @override - String get pa_ => 'بنما'; - - @override - String get pe_ => 'بيرو'; - - @override - String get pf_ => 'بولينيزيا الفرنسية'; - - @override - String get pg_ => 'بابوا غينيا الجديدة'; - - @override - String get ph_ => 'فيلبيني'; - - @override - String get pk_ => 'باكستان'; - - @override - String get pl_ => 'بولندا'; - - @override - String get pm_ => 'سانت بيير وميكلون'; - - @override - String get pn_ => 'بيتكيرن'; - - @override - String get pr_ => 'بورتوريكو'; - - @override - String get ps_ => 'الأراضي الفلسطينية المحتلة'; - - @override - String get pt_ => 'البرتغال'; - - @override - String get pw_ => 'بالاو'; - - @override - String get py_ => 'باراغواي'; - - @override - String get qa_ => 'دولة قطر'; - - @override - String get re_ => 'جمع شمل'; - - @override - String get ro_ => 'رومانيا'; - - @override - String get rs_ => 'صربيا'; - - @override - String get ru_ => 'روسيا'; - - @override - String get rw_ => 'رواندا'; - - @override - String get sa_ => 'المملكة العربية السعودية'; - - @override - String get sb_ => 'جزر سليمان'; - - @override - String get sc_ => 'سيشيل'; - - @override - String get sd_ => 'السودان'; - - @override - String get se_ => 'السويد'; - - @override - String get sg_ => 'سنغافورة'; - - @override - String get si_ => 'سلوفينيا'; - - @override - String get sk_ => 'سلوفاكيا'; - - @override - String get sl_ => 'سيرا ليون'; - - @override - String get sm_ => 'سان مارينو'; - - @override - String get sn_ => 'السنغال'; - - @override - String get so_ => 'الصومال'; - - @override - String get sr_ => 'سورينام'; - - @override - String get ss_ => 'جنوب السودان'; - - @override - String get st_ => 'ساو تومي وبرينسيبي'; - - @override - String get sv_ => 'السلفادور'; - - @override - String get sy_ => 'الجمهورية العربية السورية'; - - @override - String get sz_ => 'سوازيلاند'; - - @override - String get ta_ => 'تريستان دا كونها'; - - @override - String get tc_ => 'جزر تركس وكايكوس'; - - @override - String get td_ => 'تشاد'; - - @override - String get tg_ => 'توجو'; - - @override - String get th_ => 'تايلاند'; - - @override - String get tj_ => 'طاجيكستان'; - - @override - String get tk_ => 'توكيلاو'; - - @override - String get tl_ => 'تيمور ليشتي'; - - @override - String get tm_ => 'تركمانستان'; - - @override - String get tn_ => 'تونس'; - - @override - String get to_ => 'تونغا'; - - @override - String get tr_ => 'ديك رومى'; - - @override - String get tt_ => 'ترينداد وتوباغو'; - - @override - String get tv_ => 'توفالو'; - - @override - String get tw_ => 'تايوان'; - - @override - String get tz_ => 'تنزانيا ، جمهورية تنزانيا المتحدة'; - - @override - String get ua_ => 'أوكرانيا'; - - @override - String get ug_ => 'أوغندا'; - - @override - String get us_ => 'الولايات المتحدة الأمريكية'; - - @override - String get uy_ => 'أوروغواي'; - - @override - String get uz_ => 'أوزبكستان'; - - @override - String get va_ => 'الكرسي الرسولي (دولة الفاتيكان)'; - - @override - String get vc_ => 'سانت فنسنت وجزر غرينادين'; - - @override - String get ve_ => 'فنزويلا'; - - @override - String get vg_ => 'جزر العذراء البريطانية'; - - @override - String get vi_ => 'جزر فيرجن الأمريكية'; - - @override - String get vn_ => 'فيتنام'; - - @override - String get vu_ => 'فانواتو'; - - @override - String get wf_ => 'واليس وفوتونا'; - - @override - String get ws_ => 'ساموا'; - - @override - String get ye_ => 'اليمن'; - - @override - String get yt_ => 'مايوت'; - - @override - String get za_ => 'جنوب أفريقيا'; - - @override - String get zm_ => 'زامبيا'; - - @override - String get zw_ => 'زيمبابوي'; -} diff --git a/lib/l10n/generated/phone_field_localization_de.dart b/lib/l10n/generated/phone_field_localization_de.dart deleted file mode 100644 index 0d7d16c6..00000000 --- a/lib/l10n/generated/phone_field_localization_de.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for German (`de`). -class PhoneFieldLocalizationDe extends PhoneFieldLocalization { - PhoneFieldLocalizationDe([super.locale = 'de']); - - @override - String get invalidPhoneNumber => 'Ungültige Telefonnummer'; - - @override - String get invalidCountry => 'Ungültiges Land'; - - @override - String get invalidMobilePhoneNumber => 'Ungültige Handynummer'; - - @override - String get invalidFixedLinePhoneNumber => 'Ungültige Festnetznummer'; - - @override - String get requiredPhoneNumber => 'Telefonnummer erforderlich'; - - @override - String get noResultMessage => 'Kein Ergebnis'; - - @override - String get ac_ => 'Himmelfahrtsinsel'; - - @override - String get ad_ => 'Andorra'; - - @override - String get ae_ => 'Vereinigte Arabische Emirate'; - - @override - String get af_ => 'Afghanistan'; - - @override - String get ag_ => 'Antigua und Barbuda'; - - @override - String get ai_ => 'Anguilla'; - - @override - String get al_ => 'Albanien'; - - @override - String get am_ => 'Armenien'; - - @override - String get an_ => 'Niederländische Antillen'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antarktis'; - - @override - String get ar_ => 'Argentinien'; - - @override - String get as_ => 'Amerikanischen Samoa-Inseln'; - - @override - String get at_ => 'Österreich'; - - @override - String get au_ => 'Australien'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Aland Islands'; - - @override - String get az_ => 'Aserbaidschan'; - - @override - String get ba_ => 'Bosnien und Herzegowina'; - - @override - String get bb_ => 'Barbados'; - - @override - String get bd_ => 'Bangladesch'; - - @override - String get be_ => 'Belgien'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bulgarien'; - - @override - String get bh_ => 'Bahrain'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Benin'; - - @override - String get bl_ => 'Heiliger Barthelemy'; - - @override - String get bm_ => 'Bermuda'; - - @override - String get bn_ => 'Brunei Darussalam'; - - @override - String get bo_ => 'Bolivien, Plurinationaler Staat'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Brasilien'; - - @override - String get bs_ => 'Bahamas'; - - @override - String get bt_ => 'Bhutan'; - - @override - String get bw_ => 'Botswana'; - - @override - String get by_ => 'Weißrussland'; - - @override - String get bz_ => 'Belize'; - - @override - String get ca_ => 'Kanada'; - - @override - String get cc_ => 'Kokosinseln (Keelinginseln)'; - - @override - String get cd_ => 'Kongo, Demokratische Republik Kongo'; - - @override - String get cf_ => 'Zentralafrikanische Republik'; - - @override - String get cg_ => 'Kongo'; - - @override - String get ch_ => 'Schweiz'; - - @override - String get ci_ => 'Elfenbeinküste'; - - @override - String get ck_ => 'Cookinseln'; - - @override - String get cl_ => 'Chile'; - - @override - String get cm_ => 'Kamerun'; - - @override - String get cn_ => 'China'; - - @override - String get co_ => 'Kolumbien'; - - @override - String get cr_ => 'Costa Rica'; - - @override - String get cu_ => 'Kuba'; - - @override - String get cv_ => 'Kap Verde'; - - @override - String get cx_ => 'Weihnachtsinsel'; - - @override - String get cy_ => 'Zypern'; - - @override - String get cz_ => 'Tschechien'; - - @override - String get de_ => 'Deutschland'; - - @override - String get dj_ => 'Dschibuti'; - - @override - String get dk_ => 'Dänemark'; - - @override - String get dm_ => 'Dominica'; - - @override - String get do_ => 'Dominikanische Republik'; - - @override - String get dz_ => 'Algerien'; - - @override - String get ec_ => 'Ecuador'; - - @override - String get ee_ => 'Estland'; - - @override - String get eg_ => 'Ägypten'; - - @override - String get er_ => 'Eritrea'; - - @override - String get es_ => 'Spanien'; - - @override - String get et_ => 'Äthiopien'; - - @override - String get fi_ => 'Finnland'; - - @override - String get fj_ => 'Fidschi'; - - @override - String get fk_ => 'Falklandinseln (Malvinas)'; - - @override - String get fm_ => 'Mikronesien, Föderierte Staaten von Mikronesien'; - - @override - String get fo_ => 'Färöer Inseln'; - - @override - String get fr_ => 'Frankreich'; - - @override - String get ga_ => 'Gabun'; - - @override - String get gb_ => 'Vereinigtes Königreich'; - - @override - String get gd_ => 'Grenada'; - - @override - String get ge_ => 'Georgia'; - - @override - String get gf_ => 'Französisch-Guayana'; - - @override - String get gg_ => 'Guernsey'; - - @override - String get gh_ => 'Ghana'; - - @override - String get gi_ => 'Gibraltar'; - - @override - String get gl_ => 'Grönland'; - - @override - String get gm_ => 'Gambia'; - - @override - String get gn_ => 'Guinea'; - - @override - String get gp_ => 'Guadeloupe'; - - @override - String get gq_ => 'Äquatorialguinea'; - - @override - String get gr_ => 'Griechenland'; - - @override - String get gs_ => 'Süd-Georgien und die südlichen Sandwich-Inseln'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Guinea-Bissau'; - - @override - String get gy_ => 'Guyana'; - - @override - String get hk_ => 'Hongkong'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Kroatien'; - - @override - String get ht_ => 'Haiti'; - - @override - String get hu_ => 'Ungarn'; - - @override - String get id_ => 'Indonesien'; - - @override - String get ie_ => 'Irland'; - - @override - String get il_ => 'Israel'; - - @override - String get im_ => 'Isle of Man'; - - @override - String get in_ => 'Indien'; - - @override - String get io_ => 'Britisches Territorium des Indischen Ozeans'; - - @override - String get iq_ => 'Irak'; - - @override - String get ir_ => 'Iran, Islamische Republik Persischer Golf'; - - @override - String get is_ => 'Island'; - - @override - String get it_ => 'Italien'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Jamaika'; - - @override - String get jo_ => 'Jordanien'; - - @override - String get jp_ => 'Japan'; - - @override - String get ke_ => 'Kenia'; - - @override - String get kg_ => 'Kirgisistan'; - - @override - String get kh_ => 'Kambodscha'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Komoren'; - - @override - String get kn_ => 'St. Kitts und Nevis'; - - @override - String get kp_ => 'Korea, Demokratische Volksrepublik Korea'; - - @override - String get kr_ => 'Korea, Republik Südkorea'; - - @override - String get kw_ => 'Kuwait'; - - @override - String get ky_ => 'Cayman Inseln'; - - @override - String get kz_ => 'Kasachstan'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Libanon'; - - @override - String get lc_ => 'St. Lucia'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Liberia'; - - @override - String get ls_ => 'Lesotho'; - - @override - String get lt_ => 'Litauen'; - - @override - String get lu_ => 'Luxemburg'; - - @override - String get lv_ => 'Lettland'; - - @override - String get ly_ => 'Libyscher arabischer Jamahiriya'; - - @override - String get ma_ => 'Marokko'; - - @override - String get mc_ => 'Monaco'; - - @override - String get md_ => 'Moldawien'; - - @override - String get me_ => 'Montenegro'; - - @override - String get mf_ => 'Sankt Martin'; - - @override - String get mg_ => 'Madagaskar'; - - @override - String get mh_ => 'Marshallinseln'; - - @override - String get mk_ => 'Mazedonien'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar'; - - @override - String get mn_ => 'Mongolei'; - - @override - String get mo_ => 'Macao'; - - @override - String get mp_ => 'Nördliche Marianneninseln'; - - @override - String get mq_ => 'Martinique'; - - @override - String get mr_ => 'Mauretanien'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malta'; - - @override - String get mu_ => 'Mauritius'; - - @override - String get mv_ => 'Malediven'; - - @override - String get mw_ => 'Malawi'; - - @override - String get mx_ => 'Mexiko'; - - @override - String get my_ => 'Malaysia'; - - @override - String get mz_ => 'Mosambik'; - - @override - String get na_ => 'Namibia'; - - @override - String get nc_ => 'Neu-Kaledonien'; - - @override - String get ne_ => 'Niger'; - - @override - String get nf_ => 'Norfolkinsel'; - - @override - String get ng_ => 'Nigeria'; - - @override - String get ni_ => 'Nicaragua'; - - @override - String get nl_ => 'Niederlande'; - - @override - String get no_ => 'Norwegen'; - - @override - String get np_ => 'Nepal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'Neuseeland'; - - @override - String get om_ => 'Oman'; - - @override - String get pa_ => 'Panama'; - - @override - String get pe_ => 'Peru'; - - @override - String get pf_ => 'Französisch Polynesien'; - - @override - String get pg_ => 'Papua Neu-Guinea'; - - @override - String get ph_ => 'Philippinen'; - - @override - String get pk_ => 'Pakistan'; - - @override - String get pl_ => 'Polen'; - - @override - String get pm_ => 'Saint Pierre und Miquelon'; - - @override - String get pn_ => 'Pitcairn'; - - @override - String get pr_ => 'Puerto Rico'; - - @override - String get ps_ => 'Besetzte palästinensische Gebiete'; - - @override - String get pt_ => 'Portugal'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paraguay'; - - @override - String get qa_ => 'Katar'; - - @override - String get re_ => 'Wiedervereinigung'; - - @override - String get ro_ => 'Rumänien'; - - @override - String get rs_ => 'Serbien'; - - @override - String get ru_ => 'Russland'; - - @override - String get rw_ => 'Ruanda'; - - @override - String get sa_ => 'Saudi-Arabien'; - - @override - String get sb_ => 'Salomon-Inseln'; - - @override - String get sc_ => 'Seychellen'; - - @override - String get sd_ => 'Sudan'; - - @override - String get se_ => 'Schweden'; - - @override - String get sg_ => 'Singapur'; - - @override - String get si_ => 'Slowenien'; - - @override - String get sk_ => 'Slowakei'; - - @override - String get sl_ => 'Sierra Leone'; - - @override - String get sm_ => 'San Marino'; - - @override - String get sn_ => 'Senegal'; - - @override - String get so_ => 'Somalia'; - - @override - String get sr_ => 'Suriname'; - - @override - String get ss_ => 'Südsudan'; - - @override - String get st_ => 'Sao Tome und Principe'; - - @override - String get sv_ => 'El Salvador'; - - @override - String get sy_ => 'Syrische Arabische Republik'; - - @override - String get sz_ => 'Swasiland'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'Turks- und Caicosinseln'; - - @override - String get td_ => 'Tschad'; - - @override - String get tg_ => 'Gehen'; - - @override - String get th_ => 'Thailand'; - - @override - String get tj_ => 'Tadschikistan'; - - @override - String get tk_ => 'Tokelau'; - - @override - String get tl_ => 'Timor-Leste'; - - @override - String get tm_ => 'Turkmenistan'; - - @override - String get tn_ => 'Tunesien'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'Truthahn'; - - @override - String get tt_ => 'Trinidad und Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Taiwan'; - - @override - String get tz_ => 'Tansania, Vereinigte Republik Tansania'; - - @override - String get ua_ => 'Ukraine'; - - @override - String get ug_ => 'Uganda'; - - @override - String get us_ => 'Vereinigte Staaten'; - - @override - String get uy_ => 'Uruguay'; - - @override - String get uz_ => 'Usbekistan'; - - @override - String get va_ => 'Heiliger Stuhl (Staat der Vatikanstadt)'; - - @override - String get vc_ => 'St. Vincent und die Grenadinen'; - - @override - String get ve_ => 'Venezuela'; - - @override - String get vg_ => 'Virgin Inseln, Britisch'; - - @override - String get vi_ => 'Jungferninseln, USA'; - - @override - String get vn_ => 'Vietnam'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Wallis und Futuna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Jemen'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'Südafrika'; - - @override - String get zm_ => 'Sambia'; - - @override - String get zw_ => 'Zimbabwe'; -} diff --git a/lib/l10n/generated/phone_field_localization_el.dart b/lib/l10n/generated/phone_field_localization_el.dart deleted file mode 100644 index c64e5538..00000000 --- a/lib/l10n/generated/phone_field_localization_el.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Modern Greek (`el`). -class PhoneFieldLocalizationEl extends PhoneFieldLocalization { - PhoneFieldLocalizationEl([super.locale = 'el']); - - @override - String get invalidPhoneNumber => 'Μη έγκυρος αριθμός τηλεφώνου'; - - @override - String get invalidCountry => 'Μη έγκυρη χώρα'; - - @override - String get invalidMobilePhoneNumber => 'Μη έγκυρος αριθμός κινητού τηλεφώνου'; - - @override - String get invalidFixedLinePhoneNumber => 'Μη έγκυρος αριθμός σταθερού τηλεφώνου'; - - @override - String get requiredPhoneNumber => 'Απαιτούμενος αριθμός τηλεφώνου'; - - @override - String get noResultMessage => 'Κανένα αποτέλεσμα'; - - @override - String get ac_ => 'Νησί της Ανάληψης'; - - @override - String get ad_ => 'Ανδόρα'; - - @override - String get ae_ => 'Ηνωμένα Αραβικά Εμιράτα'; - - @override - String get af_ => 'Αφγανιστάν'; - - @override - String get ag_ => 'Αντίγκουα και Μπαρμπούντα'; - - @override - String get ai_ => 'Ανγκουίλα'; - - @override - String get al_ => 'Αλβανία'; - - @override - String get am_ => 'Αρμενία'; - - @override - String get an_ => 'Ολλανδικές Αντίλλες'; - - @override - String get ao_ => 'Αγκόλα'; - - @override - String get aq_ => 'Ανταρκτική'; - - @override - String get ar_ => 'Αργεντίνη'; - - @override - String get as_ => 'Αμερικάνικη Σαμόα'; - - @override - String get at_ => 'Αυστρία'; - - @override - String get au_ => 'Αυστραλία'; - - @override - String get aw_ => 'Αρούμπα'; - - @override - String get ax_ => 'Νησιά Άλαντ'; - - @override - String get az_ => 'Αζερμπαϊτζάν'; - - @override - String get ba_ => 'Βοσνία και Ερζεγοβίνη'; - - @override - String get bb_ => 'Μπαρμπάντος'; - - @override - String get bd_ => 'Μπαγκλαντές'; - - @override - String get be_ => 'Βέλγιο'; - - @override - String get bf_ => 'Μπουρκίνα Φάσο'; - - @override - String get bg_ => 'Βουλγαρία'; - - @override - String get bh_ => 'Μπαχρέιν'; - - @override - String get bi_ => 'Μπουρούντι'; - - @override - String get bj_ => 'Μπενίν'; - - @override - String get bl_ => 'Άγιος Βαρθολομαίος'; - - @override - String get bm_ => 'Βερμούδα'; - - @override - String get bn_ => 'Μπρουνάι Νταρουσαλάμ'; - - @override - String get bo_ => 'Βολιβία, πολυεθνικό κράτος της'; - - @override - String get bq_ => 'Μποναίρ'; - - @override - String get br_ => 'Βραζιλία'; - - @override - String get bs_ => 'Μπαχάμες'; - - @override - String get bt_ => 'Μπουτάν'; - - @override - String get bw_ => 'Μποτσουάνα'; - - @override - String get by_ => 'Λευκορωσία'; - - @override - String get bz_ => 'Μπελίζ'; - - @override - String get ca_ => 'Καναδάς'; - - @override - String get cc_ => 'Νησιά Cocos (Keeling).'; - - @override - String get cd_ => 'Κονγκό, Λαϊκή Δημοκρατία του Κονγκό'; - - @override - String get cf_ => 'Δημοκρατία Κεντρικής Αφρικής'; - - @override - String get cg_ => 'Κογκό'; - - @override - String get ch_ => 'Ελβετία'; - - @override - String get ci_ => 'Ακτή Ελεφαντοστού'; - - @override - String get ck_ => 'Νήσοι Κουκ'; - - @override - String get cl_ => 'Χιλή'; - - @override - String get cm_ => 'Καμερούν'; - - @override - String get cn_ => 'Κίνα'; - - @override - String get co_ => 'Κολομβία'; - - @override - String get cr_ => 'Κόστα Ρίκα'; - - @override - String get cu_ => 'Κούβα'; - - @override - String get cv_ => 'Πράσινο Ακρωτήριο'; - - @override - String get cx_ => 'Νησί των Χριστουγέννων'; - - @override - String get cy_ => 'Κύπρος'; - - @override - String get cz_ => 'Τσεχική Δημοκρατία'; - - @override - String get de_ => 'Γερμανία'; - - @override - String get dj_ => 'Τζιμπουτί'; - - @override - String get dk_ => 'Δανία'; - - @override - String get dm_ => 'Δομίνικα'; - - @override - String get do_ => 'Δομινικανή Δημοκρατία'; - - @override - String get dz_ => 'Αλγερία'; - - @override - String get ec_ => 'Εκουαδόρ'; - - @override - String get ee_ => 'Εσθονία'; - - @override - String get eg_ => 'Αίγυπτος'; - - @override - String get er_ => 'Ερυθραία'; - - @override - String get es_ => 'Ισπανία'; - - @override - String get et_ => 'Αιθιοπία'; - - @override - String get fi_ => 'Φινλανδία'; - - @override - String get fj_ => 'Φίτζι'; - - @override - String get fk_ => 'Νησιά Φώκλαντ (Μαλβίνες)'; - - @override - String get fm_ => 'Μικρονησία, Ομόσπονδα Κράτη της Μικρονησίας'; - - @override - String get fo_ => 'Νήσοι Φερόες'; - - @override - String get fr_ => 'Γαλλία'; - - @override - String get ga_ => 'Γκαμπόν'; - - @override - String get gb_ => 'Ηνωμένο Βασίλειο'; - - @override - String get gd_ => 'Γρενάδα'; - - @override - String get ge_ => 'Γεωργία'; - - @override - String get gf_ => 'Γαλλική Γουιάνα'; - - @override - String get gg_ => 'Γκέρνσεϊ'; - - @override - String get gh_ => 'Γκάνα'; - - @override - String get gi_ => 'Γιβραλτάρ'; - - @override - String get gl_ => 'Γροιλανδία'; - - @override - String get gm_ => 'Γκάμπια'; - - @override - String get gn_ => 'Γκινέα'; - - @override - String get gp_ => 'Γουαδελούπη'; - - @override - String get gq_ => 'Ισημερινή Γουινέα'; - - @override - String get gr_ => 'Ελλάδα'; - - @override - String get gs_ => 'Νότια Γεωργία και τα Νότια Σάντουιτς Νησιά'; - - @override - String get gt_ => 'Γουατεμάλα'; - - @override - String get gu_ => 'Γκουάμ'; - - @override - String get gw_ => 'Γουινέα-Μπισάου'; - - @override - String get gy_ => 'Γουιάνα'; - - @override - String get hk_ => 'Χονγκ Κονγκ'; - - @override - String get hn_ => 'Ονδούρα'; - - @override - String get hr_ => 'Κροατία'; - - @override - String get ht_ => 'Αΐτη'; - - @override - String get hu_ => 'Ουγγαρία'; - - @override - String get id_ => 'Ινδονησία'; - - @override - String get ie_ => 'Ιρλανδία'; - - @override - String get il_ => 'Ισραήλ'; - - @override - String get im_ => 'Isle of Man'; - - @override - String get in_ => 'Ινδία'; - - @override - String get io_ => 'Βρετανική επικράτεια Ινδικού Ωκεανού'; - - @override - String get iq_ => 'Ιράκ'; - - @override - String get ir_ => 'Ιράν, Ισλαμική Δημοκρατία του Περσικού Κόλπου'; - - @override - String get is_ => 'Ισλανδία'; - - @override - String get it_ => 'Ιταλία'; - - @override - String get je_ => 'Φανέλα'; - - @override - String get jm_ => 'Ιαμαϊκή'; - - @override - String get jo_ => 'Ιορδανία'; - - @override - String get jp_ => 'Ιαπωνία'; - - @override - String get ke_ => 'Κενύα'; - - @override - String get kg_ => 'Κιργιζιστάν'; - - @override - String get kh_ => 'Καμπότζη'; - - @override - String get ki_ => 'Κιριμπάτι'; - - @override - String get km_ => 'Κομόρες'; - - @override - String get kn_ => 'Saint Kitts and Nevis'; - - @override - String get kp_ => 'Κορέα, Λαϊκή Δημοκρατία της Κορέας'; - - @override - String get kr_ => 'Κορέα, Δημοκρατία της Νότιας Κορέας'; - - @override - String get kw_ => 'Κουβέιτ'; - - @override - String get ky_ => 'Νησιά Κέιμαν'; - - @override - String get kz_ => 'Καζακστάν'; - - @override - String get la_ => 'Λάος'; - - @override - String get lb_ => 'Λίβανος'; - - @override - String get lc_ => 'Αγία Λουκία'; - - @override - String get li_ => 'Λιχτενστάιν'; - - @override - String get lk_ => 'Σρι Λάνκα'; - - @override - String get lr_ => 'Λιβερία'; - - @override - String get ls_ => 'Λεσότο'; - - @override - String get lt_ => 'Λιθουανία'; - - @override - String get lu_ => 'Λουξεμβούργο'; - - @override - String get lv_ => 'Λετονία'; - - @override - String get ly_ => 'Λιβυκή Αραβική Τζαμαχίρια'; - - @override - String get ma_ => 'Μαρόκο'; - - @override - String get mc_ => 'Μονακό'; - - @override - String get md_ => 'Μολδαβία'; - - @override - String get me_ => 'Μαυροβούνιο'; - - @override - String get mf_ => 'Άγιος Μαρτίνος'; - - @override - String get mg_ => 'Μαδαγασκάρη'; - - @override - String get mh_ => 'Νήσοι Μάρσαλ'; - - @override - String get mk_ => 'Μακεδόνια'; - - @override - String get ml_ => 'Μάλι'; - - @override - String get mm_ => 'Μιανμάρ'; - - @override - String get mn_ => 'Μογγολία'; - - @override - String get mo_ => 'Μακάο'; - - @override - String get mp_ => 'Βορεια Νησια Μαριανα'; - - @override - String get mq_ => 'Μαρτινίκα'; - - @override - String get mr_ => 'Μαυριτανία'; - - @override - String get ms_ => 'Μονσεράτ'; - - @override - String get mt_ => 'Μάλτα'; - - @override - String get mu_ => 'Μαυρίκιος'; - - @override - String get mv_ => 'Μαλδίβες'; - - @override - String get mw_ => 'Μαλάουι'; - - @override - String get mx_ => 'Μεξικό'; - - @override - String get my_ => 'Μαλαισία'; - - @override - String get mz_ => 'Μοζαμβίκη'; - - @override - String get na_ => 'Ναμίμπια'; - - @override - String get nc_ => 'Νέα Καληδονία'; - - @override - String get ne_ => 'Νίγηρας'; - - @override - String get nf_ => 'Νησί Νόρφολκ'; - - @override - String get ng_ => 'Νιγηρία'; - - @override - String get ni_ => 'Νικαράγουα'; - - @override - String get nl_ => 'Ολλανδία'; - - @override - String get no_ => 'Νορβηγία'; - - @override - String get np_ => 'Νεπάλ'; - - @override - String get nr_ => 'Ναούρου'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'Νέα Ζηλανδία'; - - @override - String get om_ => 'Ομάν'; - - @override - String get pa_ => 'Παναμάς'; - - @override - String get pe_ => 'Περού'; - - @override - String get pf_ => 'Γαλλική Πολυνησία'; - - @override - String get pg_ => 'Παπούα Νέα Γουινέα'; - - @override - String get ph_ => 'Φιλιππίνες'; - - @override - String get pk_ => 'Πακιστάν'; - - @override - String get pl_ => 'Πολωνία'; - - @override - String get pm_ => 'Saint Pierre and Miquelon'; - - @override - String get pn_ => 'Πίτκερν'; - - @override - String get pr_ => 'Πουέρτο Ρίκο'; - - @override - String get ps_ => 'Παλαιστινιακό έδαφος, κατεχόμενο'; - - @override - String get pt_ => 'Πορτογαλία'; - - @override - String get pw_ => 'Παλάου'; - - @override - String get py_ => 'Παραγουάη'; - - @override - String get qa_ => 'Κατάρ'; - - @override - String get re_ => 'Επανένωση'; - - @override - String get ro_ => 'Ρουμανία'; - - @override - String get rs_ => 'Σερβία'; - - @override - String get ru_ => 'Ρωσία'; - - @override - String get rw_ => 'Ρουάντα'; - - @override - String get sa_ => 'Σαουδική Αραβία'; - - @override - String get sb_ => 'Νησιά του Σολομώντα'; - - @override - String get sc_ => 'Σεϋχέλλες'; - - @override - String get sd_ => 'Σουδάν'; - - @override - String get se_ => 'Σουηδία'; - - @override - String get sg_ => 'Σιγκαπούρη'; - - @override - String get si_ => 'Σλοβενία'; - - @override - String get sk_ => 'Σλοβακία'; - - @override - String get sl_ => 'Σιέρρα Λεόνε'; - - @override - String get sm_ => 'Σαν Μαρίνο'; - - @override - String get sn_ => 'Σενεγάλη'; - - @override - String get so_ => 'Σομαλία'; - - @override - String get sr_ => 'Σουρινάμ'; - - @override - String get ss_ => 'Νότιο Σουδάν'; - - @override - String get st_ => 'Σάο Τομέ και Πρίνσιπε'; - - @override - String get sv_ => 'Ελ Σαλβαδόρ'; - - @override - String get sy_ => 'Αραβική Δημοκρατία της Συρίας'; - - @override - String get sz_ => 'Σουαζιλάνδη'; - - @override - String get ta_ => 'Τριστάν ντα Κούνια'; - - @override - String get tc_ => 'Νήσοι Τερκς και Κάικος'; - - @override - String get td_ => 'Τσαντ'; - - @override - String get tg_ => 'Τογκό'; - - @override - String get th_ => 'Ταϊλάνδη'; - - @override - String get tj_ => 'Τατζικιστάν'; - - @override - String get tk_ => 'Τοκελάου'; - - @override - String get tl_ => 'Ανατολικό Τιμόρ'; - - @override - String get tm_ => 'Τουρκμενιστάν'; - - @override - String get tn_ => 'Τυνησία'; - - @override - String get to_ => 'Τόνγκα'; - - @override - String get tr_ => 'Τουρκία'; - - @override - String get tt_ => 'Τρινιντάντ και Τομπάγκο'; - - @override - String get tv_ => 'Τουβαλού'; - - @override - String get tw_ => 'Ταϊβάν'; - - @override - String get tz_ => 'Τανζανία, Ενωμένη Δημοκρατία της Τανζανίας'; - - @override - String get ua_ => 'Ουκρανία'; - - @override - String get ug_ => 'Ουγκάντα'; - - @override - String get us_ => 'Ηνωμένες Πολιτείες'; - - @override - String get uy_ => 'Ουρουγουάη'; - - @override - String get uz_ => 'Ουζμπεκιστάν'; - - @override - String get va_ => 'Αγία Έδρα (Κράτος της Πόλης του Βατικανού)'; - - @override - String get vc_ => 'Άγιος Βικέντιος και Γρεναδίνες'; - - @override - String get ve_ => 'Βενεζουέλα'; - - @override - String get vg_ => 'Παρθένοι Νήσοι, Βρετανοί'; - - @override - String get vi_ => 'Παρθένοι Νήσοι, Η.Π.Α.'; - - @override - String get vn_ => 'Βιετνάμ'; - - @override - String get vu_ => 'Βανουάτου'; - - @override - String get wf_ => 'Wallis και Futuna'; - - @override - String get ws_ => 'Σαμόα'; - - @override - String get ye_ => 'Γέμενη'; - - @override - String get yt_ => 'Μαγιότ'; - - @override - String get za_ => 'Νότια Αφρική'; - - @override - String get zm_ => 'Ζάμπια'; - - @override - String get zw_ => 'Ζιμπάμπουe'; -} diff --git a/lib/l10n/generated/phone_field_localization_en.dart b/lib/l10n/generated/phone_field_localization_en.dart deleted file mode 100644 index a10d384f..00000000 --- a/lib/l10n/generated/phone_field_localization_en.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for English (`en`). -class PhoneFieldLocalizationEn extends PhoneFieldLocalization { - PhoneFieldLocalizationEn([super.locale = 'en']); - - @override - String get invalidPhoneNumber => 'Invalid phone number'; - - @override - String get invalidCountry => 'Invalid country'; - - @override - String get invalidMobilePhoneNumber => 'Invalid mobile phone number'; - - @override - String get invalidFixedLinePhoneNumber => 'Invalid fixed line phone number'; - - @override - String get requiredPhoneNumber => 'Required phone number'; - - @override - String get noResultMessage => 'No result'; - - @override - String get ac_ => 'Ascension Island'; - - @override - String get ad_ => 'Andorra'; - - @override - String get ae_ => 'United Arab Emirates'; - - @override - String get af_ => 'Afghanistan'; - - @override - String get ag_ => 'Antigua and Barbuda'; - - @override - String get ai_ => 'Anguilla'; - - @override - String get al_ => 'Albania'; - - @override - String get am_ => 'Armenia'; - - @override - String get an_ => 'Netherlands Antilles'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antarctica'; - - @override - String get ar_ => 'Argentina'; - - @override - String get as_ => 'American Samoa'; - - @override - String get at_ => 'Austria'; - - @override - String get au_ => 'Australia'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Aland Islands'; - - @override - String get az_ => 'Azerbaijan'; - - @override - String get ba_ => 'Bosnia and Herzegovina'; - - @override - String get bb_ => 'Barbados'; - - @override - String get bd_ => 'Bangladesh'; - - @override - String get be_ => 'Belgium'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bulgaria'; - - @override - String get bh_ => 'Bahrain'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Benin'; - - @override - String get bl_ => 'Saint Barthelemy'; - - @override - String get bm_ => 'Bermuda'; - - @override - String get bn_ => 'Brunei Darussalam'; - - @override - String get bo_ => 'Bolivia, Plurinational State of'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Brazil'; - - @override - String get bs_ => 'Bahamas'; - - @override - String get bt_ => 'Bhutan'; - - @override - String get bw_ => 'Botswana'; - - @override - String get by_ => 'Belarus'; - - @override - String get bz_ => 'Belize'; - - @override - String get ca_ => 'Canada'; - - @override - String get cc_ => 'Cocos (Keeling) Islands'; - - @override - String get cd_ => 'Congo, The Democratic Republic of the Congo'; - - @override - String get cf_ => 'Central African Republic'; - - @override - String get cg_ => 'Congo'; - - @override - String get ch_ => 'Switzerland'; - - @override - String get ci_ => 'Cote d\'Ivoire'; - - @override - String get ck_ => 'Cook Islands'; - - @override - String get cl_ => 'Chile'; - - @override - String get cm_ => 'Cameroon'; - - @override - String get cn_ => 'China'; - - @override - String get co_ => 'Colombia'; - - @override - String get cr_ => 'Costa Rica'; - - @override - String get cu_ => 'Cuba'; - - @override - String get cv_ => 'Cape Verde'; - - @override - String get cx_ => 'Christmas Island'; - - @override - String get cy_ => 'Cyprus'; - - @override - String get cz_ => 'Czech Republic'; - - @override - String get de_ => 'Germany'; - - @override - String get dj_ => 'Djibouti'; - - @override - String get dk_ => 'Denmark'; - - @override - String get dm_ => 'Dominica'; - - @override - String get do_ => 'Dominican Republic'; - - @override - String get dz_ => 'Algeria'; - - @override - String get ec_ => 'Ecuador'; - - @override - String get ee_ => 'Estonia'; - - @override - String get eg_ => 'Egypt'; - - @override - String get er_ => 'Eritrea'; - - @override - String get es_ => 'Spain'; - - @override - String get et_ => 'Ethiopia'; - - @override - String get fi_ => 'Finland'; - - @override - String get fj_ => 'Fiji'; - - @override - String get fk_ => 'Falkland Islands (Malvinas)'; - - @override - String get fm_ => 'Micronesia, Federated States of Micronesia'; - - @override - String get fo_ => 'Faroe Islands'; - - @override - String get fr_ => 'France'; - - @override - String get ga_ => 'Gabon'; - - @override - String get gb_ => 'United Kingdom'; - - @override - String get gd_ => 'Grenada'; - - @override - String get ge_ => 'Georgia'; - - @override - String get gf_ => 'French Guiana'; - - @override - String get gg_ => 'Guernsey'; - - @override - String get gh_ => 'Ghana'; - - @override - String get gi_ => 'Gibraltar'; - - @override - String get gl_ => 'Greenland'; - - @override - String get gm_ => 'Gambia'; - - @override - String get gn_ => 'Guinea'; - - @override - String get gp_ => 'Guadeloupe'; - - @override - String get gq_ => 'Equatorial Guinea'; - - @override - String get gr_ => 'Greece'; - - @override - String get gs_ => 'South Georgia and the South Sandwich Islands'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Guinea-Bissau'; - - @override - String get gy_ => 'Guyana'; - - @override - String get hk_ => 'Hong Kong'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Croatia'; - - @override - String get ht_ => 'Haiti'; - - @override - String get hu_ => 'Hungary'; - - @override - String get id_ => 'Indonesia'; - - @override - String get ie_ => 'Ireland'; - - @override - String get il_ => 'Israel'; - - @override - String get im_ => 'Isle of Man'; - - @override - String get in_ => 'India'; - - @override - String get io_ => 'British Indian Ocean Territory'; - - @override - String get iq_ => 'Iraq'; - - @override - String get ir_ => 'Iran, Islamic Republic of'; - - @override - String get is_ => 'Iceland'; - - @override - String get it_ => 'Italy'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Jamaica'; - - @override - String get jo_ => 'Jordan'; - - @override - String get jp_ => 'Japan'; - - @override - String get ke_ => 'Kenya'; - - @override - String get kg_ => 'Kyrgyzstan'; - - @override - String get kh_ => 'Cambodia'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Comoros'; - - @override - String get kn_ => 'Saint Kitts and Nevis'; - - @override - String get kp_ => 'Korea, Democratic People\'s Republic of Korea'; - - @override - String get kr_ => 'Korea, Republic of South Korea'; - - @override - String get kw_ => 'Kuwait'; - - @override - String get ky_ => 'Cayman Islands'; - - @override - String get kz_ => 'Kazakhstan'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Lebanon'; - - @override - String get lc_ => 'Saint Lucia'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Liberia'; - - @override - String get ls_ => 'Lesotho'; - - @override - String get lt_ => 'Lithuania'; - - @override - String get lu_ => 'Luxembourg'; - - @override - String get lv_ => 'Latvia'; - - @override - String get ly_ => 'Libya'; - - @override - String get ma_ => 'Morocco'; - - @override - String get mc_ => 'Monaco'; - - @override - String get md_ => 'Moldova'; - - @override - String get me_ => 'Montenegro'; - - @override - String get mf_ => 'Saint Martin'; - - @override - String get mg_ => 'Madagascar'; - - @override - String get mh_ => 'Marshall Islands'; - - @override - String get mk_ => 'Macedonia'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar'; - - @override - String get mn_ => 'Mongolia'; - - @override - String get mo_ => 'Macao'; - - @override - String get mp_ => 'Northern Mariana Islands'; - - @override - String get mq_ => 'Martinique'; - - @override - String get mr_ => 'Mauritania'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malta'; - - @override - String get mu_ => 'Mauritius'; - - @override - String get mv_ => 'Maldives'; - - @override - String get mw_ => 'Malawi'; - - @override - String get mx_ => 'Mexico'; - - @override - String get my_ => 'Malaysia'; - - @override - String get mz_ => 'Mozambique'; - - @override - String get na_ => 'Namibia'; - - @override - String get nc_ => 'New Caledonia'; - - @override - String get ne_ => 'Niger'; - - @override - String get nf_ => 'Norfolk Island'; - - @override - String get ng_ => 'Nigeria'; - - @override - String get ni_ => 'Nicaragua'; - - @override - String get nl_ => 'Netherlands'; - - @override - String get no_ => 'Norway'; - - @override - String get np_ => 'Nepal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'New Zealand'; - - @override - String get om_ => 'Oman'; - - @override - String get pa_ => 'Panama'; - - @override - String get pe_ => 'Peru'; - - @override - String get pf_ => 'French Polynesia'; - - @override - String get pg_ => 'Papua New Guinea'; - - @override - String get ph_ => 'Philippines'; - - @override - String get pk_ => 'Pakistan'; - - @override - String get pl_ => 'Poland'; - - @override - String get pm_ => 'Saint Pierre and Miquelon'; - - @override - String get pn_ => 'Pitcairn'; - - @override - String get pr_ => 'Puerto Rico'; - - @override - String get ps_ => 'Palestinian Territory, Occupied'; - - @override - String get pt_ => 'Portugal'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paraguay'; - - @override - String get qa_ => 'Qatar'; - - @override - String get re_ => 'Reunion'; - - @override - String get ro_ => 'Romania'; - - @override - String get rs_ => 'Serbia'; - - @override - String get ru_ => 'Russia'; - - @override - String get rw_ => 'Rwanda'; - - @override - String get sa_ => 'Saudi Arabia'; - - @override - String get sb_ => 'Solomon Islands'; - - @override - String get sc_ => 'Seychelles'; - - @override - String get sd_ => 'Sudan'; - - @override - String get se_ => 'Sweden'; - - @override - String get sg_ => 'Singapore'; - - @override - String get si_ => 'Slovenia'; - - @override - String get sk_ => 'Slovakia'; - - @override - String get sl_ => 'Sierra Leone'; - - @override - String get sm_ => 'San Marino'; - - @override - String get sn_ => 'Senegal'; - - @override - String get so_ => 'Somalia'; - - @override - String get sr_ => 'Suriname'; - - @override - String get ss_ => 'South Sudan'; - - @override - String get st_ => 'Sao Tome and Principe'; - - @override - String get sv_ => 'El Salvador'; - - @override - String get sy_ => 'Syrian Arab Republic'; - - @override - String get sz_ => 'Swaziland'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'Turks and Caicos Islands'; - - @override - String get td_ => 'Chad'; - - @override - String get tg_ => 'Togo'; - - @override - String get th_ => 'Thailand'; - - @override - String get tj_ => 'Tajikistan'; - - @override - String get tk_ => 'Tokelau'; - - @override - String get tl_ => 'Timor-Leste'; - - @override - String get tm_ => 'Turkmenistan'; - - @override - String get tn_ => 'Tunisia'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'Türkiye'; - - @override - String get tt_ => 'Trinidad and Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Taiwan'; - - @override - String get tz_ => 'Tanzania, United Republic of Tanzania'; - - @override - String get ua_ => 'Ukraine'; - - @override - String get ug_ => 'Uganda'; - - @override - String get us_ => 'United States'; - - @override - String get uy_ => 'Uruguay'; - - @override - String get uz_ => 'Uzbekistan'; - - @override - String get va_ => 'Holy See (Vatican City State)'; - - @override - String get vc_ => 'Saint Vincent and the Grenadines'; - - @override - String get ve_ => 'Venezuela'; - - @override - String get vg_ => 'Virgin Islands, British'; - - @override - String get vi_ => 'Virgin Islands, U.S.'; - - @override - String get vn_ => 'Vietnam'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Wallis and Futuna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Yemen'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'South Africa'; - - @override - String get zm_ => 'Zambia'; - - @override - String get zw_ => 'Zimbabwe'; -} diff --git a/lib/l10n/generated/phone_field_localization_es.dart b/lib/l10n/generated/phone_field_localization_es.dart deleted file mode 100644 index 884a146d..00000000 --- a/lib/l10n/generated/phone_field_localization_es.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Spanish Castilian (`es`). -class PhoneFieldLocalizationEs extends PhoneFieldLocalization { - PhoneFieldLocalizationEs([super.locale = 'es']); - - @override - String get invalidPhoneNumber => 'Numero de telefono invalido'; - - @override - String get invalidCountry => 'País invalido'; - - @override - String get invalidMobilePhoneNumber => 'Número de teléfono celular invalido'; - - @override - String get invalidFixedLinePhoneNumber => 'Número de teléfono fijo invalido'; - - @override - String get requiredPhoneNumber => 'Número de teléfono obligatorio'; - - @override - String get noResultMessage => 'Sin resultados'; - - @override - String get ac_ => 'Isla Ascencion'; - - @override - String get ad_ => 'Andorra'; - - @override - String get ae_ => 'Emiratos Árabes Unidos'; - - @override - String get af_ => 'Afganistán'; - - @override - String get ag_ => 'Antigua y Barbuda'; - - @override - String get ai_ => 'Anguila'; - - @override - String get al_ => 'Albania'; - - @override - String get am_ => 'Armenia'; - - @override - String get an_ => 'Antillas Holandesas'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antártida'; - - @override - String get ar_ => 'Argentina'; - - @override - String get as_ => 'Samoa Americana'; - - @override - String get at_ => 'Austria'; - - @override - String get au_ => 'Australia'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Islas Aland'; - - @override - String get az_ => 'Azerbaiyán'; - - @override - String get ba_ => 'Bosnia y Herzegovina'; - - @override - String get bb_ => 'Barbados'; - - @override - String get bd_ => 'Bangladesh'; - - @override - String get be_ => 'Bélgica'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bulgaria'; - - @override - String get bh_ => 'Bahréin'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Benin'; - - @override - String get bl_ => 'San Bartolomé'; - - @override - String get bm_ => 'islas Bermudas'; - - @override - String get bn_ => 'Brunei Darussalam'; - - @override - String get bo_ => 'Bolivia, Estado Plurinacional de'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Brasil'; - - @override - String get bs_ => 'Bahamas'; - - @override - String get bt_ => 'Bután'; - - @override - String get bw_ => 'Botswana'; - - @override - String get by_ => 'Bielorrusia'; - - @override - String get bz_ => 'Belice'; - - @override - String get ca_ => 'Canadá'; - - @override - String get cc_ => 'Islas Cocos (Keeling)'; - - @override - String get cd_ => 'Congo, República Democrática del Congo'; - - @override - String get cf_ => 'República Centroafricana'; - - @override - String get cg_ => 'Congo'; - - @override - String get ch_ => 'Suiza'; - - @override - String get ci_ => 'Costa de Marfil'; - - @override - String get ck_ => 'Islas Cook'; - - @override - String get cl_ => 'Chile'; - - @override - String get cm_ => 'Camerún'; - - @override - String get cn_ => 'porcelana'; - - @override - String get co_ => 'Colombia'; - - @override - String get cr_ => 'Costa Rica'; - - @override - String get cu_ => 'Cuba'; - - @override - String get cv_ => 'Cabo Verde'; - - @override - String get cx_ => 'Isla de Navidad'; - - @override - String get cy_ => 'Chipre'; - - @override - String get cz_ => 'República Checa'; - - @override - String get de_ => 'Alemania'; - - @override - String get dj_ => 'Djibouti'; - - @override - String get dk_ => 'Dinamarca'; - - @override - String get dm_ => 'Dominica'; - - @override - String get do_ => 'República Dominicana'; - - @override - String get dz_ => 'Argelia'; - - @override - String get ec_ => 'Ecuador'; - - @override - String get ee_ => 'Estonia'; - - @override - String get eg_ => 'Egipto'; - - @override - String get er_ => 'Eritrea'; - - @override - String get es_ => 'España'; - - @override - String get et_ => 'Etiopía'; - - @override - String get fi_ => 'Finlandia'; - - @override - String get fj_ => 'Fiyi'; - - @override - String get fk_ => 'Islas Falkland (Malvinas)'; - - @override - String get fm_ => 'Micronesia, Estados Federados de Micronesia'; - - @override - String get fo_ => 'Islas Faroe'; - - @override - String get fr_ => 'Francia'; - - @override - String get ga_ => 'Gabón'; - - @override - String get gb_ => 'Reino Unido'; - - @override - String get gd_ => 'Granada'; - - @override - String get ge_ => 'Georgia'; - - @override - String get gf_ => 'Guayana Francesa'; - - @override - String get gg_ => 'Guernsey'; - - @override - String get gh_ => 'Ghana'; - - @override - String get gi_ => 'Gibraltar'; - - @override - String get gl_ => 'Groenlandia'; - - @override - String get gm_ => 'Gambia'; - - @override - String get gn_ => 'Guinea'; - - @override - String get gp_ => 'Guadalupe'; - - @override - String get gq_ => 'Guinea Ecuatorial'; - - @override - String get gr_ => 'Grecia'; - - @override - String get gs_ => 'Georgia del sur y las islas Sandwich del sur'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Guinea-Bissau'; - - @override - String get gy_ => 'Guayana'; - - @override - String get hk_ => 'Hong Kong'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Croacia'; - - @override - String get ht_ => 'Haití'; - - @override - String get hu_ => 'Hungría'; - - @override - String get id_ => 'Indonesia'; - - @override - String get ie_ => 'Irlanda'; - - @override - String get il_ => 'Israel'; - - @override - String get im_ => 'Isla del hombre'; - - @override - String get in_ => 'India'; - - @override - String get io_ => 'Territorio Británico del Océano Índico'; - - @override - String get iq_ => 'Irak'; - - @override - String get ir_ => 'Irán, República Islámica del Golfo Pérsico'; - - @override - String get is_ => 'Islandia'; - - @override - String get it_ => 'Italia'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Jamaica'; - - @override - String get jo_ => 'Jordán'; - - @override - String get jp_ => 'Japón'; - - @override - String get ke_ => 'Kenia'; - - @override - String get kg_ => 'Kirguistán'; - - @override - String get kh_ => 'Camboya'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Comoras'; - - @override - String get kn_ => 'Saint Kitts y Nevis'; - - @override - String get kp_ => 'Corea, República Popular Democrática de Corea'; - - @override - String get kr_ => 'Corea, República de Corea del Sur'; - - @override - String get kw_ => 'Kuwait'; - - @override - String get ky_ => 'Islas Caimán'; - - @override - String get kz_ => 'Kazajstán'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Líbano'; - - @override - String get lc_ => 'Santa Lucía'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Liberia'; - - @override - String get ls_ => 'Lesoto'; - - @override - String get lt_ => 'Lituania'; - - @override - String get lu_ => 'Luxemburgo'; - - @override - String get lv_ => 'Letonia'; - - @override - String get ly_ => 'Jamahiriya Arabe Libia'; - - @override - String get ma_ => 'Marruecos'; - - @override - String get mc_ => 'Mónaco'; - - @override - String get md_ => 'Moldavia'; - - @override - String get me_ => 'Montenegro'; - - @override - String get mf_ => 'San Martín'; - - @override - String get mg_ => 'Madagascar'; - - @override - String get mh_ => 'Islas Marshall'; - - @override - String get mk_ => 'macedonia'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar'; - - @override - String get mn_ => 'Mongolia'; - - @override - String get mo_ => 'Macao'; - - @override - String get mp_ => 'Islas Marianas del Norte'; - - @override - String get mq_ => 'Martinica'; - - @override - String get mr_ => 'Mauritania'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malta'; - - @override - String get mu_ => 'Mauricio'; - - @override - String get mv_ => 'Maldivas'; - - @override - String get mw_ => 'Malawi'; - - @override - String get mx_ => 'México'; - - @override - String get my_ => 'Malasia'; - - @override - String get mz_ => 'Mozambique'; - - @override - String get na_ => 'Namibia'; - - @override - String get nc_ => 'Nueva Caledonia'; - - @override - String get ne_ => 'Níger'; - - @override - String get nf_ => 'Isla Norfolk'; - - @override - String get ng_ => 'Nigeria'; - - @override - String get ni_ => 'Nicaragua'; - - @override - String get nl_ => 'Países Bajos'; - - @override - String get no_ => 'Noruega'; - - @override - String get np_ => 'Nepal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'Nueva Zelanda'; - - @override - String get om_ => 'Omán'; - - @override - String get pa_ => 'Panamá'; - - @override - String get pe_ => 'Perú'; - - @override - String get pf_ => 'Polinesia francés'; - - @override - String get pg_ => 'Papúa Nueva Guinea'; - - @override - String get ph_ => 'Filipinas'; - - @override - String get pk_ => 'Pakistán'; - - @override - String get pl_ => 'Polonia'; - - @override - String get pm_ => 'San Pedro y Miquelón'; - - @override - String get pn_ => 'Pitcairn'; - - @override - String get pr_ => 'Puerto Rico'; - - @override - String get ps_ => 'Territorio Palestino, Ocupado'; - - @override - String get pt_ => 'Portugal'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paraguay'; - - @override - String get qa_ => 'Katar'; - - @override - String get re_ => 'Reunión'; - - @override - String get ro_ => 'Rumania'; - - @override - String get rs_ => 'Serbia'; - - @override - String get ru_ => 'Rusia'; - - @override - String get rw_ => 'Ruanda'; - - @override - String get sa_ => 'Arabia Saudita'; - - @override - String get sb_ => 'Islas Salomón'; - - @override - String get sc_ => 'Seychelles'; - - @override - String get sd_ => 'Sudán'; - - @override - String get se_ => 'Suecia'; - - @override - String get sg_ => 'Singapur'; - - @override - String get si_ => 'Eslovenia'; - - @override - String get sk_ => 'Eslovaquia'; - - @override - String get sl_ => 'Sierra Leona'; - - @override - String get sm_ => 'San Marino'; - - @override - String get sn_ => 'Senegal'; - - @override - String get so_ => 'Somalia'; - - @override - String get sr_ => 'Surinam'; - - @override - String get ss_ => 'Sudán del Sur'; - - @override - String get st_ => 'Santo Tomé y Príncipe'; - - @override - String get sv_ => 'El Salvador'; - - @override - String get sy_ => 'República Árabe Siria'; - - @override - String get sz_ => 'Swazilandia'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'Islas Turcas y Caicos'; - - @override - String get td_ => 'Chad'; - - @override - String get tg_ => 'Para llevar'; - - @override - String get th_ => 'Tailandia'; - - @override - String get tj_ => 'Tayikistán'; - - @override - String get tk_ => 'Tokelau'; - - @override - String get tl_ => 'Timor-Leste'; - - @override - String get tm_ => 'Turkmenistán'; - - @override - String get tn_ => 'Túnez'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'pavo'; - - @override - String get tt_ => 'Trinidad y Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Taiwán'; - - @override - String get tz_ => 'Tanzania, República Unida de Tanzania'; - - @override - String get ua_ => 'Ucrania'; - - @override - String get ug_ => 'Uganda'; - - @override - String get us_ => 'Estados Unidos'; - - @override - String get uy_ => 'Uruguay'; - - @override - String get uz_ => 'Uzbekistán'; - - @override - String get va_ => 'Santa Sede (Estado de la Ciudad del Vaticano)'; - - @override - String get vc_ => 'San Vicente y las Granadinas'; - - @override - String get ve_ => 'Venezuela'; - - @override - String get vg_ => 'Islas Vírgenes Británicas'; - - @override - String get vi_ => 'Islas Vírgenes, EE. UU.'; - - @override - String get vn_ => 'Vietnam'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Wallis y Futuna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Yemen'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'Sudáfrica'; - - @override - String get zm_ => 'Zambia'; - - @override - String get zw_ => 'Zimbabue'; -} diff --git a/lib/l10n/generated/phone_field_localization_fa.dart b/lib/l10n/generated/phone_field_localization_fa.dart deleted file mode 100644 index a0336a64..00000000 --- a/lib/l10n/generated/phone_field_localization_fa.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Persian (`fa`). -class PhoneFieldLocalizationFa extends PhoneFieldLocalization { - PhoneFieldLocalizationFa([super.locale = 'fa']); - - @override - String get invalidPhoneNumber => 'شماره تلفن نامعتبر است'; - - @override - String get invalidCountry => 'کشور نامعتبر است'; - - @override - String get invalidMobilePhoneNumber => 'شماره تلفن همراه نامعتبر است'; - - @override - String get invalidFixedLinePhoneNumber => 'شماره تلفن ثابت نامعتبر است'; - - @override - String get requiredPhoneNumber => 'شماره تلفن الزامی است'; - - @override - String get noResultMessage => 'بدون نتیجه'; - - @override - String get ac_ => 'جزیره اسنشن'; - - @override - String get ad_ => 'آندورا'; - - @override - String get ae_ => 'امارات متحده عربی'; - - @override - String get af_ => 'افغانستان'; - - @override - String get ag_ => 'آنتیگوآ و باربودا'; - - @override - String get ai_ => 'آنگویلا'; - - @override - String get al_ => 'آلبانی'; - - @override - String get am_ => 'ارمنستان'; - - @override - String get an_ => 'آنتیل هلند'; - - @override - String get ao_ => 'آنگولا'; - - @override - String get aq_ => 'جنوبگان'; - - @override - String get ar_ => 'آرژانتین'; - - @override - String get as_ => 'ساموآی آمریکا'; - - @override - String get at_ => 'اتریش'; - - @override - String get au_ => 'استرالیا'; - - @override - String get aw_ => 'آروبا'; - - @override - String get ax_ => 'جزایر الند'; - - @override - String get az_ => 'آذربایجان'; - - @override - String get ba_ => 'بوسنی و هرزگوین'; - - @override - String get bb_ => 'باربادوس'; - - @override - String get bd_ => 'بنگلادش'; - - @override - String get be_ => 'بلژیک'; - - @override - String get bf_ => 'بورکینافاسو'; - - @override - String get bg_ => 'بلغارستان'; - - @override - String get bh_ => 'بحرین'; - - @override - String get bi_ => 'بوروندی'; - - @override - String get bj_ => 'بنین'; - - @override - String get bl_ => 'سن بارتلمی'; - - @override - String get bm_ => 'برمودا'; - - @override - String get bn_ => 'برونئی سرای صلح'; - - @override - String get bo_ => 'حکومت پلوریناسیونال بولیوی'; - - @override - String get bq_ => 'بونیر'; - - @override - String get br_ => 'برزیل'; - - @override - String get bs_ => 'باهاما'; - - @override - String get bt_ => 'بوتان'; - - @override - String get bw_ => 'بوتسوانا'; - - @override - String get by_ => 'بلاروس'; - - @override - String get bz_ => 'بلیز'; - - @override - String get ca_ => 'کانادا'; - - @override - String get cc_ => 'جزایر (کیلینگ) کوکوس'; - - @override - String get cd_ => 'کنگو، جمهوری دموکراتیک کنگو'; - - @override - String get cf_ => 'جمهوری آفریقای مرکزی'; - - @override - String get cg_ => 'کنگو'; - - @override - String get ch_ => 'سوئیس'; - - @override - String get ci_ => 'ساحل عاج'; - - @override - String get ck_ => 'جزایر کوک'; - - @override - String get cl_ => 'شیلی'; - - @override - String get cm_ => 'کامرون'; - - @override - String get cn_ => 'چین'; - - @override - String get co_ => 'کلمبیا'; - - @override - String get cr_ => 'کاستاریکا'; - - @override - String get cu_ => 'کوبا'; - - @override - String get cv_ => 'کیپ ورد'; - - @override - String get cx_ => 'جزیره کریسمس'; - - @override - String get cy_ => 'قبرس'; - - @override - String get cz_ => 'جمهوری چک'; - - @override - String get de_ => 'آلمان'; - - @override - String get dj_ => 'جیبوتی'; - - @override - String get dk_ => 'دانمارک'; - - @override - String get dm_ => 'دومینیکا'; - - @override - String get do_ => 'جمهوری دومینیکن'; - - @override - String get dz_ => 'الجزایر'; - - @override - String get ec_ => 'اکوادور'; - - @override - String get ee_ => 'استونی'; - - @override - String get eg_ => 'مصر'; - - @override - String get er_ => 'اریتره'; - - @override - String get es_ => 'اسپانیا'; - - @override - String get et_ => 'اتیوپی'; - - @override - String get fi_ => 'فنلاند'; - - @override - String get fj_ => 'فیجی'; - - @override - String get fk_ => 'جزایر فالکلند (مالویناس)'; - - @override - String get fm_ => 'میکرونزی، ایالات فدرال میکرونزی'; - - @override - String get fo_ => 'جزایر فارو'; - - @override - String get fr_ => 'فرانسه'; - - @override - String get ga_ => 'گابن'; - - @override - String get gb_ => 'پادشاهی متحد بریتانیای کبیر و ایرلند شمالی'; - - @override - String get gd_ => 'گرنادا'; - - @override - String get ge_ => 'گرجستان'; - - @override - String get gf_ => 'گویان فرانسه'; - - @override - String get gg_ => 'گرنزی'; - - @override - String get gh_ => 'غنا'; - - @override - String get gi_ => 'جبل‌الطارق'; - - @override - String get gl_ => 'گرینلند'; - - @override - String get gm_ => 'گامبیا'; - - @override - String get gn_ => 'گینه'; - - @override - String get gp_ => 'گوادلوپ'; - - @override - String get gq_ => 'گینه استوایی'; - - @override - String get gr_ => 'یونان'; - - @override - String get gs_ => 'جزایر جورجیای جنوبی و ساندویچ جنوبی'; - - @override - String get gt_ => 'گواتمالا'; - - @override - String get gu_ => 'گوآم'; - - @override - String get gw_ => 'گینه بیسائو'; - - @override - String get gy_ => 'گویان'; - - @override - String get hk_ => 'هنگ کنگ'; - - @override - String get hn_ => 'هندوراس'; - - @override - String get hr_ => 'کرواسی'; - - @override - String get ht_ => 'هائیتی'; - - @override - String get hu_ => 'مجارستان'; - - @override - String get id_ => 'اندونزی'; - - @override - String get ie_ => 'ایرلند'; - - @override - String get il_ => 'اسرائیل'; - - @override - String get im_ => 'جزیره من'; - - @override - String get in_ => 'هند'; - - @override - String get io_ => 'قلمرو بریتانیا در اقیانوس هند'; - - @override - String get iq_ => 'عراق'; - - @override - String get ir_ => 'ایران'; - - @override - String get is_ => 'ایسلند'; - - @override - String get it_ => 'ایتالیا'; - - @override - String get je_ => 'جرزی'; - - @override - String get jm_ => 'جامائیکا'; - - @override - String get jo_ => 'اردن'; - - @override - String get jp_ => 'ژاپن'; - - @override - String get ke_ => 'کنیا'; - - @override - String get kg_ => 'قرقیزستان'; - - @override - String get kh_ => 'کامبوج'; - - @override - String get ki_ => 'کیریباتی'; - - @override - String get km_ => 'کومور'; - - @override - String get kn_ => 'سنت کیتس و نویس'; - - @override - String get kp_ => 'کره شمالی'; - - @override - String get kr_ => 'کره، جمهوری کره جنوبی'; - - @override - String get kw_ => 'کویت'; - - @override - String get ky_ => 'جزایر کیمن'; - - @override - String get kz_ => 'قزاقستان'; - - @override - String get la_ => 'لائوس'; - - @override - String get lb_ => 'لبنان'; - - @override - String get lc_ => 'سنت لوسیا'; - - @override - String get li_ => 'لیختن‌اشتاین'; - - @override - String get lk_ => 'سری‌لانکا'; - - @override - String get lr_ => 'لیبریا'; - - @override - String get ls_ => 'لسوتو'; - - @override - String get lt_ => 'لیتوانی'; - - @override - String get lu_ => 'لوکزامبورگ'; - - @override - String get lv_ => 'لتونی'; - - @override - String get ly_ => 'لیبی'; - - @override - String get ma_ => 'مراکش'; - - @override - String get mc_ => 'موناکو'; - - @override - String get md_ => 'مولداوی'; - - @override - String get me_ => 'مونته‌نگرو'; - - @override - String get mf_ => 'سن مارتن'; - - @override - String get mg_ => 'ماداگاسکار'; - - @override - String get mh_ => 'جزایر مارشال'; - - @override - String get mk_ => 'مقدونیه'; - - @override - String get ml_ => 'مالی'; - - @override - String get mm_ => 'میانمار'; - - @override - String get mn_ => 'مغولستان'; - - @override - String get mo_ => 'ماکائو'; - - @override - String get mp_ => 'جزایر ماریانای شمالی'; - - @override - String get mq_ => 'مارتینیک'; - - @override - String get mr_ => 'موریتانی'; - - @override - String get ms_ => 'مونتسرات'; - - @override - String get mt_ => 'مالت'; - - @override - String get mu_ => 'موریس'; - - @override - String get mv_ => 'مالدیو'; - - @override - String get mw_ => 'مالاوی'; - - @override - String get mx_ => 'مکزیک'; - - @override - String get my_ => 'مالزی'; - - @override - String get mz_ => 'موزامبیک'; - - @override - String get na_ => 'نامیبیا'; - - @override - String get nc_ => 'کالدونیای جدید'; - - @override - String get ne_ => 'نیجر'; - - @override - String get nf_ => 'جزیره نورفک'; - - @override - String get ng_ => 'نیجریه'; - - @override - String get ni_ => 'نیکاراگوئه'; - - @override - String get nl_ => 'هلند'; - - @override - String get no_ => 'نروژ'; - - @override - String get np_ => 'نپال'; - - @override - String get nr_ => 'نائورو'; - - @override - String get nu_ => 'نیووی'; - - @override - String get nz_ => 'نیوزیلند'; - - @override - String get om_ => 'عمان'; - - @override - String get pa_ => 'پاناما'; - - @override - String get pe_ => 'پرو'; - - @override - String get pf_ => 'پلی‌نزی فرانسه'; - - @override - String get pg_ => 'پاپوآ گینه نو'; - - @override - String get ph_ => 'فیلیپین'; - - @override - String get pk_ => 'پاکستان'; - - @override - String get pl_ => 'لهستان'; - - @override - String get pm_ => 'سن-پیر و میکلون'; - - @override - String get pn_ => 'پیت‌کرن'; - - @override - String get pr_ => 'پورتوریکو'; - - @override - String get ps_ => 'سرزمین‌های فلسطینی'; - - @override - String get pt_ => 'پرتغال'; - - @override - String get pw_ => 'پالائو'; - - @override - String get py_ => 'پاراگوئه'; - - @override - String get qa_ => 'قطر'; - - @override - String get re_ => 'رئونیون'; - - @override - String get ro_ => 'رومانی'; - - @override - String get rs_ => 'صربستان'; - - @override - String get ru_ => 'روسیه'; - - @override - String get rw_ => 'رواندا'; - - @override - String get sa_ => 'عربستان سعودی'; - - @override - String get sb_ => 'جزایر سلیمان'; - - @override - String get sc_ => 'سیشل'; - - @override - String get sd_ => 'سودان'; - - @override - String get se_ => 'سوئد'; - - @override - String get sg_ => 'سنگاپور'; - - @override - String get si_ => 'اسلوونی'; - - @override - String get sk_ => 'اسلواکی'; - - @override - String get sl_ => 'سیرالئون'; - - @override - String get sm_ => 'سان مارینو'; - - @override - String get sn_ => 'سنگال'; - - @override - String get so_ => 'سومالی'; - - @override - String get sr_ => 'سورینام'; - - @override - String get ss_ => 'سودان جنوبی'; - - @override - String get st_ => 'سائوتومه و پرنسیپ'; - - @override - String get sv_ => 'السالوادور'; - - @override - String get sy_ => 'جمهوری عربی سوریه'; - - @override - String get sz_ => 'سوازیلند'; - - @override - String get ta_ => 'تریستان دا کونا'; - - @override - String get tc_ => 'جزایر تورکس و کایکوس'; - - @override - String get td_ => 'چاد'; - - @override - String get tg_ => 'توگو'; - - @override - String get th_ => 'تایلند'; - - @override - String get tj_ => 'تاجیکستان'; - - @override - String get tk_ => 'توکلائو'; - - @override - String get tl_ => 'تیمور شرقی'; - - @override - String get tm_ => 'ترکمنستان'; - - @override - String get tn_ => 'تونس'; - - @override - String get to_ => 'تونگا'; - - @override - String get tr_ => 'ترکیه'; - - @override - String get tt_ => 'ترینیداد و توباگو'; - - @override - String get tv_ => 'تووالو'; - - @override - String get tw_ => 'تایوان'; - - @override - String get tz_ => 'تانزانیا، جمهوری متحد تانزانیا'; - - @override - String get ua_ => 'اوکراین'; - - @override - String get ug_ => 'اوگاندا'; - - @override - String get us_ => 'ایالات متحده آمریکا'; - - @override - String get uy_ => 'اروگوئه'; - - @override - String get uz_ => 'ازبکستان'; - - @override - String get va_ => 'سریر مقدس (ایالت شهر واتیکان)'; - - @override - String get vc_ => 'سنت وینسنت و گرنادین‌ها'; - - @override - String get ve_ => 'ونزوئلا'; - - @override - String get vg_ => 'جزایر ویرجین، بریتانیا'; - - @override - String get vi_ => 'جزایر ویرجین، ایالات متحده آمریکا'; - - @override - String get vn_ => 'ویتنام'; - - @override - String get vu_ => 'وانواتو'; - - @override - String get wf_ => 'والیس و فوتونا'; - - @override - String get ws_ => 'ساموآ'; - - @override - String get ye_ => 'یمن'; - - @override - String get yt_ => 'مایوت'; - - @override - String get za_ => 'آفریقای جنوبی'; - - @override - String get zm_ => 'زامبیا'; - - @override - String get zw_ => 'زیمبابوه'; -} diff --git a/lib/l10n/generated/phone_field_localization_fr.dart b/lib/l10n/generated/phone_field_localization_fr.dart deleted file mode 100644 index 5f5c7dd6..00000000 --- a/lib/l10n/generated/phone_field_localization_fr.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for French (`fr`). -class PhoneFieldLocalizationFr extends PhoneFieldLocalization { - PhoneFieldLocalizationFr([super.locale = 'fr']); - - @override - String get invalidPhoneNumber => 'Numéro de téléphone invalide'; - - @override - String get invalidCountry => 'Pays invalide'; - - @override - String get invalidMobilePhoneNumber => 'Numéro de téléphone portable invalide'; - - @override - String get invalidFixedLinePhoneNumber => 'Numéro de téléphone fixe invalide'; - - @override - String get requiredPhoneNumber => 'Numéro de téléphone requis'; - - @override - String get noResultMessage => 'Aucun résultat'; - - @override - String get ac_ => 'Île de l\'Ascension'; - - @override - String get ad_ => 'Andorre'; - - @override - String get ae_ => 'Emirats Arabes Unis'; - - @override - String get af_ => 'Afghanistan'; - - @override - String get ag_ => 'Antigua-et-Barbuda'; - - @override - String get ai_ => 'Anguilla'; - - @override - String get al_ => 'Albanie'; - - @override - String get am_ => 'Arménie'; - - @override - String get an_ => 'Antilles néerlandaises'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antarctique'; - - @override - String get ar_ => 'Argentine'; - - @override - String get as_ => 'Samoa américaines'; - - @override - String get at_ => 'Autriche'; - - @override - String get au_ => 'Australie'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Iles Aland'; - - @override - String get az_ => 'Azerbaïdjan'; - - @override - String get ba_ => 'Bosnie Herzégovine'; - - @override - String get bb_ => 'Barbade'; - - @override - String get bd_ => 'Bangladesh'; - - @override - String get be_ => 'Belgique'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bulgarie'; - - @override - String get bh_ => 'Bahreïn'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Bénin'; - - @override - String get bl_ => 'Saint Barthélemy'; - - @override - String get bm_ => 'Bermudes'; - - @override - String get bn_ => 'Brunei Darussalam'; - - @override - String get bo_ => 'Bolivie, État plurinational de'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Brésil'; - - @override - String get bs_ => 'Bahamas'; - - @override - String get bt_ => 'Bhoutan'; - - @override - String get bw_ => 'Botswana'; - - @override - String get by_ => 'Biélorussie'; - - @override - String get bz_ => 'Belize'; - - @override - String get ca_ => 'Canada'; - - @override - String get cc_ => 'Îles Cocos (Keeling)'; - - @override - String get cd_ => 'Congo, République démocratique du Congo'; - - @override - String get cf_ => 'République centrafricaine'; - - @override - String get cg_ => 'Congo'; - - @override - String get ch_ => 'Suisse'; - - @override - String get ci_ => 'Côte d\'Ivoire'; - - @override - String get ck_ => 'Îles Cook'; - - @override - String get cl_ => 'Chili'; - - @override - String get cm_ => 'Cameroun'; - - @override - String get cn_ => 'Chine'; - - @override - String get co_ => 'Colombie'; - - @override - String get cr_ => 'Costa Rica'; - - @override - String get cu_ => 'Cuba'; - - @override - String get cv_ => 'Cap-Vert'; - - @override - String get cx_ => 'L\'île de noël'; - - @override - String get cy_ => 'Chypre'; - - @override - String get cz_ => 'République Tchèque'; - - @override - String get de_ => 'Allemagne'; - - @override - String get dj_ => 'Djibouti'; - - @override - String get dk_ => 'Danemark'; - - @override - String get dm_ => 'Dominique'; - - @override - String get do_ => 'République Dominicaine'; - - @override - String get dz_ => 'Algérie'; - - @override - String get ec_ => 'Equateur'; - - @override - String get ee_ => 'Estonie'; - - @override - String get eg_ => 'Egypte'; - - @override - String get er_ => 'Érythrée'; - - @override - String get es_ => 'Espagne'; - - @override - String get et_ => 'Ethiopie'; - - @override - String get fi_ => 'Finlande'; - - @override - String get fj_ => 'Fidji'; - - @override - String get fk_ => 'Îles Falkland (Malvinas)'; - - @override - String get fm_ => 'Micronésie, États fédérés de Micronésie'; - - @override - String get fo_ => 'Îles Féroé'; - - @override - String get fr_ => 'France'; - - @override - String get ga_ => 'Gabon'; - - @override - String get gb_ => 'Royaume-Uni'; - - @override - String get gd_ => 'Grenade'; - - @override - String get ge_ => 'Géorgie'; - - @override - String get gf_ => 'Guyane Française'; - - @override - String get gg_ => 'Guernesey'; - - @override - String get gh_ => 'Ghana'; - - @override - String get gi_ => 'Gibraltar'; - - @override - String get gl_ => 'Groenland'; - - @override - String get gm_ => 'Gambie'; - - @override - String get gn_ => 'Guinée'; - - @override - String get gp_ => 'Guadeloupe'; - - @override - String get gq_ => 'Guinée Équatoriale'; - - @override - String get gr_ => 'Grèce'; - - @override - String get gs_ => 'Géorgie du Sud et îles Sandwich du Sud'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Guinée-Bissau'; - - @override - String get gy_ => 'Guyane'; - - @override - String get hk_ => 'Hong Kong'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Croatie'; - - @override - String get ht_ => 'Haïti'; - - @override - String get hu_ => 'Hongrie'; - - @override - String get id_ => 'Indonésie'; - - @override - String get ie_ => 'Irlande'; - - @override - String get il_ => 'Israël'; - - @override - String get im_ => 'île de Man'; - - @override - String get in_ => 'Inde'; - - @override - String get io_ => 'Territoire britannique de l\'océan Indien'; - - @override - String get iq_ => 'Irak'; - - @override - String get ir_ => 'Iran, République islamique du golfe Persique'; - - @override - String get is_ => 'Islande'; - - @override - String get it_ => 'Italie'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Jamaïque'; - - @override - String get jo_ => 'Jordan'; - - @override - String get jp_ => 'Japon'; - - @override - String get ke_ => 'Kenya'; - - @override - String get kg_ => 'Kirghizistan'; - - @override - String get kh_ => 'Cambodge'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Comores'; - - @override - String get kn_ => 'Saint-Christophe-et-Niévès'; - - @override - String get kp_ => 'Corée, République populaire démocratique de Corée'; - - @override - String get kr_ => 'Corée, République de Corée du Sud'; - - @override - String get kw_ => 'Koweit'; - - @override - String get ky_ => 'Îles Caïmans'; - - @override - String get kz_ => 'Kazakhstan'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Liban'; - - @override - String get lc_ => 'Sainte-Lucie'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Libéria'; - - @override - String get ls_ => 'Lesotho'; - - @override - String get lt_ => 'Lituanie'; - - @override - String get lu_ => 'Luxembourg'; - - @override - String get lv_ => 'Lettonie'; - - @override - String get ly_ => 'Jamahiriya arabe libyenne'; - - @override - String get ma_ => 'Maroc'; - - @override - String get mc_ => 'Monaco'; - - @override - String get md_ => 'Moldavie'; - - @override - String get me_ => 'Monténégro'; - - @override - String get mf_ => 'Saint Martin'; - - @override - String get mg_ => 'Madagascar'; - - @override - String get mh_ => 'Iles Marshall'; - - @override - String get mk_ => 'Macédoine'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar'; - - @override - String get mn_ => 'Mongolie'; - - @override - String get mo_ => 'Macao'; - - @override - String get mp_ => 'Îles Mariannes du Nord'; - - @override - String get mq_ => 'Martinique'; - - @override - String get mr_ => 'Mauritanie'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malte'; - - @override - String get mu_ => 'Ile Maurice'; - - @override - String get mv_ => 'Maldives'; - - @override - String get mw_ => 'Malawi'; - - @override - String get mx_ => 'Mexique'; - - @override - String get my_ => 'Malaisie'; - - @override - String get mz_ => 'Mozambique'; - - @override - String get na_ => 'Namibie'; - - @override - String get nc_ => 'Nouvelle Calédonie'; - - @override - String get ne_ => 'Niger'; - - @override - String get nf_ => 'l\'ile de Norfolk'; - - @override - String get ng_ => 'Nigeria'; - - @override - String get ni_ => 'Nicaragua'; - - @override - String get nl_ => 'Pays-Bas'; - - @override - String get no_ => 'Norvège'; - - @override - String get np_ => 'Népal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'Nouvelle-Zélande'; - - @override - String get om_ => 'Oman'; - - @override - String get pa_ => 'Panama'; - - @override - String get pe_ => 'Pérou'; - - @override - String get pf_ => 'Polynésie française'; - - @override - String get pg_ => 'Papouasie Nouvelle Guinée'; - - @override - String get ph_ => 'Philippines'; - - @override - String get pk_ => 'Pakistan'; - - @override - String get pl_ => 'Pologne'; - - @override - String get pm_ => 'Saint-Pierre-et-Miquelon'; - - @override - String get pn_ => 'Pitcairn'; - - @override - String get pr_ => 'Porto Rico'; - - @override - String get ps_ => 'Territoire palestinien, occupé'; - - @override - String get pt_ => 'Portugal'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paraguay'; - - @override - String get qa_ => 'Qatar'; - - @override - String get re_ => 'Réunion'; - - @override - String get ro_ => 'Roumanie'; - - @override - String get rs_ => 'Serbie'; - - @override - String get ru_ => 'Russie'; - - @override - String get rw_ => 'Rwanda'; - - @override - String get sa_ => 'Arabie Saoudite'; - - @override - String get sb_ => 'îles Salomon'; - - @override - String get sc_ => 'Seychelles'; - - @override - String get sd_ => 'Soudan'; - - @override - String get se_ => 'Suède'; - - @override - String get sg_ => 'Singapour'; - - @override - String get si_ => 'Slovénie'; - - @override - String get sk_ => 'Slovaquie'; - - @override - String get sl_ => 'Sierra Leone'; - - @override - String get sm_ => 'Saint Marin'; - - @override - String get sn_ => 'Sénégal'; - - @override - String get so_ => 'Somalie'; - - @override - String get sr_ => 'Suriname'; - - @override - String get ss_ => 'Soudan du sud'; - - @override - String get st_ => 'Sao Tomé et Principe'; - - @override - String get sv_ => 'Salvador'; - - @override - String get sy_ => 'République arabe syrienne'; - - @override - String get sz_ => 'Swaziland'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'îles Turques-et-Caïques'; - - @override - String get td_ => 'Tchad'; - - @override - String get tg_ => 'Aller'; - - @override - String get th_ => 'Thaïlande'; - - @override - String get tj_ => 'Tadjikistan'; - - @override - String get tk_ => 'Tokelau'; - - @override - String get tl_ => 'Timor-Leste'; - - @override - String get tm_ => 'Turkménistan'; - - @override - String get tn_ => 'Tunisie'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'dinde'; - - @override - String get tt_ => 'Trinité-et-Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Taïwan'; - - @override - String get tz_ => 'Tanzanie, République-Unie de Tanzanie'; - - @override - String get ua_ => 'Ukraine'; - - @override - String get ug_ => 'Ouganda'; - - @override - String get us_ => 'États Unis'; - - @override - String get uy_ => 'Uruguay'; - - @override - String get uz_ => 'Ouzbékistan'; - - @override - String get va_ => 'Saint-Siège (État de la Cité du Vatican)'; - - @override - String get vc_ => 'Saint-Vincent-et-les-Grenadines'; - - @override - String get ve_ => 'Venezuela'; - - @override - String get vg_ => 'Îles Vierges britanniques'; - - @override - String get vi_ => 'Îles Vierges américaines, États-Unis'; - - @override - String get vn_ => 'Vietnam'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Wallis et Futuna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Yémen'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'Afrique du Sud'; - - @override - String get zm_ => 'Zambie'; - - @override - String get zw_ => 'Zimbabwe'; -} diff --git a/lib/l10n/generated/phone_field_localization_hi.dart b/lib/l10n/generated/phone_field_localization_hi.dart deleted file mode 100644 index 9f3e4408..00000000 --- a/lib/l10n/generated/phone_field_localization_hi.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Hindi (`hi`). -class PhoneFieldLocalizationHi extends PhoneFieldLocalization { - PhoneFieldLocalizationHi([super.locale = 'hi']); - - @override - String get invalidPhoneNumber => 'अवैध फोन नंबर'; - - @override - String get invalidCountry => 'अवैध देश'; - - @override - String get invalidMobilePhoneNumber => 'अमान्य सेल फ़ोन नंबर'; - - @override - String get invalidFixedLinePhoneNumber => 'अवैध लैंडलाइन नंबर'; - - @override - String get requiredPhoneNumber => 'फ़ोन नंबर आवश्यक'; - - @override - String get noResultMessage => 'कोई परिणाम नही'; - - @override - String get ac_ => 'असेंशन द्वीप'; - - @override - String get ad_ => 'एंडोरा'; - - @override - String get ae_ => 'संयुक्त अरब अमीरात'; - - @override - String get af_ => 'अफ़ग़ानिस्तान'; - - @override - String get ag_ => 'अंतिगुया और बार्बूडा'; - - @override - String get ai_ => 'एंगुइला'; - - @override - String get al_ => 'अल्बानिया'; - - @override - String get am_ => 'आर्मीनिया'; - - @override - String get an_ => 'नीदरलैंड्स एंटाइल्स'; - - @override - String get ao_ => 'अंगोला'; - - @override - String get aq_ => 'अंटार्कटिका'; - - @override - String get ar_ => 'अर्जेंटीना'; - - @override - String get as_ => 'अमेरिकन समोआ'; - - @override - String get at_ => 'ऑस्ट्रिया'; - - @override - String get au_ => 'ऑस्ट्रेलिया'; - - @override - String get aw_ => 'अरूबा'; - - @override - String get ax_ => 'एलैंड द्वीप समूह'; - - @override - String get az_ => 'आज़रबाइजान'; - - @override - String get ba_ => 'बोस्निया और हर्जेगोविना'; - - @override - String get bb_ => 'बारबाडोस'; - - @override - String get bd_ => 'बांग्लादेश'; - - @override - String get be_ => 'बेल्जियम'; - - @override - String get bf_ => 'बुर्किना फासो'; - - @override - String get bg_ => 'बुल्गारिया'; - - @override - String get bh_ => 'बहरीन'; - - @override - String get bi_ => 'बुस्र्न्दी'; - - @override - String get bj_ => 'बेनिन'; - - @override - String get bl_ => 'संत बारथेलेमी'; - - @override - String get bm_ => 'बरमूडा'; - - @override - String get bn_ => 'ब्रूनेइ्र दारएस्सलाम'; - - @override - String get bo_ => 'बोलीविया, प्लूरिनेशनल स्टेट ऑफ़'; - - @override - String get bq_ => 'बोनेयर'; - - @override - String get br_ => 'ब्राज़िल'; - - @override - String get bs_ => 'बहामा'; - - @override - String get bt_ => 'भूटान'; - - @override - String get bw_ => 'बोत्सवाना'; - - @override - String get by_ => 'बेलोरूस'; - - @override - String get bz_ => 'बेलीज़'; - - @override - String get ca_ => 'कनाडा'; - - @override - String get cc_ => 'कोकोस (कीलिंग) द्वीप समूह'; - - @override - String get cd_ => 'कांगो, लोकतांत्रिक गणराज्य कांगो'; - - @override - String get cf_ => 'केंद्रीय अफ्रीकन गणराज्य'; - - @override - String get cg_ => 'कांगो'; - - @override - String get ch_ => 'स्विट्ज़रलैंड'; - - @override - String get ci_ => 'कोटे डी आइवर'; - - @override - String get ck_ => 'कुक द्वीपसमूह'; - - @override - String get cl_ => 'चिली'; - - @override - String get cm_ => 'कैमरून'; - - @override - String get cn_ => 'चीन'; - - @override - String get co_ => 'कोलंबिया'; - - @override - String get cr_ => 'कोस्टा रिका'; - - @override - String get cu_ => 'क्यूबा'; - - @override - String get cv_ => 'केप वर्दे'; - - @override - String get cx_ => 'क्रिसमस द्वीप'; - - @override - String get cy_ => 'साइप्रस'; - - @override - String get cz_ => 'चेक गणतंत्र'; - - @override - String get de_ => 'जर्मनी'; - - @override - String get dj_ => 'जिबूती'; - - @override - String get dk_ => 'डेनमार्क'; - - @override - String get dm_ => 'डोमिनिका'; - - @override - String get do_ => 'डोमिनिकन गणराज्य'; - - @override - String get dz_ => 'एलजीरिया'; - - @override - String get ec_ => 'इक्वेडोर'; - - @override - String get ee_ => 'एस्तोनिया'; - - @override - String get eg_ => 'मिस्र'; - - @override - String get er_ => 'इरिट्रिया'; - - @override - String get es_ => 'स्पेन'; - - @override - String get et_ => 'इथियोपिया'; - - @override - String get fi_ => 'फिनलैंड'; - - @override - String get fj_ => 'फ़िजी'; - - @override - String get fk_ => 'फ़ॉकलैंड द्वीप (माल्विनास)'; - - @override - String get fm_ => 'माइक्रोनेशिया, संघीय राज्य माइक्रोनेशिया'; - - @override - String get fo_ => 'फ़ैरो द्वीप'; - - @override - String get fr_ => 'फ्रांस'; - - @override - String get ga_ => 'गैबॉन'; - - @override - String get gb_ => 'यूनाइटेड किंगडम'; - - @override - String get gd_ => 'ग्रेनेडा'; - - @override - String get ge_ => 'जॉर्जिया'; - - @override - String get gf_ => 'फ्रेंच गयाना'; - - @override - String get gg_ => 'ग्वेर्नसे'; - - @override - String get gh_ => 'घाना'; - - @override - String get gi_ => 'जिब्राल्टर'; - - @override - String get gl_ => 'ग्रीनलैंड'; - - @override - String get gm_ => 'गाम्बिया'; - - @override - String get gn_ => 'गिन्नी'; - - @override - String get gp_ => 'ग्वाडेलोप'; - - @override - String get gq_ => 'भूमध्यवर्ती गिनी'; - - @override - String get gr_ => 'यूनान'; - - @override - String get gs_ => 'दक्षिण जॉर्जिया और दक्षिण सैंडविच द्वीप समूह'; - - @override - String get gt_ => 'ग्वाटेमाला'; - - @override - String get gu_ => 'गुआम'; - - @override - String get gw_ => 'गिनी-बिसाऊ'; - - @override - String get gy_ => 'गुयाना'; - - @override - String get hk_ => 'हांगकांग'; - - @override - String get hn_ => 'होंडुरस'; - - @override - String get hr_ => 'क्रोएशिया'; - - @override - String get ht_ => 'हैती'; - - @override - String get hu_ => 'हंगरी'; - - @override - String get id_ => 'इंडोनेशिया'; - - @override - String get ie_ => 'आयरलैंड'; - - @override - String get il_ => 'इजराइल'; - - @override - String get im_ => 'मैन द्वीप'; - - @override - String get in_ => 'भारत'; - - @override - String get io_ => 'ब्रिटेन और भारतीय समुद्री क्षेत्र'; - - @override - String get iq_ => 'इराक'; - - @override - String get ir_ => 'ईरान, इस्लामी गणतंत्र फ़ारस की खाड़ी'; - - @override - String get is_ => 'आइसलैंड'; - - @override - String get it_ => 'इटली'; - - @override - String get je_ => 'जर्सी'; - - @override - String get jm_ => 'जमैका'; - - @override - String get jo_ => 'जॉर्डन'; - - @override - String get jp_ => 'जापान'; - - @override - String get ke_ => 'केन्या'; - - @override - String get kg_ => 'किर्गिज़स्तान'; - - @override - String get kh_ => 'कंबोडिया'; - - @override - String get ki_ => 'किरिबाती'; - - @override - String get km_ => 'कोमोरोस'; - - @override - String get kn_ => 'संत किट्ट्स और नेविस'; - - @override - String get kp_ => 'कोरिया, डेमोक्रेटिक पीपुल्स रिपब्लिक ऑफ कोरिया'; - - @override - String get kr_ => 'कोरिया, दक्षिण कोरिया गणराज्य'; - - @override - String get kw_ => 'कुवैट'; - - @override - String get ky_ => 'केमन द्वीपसमूह'; - - @override - String get kz_ => 'कजाखस्तान'; - - @override - String get la_ => 'लाओस'; - - @override - String get lb_ => 'लेबनान'; - - @override - String get lc_ => 'सेंट लूसिया'; - - @override - String get li_ => 'लिकटेंस्टाइन'; - - @override - String get lk_ => 'श्रीलंका'; - - @override - String get lr_ => 'लाइबेरिया'; - - @override - String get ls_ => 'लिसोटो'; - - @override - String get lt_ => 'लिथुआनिया'; - - @override - String get lu_ => 'लक्समबर्ग'; - - @override - String get lv_ => 'लातविया'; - - @override - String get ly_ => 'लीबिया का अरब जमहिरिया'; - - @override - String get ma_ => 'मोरक्को'; - - @override - String get mc_ => 'मोनाको'; - - @override - String get md_ => 'मोलदोवा'; - - @override - String get me_ => 'मोंटेनेग्रो'; - - @override - String get mf_ => 'संत मार्टिन'; - - @override - String get mg_ => 'मेडागास्कर'; - - @override - String get mh_ => 'मार्शल द्वीपसमूह'; - - @override - String get mk_ => 'मैसेडोनिया'; - - @override - String get ml_ => 'माली'; - - @override - String get mm_ => 'म्यांमार'; - - @override - String get mn_ => 'मंगोलिया'; - - @override - String get mo_ => 'मकाओ'; - - @override - String get mp_ => 'उत्तरी मरीयाना द्वीप समूह'; - - @override - String get mq_ => 'मार्टीनिक'; - - @override - String get mr_ => 'मॉरिटानिया'; - - @override - String get ms_ => 'मोंटेसेराट'; - - @override - String get mt_ => 'माल्टा'; - - @override - String get mu_ => 'मॉरीशस'; - - @override - String get mv_ => 'मालदीव'; - - @override - String get mw_ => 'मलावी'; - - @override - String get mx_ => 'मेक्सिको'; - - @override - String get my_ => 'मलेशिया'; - - @override - String get mz_ => 'मोजाम्बिक'; - - @override - String get na_ => 'नामिबिया'; - - @override - String get nc_ => 'न्यू कैलेडोनिया'; - - @override - String get ne_ => 'नाइजर'; - - @override - String get nf_ => 'नॉरफ़ॉक आइलैंड'; - - @override - String get ng_ => 'नाइजीरिया'; - - @override - String get ni_ => 'निकारागुआ'; - - @override - String get nl_ => 'नीदरलैंड'; - - @override - String get no_ => 'नॉर्वे'; - - @override - String get np_ => 'नेपाल'; - - @override - String get nr_ => 'नाउरू'; - - @override - String get nu_ => 'नियू'; - - @override - String get nz_ => 'न्यूज़ीलैंड'; - - @override - String get om_ => 'ओमान'; - - @override - String get pa_ => 'पनामा'; - - @override - String get pe_ => 'पेरू'; - - @override - String get pf_ => 'फ़्रेंच पोलिनेशिया'; - - @override - String get pg_ => 'पापुआ न्यू गिनी'; - - @override - String get ph_ => 'फिलीपींस'; - - @override - String get pk_ => 'पाकिस्तान'; - - @override - String get pl_ => 'पोलैंड'; - - @override - String get pm_ => 'सेंट पियरे और मिकेलॉन'; - - @override - String get pn_ => 'पिटकेर्न'; - - @override - String get pr_ => 'प्यूर्टो रिको'; - - @override - String get ps_ => 'अधिकृत फ़िलिस्तीन क्षेत्र'; - - @override - String get pt_ => 'पुर्तगाल'; - - @override - String get pw_ => 'पलाउ'; - - @override - String get py_ => 'परागुआ'; - - @override - String get qa_ => 'कतर'; - - @override - String get re_ => 'रीयूनियन'; - - @override - String get ro_ => 'रोमानिया'; - - @override - String get rs_ => 'सर्बिया'; - - @override - String get ru_ => 'रूस'; - - @override - String get rw_ => 'रवांडा'; - - @override - String get sa_ => 'सऊदी अरब'; - - @override - String get sb_ => 'सोलोमन इस्लैंडस'; - - @override - String get sc_ => 'सेशल्स'; - - @override - String get sd_ => 'सूडान'; - - @override - String get se_ => 'स्वीडन'; - - @override - String get sg_ => 'सिंगापुर'; - - @override - String get si_ => 'स्लोवेनिया'; - - @override - String get sk_ => 'स्लोवाकिया'; - - @override - String get sl_ => 'सेरा लिओन'; - - @override - String get sm_ => 'सैन मैरीनो'; - - @override - String get sn_ => 'सेनेगल'; - - @override - String get so_ => 'सोमालिया'; - - @override - String get sr_ => 'सूरीनाम'; - - @override - String get ss_ => 'दक्षिण सूडान'; - - @override - String get st_ => 'साओ टोमे और प्रिंसिपे'; - - @override - String get sv_ => 'एल साल्वाडोर'; - - @override - String get sy_ => 'सीरियाई अरब गणराज्य'; - - @override - String get sz_ => 'स्वाजीलैंड'; - - @override - String get ta_ => 'ट्रिस्टन दा कुन्हा'; - - @override - String get tc_ => 'तुर्क और कैकोस द्वीप समूह'; - - @override - String get td_ => 'काग़ज़ का टुकड़ा'; - - @override - String get tg_ => 'जाना'; - - @override - String get th_ => 'थाईलैंड'; - - @override - String get tj_ => 'तजाकिस्तान'; - - @override - String get tk_ => 'टोकेलाऊ'; - - @override - String get tl_ => 'तिमोर-लेस्ते'; - - @override - String get tm_ => 'तुर्कमेनिस्तान'; - - @override - String get tn_ => 'ट्यूनीशिया'; - - @override - String get to_ => 'टोंगा'; - - @override - String get tr_ => 'तुर्की'; - - @override - String get tt_ => 'त्रिनिदाद और टोबैगो'; - - @override - String get tv_ => 'तुवालू'; - - @override - String get tw_ => 'ताइवान'; - - @override - String get tz_ => 'तंजानिया, संयुक्त गणराज्य तंजानिया'; - - @override - String get ua_ => 'यूक्रेन'; - - @override - String get ug_ => 'युगांडा'; - - @override - String get us_ => 'संयुक्त राज्य अमेरिका'; - - @override - String get uy_ => 'उरुग्वे'; - - @override - String get uz_ => 'उज़्बेकिस्तान'; - - @override - String get va_ => 'होली सी (वेटिकन सिटी स्टेट)'; - - @override - String get vc_ => 'संत विंसेंट अँड थे ग्रेनडीनेस'; - - @override - String get ve_ => 'वेनेजुएला'; - - @override - String get vg_ => 'वर्जिन द्वीप समूह, ब्रिटिश'; - - @override - String get vi_ => 'वर्जिन द्वीप समूह, यू.एस.'; - - @override - String get vn_ => 'वियतनाम'; - - @override - String get vu_ => 'वानुअतु'; - - @override - String get wf_ => 'वाली और फ़्युटुना'; - - @override - String get ws_ => 'समोआ'; - - @override - String get ye_ => 'यमन'; - - @override - String get yt_ => 'मैयट'; - - @override - String get za_ => 'दक्षिण अफ्रीका'; - - @override - String get zm_ => 'जाम्बिया'; - - @override - String get zw_ => 'जिम्बाब्वे'; -} diff --git a/lib/l10n/generated/phone_field_localization_it.dart b/lib/l10n/generated/phone_field_localization_it.dart deleted file mode 100644 index 870a74e2..00000000 --- a/lib/l10n/generated/phone_field_localization_it.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Italian (`it`). -class PhoneFieldLocalizationIt extends PhoneFieldLocalization { - PhoneFieldLocalizationIt([super.locale = 'it']); - - @override - String get invalidPhoneNumber => 'Numero di telefono invalido'; - - @override - String get invalidCountry => 'Paese invalido'; - - @override - String get invalidMobilePhoneNumber => 'Numero di cellulare invalido'; - - @override - String get invalidFixedLinePhoneNumber => 'Numero di rete fissa invalido'; - - @override - String get requiredPhoneNumber => 'Numero di telefono richiesto'; - - @override - String get noResultMessage => 'Nessun risultato'; - - @override - String get ac_ => 'Isola dell\'Ascensione'; - - @override - String get ad_ => 'Andorra'; - - @override - String get ae_ => 'Emirati Arabi Uniti'; - - @override - String get af_ => 'Afghanistan'; - - @override - String get ag_ => 'Antigua e Barbuda'; - - @override - String get ai_ => 'Anguilla'; - - @override - String get al_ => 'Albania'; - - @override - String get am_ => 'Armenia'; - - @override - String get an_ => 'Antille Olandesi'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antartide'; - - @override - String get ar_ => 'Argentina'; - - @override - String get as_ => 'Samoa americane'; - - @override - String get at_ => 'Austria'; - - @override - String get au_ => 'Australia'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Isole Aland'; - - @override - String get az_ => 'Azerbaigian'; - - @override - String get ba_ => 'Bosnia Erzegovina'; - - @override - String get bb_ => 'Barbados'; - - @override - String get bd_ => 'Bangladesh'; - - @override - String get be_ => 'Belgio'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bulgaria'; - - @override - String get bh_ => 'Bahrein'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Benin'; - - @override - String get bl_ => 'Saint Barthelemy'; - - @override - String get bm_ => 'Bermuda'; - - @override - String get bn_ => 'Brunei Darussalam'; - - @override - String get bo_ => 'Bolivia, Stato plurinazionale di'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Brasile'; - - @override - String get bs_ => 'Bahamas'; - - @override - String get bt_ => 'Bhutan'; - - @override - String get bw_ => 'Botswana'; - - @override - String get by_ => 'Bielorussia'; - - @override - String get bz_ => 'Belize'; - - @override - String get ca_ => 'Canada'; - - @override - String get cc_ => 'Isole Cocos (Keeling)'; - - @override - String get cd_ => 'Congo, Repubblica Democratica del Congo'; - - @override - String get cf_ => 'Repubblica Centrafricana'; - - @override - String get cg_ => 'Congo'; - - @override - String get ch_ => 'Svizzera'; - - @override - String get ci_ => 'Costa d\'Avorio'; - - @override - String get ck_ => 'Isole Cook'; - - @override - String get cl_ => 'Chile'; - - @override - String get cm_ => 'Camerun'; - - @override - String get cn_ => 'Cina'; - - @override - String get co_ => 'Colombia'; - - @override - String get cr_ => 'Costa Rica'; - - @override - String get cu_ => 'Cuba'; - - @override - String get cv_ => 'capo Verde'; - - @override - String get cx_ => 'Isola di Natale'; - - @override - String get cy_ => 'Cipro'; - - @override - String get cz_ => 'Repubblica Ceca'; - - @override - String get de_ => 'Germania'; - - @override - String get dj_ => 'Gibuti'; - - @override - String get dk_ => 'Danimarca'; - - @override - String get dm_ => 'Dominica'; - - @override - String get do_ => 'Repubblica Dominicana'; - - @override - String get dz_ => 'Algeria'; - - @override - String get ec_ => 'Ecuador'; - - @override - String get ee_ => 'Estonia'; - - @override - String get eg_ => 'Egitto'; - - @override - String get er_ => 'Eritrea'; - - @override - String get es_ => 'Spagna'; - - @override - String get et_ => 'Etiopia'; - - @override - String get fi_ => 'Finlandia'; - - @override - String get fj_ => 'Figi'; - - @override - String get fk_ => 'Isole Falkland (Malvinas)'; - - @override - String get fm_ => 'Micronesia, Stati Federati di Micronesia'; - - @override - String get fo_ => 'Isole Faroe'; - - @override - String get fr_ => 'Francia'; - - @override - String get ga_ => 'Gabon'; - - @override - String get gb_ => 'Regno Unito'; - - @override - String get gd_ => 'Grenada'; - - @override - String get ge_ => 'Georgia'; - - @override - String get gf_ => 'Guiana francese'; - - @override - String get gg_ => 'Guernsey'; - - @override - String get gh_ => 'Ghana'; - - @override - String get gi_ => 'Gibilterra'; - - @override - String get gl_ => 'Groenlandia'; - - @override - String get gm_ => 'Gambia'; - - @override - String get gn_ => 'Guinea'; - - @override - String get gp_ => 'Guadalupa'; - - @override - String get gq_ => 'Guinea Equatoriale'; - - @override - String get gr_ => 'Grecia'; - - @override - String get gs_ => 'Georgia del Sud e isole Sandwich meridionali'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Guinea-Bissau'; - - @override - String get gy_ => 'Guyana'; - - @override - String get hk_ => 'Hong Kong'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Croazia'; - - @override - String get ht_ => 'Haiti'; - - @override - String get hu_ => 'Ungheria'; - - @override - String get id_ => 'Indonesia'; - - @override - String get ie_ => 'Irlanda'; - - @override - String get il_ => 'Israele'; - - @override - String get im_ => 'Isola di Man'; - - @override - String get in_ => 'India'; - - @override - String get io_ => 'Territorio britannico dell\'Oceano Indiano'; - - @override - String get iq_ => 'Iraq'; - - @override - String get ir_ => 'Iran, Repubblica islamica del Golfo Persico'; - - @override - String get is_ => 'Islanda'; - - @override - String get it_ => 'Italia'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Giamaica'; - - @override - String get jo_ => 'Giordania'; - - @override - String get jp_ => 'Giappone'; - - @override - String get ke_ => 'Kenya'; - - @override - String get kg_ => 'Kirghizistan'; - - @override - String get kh_ => 'Cambogia'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Comore'; - - @override - String get kn_ => 'Saint Kitts e Nevis'; - - @override - String get kp_ => 'Corea, Repubblica Democratica Popolare di Corea'; - - @override - String get kr_ => 'Corea, Repubblica della Corea del Sud'; - - @override - String get kw_ => 'Kuwait'; - - @override - String get ky_ => 'Isole Cayman'; - - @override - String get kz_ => 'Kazakistan'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Libano'; - - @override - String get lc_ => 'Santa Lucia'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Liberia'; - - @override - String get ls_ => 'Lesotho'; - - @override - String get lt_ => 'Lituania'; - - @override - String get lu_ => 'Lussemburgo'; - - @override - String get lv_ => 'Lettonia'; - - @override - String get ly_ => 'Giamahiria araba libica'; - - @override - String get ma_ => 'Marocco'; - - @override - String get mc_ => 'Monaco'; - - @override - String get md_ => 'Moldova'; - - @override - String get me_ => 'Montenegro'; - - @override - String get mf_ => 'Saint Martin'; - - @override - String get mg_ => 'Madagascar'; - - @override - String get mh_ => 'Isole Marshall'; - - @override - String get mk_ => 'Macedonia'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar'; - - @override - String get mn_ => 'Mongolia'; - - @override - String get mo_ => 'Macao'; - - @override - String get mp_ => 'Isole Marianne settentrionali'; - - @override - String get mq_ => 'Martinica'; - - @override - String get mr_ => 'Mauritania'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malta'; - - @override - String get mu_ => 'Maurizio'; - - @override - String get mv_ => 'Maldive'; - - @override - String get mw_ => 'Malawi'; - - @override - String get mx_ => 'Messico'; - - @override - String get my_ => 'Malaysia'; - - @override - String get mz_ => 'Mozambico'; - - @override - String get na_ => 'Namibia'; - - @override - String get nc_ => 'Nuova Caledonia'; - - @override - String get ne_ => 'Niger'; - - @override - String get nf_ => 'Isola Norfolk'; - - @override - String get ng_ => 'Nigeria'; - - @override - String get ni_ => 'Nicaragua'; - - @override - String get nl_ => 'Olanda'; - - @override - String get no_ => 'Norvegia'; - - @override - String get np_ => 'Nepal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'Nuova Zelanda'; - - @override - String get om_ => 'Oman'; - - @override - String get pa_ => 'Panama'; - - @override - String get pe_ => 'Perù'; - - @override - String get pf_ => 'Polinesia francese'; - - @override - String get pg_ => 'Papua Nuova Guinea'; - - @override - String get ph_ => 'Filippine'; - - @override - String get pk_ => 'Pakistan'; - - @override - String get pl_ => 'Polonia'; - - @override - String get pm_ => 'Saint Pierre e Miquelon'; - - @override - String get pn_ => 'Pitcairn'; - - @override - String get pr_ => 'Porto Rico'; - - @override - String get ps_ => 'Territori palestinesi occupati'; - - @override - String get pt_ => 'Portogallo'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paraguay'; - - @override - String get qa_ => 'Qatar'; - - @override - String get re_ => 'Riunione'; - - @override - String get ro_ => 'Romania'; - - @override - String get rs_ => 'Serbia'; - - @override - String get ru_ => 'Russia'; - - @override - String get rw_ => 'Ruanda'; - - @override - String get sa_ => 'Arabia Saudita'; - - @override - String get sb_ => 'Isole Salomone'; - - @override - String get sc_ => 'Seychelles'; - - @override - String get sd_ => 'Sudan'; - - @override - String get se_ => 'Svezia'; - - @override - String get sg_ => 'Singapore'; - - @override - String get si_ => 'Slovenia'; - - @override - String get sk_ => 'Slovacchia'; - - @override - String get sl_ => 'Sierra Leone'; - - @override - String get sm_ => 'San Marino'; - - @override - String get sn_ => 'Senegal'; - - @override - String get so_ => 'Somalia'; - - @override - String get sr_ => 'Suriname'; - - @override - String get ss_ => 'Sudan del Sud'; - - @override - String get st_ => 'Sao Tome e Principe'; - - @override - String get sv_ => 'El Salvador'; - - @override - String get sy_ => 'Repubblica Araba Siriana'; - - @override - String get sz_ => 'Swaziland'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'Isole Turks e Caicos'; - - @override - String get td_ => 'Chad'; - - @override - String get tg_ => 'Andare'; - - @override - String get th_ => 'Tailandia'; - - @override - String get tj_ => 'Tagikistan'; - - @override - String get tk_ => 'Tokelau'; - - @override - String get tl_ => 'Timor-Leste'; - - @override - String get tm_ => 'Turkmenistan'; - - @override - String get tn_ => 'Tunisia'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'tacchino'; - - @override - String get tt_ => 'Trinidad e Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Taiwan'; - - @override - String get tz_ => 'Tanzania, Repubblica Unita di Tanzania'; - - @override - String get ua_ => 'Ucraina'; - - @override - String get ug_ => 'Uganda'; - - @override - String get us_ => 'stati Uniti'; - - @override - String get uy_ => 'Uruguay'; - - @override - String get uz_ => 'Uzbekistan'; - - @override - String get va_ => 'Santa Sede (Stato della Città del Vaticano)'; - - @override - String get vc_ => 'Saint Vincent e Grenadine'; - - @override - String get ve_ => 'Venezuela'; - - @override - String get vg_ => 'Isole Vergini britanniche'; - - @override - String get vi_ => 'Isole Vergini americane'; - - @override - String get vn_ => 'Vietnam'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Wallis e Futuna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Yemen'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'Sud Africa'; - - @override - String get zm_ => 'Zambia'; - - @override - String get zw_ => 'Zimbabwe'; -} diff --git a/lib/l10n/generated/phone_field_localization_nb.dart b/lib/l10n/generated/phone_field_localization_nb.dart deleted file mode 100644 index 2f783cf2..00000000 --- a/lib/l10n/generated/phone_field_localization_nb.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Norwegian Bokmål (`nb`). -class PhoneFieldLocalizationNb extends PhoneFieldLocalization { - PhoneFieldLocalizationNb([super.locale = 'nb']); - - @override - String get invalidPhoneNumber => 'Ugyldig telefonnummer'; - - @override - String get invalidCountry => 'Ugyldig land'; - - @override - String get invalidMobilePhoneNumber => 'Ugyldig mobilnummer'; - - @override - String get invalidFixedLinePhoneNumber => 'Ugyldig fasttelefonnummer'; - - @override - String get requiredPhoneNumber => 'Telefonnummer er påkrevd'; - - @override - String get noResultMessage => 'Ingen resultater'; - - @override - String get ac_ => 'Ascension Island'; - - @override - String get ad_ => 'Andorra'; - - @override - String get ae_ => 'De forente arabiske emirater'; - - @override - String get af_ => 'Afghanistan'; - - @override - String get ag_ => 'Antigua og Barbuda'; - - @override - String get ai_ => 'Anguilla'; - - @override - String get al_ => 'Albania'; - - @override - String get am_ => 'Armenia'; - - @override - String get an_ => 'Nederlandene Antillene'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antarktis'; - - @override - String get ar_ => 'Argentina'; - - @override - String get as_ => 'Amerikansk Samoa'; - - @override - String get at_ => 'Østerrike'; - - @override - String get au_ => 'Australia'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Åland'; - - @override - String get az_ => 'Aserbajdsjan'; - - @override - String get ba_ => 'Bosnia-Hercegovina'; - - @override - String get bb_ => 'Barbados'; - - @override - String get bd_ => 'Bangladesh'; - - @override - String get be_ => 'Belgia'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bulgaria'; - - @override - String get bh_ => 'Bahrain'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Benin'; - - @override - String get bl_ => 'Saint Barthelemy'; - - @override - String get bm_ => 'Bermuda'; - - @override - String get bn_ => 'Brunei Darussalam'; - - @override - String get bo_ => 'Bolivia, den plurinasjonale staten'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Brasil'; - - @override - String get bs_ => 'Bahamas'; - - @override - String get bt_ => 'Bhutan'; - - @override - String get bw_ => 'Botswana'; - - @override - String get by_ => 'Hviterussland'; - - @override - String get bz_ => 'Belize'; - - @override - String get ca_ => 'Canada'; - - @override - String get cc_ => 'Kokosøyene (Keelingøyene)'; - - @override - String get cd_ => 'Den demokratiske republikken Kongo'; - - @override - String get cf_ => 'Den sentralafrikanske republikken'; - - @override - String get cg_ => 'Kongo'; - - @override - String get ch_ => 'Sveits'; - - @override - String get ci_ => 'Elfenbenskysten'; - - @override - String get ck_ => 'Cookøyene'; - - @override - String get cl_ => 'Chile'; - - @override - String get cm_ => 'Kamerun'; - - @override - String get cn_ => 'Kina'; - - @override - String get co_ => 'Colombia'; - - @override - String get cr_ => 'Costa Rica'; - - @override - String get cu_ => 'Cuba'; - - @override - String get cv_ => 'Kapp Verde'; - - @override - String get cx_ => 'Christmas Island'; - - @override - String get cy_ => 'Kypros'; - - @override - String get cz_ => 'Tsjekkia'; - - @override - String get de_ => 'Tyskland'; - - @override - String get dj_ => 'Djibouti'; - - @override - String get dk_ => 'Danmark'; - - @override - String get dm_ => 'Dominica'; - - @override - String get do_ => 'Den dominikanske republikken'; - - @override - String get dz_ => 'Algerie'; - - @override - String get ec_ => 'Ecuador'; - - @override - String get ee_ => 'Estland'; - - @override - String get eg_ => 'Egypt'; - - @override - String get er_ => 'Eritrea'; - - @override - String get es_ => 'Spania'; - - @override - String get et_ => 'Etiopia'; - - @override - String get fi_ => 'Finland'; - - @override - String get fj_ => 'Fiji'; - - @override - String get fk_ => 'Falklandsøyene (Malvinas)'; - - @override - String get fm_ => 'Mikronesia, de føderale statene i Mikronesia'; - - @override - String get fo_ => 'Færøyene'; - - @override - String get fr_ => 'Frankrike'; - - @override - String get ga_ => 'Gabon'; - - @override - String get gb_ => 'Storbritannia'; - - @override - String get gd_ => 'Grenada'; - - @override - String get ge_ => 'Georgia'; - - @override - String get gf_ => 'Fransk Guyana'; - - @override - String get gg_ => 'Guernsey'; - - @override - String get gh_ => 'Ghana'; - - @override - String get gi_ => 'Gibraltar'; - - @override - String get gl_ => 'Grønland'; - - @override - String get gm_ => 'Gambia'; - - @override - String get gn_ => 'Guinea'; - - @override - String get gp_ => 'Guadeloupe'; - - @override - String get gq_ => 'Ekvatorial-Guinea'; - - @override - String get gr_ => 'Hellas'; - - @override - String get gs_ => 'Sør-Georgia og Sør-Sandwichøyene'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Guinea-Bissau'; - - @override - String get gy_ => 'Guyana'; - - @override - String get hk_ => 'Hong Kong'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Kroatia'; - - @override - String get ht_ => 'Haiti'; - - @override - String get hu_ => 'Ungarn'; - - @override - String get id_ => 'Indonesia'; - - @override - String get ie_ => 'Irland'; - - @override - String get il_ => 'Israel'; - - @override - String get im_ => 'Isle of Man'; - - @override - String get in_ => 'India'; - - @override - String get io_ => 'Det britiske territoriet i Indiahavet'; - - @override - String get iq_ => 'Irak'; - - @override - String get ir_ => 'Iran, Den islamske republikken'; - - @override - String get is_ => 'Island'; - - @override - String get it_ => 'Italia'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Jamaica'; - - @override - String get jo_ => 'Jordan'; - - @override - String get jp_ => 'Japan'; - - @override - String get ke_ => 'Kenya'; - - @override - String get kg_ => 'Kirgisistan'; - - @override - String get kh_ => 'Kambodsja'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Komorene'; - - @override - String get kn_ => 'Saint Kitts og Nevis'; - - @override - String get kp_ => 'Korea, Den demokratiske folkerepublikken Korea'; - - @override - String get kr_ => 'Korea, Republikken Sør-Korea'; - - @override - String get kw_ => 'Kuwait'; - - @override - String get ky_ => 'Caymanøyene'; - - @override - String get kz_ => 'Kasakhstan'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Libanon'; - - @override - String get lc_ => 'Saint Lucia'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Liberia'; - - @override - String get ls_ => 'Lesotho'; - - @override - String get lt_ => 'Litauen'; - - @override - String get lu_ => 'Luxembourg'; - - @override - String get lv_ => 'Latvia'; - - @override - String get ly_ => 'Libya'; - - @override - String get ma_ => 'Marokko'; - - @override - String get mc_ => 'Monaco'; - - @override - String get md_ => 'Moldova'; - - @override - String get me_ => 'Montenegro'; - - @override - String get mf_ => 'Saint Martin'; - - @override - String get mg_ => 'Madagaskar'; - - @override - String get mh_ => 'Marshalløyene'; - - @override - String get mk_ => 'Makedonia'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar'; - - @override - String get mn_ => 'Mongolia'; - - @override - String get mo_ => 'Macao'; - - @override - String get mp_ => 'Nord-Marianene'; - - @override - String get mq_ => 'Martinique'; - - @override - String get mr_ => 'Mauritania'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malta'; - - @override - String get mu_ => 'Mauritius'; - - @override - String get mv_ => 'Maldivene'; - - @override - String get mw_ => 'Malawi'; - - @override - String get mx_ => 'Mexico'; - - @override - String get my_ => 'Malaysia'; - - @override - String get mz_ => 'Mosambik'; - - @override - String get na_ => 'Namibia'; - - @override - String get nc_ => 'Ny-Caledonia'; - - @override - String get ne_ => 'Niger'; - - @override - String get nf_ => 'Norfolk Island'; - - @override - String get ng_ => 'Nigeria'; - - @override - String get ni_ => 'Nicaragua'; - - @override - String get nl_ => 'Nederland'; - - @override - String get no_ => 'Norge'; - - @override - String get np_ => 'Nepal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'New Zealand'; - - @override - String get om_ => 'Oman'; - - @override - String get pa_ => 'Panama'; - - @override - String get pe_ => 'Peru'; - - @override - String get pf_ => 'Fransk Polynesia'; - - @override - String get pg_ => 'Papua Ny-Guinea'; - - @override - String get ph_ => 'Filippinene'; - - @override - String get pk_ => 'Pakistan'; - - @override - String get pl_ => 'Polen'; - - @override - String get pm_ => 'Saint Pierre og Miquelon'; - - @override - String get pn_ => 'Pitcairn'; - - @override - String get pr_ => 'Puerto Rico'; - - @override - String get ps_ => 'Det palestinske området, okkupert'; - - @override - String get pt_ => 'Portugal'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paraguay'; - - @override - String get qa_ => 'Qatar'; - - @override - String get re_ => 'Reunion'; - - @override - String get ro_ => 'Romania'; - - @override - String get rs_ => 'Serbia'; - - @override - String get ru_ => 'Russland'; - - @override - String get rw_ => 'Rwanda'; - - @override - String get sa_ => 'Saudi-Arabia'; - - @override - String get sb_ => 'Salomonøyene'; - - @override - String get sc_ => 'Seychellene'; - - @override - String get sd_ => 'Sudan'; - - @override - String get se_ => 'Sverige'; - - @override - String get sg_ => 'Singapore'; - - @override - String get si_ => 'Slovenia'; - - @override - String get sk_ => 'Slovakia'; - - @override - String get sl_ => 'Sierra Leone'; - - @override - String get sm_ => 'San Marino'; - - @override - String get sn_ => 'Senegal'; - - @override - String get so_ => 'Somalia'; - - @override - String get sr_ => 'Surinam'; - - @override - String get ss_ => 'Sør-Sudan'; - - @override - String get st_ => 'São Tomé og Príncipe'; - - @override - String get sv_ => 'El Salvador'; - - @override - String get sy_ => 'Den syriske arabiske republikken'; - - @override - String get sz_ => 'Swaziland'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'Turks- og Caicosøyene'; - - @override - String get td_ => 'Tsjad'; - - @override - String get tg_ => 'Togo'; - - @override - String get th_ => 'Thailand'; - - @override - String get tj_ => 'Tadsjikistan'; - - @override - String get tk_ => 'Tokelau'; - - @override - String get tl_ => 'Øst-Timor'; - - @override - String get tm_ => 'Turkmenistan'; - - @override - String get tn_ => 'Tunisia'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'Türkiye'; - - @override - String get tt_ => 'Trinidad og Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Taiwan'; - - @override - String get tz_ => 'Tanzania, Den forente republikken Tanzania'; - - @override - String get ua_ => 'Ukraina'; - - @override - String get ug_ => 'Uganda'; - - @override - String get us_ => 'USA'; - - @override - String get uy_ => 'Uruguay'; - - @override - String get uz_ => 'Usbekistan'; - - @override - String get va_ => 'Vatikanstaten (Hellige stol)'; - - @override - String get vc_ => 'Saint Vincent og Grenadinene'; - - @override - String get ve_ => 'Venezuela'; - - @override - String get vg_ => 'De britiske Jomfruøyene'; - - @override - String get vi_ => 'De amerikanske Jomfruøyene'; - - @override - String get vn_ => 'Vietnam'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Wallis og Futuna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Jemen'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'Sør-Afrika'; - - @override - String get zm_ => 'Zambia'; - - @override - String get zw_ => 'Zimbabwe'; -} diff --git a/lib/l10n/generated/phone_field_localization_nl.dart b/lib/l10n/generated/phone_field_localization_nl.dart deleted file mode 100644 index 876f3e9d..00000000 --- a/lib/l10n/generated/phone_field_localization_nl.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Dutch Flemish (`nl`). -class PhoneFieldLocalizationNl extends PhoneFieldLocalization { - PhoneFieldLocalizationNl([super.locale = 'nl']); - - @override - String get invalidPhoneNumber => 'Ongeldig telefoonnummer'; - - @override - String get invalidCountry => 'Ongeldig land'; - - @override - String get invalidMobilePhoneNumber => 'Ongeldig mobiel nummer'; - - @override - String get invalidFixedLinePhoneNumber => 'Ongeldig vast nummer'; - - @override - String get requiredPhoneNumber => 'Telefoonnummer vereist'; - - @override - String get noResultMessage => 'Geen resultaat'; - - @override - String get ac_ => 'Hemelvaart Eiland'; - - @override - String get ad_ => 'Andorra'; - - @override - String get ae_ => 'Verenigde Arabische Emiraten'; - - @override - String get af_ => 'Afghanistan'; - - @override - String get ag_ => 'Antigua en Barbuda'; - - @override - String get ai_ => 'Anguilla'; - - @override - String get al_ => 'Albanië'; - - @override - String get am_ => 'Armenië'; - - @override - String get an_ => 'Nederlandse Antillen'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antarctica'; - - @override - String get ar_ => 'Argentinië'; - - @override - String get as_ => 'Amerikaans Samoa'; - - @override - String get at_ => 'Oostenrijk'; - - @override - String get au_ => 'Australië'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Aland-eilanden'; - - @override - String get az_ => 'Azerbeidzjan'; - - @override - String get ba_ => 'Bosnië-Herzegovina'; - - @override - String get bb_ => 'Barbados'; - - @override - String get bd_ => 'Bangladesh'; - - @override - String get be_ => 'Belgie'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bulgarije'; - - @override - String get bh_ => 'Bahrein'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Benin'; - - @override - String get bl_ => 'Sint-Bartholomeus'; - - @override - String get bm_ => 'Bermuda'; - - @override - String get bn_ => 'Brunei Darussalam'; - - @override - String get bo_ => 'Bolivia, Plurinationale Staat'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Brazilië'; - - @override - String get bs_ => 'Bahamas'; - - @override - String get bt_ => 'Bhutan'; - - @override - String get bw_ => 'Botswana'; - - @override - String get by_ => 'Wit-Rusland'; - - @override - String get bz_ => 'Belize'; - - @override - String get ca_ => 'Canada'; - - @override - String get cc_ => 'Cocos (Keeling) eilanden'; - - @override - String get cd_ => 'Congo, de Democratische Republiek Congo'; - - @override - String get cf_ => 'Centraal Afrikaanse Republiek'; - - @override - String get cg_ => 'Congo'; - - @override - String get ch_ => 'Zwitserland'; - - @override - String get ci_ => 'Ivoorkust'; - - @override - String get ck_ => 'Cook Eilanden'; - - @override - String get cl_ => 'Chili'; - - @override - String get cm_ => 'Kameroen'; - - @override - String get cn_ => 'China'; - - @override - String get co_ => 'Colombia'; - - @override - String get cr_ => 'Costa Rica'; - - @override - String get cu_ => 'Cuba'; - - @override - String get cv_ => 'Kaapverdië'; - - @override - String get cx_ => 'Kersteiland'; - - @override - String get cy_ => 'Cyprus'; - - @override - String get cz_ => 'Tsjechië'; - - @override - String get de_ => 'Duitsland'; - - @override - String get dj_ => 'Djibouti'; - - @override - String get dk_ => 'Denemarken'; - - @override - String get dm_ => 'Dominica'; - - @override - String get do_ => 'Dominicaanse Republiek'; - - @override - String get dz_ => 'Algerije'; - - @override - String get ec_ => 'Ecuador'; - - @override - String get ee_ => 'Estland'; - - @override - String get eg_ => 'Egypte'; - - @override - String get er_ => 'Eritrea'; - - @override - String get es_ => 'Spanje'; - - @override - String get et_ => 'Ethiopië'; - - @override - String get fi_ => 'Finland'; - - @override - String get fj_ => 'Fiji'; - - @override - String get fk_ => 'Falklandeilanden (Malvinas)'; - - @override - String get fm_ => 'Micronesië, Federale Staten van Micronesië'; - - @override - String get fo_ => 'Faeröer'; - - @override - String get fr_ => 'Frankrijk'; - - @override - String get ga_ => 'Gabon'; - - @override - String get gb_ => 'Verenigd Koningkrijk'; - - @override - String get gd_ => 'Grenada'; - - @override - String get ge_ => 'Georgië'; - - @override - String get gf_ => 'Frans Guyana'; - - @override - String get gg_ => 'Guernsey'; - - @override - String get gh_ => 'Ghana'; - - @override - String get gi_ => 'Gibraltar'; - - @override - String get gl_ => 'Groenland'; - - @override - String get gm_ => 'Gambia'; - - @override - String get gn_ => 'Guinea'; - - @override - String get gp_ => 'Guadeloupe'; - - @override - String get gq_ => 'Equatoriaal-Guinea'; - - @override - String get gr_ => 'Griekenland'; - - @override - String get gs_ => 'Zuid-Georgië en de Zuidelijke Sandwicheilanden'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Guinee-Bissau'; - - @override - String get gy_ => 'Guyana'; - - @override - String get hk_ => 'Hong Kong'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Kroatië'; - - @override - String get ht_ => 'Haïti'; - - @override - String get hu_ => 'Hongarije'; - - @override - String get id_ => 'Indonesië'; - - @override - String get ie_ => 'Ierland'; - - @override - String get il_ => 'Israël'; - - @override - String get im_ => 'Isle of Man'; - - @override - String get in_ => 'India'; - - @override - String get io_ => 'Brits-Indisch oceaan gebied'; - - @override - String get iq_ => 'Irak'; - - @override - String get ir_ => 'Iran, Islamitische Republiek Perzische Golf'; - - @override - String get is_ => 'IJsland'; - - @override - String get it_ => 'Italië'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Jamaica'; - - @override - String get jo_ => 'Jordanië'; - - @override - String get jp_ => 'Japan'; - - @override - String get ke_ => 'Kenia'; - - @override - String get kg_ => 'Kirgizië'; - - @override - String get kh_ => 'Cambodja'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Comoren'; - - @override - String get kn_ => 'Saint Kitts en Nevis'; - - @override - String get kp_ => 'Korea, Democratische Volksrepubliek Korea'; - - @override - String get kr_ => 'Korea, Republiek Zuid-Korea'; - - @override - String get kw_ => 'Koeweit'; - - @override - String get ky_ => 'Kaaiman Eilanden'; - - @override - String get kz_ => 'Kazachstan'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Libanon'; - - @override - String get lc_ => 'Saint Lucia'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Liberia'; - - @override - String get ls_ => 'Lesotho'; - - @override - String get lt_ => 'Litouwen'; - - @override - String get lu_ => 'Luxemburg'; - - @override - String get lv_ => 'Letland'; - - @override - String get ly_ => 'Libië'; - - @override - String get ma_ => 'Marokko'; - - @override - String get mc_ => 'Monaco'; - - @override - String get md_ => 'Moldavië'; - - @override - String get me_ => 'Montenegro'; - - @override - String get mf_ => 'Sint-Maarten'; - - @override - String get mg_ => 'Madagascar'; - - @override - String get mh_ => 'Marshall eilanden'; - - @override - String get mk_ => 'Macedonië'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar'; - - @override - String get mn_ => 'Mongolië'; - - @override - String get mo_ => 'Macao'; - - @override - String get mp_ => 'noordelijke Mariana eilanden'; - - @override - String get mq_ => 'Martinique'; - - @override - String get mr_ => 'Mauritanië'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malta'; - - @override - String get mu_ => 'Mauritius'; - - @override - String get mv_ => 'Maldiven'; - - @override - String get mw_ => 'Malawi'; - - @override - String get mx_ => 'Mexico'; - - @override - String get my_ => 'Maleisië'; - - @override - String get mz_ => 'Mozambique'; - - @override - String get na_ => 'Namibië'; - - @override - String get nc_ => 'Nieuw-Caledonië'; - - @override - String get ne_ => 'Niger'; - - @override - String get nf_ => 'Norfolkeiland'; - - @override - String get ng_ => 'Nigeria'; - - @override - String get ni_ => 'Nicaragua'; - - @override - String get nl_ => 'Nederland'; - - @override - String get no_ => 'Noorwegen'; - - @override - String get np_ => 'Nepal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'Nieuw-Zeeland'; - - @override - String get om_ => 'Oman'; - - @override - String get pa_ => 'Panama'; - - @override - String get pe_ => 'Peru'; - - @override - String get pf_ => 'Frans-Polynesië'; - - @override - String get pg_ => 'Papoea-Nieuw-Guinea'; - - @override - String get ph_ => 'Filippijnen'; - - @override - String get pk_ => 'Pakistan'; - - @override - String get pl_ => 'Polen'; - - @override - String get pm_ => 'Saint Pierre en Miquelon'; - - @override - String get pn_ => 'Pitcairn'; - - @override - String get pr_ => 'Puerto Rico'; - - @override - String get ps_ => 'Palestijns gebied, bezet'; - - @override - String get pt_ => 'Portugal'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paraguay'; - - @override - String get qa_ => 'Qatar'; - - @override - String get re_ => 'Bijeenkomst'; - - @override - String get ro_ => 'Roemenië'; - - @override - String get rs_ => 'Servië'; - - @override - String get ru_ => 'Rusland'; - - @override - String get rw_ => 'Rwanda'; - - @override - String get sa_ => 'Saoedi-Arabië'; - - @override - String get sb_ => 'Solomon eilanden'; - - @override - String get sc_ => 'Seychellen'; - - @override - String get sd_ => 'Soedan'; - - @override - String get se_ => 'Zweden'; - - @override - String get sg_ => 'Singapore'; - - @override - String get si_ => 'Slovenië'; - - @override - String get sk_ => 'Slowakije'; - - @override - String get sl_ => 'Sierra Leone'; - - @override - String get sm_ => 'San Marino'; - - @override - String get sn_ => 'Senegal'; - - @override - String get so_ => 'Somalië'; - - @override - String get sr_ => 'Suriname'; - - @override - String get ss_ => 'Zuid Soedan'; - - @override - String get st_ => 'Sao Tomé en Principe'; - - @override - String get sv_ => 'El Salvador'; - - @override - String get sy_ => 'Syrische Arabische Republiek'; - - @override - String get sz_ => 'Swaziland'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'Turks- en Caicoseilanden'; - - @override - String get td_ => 'Tsjaad'; - - @override - String get tg_ => 'Gaan'; - - @override - String get th_ => 'Thailand'; - - @override - String get tj_ => 'Tadzjikistan'; - - @override - String get tk_ => 'Tokelau'; - - @override - String get tl_ => 'Oost-Timor'; - - @override - String get tm_ => 'Turkmenistan'; - - @override - String get tn_ => 'Tunesië'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'kalkoen'; - - @override - String get tt_ => 'Trinidad en Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Taiwan'; - - @override - String get tz_ => 'Tanzania, Verenigde Republiek Tanzania'; - - @override - String get ua_ => 'Oekraïne'; - - @override - String get ug_ => 'Oeganda'; - - @override - String get us_ => 'Verenigde Staten'; - - @override - String get uy_ => 'Uruguay'; - - @override - String get uz_ => 'Oezbekistan'; - - @override - String get va_ => 'Heilige Stoel (Vaticaanstad)'; - - @override - String get vc_ => 'Saint Vincent en de Grenadines'; - - @override - String get ve_ => 'Venezuela'; - - @override - String get vg_ => 'Britse Maagdeneilanden'; - - @override - String get vi_ => 'Maagdeneilanden, VS'; - - @override - String get vn_ => 'Vietnam'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Wallis en Futuna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Jemen'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'Zuid-Afrika'; - - @override - String get zm_ => 'Zambia'; - - @override - String get zw_ => 'Zimbabwe'; -} diff --git a/lib/l10n/generated/phone_field_localization_pt.dart b/lib/l10n/generated/phone_field_localization_pt.dart deleted file mode 100644 index 58b6da97..00000000 --- a/lib/l10n/generated/phone_field_localization_pt.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Portuguese (`pt`). -class PhoneFieldLocalizationPt extends PhoneFieldLocalization { - PhoneFieldLocalizationPt([super.locale = 'pt']); - - @override - String get invalidPhoneNumber => 'Número de telefone inválido'; - - @override - String get invalidCountry => 'País inválido'; - - @override - String get invalidMobilePhoneNumber => 'Número de telefone celular inválido'; - - @override - String get invalidFixedLinePhoneNumber => 'Número de telefone fixo inválido'; - - @override - String get requiredPhoneNumber => 'Número de telefone obrigatório'; - - @override - String get noResultMessage => 'Sem resultado'; - - @override - String get ac_ => 'Ilha da Ascensão'; - - @override - String get ad_ => 'Andorra'; - - @override - String get ae_ => 'Emirados Árabes Unidos'; - - @override - String get af_ => 'Afeganistão'; - - @override - String get ag_ => 'Antigua e Barbuda'; - - @override - String get ai_ => 'Anguilla'; - - @override - String get al_ => 'Albânia'; - - @override - String get am_ => 'Armênia'; - - @override - String get an_ => 'Antilhas Holandesas'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antártica'; - - @override - String get ar_ => 'Argentina'; - - @override - String get as_ => 'Samoa Americana'; - - @override - String get at_ => 'Áustria'; - - @override - String get au_ => 'Austrália'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Ilhas Aland'; - - @override - String get az_ => 'Azerbaijão'; - - @override - String get ba_ => 'Bósnia e Herzegovina'; - - @override - String get bb_ => 'Barbados'; - - @override - String get bd_ => 'Bangladesh'; - - @override - String get be_ => 'Bélgica'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bulgária'; - - @override - String get bh_ => 'Bahrain'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Benin'; - - @override - String get bl_ => 'São Bartolomeu'; - - @override - String get bm_ => 'Bermudas'; - - @override - String get bn_ => 'Brunei Darussalam'; - - @override - String get bo_ => 'Bolívia, Estado Plurinacional de'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Brasil'; - - @override - String get bs_ => 'Bahamas'; - - @override - String get bt_ => 'Butão'; - - @override - String get bw_ => 'Botswana'; - - @override - String get by_ => 'Bielo-Rússia'; - - @override - String get bz_ => 'Belize'; - - @override - String get ca_ => 'Canadá'; - - @override - String get cc_ => 'Ilhas Cocos (Keeling)'; - - @override - String get cd_ => 'Congo, República Democrática do Congo'; - - @override - String get cf_ => 'República Centro-Africana'; - - @override - String get cg_ => 'Congo'; - - @override - String get ch_ => 'Suíça'; - - @override - String get ci_ => 'Costa do Marfim'; - - @override - String get ck_ => 'Ilhas Cook'; - - @override - String get cl_ => 'Chile'; - - @override - String get cm_ => 'Camarões'; - - @override - String get cn_ => 'China'; - - @override - String get co_ => 'Colômbia'; - - @override - String get cr_ => 'Costa Rica'; - - @override - String get cu_ => 'Cuba'; - - @override - String get cv_ => 'cabo Verde'; - - @override - String get cx_ => 'Ilha do Natal'; - - @override - String get cy_ => 'Chipre'; - - @override - String get cz_ => 'República Checa'; - - @override - String get de_ => 'Alemanha'; - - @override - String get dj_ => 'Djibouti'; - - @override - String get dk_ => 'Dinamarca'; - - @override - String get dm_ => 'Dominica'; - - @override - String get do_ => 'República Dominicana'; - - @override - String get dz_ => 'Argélia'; - - @override - String get ec_ => 'Equador'; - - @override - String get ee_ => 'Estônia'; - - @override - String get eg_ => 'Egito'; - - @override - String get er_ => 'Eritreia'; - - @override - String get es_ => 'Espanha'; - - @override - String get et_ => 'Etiópia'; - - @override - String get fi_ => 'Finlândia'; - - @override - String get fj_ => 'Fiji'; - - @override - String get fk_ => 'Ilhas Falkland (Malvinas)'; - - @override - String get fm_ => 'Micronésia, Estados Federados da Micronésia'; - - @override - String get fo_ => 'ilhas Faroe'; - - @override - String get fr_ => 'França'; - - @override - String get ga_ => 'Gabão'; - - @override - String get gb_ => 'Reino Unido'; - - @override - String get gd_ => 'Grenada'; - - @override - String get ge_ => 'Georgia'; - - @override - String get gf_ => 'Guiana Francesa'; - - @override - String get gg_ => 'Guernsey'; - - @override - String get gh_ => 'Gana'; - - @override - String get gi_ => 'Gibraltar'; - - @override - String get gl_ => 'Groenlândia'; - - @override - String get gm_ => 'Gâmbia'; - - @override - String get gn_ => 'Guiné'; - - @override - String get gp_ => 'Guadalupe'; - - @override - String get gq_ => 'Guiné Equatorial'; - - @override - String get gr_ => 'Grécia'; - - @override - String get gs_ => 'Geórgia do Sul e Ilhas Sandwich do Sul'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Guinea-bissau'; - - @override - String get gy_ => 'Guiana'; - - @override - String get hk_ => 'Hong Kong'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Croácia'; - - @override - String get ht_ => 'Haiti'; - - @override - String get hu_ => 'Hungria'; - - @override - String get id_ => 'Indonésia'; - - @override - String get ie_ => 'Irlanda'; - - @override - String get il_ => 'Israel'; - - @override - String get im_ => 'Ilha de Man'; - - @override - String get in_ => 'Índia'; - - @override - String get io_ => 'Território Britânico do Oceano Índico'; - - @override - String get iq_ => 'Iraque'; - - @override - String get ir_ => 'Irã, República Islâmica do Golfo Pérsico'; - - @override - String get is_ => 'Islândia'; - - @override - String get it_ => 'Itália'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Jamaica'; - - @override - String get jo_ => 'Jordânia'; - - @override - String get jp_ => 'Japão'; - - @override - String get ke_ => 'Quênia'; - - @override - String get kg_ => 'Quirguistão'; - - @override - String get kh_ => 'Camboja'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Comores'; - - @override - String get kn_ => 'São Cristóvão e Neves'; - - @override - String get kp_ => 'Coreia, República Popular Democrática da Coreia'; - - @override - String get kr_ => 'Coreia, República da Coreia do Sul'; - - @override - String get kw_ => 'Kuwait'; - - @override - String get ky_ => 'Ilhas Cayman'; - - @override - String get kz_ => 'Cazaquistão'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Líbano'; - - @override - String get lc_ => 'Santa Lúcia'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Libéria'; - - @override - String get ls_ => 'Lesoto'; - - @override - String get lt_ => 'Lituânia'; - - @override - String get lu_ => 'Luxemburgo'; - - @override - String get lv_ => 'Letônia'; - - @override - String get ly_ => 'Jamahiriya Árabe da Líbia'; - - @override - String get ma_ => 'Marrocos'; - - @override - String get mc_ => 'Mônaco'; - - @override - String get md_ => 'Moldova'; - - @override - String get me_ => 'Montenegro'; - - @override - String get mf_ => 'são Martinho'; - - @override - String get mg_ => 'Madagáscar'; - - @override - String get mh_ => 'Ilhas Marshall'; - - @override - String get mk_ => 'Macedonia'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar'; - - @override - String get mn_ => 'Mongólia'; - - @override - String get mo_ => 'Macau'; - - @override - String get mp_ => 'Ilhas Marianas do Norte'; - - @override - String get mq_ => 'Martinica'; - - @override - String get mr_ => 'Mauritânia'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malta'; - - @override - String get mu_ => 'Maurício'; - - @override - String get mv_ => 'Maldivas'; - - @override - String get mw_ => 'Malawi'; - - @override - String get mx_ => 'México'; - - @override - String get my_ => 'Malásia'; - - @override - String get mz_ => 'Moçambique'; - - @override - String get na_ => 'Namibia'; - - @override - String get nc_ => 'Nova Caledônia'; - - @override - String get ne_ => 'Níger'; - - @override - String get nf_ => 'Ilha Norfolk'; - - @override - String get ng_ => 'Nigéria'; - - @override - String get ni_ => 'Nicarágua'; - - @override - String get nl_ => 'Países Baixos'; - - @override - String get no_ => 'Noruega'; - - @override - String get np_ => 'Nepal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'Nova Zelândia'; - - @override - String get om_ => 'Omã'; - - @override - String get pa_ => 'Panamá'; - - @override - String get pe_ => 'Peru'; - - @override - String get pf_ => 'Polinésia Francesa'; - - @override - String get pg_ => 'Papua Nova Guiné'; - - @override - String get ph_ => 'Filipinas'; - - @override - String get pk_ => 'Paquistão'; - - @override - String get pl_ => 'Polônia'; - - @override - String get pm_ => 'São Pedro e Miquelão'; - - @override - String get pn_ => 'Pitcairn'; - - @override - String get pr_ => 'Porto Rico'; - - @override - String get ps_ => 'Território Palestino, Ocupado'; - - @override - String get pt_ => 'Portugal'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paraguai'; - - @override - String get qa_ => 'Catar'; - - @override - String get re_ => 'Reunião'; - - @override - String get ro_ => 'Romênia'; - - @override - String get rs_ => 'Sérvia'; - - @override - String get ru_ => 'Rússia'; - - @override - String get rw_ => 'Ruanda'; - - @override - String get sa_ => 'Arábia Saudita'; - - @override - String get sb_ => 'Ilhas Salomão'; - - @override - String get sc_ => 'Seychelles'; - - @override - String get sd_ => 'Sudão'; - - @override - String get se_ => 'Suécia'; - - @override - String get sg_ => 'Cingapura'; - - @override - String get si_ => 'Eslovênia'; - - @override - String get sk_ => 'Eslováquia'; - - @override - String get sl_ => 'Serra Leoa'; - - @override - String get sm_ => 'San Marino'; - - @override - String get sn_ => 'Senegal'; - - @override - String get so_ => 'Somália'; - - @override - String get sr_ => 'Suriname'; - - @override - String get ss_ => 'Sudão do Sul'; - - @override - String get st_ => 'São Tomé e Príncipe'; - - @override - String get sv_ => 'El Salvador'; - - @override - String get sy_ => 'República Árabe da Síria'; - - @override - String get sz_ => 'Suazilândia'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'Ilhas Turcas e Caicos'; - - @override - String get td_ => 'Chade'; - - @override - String get tg_ => 'Ir'; - - @override - String get th_ => 'Tailândia'; - - @override - String get tj_ => 'Tajiquistão'; - - @override - String get tk_ => 'Tokelau'; - - @override - String get tl_ => 'Timor-Leste'; - - @override - String get tm_ => 'Turcomenistão'; - - @override - String get tn_ => 'Tunísia'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'Peru'; - - @override - String get tt_ => 'Trinidad e Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Taiwan'; - - @override - String get tz_ => 'Tanzânia, República Unida da Tanzânia'; - - @override - String get ua_ => 'Ucrânia'; - - @override - String get ug_ => 'Uganda'; - - @override - String get us_ => 'Estados Unidos'; - - @override - String get uy_ => 'Uruguai'; - - @override - String get uz_ => 'Uzbequistão'; - - @override - String get va_ => 'Santa Sé (Estado da Cidade do Vaticano)'; - - @override - String get vc_ => 'São Vicente e Granadinas'; - - @override - String get ve_ => 'Venezuela'; - - @override - String get vg_ => 'Ilhas Virgens Britânicas'; - - @override - String get vi_ => 'Ilhas Virgens, EUA'; - - @override - String get vn_ => 'Vietnã'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Wallis e Futuna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Iémen'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'África do Sul'; - - @override - String get zm_ => 'Zâmbia'; - - @override - String get zw_ => 'Zimbábue'; -} diff --git a/lib/l10n/generated/phone_field_localization_ru.dart b/lib/l10n/generated/phone_field_localization_ru.dart deleted file mode 100644 index 99d31408..00000000 --- a/lib/l10n/generated/phone_field_localization_ru.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Russian (`ru`). -class PhoneFieldLocalizationRu extends PhoneFieldLocalization { - PhoneFieldLocalizationRu([super.locale = 'ru']); - - @override - String get invalidPhoneNumber => 'Неправильный номер телефона'; - - @override - String get invalidCountry => 'Неверная страна'; - - @override - String get invalidMobilePhoneNumber => 'Неверный номер мобильного телефона'; - - @override - String get invalidFixedLinePhoneNumber => 'Недействительный номер стационарного телефона'; - - @override - String get requiredPhoneNumber => 'Требуется номер телефона'; - - @override - String get noResultMessage => 'Безрезультатно'; - - @override - String get ac_ => 'Остров Вознесения'; - - @override - String get ad_ => 'Андорра'; - - @override - String get ae_ => 'Объединенные Арабские Эмираты'; - - @override - String get af_ => 'Афганистан'; - - @override - String get ag_ => 'Антигуа и Барбуда'; - - @override - String get ai_ => 'Ангилья'; - - @override - String get al_ => 'Албания'; - - @override - String get am_ => 'Армения'; - - @override - String get an_ => 'Нидерландские Антильские острова'; - - @override - String get ao_ => 'Ангола'; - - @override - String get aq_ => 'Антарктида'; - - @override - String get ar_ => 'Аргентина'; - - @override - String get as_ => 'американское Самоа'; - - @override - String get at_ => 'Австрия'; - - @override - String get au_ => 'Австралия'; - - @override - String get aw_ => 'Аруба'; - - @override - String get ax_ => 'Аландские острова'; - - @override - String get az_ => 'Азербайджан'; - - @override - String get ba_ => 'Босния и Герцеговина'; - - @override - String get bb_ => 'Барбадос'; - - @override - String get bd_ => 'Бангладеш'; - - @override - String get be_ => 'Бельгия'; - - @override - String get bf_ => 'Буркина-Фасо'; - - @override - String get bg_ => 'Болгария'; - - @override - String get bh_ => 'Бахрейн'; - - @override - String get bi_ => 'Бурунди'; - - @override - String get bj_ => 'Бенин'; - - @override - String get bl_ => 'Сен-Бартелеми'; - - @override - String get bm_ => 'Бермудские острова'; - - @override - String get bn_ => 'Бруней-Даруссалам'; - - @override - String get bo_ => 'Боливия, Многонациональное Государство'; - - @override - String get bq_ => 'Бонайре'; - - @override - String get br_ => 'Бразилия'; - - @override - String get bs_ => 'Багамы'; - - @override - String get bt_ => 'Бутан'; - - @override - String get bw_ => 'Ботсвана'; - - @override - String get by_ => 'Беларусь'; - - @override - String get bz_ => 'Белиз'; - - @override - String get ca_ => 'Канада'; - - @override - String get cc_ => 'Кокосовые (Килинг) острова'; - - @override - String get cd_ => 'Конго, Демократическая Республика Конго'; - - @override - String get cf_ => 'Центрально-Африканская Республика'; - - @override - String get cg_ => 'Конго'; - - @override - String get ch_ => 'Швейцария'; - - @override - String get ci_ => 'Берег Слоновой Кости'; - - @override - String get ck_ => 'Острова Кука'; - - @override - String get cl_ => 'Чили'; - - @override - String get cm_ => 'Камерун'; - - @override - String get cn_ => 'Китай'; - - @override - String get co_ => 'Колумбия'; - - @override - String get cr_ => 'Коста-Рика'; - - @override - String get cu_ => 'Куба'; - - @override - String get cv_ => 'Кабо-Верде'; - - @override - String get cx_ => 'Остров Рождества'; - - @override - String get cy_ => 'Кипр'; - - @override - String get cz_ => 'Республика Чехия'; - - @override - String get de_ => 'Германия'; - - @override - String get dj_ => 'Джибути'; - - @override - String get dk_ => 'Дания'; - - @override - String get dm_ => 'Доминика'; - - @override - String get do_ => 'Доминиканская Республика'; - - @override - String get dz_ => 'Алжир'; - - @override - String get ec_ => 'Эквадор'; - - @override - String get ee_ => 'Эстония'; - - @override - String get eg_ => 'Египет'; - - @override - String get er_ => 'Эритрея'; - - @override - String get es_ => 'Испания'; - - @override - String get et_ => 'Эфиопия'; - - @override - String get fi_ => 'Финляндия'; - - @override - String get fj_ => 'Фиджи'; - - @override - String get fk_ => 'Фолклендские (Мальвинские) острова'; - - @override - String get fm_ => 'Микронезия, Федеративные Штаты Микронезии'; - - @override - String get fo_ => 'Фарерские острова'; - - @override - String get fr_ => 'Франция'; - - @override - String get ga_ => 'Габон'; - - @override - String get gb_ => 'Великобритания'; - - @override - String get gd_ => 'Гренада'; - - @override - String get ge_ => 'Грузия'; - - @override - String get gf_ => 'Французская Гвиана'; - - @override - String get gg_ => 'Гернси'; - - @override - String get gh_ => 'Гана'; - - @override - String get gi_ => 'Гибралтар'; - - @override - String get gl_ => 'Гренландия'; - - @override - String get gm_ => 'Гамбия'; - - @override - String get gn_ => 'Гвинея'; - - @override - String get gp_ => 'Гваделупа'; - - @override - String get gq_ => 'Экваториальная Гвинея'; - - @override - String get gr_ => 'Греция'; - - @override - String get gs_ => 'Южная Георгия и Южные Сандвичевы острова'; - - @override - String get gt_ => 'Гватемала'; - - @override - String get gu_ => 'Гуам'; - - @override - String get gw_ => 'Гвинея-Бисау'; - - @override - String get gy_ => 'Гайана'; - - @override - String get hk_ => 'Гонконг'; - - @override - String get hn_ => 'Гондурас'; - - @override - String get hr_ => 'Хорватия'; - - @override - String get ht_ => 'Гаити'; - - @override - String get hu_ => 'Венгрия'; - - @override - String get id_ => 'Индонезия'; - - @override - String get ie_ => 'Ирландия'; - - @override - String get il_ => 'Израиль'; - - @override - String get im_ => 'Остров Мэн'; - - @override - String get in_ => 'Индия'; - - @override - String get io_ => 'Британская территория Индийского океана'; - - @override - String get iq_ => 'Ирак'; - - @override - String get ir_ => 'Иран, Исламская Республика Персидский залив'; - - @override - String get is_ => 'Исландия'; - - @override - String get it_ => 'Италия'; - - @override - String get je_ => 'Джерси'; - - @override - String get jm_ => 'Ямайка'; - - @override - String get jo_ => 'Иордания'; - - @override - String get jp_ => 'Япония'; - - @override - String get ke_ => 'Кения'; - - @override - String get kg_ => 'Кыргызстан'; - - @override - String get kh_ => 'Камбоджа'; - - @override - String get ki_ => 'Кирибати'; - - @override - String get km_ => 'Коморские острова'; - - @override - String get kn_ => 'Сент-Китс и Невис'; - - @override - String get kp_ => 'Корея, Корейская Народно-Демократическая Республика'; - - @override - String get kr_ => 'Корея, Республика Южная Корея'; - - @override - String get kw_ => 'Кувейт'; - - @override - String get ky_ => 'Каймановы острова'; - - @override - String get kz_ => 'Казахстан'; - - @override - String get la_ => 'Лаос'; - - @override - String get lb_ => 'Ливан'; - - @override - String get lc_ => 'Санкт-Люсия'; - - @override - String get li_ => 'Лихтенштейн'; - - @override - String get lk_ => 'Шри-Ланка'; - - @override - String get lr_ => 'Либерия'; - - @override - String get ls_ => 'Лесото'; - - @override - String get lt_ => 'Литва'; - - @override - String get lu_ => 'Люксембург'; - - @override - String get lv_ => 'Латвия'; - - @override - String get ly_ => 'Ливийская арабская джамахирия'; - - @override - String get ma_ => 'Марокко'; - - @override - String get mc_ => 'Монако'; - - @override - String get md_ => 'Молдова'; - - @override - String get me_ => 'Черногория'; - - @override - String get mf_ => 'Сен-Мартен'; - - @override - String get mg_ => 'Мадагаскар'; - - @override - String get mh_ => 'Маршалловы острова'; - - @override - String get mk_ => 'Македония'; - - @override - String get ml_ => 'Мали'; - - @override - String get mm_ => 'Мьянма'; - - @override - String get mn_ => 'Монголия'; - - @override - String get mo_ => 'Макао'; - - @override - String get mp_ => 'Северные Марианские острова'; - - @override - String get mq_ => 'Мартиника'; - - @override - String get mr_ => 'Мавритания'; - - @override - String get ms_ => 'Монтсеррат'; - - @override - String get mt_ => 'Мальта'; - - @override - String get mu_ => 'Маврикий'; - - @override - String get mv_ => 'Мальдивы'; - - @override - String get mw_ => 'Малави'; - - @override - String get mx_ => 'Мексика'; - - @override - String get my_ => 'Малайзия'; - - @override - String get mz_ => 'Мозамбик'; - - @override - String get na_ => 'Намибия'; - - @override - String get nc_ => 'Новая Каледония'; - - @override - String get ne_ => 'Нигер'; - - @override - String get nf_ => 'Остров Норфолк'; - - @override - String get ng_ => 'Нигерия'; - - @override - String get ni_ => 'Никарагуа'; - - @override - String get nl_ => 'Нидерланды'; - - @override - String get no_ => 'Норвегия'; - - @override - String get np_ => 'Непал'; - - @override - String get nr_ => 'Науру'; - - @override - String get nu_ => 'Ниуэ'; - - @override - String get nz_ => 'Новая Зеландия'; - - @override - String get om_ => 'Оман'; - - @override - String get pa_ => 'Панама'; - - @override - String get pe_ => 'Перу'; - - @override - String get pf_ => 'Французская Полинезия'; - - @override - String get pg_ => 'Папуа - Новая Гвинея'; - - @override - String get ph_ => 'Филиппины'; - - @override - String get pk_ => 'Пакистан'; - - @override - String get pl_ => 'Польша'; - - @override - String get pm_ => 'Сен-Пьер и Микелон'; - - @override - String get pn_ => 'Питкэрн'; - - @override - String get pr_ => 'Пуэрто-Рико'; - - @override - String get ps_ => 'Палестинская территория, оккупированная'; - - @override - String get pt_ => 'Португалия'; - - @override - String get pw_ => 'Палау'; - - @override - String get py_ => 'Парагвай'; - - @override - String get qa_ => 'Катар'; - - @override - String get re_ => 'Воссоединение'; - - @override - String get ro_ => 'Румыния'; - - @override - String get rs_ => 'Сербия'; - - @override - String get ru_ => 'Россия'; - - @override - String get rw_ => 'Руанда'; - - @override - String get sa_ => 'Саудовская Аравия'; - - @override - String get sb_ => 'Соломоновы острова'; - - @override - String get sc_ => 'Сейшельские острова'; - - @override - String get sd_ => 'Судан'; - - @override - String get se_ => 'Швеция'; - - @override - String get sg_ => 'Сингапур'; - - @override - String get si_ => 'Словения'; - - @override - String get sk_ => 'Словакия'; - - @override - String get sl_ => 'Сьерра-Леоне'; - - @override - String get sm_ => 'Сан-Марино'; - - @override - String get sn_ => 'Сенегал'; - - @override - String get so_ => 'Сомали'; - - @override - String get sr_ => 'Суринам'; - - @override - String get ss_ => 'южный Судан'; - - @override - String get st_ => 'Сан-Томе и Принсипи'; - - @override - String get sv_ => 'Эль Сальвадор'; - - @override - String get sy_ => 'Сирийская Арабская Республика'; - - @override - String get sz_ => 'Свазиленд'; - - @override - String get ta_ => 'Тристан-да-Кунья'; - - @override - String get tc_ => 'Острова Теркс и Кайкос'; - - @override - String get td_ => 'Чад'; - - @override - String get tg_ => 'Идти'; - - @override - String get th_ => 'Таиланд'; - - @override - String get tj_ => 'Таджикистан'; - - @override - String get tk_ => 'Токелау'; - - @override - String get tl_ => 'Тимор-Лешти'; - - @override - String get tm_ => 'Туркменистан'; - - @override - String get tn_ => 'Тунис'; - - @override - String get to_ => 'Тонга'; - - @override - String get tr_ => 'Турция'; - - @override - String get tt_ => 'Тринидад и Тобаго'; - - @override - String get tv_ => 'Тувалу'; - - @override - String get tw_ => 'Тайвань'; - - @override - String get tz_ => 'Танзания, Объединенная Республика Танзания'; - - @override - String get ua_ => 'Украина'; - - @override - String get ug_ => 'Уганда'; - - @override - String get us_ => 'Соединенные Штаты Америки'; - - @override - String get uy_ => 'Уругвай'; - - @override - String get uz_ => 'Узбекистан'; - - @override - String get va_ => 'Святой Престол (государство-город Ватикан)'; - - @override - String get vc_ => 'Святой Винсент и Гренадины'; - - @override - String get ve_ => 'Венесуэла'; - - @override - String get vg_ => 'Виргинские острова, Британские'; - - @override - String get vi_ => 'Виргинские острова, США'; - - @override - String get vn_ => 'Вьетнам'; - - @override - String get vu_ => 'Вануату'; - - @override - String get wf_ => 'Уоллис и Футуна'; - - @override - String get ws_ => 'Самоа'; - - @override - String get ye_ => 'Йемен'; - - @override - String get yt_ => 'Майотта'; - - @override - String get za_ => 'Южная Африка'; - - @override - String get zm_ => 'Замбия'; - - @override - String get zw_ => 'Зимбабве'; -} diff --git a/lib/l10n/generated/phone_field_localization_sv.dart b/lib/l10n/generated/phone_field_localization_sv.dart deleted file mode 100644 index 02bb7b8a..00000000 --- a/lib/l10n/generated/phone_field_localization_sv.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Swedish (`sv`). -class PhoneFieldLocalizationSv extends PhoneFieldLocalization { - PhoneFieldLocalizationSv([super.locale = 'sv']); - - @override - String get invalidPhoneNumber => 'Ogiltigt telefonnummer'; - - @override - String get invalidCountry => 'Ogiltigt land'; - - @override - String get invalidMobilePhoneNumber => 'Ogiltigt mobilnummer'; - - @override - String get invalidFixedLinePhoneNumber => 'Ogiltigt fast telefonnummer'; - - @override - String get requiredPhoneNumber => 'Obligatoriskt telefonnummer'; - - @override - String get noResultMessage => 'Inget resultat'; - - @override - String get ac_ => 'Ascension Island'; - - @override - String get ad_ => 'Andorra'; - - @override - String get ae_ => 'Förenade Arabemiraten'; - - @override - String get af_ => 'Afghanistan'; - - @override - String get ag_ => 'Antigua och Barbuda'; - - @override - String get ai_ => 'Anguilla'; - - @override - String get al_ => 'Albanien'; - - @override - String get am_ => 'Armenien'; - - @override - String get an_ => 'Nederländska Antillerna'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antarktis'; - - @override - String get ar_ => 'Argentina'; - - @override - String get as_ => 'Amerikanska Samoa'; - - @override - String get at_ => 'Österrike'; - - @override - String get au_ => 'Australien'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Åland'; - - @override - String get az_ => 'Azerbajdzjan'; - - @override - String get ba_ => 'Bosnien och Hercegovina'; - - @override - String get bb_ => 'Barbados'; - - @override - String get bd_ => 'Bangladesh'; - - @override - String get be_ => 'Belgien'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bulgarien'; - - @override - String get bh_ => 'Bahrain'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Benin'; - - @override - String get bl_ => 'S:t Barthélemy'; - - @override - String get bm_ => 'Bermuda'; - - @override - String get bn_ => 'Brunei'; - - @override - String get bo_ => 'Bolivia'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Brasilien'; - - @override - String get bs_ => 'Bahamas'; - - @override - String get bt_ => 'Bhutan'; - - @override - String get bw_ => 'Botswana'; - - @override - String get by_ => 'Vitryssland'; - - @override - String get bz_ => 'Belize'; - - @override - String get ca_ => 'Kanada'; - - @override - String get cc_ => 'Kokosöarna'; - - @override - String get cd_ => 'Kongo-Kinshasa'; - - @override - String get cf_ => 'Centralafrikanska republiken'; - - @override - String get cg_ => 'Kongo-Brazzaville'; - - @override - String get ch_ => 'Schweiz'; - - @override - String get ci_ => 'Côte d’Ivoire'; - - @override - String get ck_ => 'Cooköarna'; - - @override - String get cl_ => 'Chile'; - - @override - String get cm_ => 'Kamerun'; - - @override - String get cn_ => 'Kina'; - - @override - String get co_ => 'Colombia'; - - @override - String get cr_ => 'Costa Rica'; - - @override - String get cu_ => 'Kuba'; - - @override - String get cv_ => 'Kap Verde'; - - @override - String get cx_ => 'Julön'; - - @override - String get cy_ => 'Cypern'; - - @override - String get cz_ => 'Tjeckien'; - - @override - String get de_ => 'Tyskland'; - - @override - String get dj_ => 'Djibouti'; - - @override - String get dk_ => 'Danmark'; - - @override - String get dm_ => 'Dominica'; - - @override - String get do_ => 'Dominikanska republiken'; - - @override - String get dz_ => 'Algeriet'; - - @override - String get ec_ => 'Ecuador'; - - @override - String get ee_ => 'Estland'; - - @override - String get eg_ => 'Egypten'; - - @override - String get er_ => 'Eritrea'; - - @override - String get es_ => 'Spanien'; - - @override - String get et_ => 'Etiopien'; - - @override - String get fi_ => 'Finland'; - - @override - String get fj_ => 'Fiji'; - - @override - String get fk_ => 'Falklandsöarna'; - - @override - String get fm_ => 'Mikronesien'; - - @override - String get fo_ => 'Färöarna'; - - @override - String get fr_ => 'Frankrike'; - - @override - String get ga_ => 'Gabon'; - - @override - String get gb_ => 'Storbritannien'; - - @override - String get gd_ => 'Grenada'; - - @override - String get ge_ => 'Georgien'; - - @override - String get gf_ => 'Franska Guyana'; - - @override - String get gg_ => 'Guernsey'; - - @override - String get gh_ => 'Ghana'; - - @override - String get gi_ => 'Gibraltar'; - - @override - String get gl_ => 'Grönland'; - - @override - String get gm_ => 'Gambia'; - - @override - String get gn_ => 'Guinea'; - - @override - String get gp_ => 'Guadeloupe'; - - @override - String get gq_ => 'Ekvatorialguinea'; - - @override - String get gr_ => 'Grekland'; - - @override - String get gs_ => 'Sydgeorgien och Sydsandwichöarna'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Guinea-Bissau'; - - @override - String get gy_ => 'Guyana'; - - @override - String get hk_ => 'Hongkong SAR'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Kroatien'; - - @override - String get ht_ => 'Haiti'; - - @override - String get hu_ => 'Ungern'; - - @override - String get id_ => 'Indonesien'; - - @override - String get ie_ => 'Irland'; - - @override - String get il_ => 'Israel'; - - @override - String get im_ => 'Isle of Man'; - - @override - String get in_ => 'Indien'; - - @override - String get io_ => 'Brittiska territoriet i Indiska oceanen'; - - @override - String get iq_ => 'Irak'; - - @override - String get ir_ => 'Iran'; - - @override - String get is_ => 'Island'; - - @override - String get it_ => 'Italien'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Jamaica'; - - @override - String get jo_ => 'Jordanien'; - - @override - String get jp_ => 'Japan'; - - @override - String get ke_ => 'Kenya'; - - @override - String get kg_ => 'Kirgizistan'; - - @override - String get kh_ => 'Kambodja'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Komorerna'; - - @override - String get kn_ => 'S:t Kitts och Nevis'; - - @override - String get kp_ => 'Nordkorea'; - - @override - String get kr_ => 'Sydkorea'; - - @override - String get kw_ => 'Kuwait'; - - @override - String get ky_ => 'Caymanöarna'; - - @override - String get kz_ => 'Kazakstan'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Libanon'; - - @override - String get lc_ => 'S:t Lucia'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Liberia'; - - @override - String get ls_ => 'Lesotho'; - - @override - String get lt_ => 'Litauen'; - - @override - String get lu_ => 'Luxemburg'; - - @override - String get lv_ => 'Lettland'; - - @override - String get ly_ => 'Libyen'; - - @override - String get ma_ => 'Marocko'; - - @override - String get mc_ => 'Monaco'; - - @override - String get md_ => 'Moldavien'; - - @override - String get me_ => 'Montenegro'; - - @override - String get mf_ => 'Saint-Martin'; - - @override - String get mg_ => 'Madagaskar'; - - @override - String get mh_ => 'Marshallöarna'; - - @override - String get mk_ => 'Nordmakedonien'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar (Burma)'; - - @override - String get mn_ => 'Mongoliet'; - - @override - String get mo_ => 'Macao SAR'; - - @override - String get mp_ => 'Nordmarianerna'; - - @override - String get mq_ => 'Martinique'; - - @override - String get mr_ => 'Mauretanien'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malta'; - - @override - String get mu_ => 'Mauritius'; - - @override - String get mv_ => 'Maldiverna'; - - @override - String get mw_ => 'Malawi'; - - @override - String get mx_ => 'Mexiko'; - - @override - String get my_ => 'Malaysia'; - - @override - String get mz_ => 'Moçambique'; - - @override - String get na_ => 'Namibia'; - - @override - String get nc_ => 'Nya Kaledonien'; - - @override - String get ne_ => 'Niger'; - - @override - String get nf_ => 'Norfolkön'; - - @override - String get ng_ => 'Nigeria'; - - @override - String get ni_ => 'Nicaragua'; - - @override - String get nl_ => 'Nederländerna'; - - @override - String get no_ => 'Norge'; - - @override - String get np_ => 'Nepal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'Nya Zeeland'; - - @override - String get om_ => 'Oman'; - - @override - String get pa_ => 'Panama'; - - @override - String get pe_ => 'Peru'; - - @override - String get pf_ => 'Franska Polynesien'; - - @override - String get pg_ => 'Papua Nya Guinea'; - - @override - String get ph_ => 'Filippinerna'; - - @override - String get pk_ => 'Pakistan'; - - @override - String get pl_ => 'Polen'; - - @override - String get pm_ => 'S:t Pierre och Miquelon'; - - @override - String get pn_ => 'Pitcairnöarna'; - - @override - String get pr_ => 'Puerto Rico'; - - @override - String get ps_ => 'Palestinska territorierna'; - - @override - String get pt_ => 'Portugal'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paraguay'; - - @override - String get qa_ => 'Qatar'; - - @override - String get re_ => 'Réunion'; - - @override - String get ro_ => 'Rumänien'; - - @override - String get rs_ => 'Serbien'; - - @override - String get ru_ => 'Ryssland'; - - @override - String get rw_ => 'Rwanda'; - - @override - String get sa_ => 'Saudiarabien'; - - @override - String get sb_ => 'Salomonöarna'; - - @override - String get sc_ => 'Seychellerna'; - - @override - String get sd_ => 'Sudan'; - - @override - String get se_ => 'Sverige'; - - @override - String get sg_ => 'Singapore'; - - @override - String get si_ => 'Slovenien'; - - @override - String get sk_ => 'Slovakien'; - - @override - String get sl_ => 'Sierra Leone'; - - @override - String get sm_ => 'San Marino'; - - @override - String get sn_ => 'Senegal'; - - @override - String get so_ => 'Somalia'; - - @override - String get sr_ => 'Surinam'; - - @override - String get ss_ => 'Sydsudan'; - - @override - String get st_ => 'São Tomé och Príncipe'; - - @override - String get sv_ => 'El Salvador'; - - @override - String get sy_ => 'Syrien'; - - @override - String get sz_ => 'Swaziland'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'Turks- och Caicosöarna'; - - @override - String get td_ => 'Tchad'; - - @override - String get tg_ => 'Togo'; - - @override - String get th_ => 'Thailand'; - - @override - String get tj_ => 'Tadzjikistan'; - - @override - String get tk_ => 'Tokelauöarna'; - - @override - String get tl_ => 'Östtimor'; - - @override - String get tm_ => 'Turkmenistan'; - - @override - String get tn_ => 'Tunisien'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'Turkiet'; - - @override - String get tt_ => 'Trinidad och Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Taiwan'; - - @override - String get tz_ => 'Tanzania'; - - @override - String get ua_ => 'Ukraina'; - - @override - String get ug_ => 'Uganda'; - - @override - String get us_ => 'USA'; - - @override - String get uy_ => 'Uruguay'; - - @override - String get uz_ => 'Uzbekistan'; - - @override - String get va_ => 'Vatikanstaten'; - - @override - String get vc_ => 'S:t Vincent och Grenadinerna'; - - @override - String get ve_ => 'Venezuela'; - - @override - String get vg_ => 'Brittiska Jungfruöarna'; - - @override - String get vi_ => 'Amerikanska Jungfruöarna'; - - @override - String get vn_ => 'Vietnam'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Wallis- och Futunaöarna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Jemen'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'Sydafrika'; - - @override - String get zm_ => 'Zambia'; - - @override - String get zw_ => 'Zimbabwe'; -} diff --git a/lib/l10n/generated/phone_field_localization_tr.dart b/lib/l10n/generated/phone_field_localization_tr.dart deleted file mode 100644 index 3b5e9868..00000000 --- a/lib/l10n/generated/phone_field_localization_tr.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Turkish (`tr`). -class PhoneFieldLocalizationTr extends PhoneFieldLocalization { - PhoneFieldLocalizationTr([super.locale = 'tr']); - - @override - String get invalidPhoneNumber => 'Geçersiz telefon numarası'; - - @override - String get invalidCountry => 'Geçersiz ülke'; - - @override - String get invalidMobilePhoneNumber => 'Geçersiz cep telefonu numarası'; - - @override - String get invalidFixedLinePhoneNumber => 'Geçersiz sabit hat telefon numarası'; - - @override - String get requiredPhoneNumber => 'Telefon numarası gerekli'; - - @override - String get noResultMessage => 'Sonuç yok'; - - @override - String get ac_ => 'Yükselme adası'; - - @override - String get ad_ => 'Andora'; - - @override - String get ae_ => 'Birleşik Arap Emirlikleri'; - - @override - String get af_ => 'Afganistan'; - - @override - String get ag_ => 'Antigua ve Barbuda'; - - @override - String get ai_ => 'Anguilla'; - - @override - String get al_ => 'Arnavutluk'; - - @override - String get am_ => 'Ermenistan'; - - @override - String get an_ => 'Hollanda Antilleri'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antarktika'; - - @override - String get ar_ => 'Arjantin'; - - @override - String get as_ => 'Amerikan Samoası'; - - @override - String get at_ => 'Avusturya'; - - @override - String get au_ => 'Avustralya'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Aland Adaları'; - - @override - String get az_ => 'Azerbaycan'; - - @override - String get ba_ => 'Bosna Hersek'; - - @override - String get bb_ => 'Barbados'; - - @override - String get bd_ => 'Bangladeş'; - - @override - String get be_ => 'Belçika'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bulgaristan'; - - @override - String get bh_ => 'Bahreyn'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Benin'; - - @override - String get bl_ => 'Saint Barthelemy'; - - @override - String get bm_ => 'Bermuda'; - - @override - String get bn_ => 'Brunei Darussalam'; - - @override - String get bo_ => 'Bolivya'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Brezilya'; - - @override - String get bs_ => 'Bahamalar'; - - @override - String get bt_ => 'Butan'; - - @override - String get bw_ => 'Botsvana'; - - @override - String get by_ => 'Belarus'; - - @override - String get bz_ => 'Belize'; - - @override - String get ca_ => 'Kanada'; - - @override - String get cc_ => 'Cocos (Keeling) Adaları'; - - @override - String get cd_ => 'Kongo Demokratik Cumhuriyeti'; - - @override - String get cf_ => 'Orta Afrika Cumhuriyeti'; - - @override - String get cg_ => 'Kongo'; - - @override - String get ch_ => 'İsviçre'; - - @override - String get ci_ => 'Fildişi Sahili'; - - @override - String get ck_ => 'Cook Adaları'; - - @override - String get cl_ => 'Şili'; - - @override - String get cm_ => 'Kamerun'; - - @override - String get cn_ => 'Çin'; - - @override - String get co_ => 'Kolombiya'; - - @override - String get cr_ => 'Kosta Rika'; - - @override - String get cu_ => 'Küba'; - - @override - String get cv_ => 'Cabo Verde'; - - @override - String get cx_ => 'Christmas Adası'; - - @override - String get cy_ => 'Kıbrıs'; - - @override - String get cz_ => 'Çek Cumhuriyeti'; - - @override - String get de_ => 'Almanya'; - - @override - String get dj_ => 'Cibuti'; - - @override - String get dk_ => 'Danimarka'; - - @override - String get dm_ => 'Dominika'; - - @override - String get do_ => 'Dominik Cumhuriyeti'; - - @override - String get dz_ => 'Cezayir'; - - @override - String get ec_ => 'Ekvador'; - - @override - String get ee_ => 'Estonya'; - - @override - String get eg_ => 'Mısır'; - - @override - String get er_ => 'Eritre'; - - @override - String get es_ => 'İspanya'; - - @override - String get et_ => 'Etiyopya'; - - @override - String get fi_ => 'Finlandiya'; - - @override - String get fj_ => 'Fiji'; - - @override - String get fk_ => 'Falkland (Malvina) Adaları '; - - @override - String get fm_ => 'Mikronezya, Mikronezya Federal Devletleri'; - - @override - String get fo_ => 'Faroe Adaları'; - - @override - String get fr_ => 'Fransa'; - - @override - String get ga_ => 'Gabon'; - - @override - String get gb_ => 'Birleşik Krallık'; - - @override - String get gd_ => 'Grenada'; - - @override - String get ge_ => 'Gürcistan'; - - @override - String get gf_ => 'Fransız Guyanası'; - - @override - String get gg_ => 'Guernsey'; - - @override - String get gh_ => 'Gana'; - - @override - String get gi_ => 'Cebelitarık'; - - @override - String get gl_ => 'Grönland'; - - @override - String get gm_ => 'Gambiya'; - - @override - String get gn_ => 'Gine'; - - @override - String get gp_ => 'Guadeloupe'; - - @override - String get gq_ => 'Ekvator Ginesi'; - - @override - String get gr_ => 'Yunanistan'; - - @override - String get gs_ => 'Güney Georgia ve Güney Sandwich Adaları'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Gine-Bissau'; - - @override - String get gy_ => 'Guyana'; - - @override - String get hk_ => 'Hong Kong'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Hırvatistan'; - - @override - String get ht_ => 'Haiti'; - - @override - String get hu_ => 'Macaristan'; - - @override - String get id_ => 'Endonezya'; - - @override - String get ie_ => 'İrlanda'; - - @override - String get il_ => 'İsrail'; - - @override - String get im_ => 'Man Adası'; - - @override - String get in_ => 'Hindistan'; - - @override - String get io_ => 'İngiliz Hint Okyanusu Bölgesi'; - - @override - String get iq_ => 'Irak'; - - @override - String get ir_ => 'İran'; - - @override - String get is_ => 'İzlanda'; - - @override - String get it_ => 'İtalya'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Jamaika'; - - @override - String get jo_ => 'Ürdün'; - - @override - String get jp_ => 'Japonya'; - - @override - String get ke_ => 'Kenya'; - - @override - String get kg_ => 'Kırgızistan'; - - @override - String get kh_ => 'Kamboçya'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Komorlar'; - - @override - String get kn_ => 'Saint Kitts ve Nevis'; - - @override - String get kp_ => 'Kuzey Kore'; - - @override - String get kr_ => 'Güney Kore'; - - @override - String get kw_ => 'Kuveyt'; - - @override - String get ky_ => 'Cayman Adaları'; - - @override - String get kz_ => 'Kazakistan'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Lübnan'; - - @override - String get lc_ => 'Saint Lucia'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Liberya'; - - @override - String get ls_ => 'Lesoto'; - - @override - String get lt_ => 'Litvanya'; - - @override - String get lu_ => 'Lüksemburg'; - - @override - String get lv_ => 'Letonya'; - - @override - String get ly_ => 'Libya'; - - @override - String get ma_ => 'Fas'; - - @override - String get mc_ => 'Monako'; - - @override - String get md_ => 'Moldova'; - - @override - String get me_ => 'Karadağ'; - - @override - String get mf_ => 'Saint Martin'; - - @override - String get mg_ => 'Madagaskar'; - - @override - String get mh_ => 'Marşal Adaları'; - - @override - String get mk_ => 'Makedonya'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar'; - - @override - String get mn_ => 'Moğolistan'; - - @override - String get mo_ => 'Macao'; - - @override - String get mp_ => 'Kuzey Mariana Adaları'; - - @override - String get mq_ => 'Martinique'; - - @override - String get mr_ => 'Mauritania'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malta'; - - @override - String get mu_ => 'Mauritius'; - - @override - String get mv_ => 'Maldivler'; - - @override - String get mw_ => 'Malawi'; - - @override - String get mx_ => 'Meksika'; - - @override - String get my_ => 'Malezya'; - - @override - String get mz_ => 'Mozambik'; - - @override - String get na_ => 'Namibya'; - - @override - String get nc_ => 'Yeni Kaledonya'; - - @override - String get ne_ => 'Nijer'; - - @override - String get nf_ => 'Norfolk Adası'; - - @override - String get ng_ => 'Nijerya'; - - @override - String get ni_ => 'Nikaragua'; - - @override - String get nl_ => 'Hollanda'; - - @override - String get no_ => 'Norveç'; - - @override - String get np_ => 'Nepal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'Yeni Zelanda'; - - @override - String get om_ => 'Umman'; - - @override - String get pa_ => 'Panama'; - - @override - String get pe_ => 'Peru'; - - @override - String get pf_ => 'Fransız Polinezyası'; - - @override - String get pg_ => 'Papua Yeni Gine'; - - @override - String get ph_ => 'Filipinler'; - - @override - String get pk_ => 'Pakistan'; - - @override - String get pl_ => 'Polonya'; - - @override - String get pm_ => 'Saint Pierre ve Miquelon'; - - @override - String get pn_ => 'Pitcairn Adaları'; - - @override - String get pr_ => 'Porto Riko'; - - @override - String get ps_ => 'İşgal Altındaki Filistin Toprakları'; - - @override - String get pt_ => 'Portekiz'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paraguay'; - - @override - String get qa_ => 'Katar'; - - @override - String get re_ => 'Reunion'; - - @override - String get ro_ => 'Romanya'; - - @override - String get rs_ => 'Sırbistan'; - - @override - String get ru_ => 'Rusya'; - - @override - String get rw_ => 'Ruanda'; - - @override - String get sa_ => 'Suudi Arabistan'; - - @override - String get sb_ => 'Solomon Adaları'; - - @override - String get sc_ => 'Seyşeller'; - - @override - String get sd_ => 'Sudan'; - - @override - String get se_ => 'İsveç'; - - @override - String get sg_ => 'Singapur'; - - @override - String get si_ => 'Slovenya'; - - @override - String get sk_ => 'Slovakya'; - - @override - String get sl_ => 'Sierra Leone'; - - @override - String get sm_ => 'San Marino'; - - @override - String get sn_ => 'Senegal'; - - @override - String get so_ => 'Somali'; - - @override - String get sr_ => 'Surinam'; - - @override - String get ss_ => 'Güney Sudan'; - - @override - String get st_ => 'Sao Tome ve Principe'; - - @override - String get sv_ => 'El Salvador'; - - @override - String get sy_ => 'Suriye'; - - @override - String get sz_ => 'Esvati̇ni̇'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'Turks ve Caicos Adaları '; - - @override - String get td_ => 'Çad'; - - @override - String get tg_ => 'Togo'; - - @override - String get th_ => 'Tayland'; - - @override - String get tj_ => 'Tacikistan'; - - @override - String get tk_ => 'Tokelau'; - - @override - String get tl_ => 'Doğu Timor'; - - @override - String get tm_ => 'Türkmenistan'; - - @override - String get tn_ => 'Tunus'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'Türkiye'; - - @override - String get tt_ => 'Trinidad ve Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Tayvan'; - - @override - String get tz_ => 'Tanzanya'; - - @override - String get ua_ => 'Ukrayna'; - - @override - String get ug_ => 'Uganda'; - - @override - String get us_ => 'Amerika Birleşik Devletleri'; - - @override - String get uy_ => 'Uruguay'; - - @override - String get uz_ => 'Özbekistan'; - - @override - String get va_ => 'Vatikan'; - - @override - String get vc_ => 'Saint Vincent ve Grenadinler'; - - @override - String get ve_ => 'Venezuela'; - - @override - String get vg_ => 'Britanya Virjin Adaları'; - - @override - String get vi_ => 'ABD Virjin Adaları'; - - @override - String get vn_ => 'Vietnam'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Wallis ve Futuna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Yemen'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'Güney Afrika'; - - @override - String get zm_ => 'Zambia'; - - @override - String get zw_ => 'Zimbabve'; -} diff --git a/lib/l10n/generated/phone_field_localization_uk.dart b/lib/l10n/generated/phone_field_localization_uk.dart deleted file mode 100644 index 0ff9bae1..00000000 --- a/lib/l10n/generated/phone_field_localization_uk.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Ukrainian (`uk`). -class PhoneFieldLocalizationUk extends PhoneFieldLocalization { - PhoneFieldLocalizationUk([super.locale = 'uk']); - - @override - String get invalidPhoneNumber => 'Невірний номер телефону'; - - @override - String get invalidCountry => 'Недійсна країна'; - - @override - String get invalidMobilePhoneNumber => 'Невірний номер мобільного телефону'; - - @override - String get invalidFixedLinePhoneNumber => 'Невірний номер стаціонарного телефону'; - - @override - String get requiredPhoneNumber => 'Необхідний номер телефону'; - - @override - String get noResultMessage => 'Немає результату'; - - @override - String get ac_ => 'Острів Вознесіння'; - - @override - String get ad_ => 'Андорра'; - - @override - String get ae_ => 'Об\'єднані Арабські Емірати'; - - @override - String get af_ => 'Афганістан'; - - @override - String get ag_ => 'Антигуа і Барбуда'; - - @override - String get ai_ => 'Ангілья'; - - @override - String get al_ => 'Албанія'; - - @override - String get am_ => 'Вірменія'; - - @override - String get an_ => 'Нідерландські Антильські острови'; - - @override - String get ao_ => 'Ангола'; - - @override - String get aq_ => 'Антарктида'; - - @override - String get ar_ => 'Аргентина'; - - @override - String get as_ => 'Американське Самоа'; - - @override - String get at_ => 'Австрія'; - - @override - String get au_ => 'Австралія'; - - @override - String get aw_ => 'Аруба'; - - @override - String get ax_ => 'Аландські острови'; - - @override - String get az_ => 'Азербайджан'; - - @override - String get ba_ => 'Боснія і Герцеговина'; - - @override - String get bb_ => 'Барбадос'; - - @override - String get bd_ => 'Бангладеш'; - - @override - String get be_ => 'Бельгія'; - - @override - String get bf_ => 'Буркіна-Фасо'; - - @override - String get bg_ => 'Болгарія'; - - @override - String get bh_ => 'Бахрейн'; - - @override - String get bi_ => 'Бурунді'; - - @override - String get bj_ => 'Бенін'; - - @override - String get bl_ => 'Сен-Бартелемі'; - - @override - String get bm_ => 'Бермудські острови'; - - @override - String get bn_ => 'Бруней-Даруссалам'; - - @override - String get bo_ => 'Болівія, Багатонаціональна Держава'; - - @override - String get bq_ => 'Бонайре'; - - @override - String get br_ => 'Бразилія'; - - @override - String get bs_ => 'Багамські острови'; - - @override - String get bt_ => 'Бутан'; - - @override - String get bw_ => 'Ботсвана'; - - @override - String get by_ => 'Білорусь'; - - @override - String get bz_ => 'Беліз'; - - @override - String get ca_ => 'Канада'; - - @override - String get cc_ => 'Кокосові (Кілінгові) острови'; - - @override - String get cd_ => 'Конго, Демократична Республіка Конго'; - - @override - String get cf_ => 'Центральноафриканська Республіка'; - - @override - String get cg_ => 'Конго'; - - @override - String get ch_ => 'Швейцарія'; - - @override - String get ci_ => 'Кот-д\'івуар'; - - @override - String get ck_ => 'Острови Кука'; - - @override - String get cl_ => 'Чилі'; - - @override - String get cm_ => 'Камерун'; - - @override - String get cn_ => 'Китай'; - - @override - String get co_ => 'Колумбія'; - - @override - String get cr_ => 'Коста-Ріка'; - - @override - String get cu_ => 'Куба'; - - @override - String get cv_ => 'Кабо-Верде'; - - @override - String get cx_ => 'Острів Різдва'; - - @override - String get cy_ => 'Кіпр'; - - @override - String get cz_ => 'Чеська Республіка'; - - @override - String get de_ => 'Німеччина'; - - @override - String get dj_ => 'Джибуті'; - - @override - String get dk_ => 'Данія'; - - @override - String get dm_ => 'Домініка'; - - @override - String get do_ => 'Домініканська Республіка'; - - @override - String get dz_ => 'Алжир'; - - @override - String get ec_ => 'Еквадор'; - - @override - String get ee_ => 'Естонія'; - - @override - String get eg_ => 'Єгипет'; - - @override - String get er_ => 'Еритрея'; - - @override - String get es_ => 'Іспанія'; - - @override - String get et_ => 'Ефіопія'; - - @override - String get fi_ => 'Фінляндія'; - - @override - String get fj_ => 'Фіджі'; - - @override - String get fk_ => 'Фолклендські (Мальвінські) острови'; - - @override - String get fm_ => 'Мікронезія, Федеративні Штати Мікронезії'; - - @override - String get fo_ => 'Фарерські острови'; - - @override - String get fr_ => 'Франція'; - - @override - String get ga_ => 'Габон'; - - @override - String get gb_ => 'Великобританія'; - - @override - String get gd_ => 'Гренада'; - - @override - String get ge_ => 'Грузія'; - - @override - String get gf_ => 'Французька Гвіана'; - - @override - String get gg_ => 'Гернсі'; - - @override - String get gh_ => 'Гана'; - - @override - String get gi_ => 'Гібралтар'; - - @override - String get gl_ => 'Гренландія'; - - @override - String get gm_ => 'Гамбія'; - - @override - String get gn_ => 'Гвінея'; - - @override - String get gp_ => 'Гваделупа'; - - @override - String get gq_ => 'Екваторіальна Гвінея'; - - @override - String get gr_ => 'Греція'; - - @override - String get gs_ => 'Південна Георгія і Південні Сандвічеві острови'; - - @override - String get gt_ => 'Гватемала'; - - @override - String get gu_ => 'Гуам'; - - @override - String get gw_ => 'Гвінея-Бісау'; - - @override - String get gy_ => 'Гайана'; - - @override - String get hk_ => 'Гонконг'; - - @override - String get hn_ => 'Гондурас'; - - @override - String get hr_ => 'Хорватія'; - - @override - String get ht_ => 'Гаїті'; - - @override - String get hu_ => 'Угорщина'; - - @override - String get id_ => 'Індонезія'; - - @override - String get ie_ => 'Ірландія'; - - @override - String get il_ => 'Ізраїль'; - - @override - String get im_ => 'Острів Мен'; - - @override - String get in_ => 'Індія'; - - @override - String get io_ => 'Британська територія в Індійському океані'; - - @override - String get iq_ => 'Ірак'; - - @override - String get ir_ => 'Іран, Ісламська Республіка'; - - @override - String get is_ => 'Ісландія'; - - @override - String get it_ => 'Італія'; - - @override - String get je_ => 'Джерсі'; - - @override - String get jm_ => 'Ямайка'; - - @override - String get jo_ => 'Йорданія'; - - @override - String get jp_ => 'Японія'; - - @override - String get ke_ => 'Кенія'; - - @override - String get kg_ => 'Киргизстан'; - - @override - String get kh_ => 'Камбоджа'; - - @override - String get ki_ => 'Кірібаті'; - - @override - String get km_ => 'Коморські острови'; - - @override - String get kn_ => 'Сент-Кітс і Невіс'; - - @override - String get kp_ => 'Корея, Корейська Народно-Демократична Республіка'; - - @override - String get kr_ => 'Корея, Республіка Південна Корея'; - - @override - String get kw_ => 'Кувейт'; - - @override - String get ky_ => 'Кайманові острови'; - - @override - String get kz_ => 'Казахстан'; - - @override - String get la_ => 'Лаос'; - - @override - String get lb_ => 'Ліван'; - - @override - String get lc_ => 'Сент-Люсія'; - - @override - String get li_ => 'Ліхтенштейн'; - - @override - String get lk_ => 'Шрі-Ланка'; - - @override - String get lr_ => 'Ліберія'; - - @override - String get ls_ => 'Лесото'; - - @override - String get lt_ => 'Литва'; - - @override - String get lu_ => 'Люксембург'; - - @override - String get lv_ => 'Латвія'; - - @override - String get ly_ => 'Лівійська Арабська Джамахірія'; - - @override - String get ma_ => 'Марокко'; - - @override - String get mc_ => 'Монако'; - - @override - String get md_ => 'Молдова'; - - @override - String get me_ => 'Чорногорія'; - - @override - String get mf_ => 'Сен-Мартен'; - - @override - String get mg_ => 'Мадагаскар'; - - @override - String get mh_ => 'Маршаллові Острови'; - - @override - String get mk_ => 'Македонія'; - - @override - String get ml_ => 'Малі'; - - @override - String get mm_ => 'М\'янма'; - - @override - String get mn_ => 'Монголія'; - - @override - String get mo_ => 'Макао'; - - @override - String get mp_ => 'Північні Маріанські острови'; - - @override - String get mq_ => 'Мартініка'; - - @override - String get mr_ => 'Мавританія'; - - @override - String get ms_ => 'Монтсеррат'; - - @override - String get mt_ => 'Мальта'; - - @override - String get mu_ => 'Маврикій'; - - @override - String get mv_ => 'Мальдіви'; - - @override - String get mw_ => 'Малаві'; - - @override - String get mx_ => 'Мексика'; - - @override - String get my_ => 'Малайзія'; - - @override - String get mz_ => 'Мозамбік'; - - @override - String get na_ => 'Намібія'; - - @override - String get nc_ => 'Нова Каледонія'; - - @override - String get ne_ => 'Нігер'; - - @override - String get nf_ => 'Острів Норфолк'; - - @override - String get ng_ => 'Нігерія'; - - @override - String get ni_ => 'Нікарагуа'; - - @override - String get nl_ => 'Нідерланди'; - - @override - String get no_ => 'Норвегія'; - - @override - String get np_ => 'Непал'; - - @override - String get nr_ => 'Науру'; - - @override - String get nu_ => 'Ніуе'; - - @override - String get nz_ => 'Нова Зеландія'; - - @override - String get om_ => 'Оман'; - - @override - String get pa_ => 'Панама'; - - @override - String get pe_ => 'Перу'; - - @override - String get pf_ => 'Французька Полінезія'; - - @override - String get pg_ => 'Папуа-Нова Гвінея'; - - @override - String get ph_ => 'Філіппіни'; - - @override - String get pk_ => 'Пакистан'; - - @override - String get pl_ => 'Польща'; - - @override - String get pm_ => 'Сен-П\'єр і Мікелон'; - - @override - String get pn_ => 'Піткерн'; - - @override - String get pr_ => 'Пуерто-Ріко'; - - @override - String get ps_ => 'Палестинська територія, окупована'; - - @override - String get pt_ => 'Португалія'; - - @override - String get pw_ => 'Палау'; - - @override - String get py_ => 'Парагвай'; - - @override - String get qa_ => 'Катар'; - - @override - String get re_ => 'Реюньйон'; - - @override - String get ro_ => 'Румунія'; - - @override - String get rs_ => 'Сербія'; - - @override - String get ru_ => 'Росія'; - - @override - String get rw_ => 'Руанда'; - - @override - String get sa_ => 'Саудівська Аравія'; - - @override - String get sb_ => 'Соломонові острови'; - - @override - String get sc_ => 'Сейшельські острови'; - - @override - String get sd_ => 'Судан'; - - @override - String get se_ => 'Швеція'; - - @override - String get sg_ => 'Сінгапур'; - - @override - String get si_ => 'Словенія'; - - @override - String get sk_ => 'Словаччина'; - - @override - String get sl_ => 'Сьєрра-Леоне'; - - @override - String get sm_ => 'Сан-Марино'; - - @override - String get sn_ => 'Сенегал'; - - @override - String get so_ => 'Сомалі'; - - @override - String get sr_ => 'Суринам'; - - @override - String get ss_ => 'Південний Судан'; - - @override - String get st_ => 'Сан-Томе і Принсіпі'; - - @override - String get sv_ => 'Сальвадор'; - - @override - String get sy_ => 'Сирійська Арабська Республіка'; - - @override - String get sz_ => 'Свазіленд'; - - @override - String get ta_ => 'Трістан-да-Кунья'; - - @override - String get tc_ => 'Турки і Кайкос'; - - @override - String get td_ => 'Чад'; - - @override - String get tg_ => 'Того'; - - @override - String get th_ => 'Таїланд'; - - @override - String get tj_ => 'Таджикистан'; - - @override - String get tk_ => 'Токелау'; - - @override - String get tl_ => 'Тимор-Лешті'; - - @override - String get tm_ => 'Туркменістан'; - - @override - String get tn_ => 'Туніс'; - - @override - String get to_ => 'Тонга'; - - @override - String get tr_ => 'Туреччина'; - - @override - String get tt_ => 'Тринідад і Тобаго'; - - @override - String get tv_ => 'Тувалу'; - - @override - String get tw_ => 'Тайвань'; - - @override - String get tz_ => 'Танзанія, Об\'єднана Республіка Танзанія'; - - @override - String get ua_ => 'Україна'; - - @override - String get ug_ => 'Уганда'; - - @override - String get us_ => 'Сполучені Штати Америки'; - - @override - String get uy_ => 'Уругвай'; - - @override - String get uz_ => 'Узбекистан'; - - @override - String get va_ => 'Святий Престол (місто-держава Ватикан)'; - - @override - String get vc_ => 'Сент-Вінсент і Гренадіни'; - - @override - String get ve_ => 'Венесуела'; - - @override - String get vg_ => 'Британські Віргінські острови'; - - @override - String get vi_ => 'Віргінські острови, США'; - - @override - String get vn_ => 'В\'єтнам'; - - @override - String get vu_ => 'Вануату'; - - @override - String get wf_ => 'Уолліс і Футуна'; - - @override - String get ws_ => 'Самоа'; - - @override - String get ye_ => 'Ємен'; - - @override - String get yt_ => 'Майотта'; - - @override - String get za_ => 'Південна Африка'; - - @override - String get zm_ => 'Замбія'; - - @override - String get zw_ => 'Зімбабве'; -} diff --git a/lib/l10n/generated/phone_field_localization_uz.dart b/lib/l10n/generated/phone_field_localization_uz.dart deleted file mode 100644 index b7ae3a83..00000000 --- a/lib/l10n/generated/phone_field_localization_uz.dart +++ /dev/null @@ -1,754 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Uzbek (`uz`). -class PhoneFieldLocalizationUz extends PhoneFieldLocalization { - PhoneFieldLocalizationUz([super.locale = 'uz']); - - @override - String get invalidPhoneNumber => 'Telefon raqami noto‘g‘ri'; - - @override - String get invalidCountry => 'Yaroqsiz mamlakat'; - - @override - String get invalidMobilePhoneNumber => 'Telfon raqami noto‘g‘ri'; - - @override - String get invalidFixedLinePhoneNumber => - 'Ruxsat etilgan telefon raqami yaroqsiz'; - - @override - String get requiredPhoneNumber => 'Telfon raqami majburiy'; - - @override - String get noResultMessage => 'Ma\'lumot topilmadi'; - - @override - String get ac_ => 'Ascension Island'; - - @override - String get ad_ => 'Andorra'; - - @override - String get ae_ => 'BAA'; - - @override - String get af_ => 'Afg\'oniston'; - - @override - String get ag_ => 'Antigua va Barbuda'; - - @override - String get ai_ => 'Anguilla'; - - @override - String get al_ => 'Albaniya'; - - @override - String get am_ => 'Armeniya'; - - @override - String get an_ => 'Netherlands Antilles'; - - @override - String get ao_ => 'Angola'; - - @override - String get aq_ => 'Antarctica'; - - @override - String get ar_ => 'Argentina'; - - @override - String get as_ => 'American Samoa'; - - @override - String get at_ => 'Austria'; - - @override - String get au_ => 'Australia'; - - @override - String get aw_ => 'Aruba'; - - @override - String get ax_ => 'Aland Islands'; - - @override - String get az_ => 'Ozarbayjon'; - - @override - String get ba_ => 'Bosnia and Herzegovina'; - - @override - String get bb_ => 'Barbados'; - - @override - String get bd_ => 'Bangladesh'; - - @override - String get be_ => 'Belgiya'; - - @override - String get bf_ => 'Burkina Faso'; - - @override - String get bg_ => 'Bolgariya'; - - @override - String get bh_ => 'Bahrain'; - - @override - String get bi_ => 'Burundi'; - - @override - String get bj_ => 'Benin'; - - @override - String get bl_ => 'Saint Barthelemy'; - - @override - String get bm_ => 'Bermuda'; - - @override - String get bn_ => 'Brunei Darussalam'; - - @override - String get bo_ => 'Bolivia, Plurinational State of'; - - @override - String get bq_ => 'Bonaire'; - - @override - String get br_ => 'Braziliya'; - - @override - String get bs_ => 'Bahamas'; - - @override - String get bt_ => 'Bhutan'; - - @override - String get bw_ => 'Botswana'; - - @override - String get by_ => 'Belarusiya'; - - @override - String get bz_ => 'Belize'; - - @override - String get ca_ => 'Kanada'; - - @override - String get cc_ => 'Cocos (Keeling) Islands'; - - @override - String get cd_ => 'Congo, The Democratic Republic of the Congo'; - - @override - String get cf_ => 'Central African Republic'; - - @override - String get cg_ => 'Congo'; - - @override - String get ch_ => 'Shveysariya'; - - @override - String get ci_ => 'Kot-dʼIvuar Respublikasi'; - - @override - String get ck_ => 'Kuk orollari'; - - @override - String get cl_ => 'Chili'; - - @override - String get cm_ => 'Kamerun'; - - @override - String get cn_ => 'Xitoy'; - - @override - String get co_ => 'Kolumbiya'; - - @override - String get cr_ => 'Kosta-Rika'; - - @override - String get cu_ => 'Kuba'; - - @override - String get cv_ => 'Cape Verde'; - - @override - String get cx_ => 'Christmas Island'; - - @override - String get cy_ => 'Cyprus'; - - @override - String get cz_ => 'Czech Republic'; - - @override - String get de_ => 'Germaniya'; - - @override - String get dj_ => 'Jibuti'; - - @override - String get dk_ => 'Denmark'; - - @override - String get dm_ => 'Dominica'; - - @override - String get do_ => 'Dominika Respublikasi'; - - @override - String get dz_ => 'Algeria'; - - @override - String get ec_ => 'Ekvador'; - - @override - String get ee_ => 'Estoniya'; - - @override - String get eg_ => 'Misr'; - - @override - String get er_ => 'Eritreya'; - - @override - String get es_ => 'Ispaniya'; - - @override - String get et_ => 'Efiopiya'; - - @override - String get fi_ => 'Finlandiya'; - - @override - String get fj_ => 'Fiji'; - - @override - String get fk_ => 'Folklend orollari'; - - @override - String get fm_ => 'Micronesia, Federated States of Micronesia'; - - @override - String get fo_ => 'Faroe Islands'; - - @override - String get fr_ => 'Fransiya'; - - @override - String get ga_ => 'Gabon'; - - @override - String get gb_ => 'Buyuk Britaniya'; - - @override - String get gd_ => 'Grenada'; - - @override - String get ge_ => 'Gurjiston'; - - @override - String get gf_ => 'Fransiya Gvianasi'; - - @override - String get gg_ => 'Guernsey'; - - @override - String get gh_ => 'Ghana'; - - @override - String get gi_ => 'Gibraltar'; - - @override - String get gl_ => 'Greenland'; - - @override - String get gm_ => 'Gambia'; - - @override - String get gn_ => 'Guinea'; - - @override - String get gp_ => 'Guadeloupe'; - - @override - String get gq_ => 'Equatorial Guinea'; - - @override - String get gr_ => 'Greece'; - - @override - String get gs_ => 'South Georgia and the South Sandwich Islands'; - - @override - String get gt_ => 'Guatemala'; - - @override - String get gu_ => 'Guam'; - - @override - String get gw_ => 'Guinea-Bissau'; - - @override - String get gy_ => 'Guyana'; - - @override - String get hk_ => 'Hong Kong'; - - @override - String get hn_ => 'Honduras'; - - @override - String get hr_ => 'Croatia'; - - @override - String get ht_ => 'Gaiti'; - - @override - String get hu_ => 'Vengriya'; - - @override - String get id_ => 'Indoneziya'; - - @override - String get ie_ => 'Irlandiya oroli'; - - @override - String get il_ => 'Isroil'; - - @override - String get im_ => 'Isle of Man'; - - @override - String get in_ => 'Hindiston'; - - @override - String get io_ => 'British Indian Ocean Territory'; - - @override - String get iq_ => 'Iroq'; - - @override - String get ir_ => 'Iran, Islamic Republic of'; - - @override - String get is_ => 'Islandiya'; - - @override - String get it_ => 'Italya'; - - @override - String get je_ => 'Jersey'; - - @override - String get jm_ => 'Jamaica'; - - @override - String get jo_ => 'Jordan'; - - @override - String get jp_ => 'Yaponiya'; - - @override - String get ke_ => 'Kenya'; - - @override - String get kg_ => 'Qirgʻiziston'; - - @override - String get kh_ => 'Kambodja'; - - @override - String get ki_ => 'Kiribati'; - - @override - String get km_ => 'Comoros'; - - @override - String get kn_ => 'Saint Kitts and Nevis'; - - @override - String get kp_ => 'Shimoliy Korya'; - - @override - String get kr_ => 'Janubiy Koreya'; - - @override - String get kw_ => 'Quvayt'; - - @override - String get ky_ => 'Cayman Islands'; - - @override - String get kz_ => 'Qozog\'iston'; - - @override - String get la_ => 'Laos'; - - @override - String get lb_ => 'Livan'; - - @override - String get lc_ => 'Saint Lucia'; - - @override - String get li_ => 'Liechtenstein'; - - @override - String get lk_ => 'Sri Lanka'; - - @override - String get lr_ => 'Liberia'; - - @override - String get ls_ => 'Lesotho'; - - @override - String get lt_ => 'Litva'; - - @override - String get lu_ => 'Luksemburg'; - - @override - String get lv_ => 'Latvia'; - - @override - String get ly_ => 'Libya'; - - @override - String get ma_ => 'Morocco'; - - @override - String get mc_ => 'Monaco'; - - @override - String get md_ => 'Moldova'; - - @override - String get me_ => 'Montenegro'; - - @override - String get mf_ => 'Saint Martin'; - - @override - String get mg_ => 'Madagascar'; - - @override - String get mh_ => 'Marshall Islands'; - - @override - String get mk_ => 'Macedonia'; - - @override - String get ml_ => 'Mali'; - - @override - String get mm_ => 'Myanmar'; - - @override - String get mn_ => 'Mongolia'; - - @override - String get mo_ => 'Macao'; - - @override - String get mp_ => 'Northern Mariana Islands'; - - @override - String get mq_ => 'Martinique'; - - @override - String get mr_ => 'Mauritania'; - - @override - String get ms_ => 'Montserrat'; - - @override - String get mt_ => 'Malta'; - - @override - String get mu_ => 'Mauritius'; - - @override - String get mv_ => 'Maldiv'; - - @override - String get mw_ => 'Malavi'; - - @override - String get mx_ => 'Meksika'; - - @override - String get my_ => 'Malaziya'; - - @override - String get mz_ => 'Mozambik'; - - @override - String get na_ => 'Namibia'; - - @override - String get nc_ => 'New Caledonia'; - - @override - String get ne_ => 'Nigerya'; - - @override - String get nf_ => 'Norfolk Island'; - - @override - String get ng_ => 'Nigeria'; - - @override - String get ni_ => 'Nicaragua'; - - @override - String get nl_ => 'Netherlands'; - - @override - String get no_ => 'Norway'; - - @override - String get np_ => 'Nepal'; - - @override - String get nr_ => 'Nauru'; - - @override - String get nu_ => 'Niue'; - - @override - String get nz_ => 'Yangi zelandiya'; - - @override - String get om_ => 'Oman'; - - @override - String get pa_ => 'Panama'; - - @override - String get pe_ => 'Peru'; - - @override - String get pf_ => 'French Polynesia'; - - @override - String get pg_ => 'Papua New Guinea'; - - @override - String get ph_ => 'Philippines'; - - @override - String get pk_ => 'Pokiston'; - - @override - String get pl_ => 'Polsha'; - - @override - String get pm_ => 'Saint Pierre and Miquelon'; - - @override - String get pn_ => 'Pitcairn'; - - @override - String get pr_ => 'Puerto Rico'; - - @override - String get ps_ => 'Palestinian Territory, Occupied'; - - @override - String get pt_ => 'Portugaliya'; - - @override - String get pw_ => 'Palau'; - - @override - String get py_ => 'Paragvay'; - - @override - String get qa_ => 'Qatar'; - - @override - String get re_ => 'Reyunion'; - - @override - String get ro_ => 'Ruminiya'; - - @override - String get rs_ => 'Serbia'; - - @override - String get ru_ => 'Rossiya'; - - @override - String get rw_ => 'Rwanda'; - - @override - String get sa_ => 'Saudiya Arabistoni'; - - @override - String get sb_ => 'Solomon Islands'; - - @override - String get sc_ => 'Seyshel orollari'; - - @override - String get sd_ => 'Sudan'; - - @override - String get se_ => 'Shvetsiya'; - - @override - String get sg_ => 'Singapur'; - - @override - String get si_ => 'Slovenia'; - - @override - String get sk_ => 'Slovakia'; - - @override - String get sl_ => 'Sierra Leone'; - - @override - String get sm_ => 'San Marino'; - - @override - String get sn_ => 'Senegal'; - - @override - String get so_ => 'Somalia'; - - @override - String get sr_ => 'Suriname'; - - @override - String get ss_ => 'South Sudan'; - - @override - String get st_ => 'Sao Tome and Principe'; - - @override - String get sv_ => 'El Salvador'; - - @override - String get sy_ => 'Suriya'; - - @override - String get sz_ => 'Esvatini Qirolligi'; - - @override - String get ta_ => 'Tristan da Cunha'; - - @override - String get tc_ => 'Turks and Caicos Islands'; - - @override - String get td_ => 'Chad'; - - @override - String get tg_ => 'Togo'; - - @override - String get th_ => 'Tailand'; - - @override - String get tj_ => 'Tojikistan'; - - @override - String get tk_ => 'Tokelau'; - - @override - String get tl_ => 'Timor-Leste'; - - @override - String get tm_ => 'Turkmaniston'; - - @override - String get tn_ => 'Tunisia'; - - @override - String get to_ => 'Tonga'; - - @override - String get tr_ => 'Turkiya'; - - @override - String get tt_ => 'Trinidad and Tobago'; - - @override - String get tv_ => 'Tuvalu'; - - @override - String get tw_ => 'Tayvan'; - - @override - String get tz_ => 'Tanzania, United Republic of Tanzania'; - - @override - String get ua_ => 'Ukraina'; - - @override - String get ug_ => 'Uganda'; - - @override - String get us_ => 'AQSH'; - - @override - String get uy_ => 'Urugvay'; - - @override - String get uz_ => 'O\'zbekiston'; - - @override - String get va_ => 'Holy See (Vatican City State)'; - - @override - String get vc_ => 'Saint Vincent and the Grenadines'; - - @override - String get ve_ => 'Venesuela'; - - @override - String get vg_ => 'Virgin Islands, British'; - - @override - String get vi_ => 'Virgin Islands, U.S.'; - - @override - String get vn_ => 'Vetnam'; - - @override - String get vu_ => 'Vanuatu'; - - @override - String get wf_ => 'Uollis va Futuna'; - - @override - String get ws_ => 'Samoa'; - - @override - String get ye_ => 'Yaman'; - - @override - String get yt_ => 'Mayotte'; - - @override - String get za_ => 'JAR'; - - @override - String get zm_ => 'Zambia'; - - @override - String get zw_ => 'Zimbabwe'; -} diff --git a/lib/l10n/generated/phone_field_localization_zh.dart b/lib/l10n/generated/phone_field_localization_zh.dart deleted file mode 100644 index 1b944ce6..00000000 --- a/lib/l10n/generated/phone_field_localization_zh.dart +++ /dev/null @@ -1,753 +0,0 @@ -import 'phone_field_localization.dart'; - -/// The translations for Chinese (`zh`). -class PhoneFieldLocalizationZh extends PhoneFieldLocalization { - PhoneFieldLocalizationZh([super.locale = 'zh']); - - @override - String get invalidPhoneNumber => '无效的电话号码'; - - @override - String get invalidCountry => '无效国家'; - - @override - String get invalidMobilePhoneNumber => '无效的手机号码'; - - @override - String get invalidFixedLinePhoneNumber => '无效的固定电话号码'; - - @override - String get requiredPhoneNumber => '需要电话号码'; - - @override - String get noResultMessage => '没有结果'; - - @override - String get ac_ => '阿森松岛'; - - @override - String get ad_ => '安道尔'; - - @override - String get ae_ => '阿拉伯联合酋长国'; - - @override - String get af_ => '阿富汗'; - - @override - String get ag_ => '安提瓜和巴布达'; - - @override - String get ai_ => '安圭拉岛'; - - @override - String get al_ => '阿尔巴尼亚'; - - @override - String get am_ => '亚美尼亚'; - - @override - String get an_ => '荷属安的列斯'; - - @override - String get ao_ => '安哥拉'; - - @override - String get aq_ => '南极洲'; - - @override - String get ar_ => '阿根廷'; - - @override - String get as_ => '美属萨摩亚'; - - @override - String get at_ => '奥地利'; - - @override - String get au_ => '澳大利亚'; - - @override - String get aw_ => '阿鲁巴岛'; - - @override - String get ax_ => '奥兰群岛'; - - @override - String get az_ => '阿塞拜疆'; - - @override - String get ba_ => '波斯尼亚和黑塞哥维那'; - - @override - String get bb_ => '巴巴多斯'; - - @override - String get bd_ => '孟加拉国'; - - @override - String get be_ => '比利时'; - - @override - String get bf_ => '布基纳法索'; - - @override - String get bg_ => '保加利亚'; - - @override - String get bh_ => '巴林'; - - @override - String get bi_ => '布隆迪'; - - @override - String get bj_ => '贝宁'; - - @override - String get bl_ => '圣巴托洛缪岛'; - - @override - String get bm_ => '百慕大'; - - @override - String get bn_ => '文莱达鲁萨兰国'; - - @override - String get bo_ => '玻利维亚多民族国'; - - @override - String get bq_ => '博内尔岛'; - - @override - String get br_ => '巴西'; - - @override - String get bs_ => '巴哈马'; - - @override - String get bt_ => '不丹'; - - @override - String get bw_ => '博茨瓦纳'; - - @override - String get by_ => '白俄罗斯'; - - @override - String get bz_ => '伯利兹'; - - @override - String get ca_ => '加拿大'; - - @override - String get cc_ => '科科斯(基林)群岛'; - - @override - String get cd_ => '刚果民主共和国'; - - @override - String get cf_ => '中非共和国'; - - @override - String get cg_ => '刚果'; - - @override - String get ch_ => '瑞士'; - - @override - String get ci_ => '科特迪瓦'; - - @override - String get ck_ => '库克群岛'; - - @override - String get cl_ => '智利'; - - @override - String get cm_ => '喀麦隆'; - - @override - String get cn_ => '中国'; - - @override - String get co_ => '哥伦比亚'; - - @override - String get cr_ => '哥斯达黎加'; - - @override - String get cu_ => '古巴'; - - @override - String get cv_ => '佛得角'; - - @override - String get cx_ => '圣诞岛'; - - @override - String get cy_ => '塞浦路斯'; - - @override - String get cz_ => '捷克共和国'; - - @override - String get de_ => '德国'; - - @override - String get dj_ => '吉布地'; - - @override - String get dk_ => '丹麦'; - - @override - String get dm_ => '多米尼加'; - - @override - String get do_ => '多明尼加共和国'; - - @override - String get dz_ => '阿尔及利亚'; - - @override - String get ec_ => '厄瓜多尔'; - - @override - String get ee_ => '爱沙尼亚'; - - @override - String get eg_ => '埃及'; - - @override - String get er_ => '厄立特里亚'; - - @override - String get es_ => '西班牙'; - - @override - String get et_ => '埃塞俄比亚'; - - @override - String get fi_ => '芬兰'; - - @override - String get fj_ => '斐济'; - - @override - String get fk_ => '福克兰群岛(马尔维纳斯)'; - - @override - String get fm_ => '密克罗尼西亚,密克罗尼西亚联邦'; - - @override - String get fo_ => '法罗群岛'; - - @override - String get fr_ => '法国'; - - @override - String get ga_ => '加蓬'; - - @override - String get gb_ => '英国'; - - @override - String get gd_ => '格林纳达'; - - @override - String get ge_ => '乔治亚州'; - - @override - String get gf_ => '法属圭亚那'; - - @override - String get gg_ => '根西岛'; - - @override - String get gh_ => '加纳'; - - @override - String get gi_ => '直布罗陀'; - - @override - String get gl_ => '格陵兰'; - - @override - String get gm_ => '冈比亚'; - - @override - String get gn_ => '几内亚'; - - @override - String get gp_ => '瓜德罗普岛'; - - @override - String get gq_ => '赤道几内亚'; - - @override - String get gr_ => '希腊'; - - @override - String get gs_ => '南乔治亚岛和南桑威奇群岛'; - - @override - String get gt_ => '危地马拉'; - - @override - String get gu_ => '关岛'; - - @override - String get gw_ => '几内亚比绍'; - - @override - String get gy_ => '圭亚那'; - - @override - String get hk_ => '香港'; - - @override - String get hn_ => '洪都拉斯'; - - @override - String get hr_ => '克罗地亚'; - - @override - String get ht_ => '海地'; - - @override - String get hu_ => '匈牙利'; - - @override - String get id_ => '印度尼西亚'; - - @override - String get ie_ => '爱尔兰'; - - @override - String get il_ => '以色列'; - - @override - String get im_ => '马恩岛'; - - @override - String get in_ => '印度'; - - @override - String get io_ => '英属印度洋领地'; - - @override - String get iq_ => '伊拉克'; - - @override - String get ir_ => '伊朗,波斯湾伊斯兰共和国'; - - @override - String get is_ => '冰岛'; - - @override - String get it_ => '意大利'; - - @override - String get je_ => '球衣'; - - @override - String get jm_ => '的牙买加'; - - @override - String get jo_ => '约旦'; - - @override - String get jp_ => '日本'; - - @override - String get ke_ => '肯尼亚'; - - @override - String get kg_ => '吉尔吉斯斯坦'; - - @override - String get kh_ => '柬埔寨'; - - @override - String get ki_ => '基里巴斯'; - - @override - String get km_ => '科摩罗'; - - @override - String get kn_ => '圣基茨和尼维斯'; - - @override - String get kp_ => '韩国,朝鲜民主主义人民共和国'; - - @override - String get kr_ => '大韩民国'; - - @override - String get kw_ => '科威特'; - - @override - String get ky_ => '开曼群岛'; - - @override - String get kz_ => '哈萨克斯坦'; - - @override - String get la_ => '老挝'; - - @override - String get lb_ => '黎巴嫩的'; - - @override - String get lc_ => '圣卢西亚'; - - @override - String get li_ => '列支敦士登'; - - @override - String get lk_ => '斯里兰卡'; - - @override - String get lr_ => '利比里亚'; - - @override - String get ls_ => '莱索托'; - - @override - String get lt_ => '立陶宛'; - - @override - String get lu_ => '卢森堡'; - - @override - String get lv_ => '拉脱维亚'; - - @override - String get ly_ => '阿拉伯利比亚民众国'; - - @override - String get ma_ => '摩洛哥'; - - @override - String get mc_ => '摩纳哥'; - - @override - String get md_ => '摩尔多瓦'; - - @override - String get me_ => '黑山共和国'; - - @override - String get mf_ => '圣马丁'; - - @override - String get mg_ => '马达加斯加'; - - @override - String get mh_ => '马绍尔群岛'; - - @override - String get mk_ => '马其顿'; - - @override - String get ml_ => '马里'; - - @override - String get mm_ => '缅甸'; - - @override - String get mn_ => '蒙古'; - - @override - String get mo_ => '澳门'; - - @override - String get mp_ => '北马里亚纳群岛'; - - @override - String get mq_ => '马提尼克岛'; - - @override - String get mr_ => '毛里塔尼亚'; - - @override - String get ms_ => '蒙特塞拉特'; - - @override - String get mt_ => '马耳他'; - - @override - String get mu_ => '毛里求斯'; - - @override - String get mv_ => '马尔代夫'; - - @override - String get mw_ => '马拉维'; - - @override - String get mx_ => '墨西哥'; - - @override - String get my_ => '马来西亚'; - - @override - String get mz_ => '莫桑比克'; - - @override - String get na_ => '纳米比亚'; - - @override - String get nc_ => '新喀里多尼亚'; - - @override - String get ne_ => '尼日尔'; - - @override - String get nf_ => '诺福克岛'; - - @override - String get ng_ => '奈及利亚'; - - @override - String get ni_ => '尼加拉瓜'; - - @override - String get nl_ => '荷兰'; - - @override - String get no_ => '挪威'; - - @override - String get np_ => '尼尼泊尔'; - - @override - String get nr_ => '瑙鲁'; - - @override - String get nu_ => '纽埃'; - - @override - String get nz_ => '新西兰'; - - @override - String get om_ => '阿曼'; - - @override - String get pa_ => '巴拿马'; - - @override - String get pe_ => '秘鲁'; - - @override - String get pf_ => '法属波利尼西亚'; - - @override - String get pg_ => '巴布亚新几内亚'; - - @override - String get ph_ => '菲律宾'; - - @override - String get pk_ => '巴基斯坦'; - - @override - String get pl_ => '波兰'; - - @override - String get pm_ => '圣皮埃尔和密克隆群岛'; - - @override - String get pn_ => '皮特凯恩'; - - @override - String get pr_ => '波多黎各'; - - @override - String get ps_ => '被占领的巴勒斯坦领土'; - - @override - String get pt_ => '葡萄牙'; - - @override - String get pw_ => 'u琉'; - - @override - String get py_ => '巴拉圭'; - - @override - String get qa_ => '卡塔尔'; - - @override - String get re_ => '团圆'; - - @override - String get ro_ => '罗马尼亚'; - - @override - String get rs_ => '塞尔维亚'; - - @override - String get ru_ => '俄罗斯'; - - @override - String get rw_ => '卢旺达'; - - @override - String get sa_ => '沙特阿拉伯'; - - @override - String get sb_ => '所罗门群岛'; - - @override - String get sc_ => '塞舌尔'; - - @override - String get sd_ => '苏丹'; - - @override - String get se_ => '瑞典'; - - @override - String get sg_ => '新加坡'; - - @override - String get si_ => '斯洛文尼亚'; - - @override - String get sk_ => '斯洛伐克'; - - @override - String get sl_ => '塞拉利昂'; - - @override - String get sm_ => '圣马力诺'; - - @override - String get sn_ => '塞内加尔'; - - @override - String get so_ => '索马里'; - - @override - String get sr_ => '苏里南'; - - @override - String get ss_ => '南苏丹'; - - @override - String get st_ => '圣多美和普林西比'; - - @override - String get sv_ => '萨尔瓦多'; - - @override - String get sy_ => '阿拉伯叙利亚共和国'; - - @override - String get sz_ => '斯威士兰'; - - @override - String get ta_ => '特里斯坦达库尼亚'; - - @override - String get tc_ => '特克斯和凯科斯群岛'; - - @override - String get td_ => '乍得'; - - @override - String get tg_ => '多哥'; - - @override - String get th_ => '泰国'; - - @override - String get tj_ => '塔吉克斯坦'; - - @override - String get tk_ => '托克劳'; - - @override - String get tl_ => '东帝汶'; - - @override - String get tm_ => '土库曼斯坦'; - - @override - String get tn_ => '突尼斯'; - - @override - String get to_ => '汤加'; - - @override - String get tr_ => '火鸡'; - - @override - String get tt_ => '特立尼达和多巴哥'; - - @override - String get tv_ => '图瓦卢'; - - @override - String get tw_ => '台湾'; - - @override - String get tz_ => '坦桑尼亚联合共和国坦桑尼亚'; - - @override - String get ua_ => '乌克兰'; - - @override - String get ug_ => '乌干达'; - - @override - String get us_ => '美国'; - - @override - String get uy_ => '乌拉圭'; - - @override - String get uz_ => '乌兹别克斯坦'; - - @override - String get va_ => '罗马教廷(梵蒂冈城国)'; - - @override - String get vc_ => '圣文森特和格林纳丁斯'; - - @override - String get ve_ => '委内瑞拉'; - - @override - String get vg_ => '英属维尔京群岛'; - - @override - String get vi_ => '美国维尔京群岛'; - - @override - String get vn_ => '越南'; - - @override - String get vu_ => '瓦努阿图'; - - @override - String get wf_ => '瓦利斯和富图纳群岛'; - - @override - String get ws_ => '萨摩亚'; - - @override - String get ye_ => '也门'; - - @override - String get yt_ => '马约特岛'; - - @override - String get za_ => '南非'; - - @override - String get zm_ => '赞比亚'; - - @override - String get zw_ => '津巴布韦'; -} diff --git a/lib/l10n/hi.arb b/lib/l10n/hi.arb deleted file mode 100644 index 9e641136..00000000 --- a/lib/l10n/hi.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "hi", - "invalidPhoneNumber": "अवैध फोन नंबर", - "invalidCountry": "अवैध देश", - "invalidMobilePhoneNumber": "अमान्य सेल फ़ोन नंबर", - "invalidFixedLinePhoneNumber": "अवैध लैंडलाइन नंबर", - "requiredPhoneNumber": "फ़ोन नंबर आवश्यक", - "noResultMessage": "कोई परिणाम नही", - "ac_": "असेंशन द्वीप", - "ad_": "एंडोरा", - "ae_": "संयुक्त अरब अमीरात", - "af_": "अफ़ग़ानिस्तान", - "ag_": "अंतिगुया और बार्बूडा", - "ai_": "एंगुइला", - "al_": "अल्बानिया", - "am_": "आर्मीनिया", - "an_": "नीदरलैंड्स एंटाइल्स", - "ao_": "अंगोला", - "aq_": "अंटार्कटिका", - "ar_": "अर्जेंटीना", - "as_": "अमेरिकन समोआ", - "at_": "ऑस्ट्रिया", - "au_": "ऑस्ट्रेलिया", - "aw_": "अरूबा", - "ax_": "एलैंड द्वीप समूह", - "az_": "आज़रबाइजान", - "ba_": "बोस्निया और हर्जेगोविना", - "bb_": "बारबाडोस", - "bd_": "बांग्लादेश", - "be_": "बेल्जियम", - "bf_": "बुर्किना फासो", - "bg_": "बुल्गारिया", - "bh_": "बहरीन", - "bi_": "बुस्र्न्दी", - "bj_": "बेनिन", - "bl_": "संत बारथेलेमी", - "bm_": "बरमूडा", - "bn_": "ब्रूनेइ्र दारएस्सलाम", - "bo_": "बोलीविया, प्लूरिनेशनल स्टेट ऑफ़", - "bq_": "बोनेयर", - "br_": "ब्राज़िल", - "bs_": "बहामा", - "bt_": "भूटान", - "bw_": "बोत्सवाना", - "by_": "बेलोरूस", - "bz_": "बेलीज़", - "ca_": "कनाडा", - "cc_": "कोकोस (कीलिंग) द्वीप समूह", - "cd_": "कांगो, लोकतांत्रिक गणराज्य कांगो", - "cf_": "केंद्रीय अफ्रीकन गणराज्य", - "cg_": "कांगो", - "ch_": "स्विट्ज़रलैंड", - "ci_": "कोटे डी आइवर", - "ck_": "कुक द्वीपसमूह", - "cl_": "चिली", - "cm_": "कैमरून", - "cn_": "चीन", - "co_": "कोलंबिया", - "cr_": "कोस्टा रिका", - "cu_": "क्यूबा", - "cv_": "केप वर्दे", - "cx_": "क्रिसमस द्वीप", - "cy_": "साइप्रस", - "cz_": "चेक गणतंत्र", - "de_": "जर्मनी", - "dj_": "जिबूती", - "dk_": "डेनमार्क", - "dm_": "डोमिनिका", - "do_": "डोमिनिकन गणराज्य", - "dz_": "एलजीरिया", - "ec_": "इक्वेडोर", - "ee_": "एस्तोनिया", - "eg_": "मिस्र", - "er_": "इरिट्रिया", - "es_": "स्पेन", - "et_": "इथियोपिया", - "fi_": "फिनलैंड", - "fj_": "फ़िजी", - "fk_": "फ़ॉकलैंड द्वीप (माल्विनास)", - "fm_": "माइक्रोनेशिया, संघीय राज्य माइक्रोनेशिया", - "fo_": "फ़ैरो द्वीप", - "fr_": "फ्रांस", - "ga_": "गैबॉन", - "gb_": "यूनाइटेड किंगडम", - "gd_": "ग्रेनेडा", - "ge_": "जॉर्जिया", - "gf_": "फ्रेंच गयाना", - "gg_": "ग्वेर्नसे", - "gh_": "घाना", - "gi_": "जिब्राल्टर", - "gl_": "ग्रीनलैंड", - "gm_": "गाम्बिया", - "gn_": "गिन्नी", - "gp_": "ग्वाडेलोप", - "gq_": "भूमध्यवर्ती गिनी", - "gr_": "यूनान", - "gs_": "दक्षिण जॉर्जिया और दक्षिण सैंडविच द्वीप समूह", - "gt_": "ग्वाटेमाला", - "gu_": "गुआम", - "gw_": "गिनी-बिसाऊ", - "gy_": "गुयाना", - "hk_": "हांगकांग", - "hn_": "होंडुरस", - "hr_": "क्रोएशिया", - "ht_": "हैती", - "hu_": "हंगरी", - "id_": "इंडोनेशिया", - "ie_": "आयरलैंड", - "il_": "इजराइल", - "im_": "मैन द्वीप", - "in_": "भारत", - "io_": "ब्रिटेन और भारतीय समुद्री क्षेत्र", - "iq_": "इराक", - "ir_": "ईरान, इस्लामी गणतंत्र फ़ारस की खाड़ी", - "is_": "आइसलैंड", - "it_": "इटली", - "je_": "जर्सी", - "jm_": "जमैका", - "jo_": "जॉर्डन", - "jp_": "जापान", - "ke_": "केन्या", - "kg_": "किर्गिज़स्तान", - "kh_": "कंबोडिया", - "ki_": "किरिबाती", - "km_": "कोमोरोस", - "kn_": "संत किट्ट्स और नेविस", - "kp_": "कोरिया, डेमोक्रेटिक पीपुल्स रिपब्लिक ऑफ कोरिया", - "kr_": "कोरिया, दक्षिण कोरिया गणराज्य", - "kw_": "कुवैट", - "ky_": "केमन द्वीपसमूह", - "kz_": "कजाखस्तान", - "la_": "लाओस", - "lb_": "लेबनान", - "lc_": "सेंट लूसिया", - "li_": "लिकटेंस्टाइन", - "lk_": "श्रीलंका", - "lr_": "लाइबेरिया", - "ls_": "लिसोटो", - "lt_": "लिथुआनिया", - "lu_": "लक्समबर्ग", - "lv_": "लातविया", - "ly_": "लीबिया का अरब जमहिरिया", - "ma_": "मोरक्को", - "mc_": "मोनाको", - "md_": "मोलदोवा", - "me_": "मोंटेनेग्रो", - "mf_": "संत मार्टिन", - "mg_": "मेडागास्कर", - "mh_": "मार्शल द्वीपसमूह", - "mk_": "मैसेडोनिया", - "ml_": "माली", - "mm_": "म्यांमार", - "mn_": "मंगोलिया", - "mo_": "मकाओ", - "mp_": "उत्तरी मरीयाना द्वीप समूह", - "mq_": "मार्टीनिक", - "mr_": "मॉरिटानिया", - "ms_": "मोंटेसेराट", - "mt_": "माल्टा", - "mu_": "मॉरीशस", - "mv_": "मालदीव", - "mw_": "मलावी", - "mx_": "मेक्सिको", - "my_": "मलेशिया", - "mz_": "मोजाम्बिक", - "na_": "नामिबिया", - "nc_": "न्यू कैलेडोनिया", - "ne_": "नाइजर", - "nf_": "नॉरफ़ॉक आइलैंड", - "ng_": "नाइजीरिया", - "ni_": "निकारागुआ", - "nl_": "नीदरलैंड", - "no_": "नॉर्वे", - "np_": "नेपाल", - "nr_": "नाउरू", - "nu_": "नियू", - "nz_": "न्यूज़ीलैंड", - "om_": "ओमान", - "pa_": "पनामा", - "pe_": "पेरू", - "pf_": "फ़्रेंच पोलिनेशिया", - "pg_": "पापुआ न्यू गिनी", - "ph_": "फिलीपींस", - "pk_": "पाकिस्तान", - "pl_": "पोलैंड", - "pm_": "सेंट पियरे और मिकेलॉन", - "pn_": "पिटकेर्न", - "pr_": "प्यूर्टो रिको", - "ps_": "अधिकृत फ़िलिस्तीन क्षेत्र", - "pt_": "पुर्तगाल", - "pw_": "पलाउ", - "py_": "परागुआ", - "qa_": "कतर", - "re_": "रीयूनियन", - "ro_": "रोमानिया", - "rs_": "सर्बिया", - "ru_": "रूस", - "rw_": "रवांडा", - "sa_": "सऊदी अरब", - "sb_": "सोलोमन इस्लैंडस", - "sc_": "सेशल्स", - "sd_": "सूडान", - "se_": "स्वीडन", - "sg_": "सिंगापुर", - "sh_": "सेंट हेलेना, एसेंशन और ट्रिस्टन दा कुन्हा", - "si_": "स्लोवेनिया", - "sj_": "स्वालबार्ड और जान मेयन", - "sk_": "स्लोवाकिया", - "sl_": "सेरा लिओन", - "sm_": "सैन मैरीनो", - "sn_": "सेनेगल", - "so_": "सोमालिया", - "sr_": "सूरीनाम", - "ss_": "दक्षिण सूडान", - "st_": "साओ टोमे और प्रिंसिपे", - "sv_": "एल साल्वाडोर", - "sy_": "सीरियाई अरब गणराज्य", - "sz_": "स्वाजीलैंड", - "ta_": "ट्रिस्टन दा कुन्हा", - "tc_": "तुर्क और कैकोस द्वीप समूह", - "td_": "काग़ज़ का टुकड़ा", - "tg_": "जाना", - "th_": "थाईलैंड", - "tj_": "तजाकिस्तान", - "tk_": "टोकेलाऊ", - "tl_": "तिमोर-लेस्ते", - "tm_": "तुर्कमेनिस्तान", - "tn_": "ट्यूनीशिया", - "to_": "टोंगा", - "tr_": "तुर्की", - "tt_": "त्रिनिदाद और टोबैगो", - "tv_": "तुवालू", - "tw_": "ताइवान", - "tz_": "तंजानिया, संयुक्त गणराज्य तंजानिया", - "ua_": "यूक्रेन", - "ug_": "युगांडा", - "us_": "संयुक्त राज्य अमेरिका", - "uy_": "उरुग्वे", - "uz_": "उज़्बेकिस्तान", - "va_": "होली सी (वेटिकन सिटी स्टेट)", - "vc_": "संत विंसेंट अँड थे ग्रेनडीनेस", - "ve_": "वेनेजुएला", - "vg_": "वर्जिन द्वीप समूह, ब्रिटिश", - "vi_": "वर्जिन द्वीप समूह, यू.एस.", - "vn_": "वियतनाम", - "vu_": "वानुअतु", - "wf_": "वाली और फ़्युटुना", - "ws_": "समोआ", - "ye_": "यमन", - "yt_": "मैयट", - "za_": "दक्षिण अफ्रीका", - "zm_": "जाम्बिया", - "zw_": "जिम्बाब्वे" -} \ No newline at end of file diff --git a/lib/l10n/it.arb b/lib/l10n/it.arb deleted file mode 100644 index d14981f0..00000000 --- a/lib/l10n/it.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "it", - "invalidPhoneNumber": "Numero di telefono invalido", - "invalidCountry": "Paese invalido", - "invalidMobilePhoneNumber": "Numero di cellulare invalido", - "invalidFixedLinePhoneNumber": "Numero di rete fissa invalido", - "requiredPhoneNumber": "Numero di telefono richiesto", - "noResultMessage": "Nessun risultato", - "ac_": "Isola dell'Ascensione", - "ad_": "Andorra", - "ae_": "Emirati Arabi Uniti", - "af_": "Afghanistan", - "ag_": "Antigua e Barbuda", - "ai_": "Anguilla", - "al_": "Albania", - "am_": "Armenia", - "an_": "Antille Olandesi", - "ao_": "Angola", - "aq_": "Antartide", - "ar_": "Argentina", - "as_": "Samoa americane", - "at_": "Austria", - "au_": "Australia", - "aw_": "Aruba", - "ax_": "Isole Aland", - "az_": "Azerbaigian", - "ba_": "Bosnia Erzegovina", - "bb_": "Barbados", - "bd_": "Bangladesh", - "be_": "Belgio", - "bf_": "Burkina Faso", - "bg_": "Bulgaria", - "bh_": "Bahrein", - "bi_": "Burundi", - "bj_": "Benin", - "bl_": "Saint Barthelemy", - "bm_": "Bermuda", - "bn_": "Brunei Darussalam", - "bo_": "Bolivia, Stato plurinazionale di", - "bq_": "Bonaire", - "br_": "Brasile", - "bs_": "Bahamas", - "bt_": "Bhutan", - "bw_": "Botswana", - "by_": "Bielorussia", - "bz_": "Belize", - "ca_": "Canada", - "cc_": "Isole Cocos (Keeling)", - "cd_": "Congo, Repubblica Democratica del Congo", - "cf_": "Repubblica Centrafricana", - "cg_": "Congo", - "ch_": "Svizzera", - "ci_": "Costa d'Avorio", - "ck_": "Isole Cook", - "cl_": "Chile", - "cm_": "Camerun", - "cn_": "Cina", - "co_": "Colombia", - "cr_": "Costa Rica", - "cu_": "Cuba", - "cv_": "capo Verde", - "cx_": "Isola di Natale", - "cy_": "Cipro", - "cz_": "Repubblica Ceca", - "de_": "Germania", - "dj_": "Gibuti", - "dk_": "Danimarca", - "dm_": "Dominica", - "do_": "Repubblica Dominicana", - "dz_": "Algeria", - "ec_": "Ecuador", - "ee_": "Estonia", - "eg_": "Egitto", - "er_": "Eritrea", - "es_": "Spagna", - "et_": "Etiopia", - "fi_": "Finlandia", - "fj_": "Figi", - "fk_": "Isole Falkland (Malvinas)", - "fm_": "Micronesia, Stati Federati di Micronesia", - "fo_": "Isole Faroe", - "fr_": "Francia", - "ga_": "Gabon", - "gb_": "Regno Unito", - "gd_": "Grenada", - "ge_": "Georgia", - "gf_": "Guiana francese", - "gg_": "Guernsey", - "gh_": "Ghana", - "gi_": "Gibilterra", - "gl_": "Groenlandia", - "gm_": "Gambia", - "gn_": "Guinea", - "gp_": "Guadalupa", - "gq_": "Guinea Equatoriale", - "gr_": "Grecia", - "gs_": "Georgia del Sud e isole Sandwich meridionali", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Guinea-Bissau", - "gy_": "Guyana", - "hk_": "Hong Kong", - "hn_": "Honduras", - "hr_": "Croazia", - "ht_": "Haiti", - "hu_": "Ungheria", - "id_": "Indonesia", - "ie_": "Irlanda", - "il_": "Israele", - "im_": "Isola di Man", - "in_": "India", - "io_": "Territorio britannico dell'Oceano Indiano", - "iq_": "Iraq", - "ir_": "Iran, Repubblica islamica del Golfo Persico", - "is_": "Islanda", - "it_": "Italia", - "je_": "Jersey", - "jm_": "Giamaica", - "jo_": "Giordania", - "jp_": "Giappone", - "ke_": "Kenya", - "kg_": "Kirghizistan", - "kh_": "Cambogia", - "ki_": "Kiribati", - "km_": "Comore", - "kn_": "Saint Kitts e Nevis", - "kp_": "Corea, Repubblica Democratica Popolare di Corea", - "kr_": "Corea, Repubblica della Corea del Sud", - "kw_": "Kuwait", - "ky_": "Isole Cayman", - "kz_": "Kazakistan", - "la_": "Laos", - "lb_": "Libano", - "lc_": "Santa Lucia", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Liberia", - "ls_": "Lesotho", - "lt_": "Lituania", - "lu_": "Lussemburgo", - "lv_": "Lettonia", - "ly_": "Giamahiria araba libica", - "ma_": "Marocco", - "mc_": "Monaco", - "md_": "Moldova", - "me_": "Montenegro", - "mf_": "Saint Martin", - "mg_": "Madagascar", - "mh_": "Isole Marshall", - "mk_": "Macedonia", - "ml_": "Mali", - "mm_": "Myanmar", - "mn_": "Mongolia", - "mo_": "Macao", - "mp_": "Isole Marianne settentrionali", - "mq_": "Martinica", - "mr_": "Mauritania", - "ms_": "Montserrat", - "mt_": "Malta", - "mu_": "Maurizio", - "mv_": "Maldive", - "mw_": "Malawi", - "mx_": "Messico", - "my_": "Malaysia", - "mz_": "Mozambico", - "na_": "Namibia", - "nc_": "Nuova Caledonia", - "ne_": "Niger", - "nf_": "Isola Norfolk", - "ng_": "Nigeria", - "ni_": "Nicaragua", - "nl_": "Olanda", - "no_": "Norvegia", - "np_": "Nepal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "Nuova Zelanda", - "om_": "Oman", - "pa_": "Panama", - "pe_": "Perù", - "pf_": "Polinesia francese", - "pg_": "Papua Nuova Guinea", - "ph_": "Filippine", - "pk_": "Pakistan", - "pl_": "Polonia", - "pm_": "Saint Pierre e Miquelon", - "pn_": "Pitcairn", - "pr_": "Porto Rico", - "ps_": "Territori palestinesi occupati", - "pt_": "Portogallo", - "pw_": "Palau", - "py_": "Paraguay", - "qa_": "Qatar", - "re_": "Riunione", - "ro_": "Romania", - "rs_": "Serbia", - "ru_": "Russia", - "rw_": "Ruanda", - "sa_": "Arabia Saudita", - "sb_": "Isole Salomone", - "sc_": "Seychelles", - "sd_": "Sudan", - "se_": "Svezia", - "sg_": "Singapore", - "sh_": "Sant'Elena, Ascensione e Tristan Da Cunha", - "si_": "Slovenia", - "sj_": "Svalbard e Jan Mayen", - "sk_": "Slovacchia", - "sl_": "Sierra Leone", - "sm_": "San Marino", - "sn_": "Senegal", - "so_": "Somalia", - "sr_": "Suriname", - "ss_": "Sudan del Sud", - "st_": "Sao Tome e Principe", - "sv_": "El Salvador", - "sy_": "Repubblica Araba Siriana", - "sz_": "Swaziland", - "ta_": "Tristan da Cunha", - "tc_": "Isole Turks e Caicos", - "td_": "Chad", - "tg_": "Andare", - "th_": "Tailandia", - "tj_": "Tagikistan", - "tk_": "Tokelau", - "tl_": "Timor-Leste", - "tm_": "Turkmenistan", - "tn_": "Tunisia", - "to_": "Tonga", - "tr_": "tacchino", - "tt_": "Trinidad e Tobago", - "tv_": "Tuvalu", - "tw_": "Taiwan", - "tz_": "Tanzania, Repubblica Unita di Tanzania", - "ua_": "Ucraina", - "ug_": "Uganda", - "us_": "stati Uniti", - "uy_": "Uruguay", - "uz_": "Uzbekistan", - "va_": "Santa Sede (Stato della Città del Vaticano)", - "vc_": "Saint Vincent e Grenadine", - "ve_": "Venezuela", - "vg_": "Isole Vergini britanniche", - "vi_": "Isole Vergini americane", - "vn_": "Vietnam", - "vu_": "Vanuatu", - "wf_": "Wallis e Futuna", - "ws_": "Samoa", - "ye_": "Yemen", - "yt_": "Mayotte", - "za_": "Sud Africa", - "zm_": "Zambia", - "zw_": "Zimbabwe" -} \ No newline at end of file diff --git a/lib/l10n/nb.arb b/lib/l10n/nb.arb deleted file mode 100644 index a1888147..00000000 --- a/lib/l10n/nb.arb +++ /dev/null @@ -1,252 +0,0 @@ -{ - "@@locale": "nb", - "invalidPhoneNumber": "Ugyldig telefonnummer", - "invalidCountry": "Ugyldig land", - "invalidMobilePhoneNumber": "Ugyldig mobilnummer", - "invalidFixedLinePhoneNumber": "Ugyldig fasttelefonnummer", - "requiredPhoneNumber": "Telefonnummer er påkrevd", - "noResultMessage": "Ingen resultater", - "ac_": "Ascension Island", - "ad_": "Andorra", - "ae_": "De forente arabiske emirater", - "af_": "Afghanistan", - "ag_": "Antigua og Barbuda", - "ai_": "Anguilla", - "al_": "Albania", - "am_": "Armenia", - "an_": "Nederlandene Antillene", - "ao_": "Angola", - "aq_": "Antarktis", - "ar_": "Argentina", - "as_": "Amerikansk Samoa", - "at_": "Østerrike", - "au_": "Australia", - "aw_": "Aruba", - "ax_": "Åland", - "az_": "Aserbajdsjan", - "ba_": "Bosnia-Hercegovina", - "bb_": "Barbados", - "bd_": "Bangladesh", - "be_": "Belgia", - "bf_": "Burkina Faso", - "bg_": "Bulgaria", - "bh_": "Bahrain", - "bi_": "Burundi", - "bj_": "Benin", - "bl_": "Saint Barthelemy", - "bm_": "Bermuda", - "bn_": "Brunei Darussalam", - "bo_": "Bolivia, den plurinasjonale staten", - "bq_": "Bonaire", - "br_": "Brasil", - "bs_": "Bahamas", - "bt_": "Bhutan", - "bw_": "Botswana", - "by_": "Hviterussland", - "bz_": "Belize", - "ca_": "Canada", - "cc_": "Kokosøyene (Keelingøyene)", - "cd_": "Den demokratiske republikken Kongo", - "cf_": "Den sentralafrikanske republikken", - "cg_": "Kongo", - "ch_": "Sveits", - "ci_": "Elfenbenskysten", - "ck_": "Cookøyene", - "cl_": "Chile", - "cm_": "Kamerun", - "cn_": "Kina", - "co_": "Colombia", - "cr_": "Costa Rica", - "cu_": "Cuba", - "cv_": "Kapp Verde", - "cx_": "Christmas Island", - "cy_": "Kypros", - "cz_": "Tsjekkia", - "de_": "Tyskland", - "dj_": "Djibouti", - "dk_": "Danmark", - "dm_": "Dominica", - "do_": "Den dominikanske republikken", - "dz_": "Algerie", - "ec_": "Ecuador", - "ee_": "Estland", - "eg_": "Egypt", - "er_": "Eritrea", - "es_": "Spania", - "et_": "Etiopia", - "fi_": "Finland", - "fj_": "Fiji", - "fk_": "Falklandsøyene (Malvinas)", - "fm_": "Mikronesia, de føderale statene i Mikronesia", - "fo_": "Færøyene", - "fr_": "Frankrike", - "ga_": "Gabon", - "gb_": "Storbritannia", - "gd_": "Grenada", - "ge_": "Georgia", - "gf_": "Fransk Guyana", - "gg_": "Guernsey", - "gh_": "Ghana", - "gi_": "Gibraltar", - "gl_": "Grønland", - "gm_": "Gambia", - "gn_": "Guinea", - "gp_": "Guadeloupe", - "gq_": "Ekvatorial-Guinea", - "gr_": "Hellas", - "gs_": "Sør-Georgia og Sør-Sandwichøyene", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Guinea-Bissau", - "gy_": "Guyana", - "hk_": "Hong Kong", - "hn_": "Honduras", - "hr_": "Kroatia", - "ht_": "Haiti", - "hu_": "Ungarn", - "id_": "Indonesia", - "ie_": "Irland", - "il_": "Israel", - "im_": "Isle of Man", - "in_": "India", - "io_": "Det britiske territoriet i Indiahavet", - "iq_": "Irak", - "ir_": "Iran, Den islamske republikken", - "is_": "Island", - "it_": "Italia", - "je_": "Jersey", - "jm_": "Jamaica", - "jo_": "Jordan", - "jp_": "Japan", - "ke_": "Kenya", - "kg_": "Kirgisistan", - "kh_": "Kambodsja", - "ki_": "Kiribati", - "km_": "Komorene", - "kn_": "Saint Kitts og Nevis", - "kp_": "Korea, Den demokratiske folkerepublikken Korea", - "kr_": "Korea, Republikken Sør-Korea", - "kw_": "Kuwait", - "ky_": "Caymanøyene", - "kz_": "Kasakhstan", - "la_": "Laos", - "lb_": "Libanon", - "lc_": "Saint Lucia", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Liberia", - "ls_": "Lesotho", - "lt_": "Litauen", - "lu_": "Luxembourg", - "lv_": "Latvia", - "ly_": "Libya", - "ma_": "Marokko", - "mc_": "Monaco", - "md_": "Moldova", - "me_": "Montenegro", - "mf_": "Saint Martin", - "mg_": "Madagaskar", - "mh_": "Marshalløyene", - "mk_": "Makedonia", - "ml_": "Mali", - "mm_": "Myanmar", - "mn_": "Mongolia", - "mo_": "Macao", - "mp_": "Nord-Marianene", - "mq_": "Martinique", - "mr_": "Mauritania", - "ms_": "Montserrat", - "mt_": "Malta", - "mu_": "Mauritius", - "mv_": "Maldivene", - "mw_": "Malawi", - "mx_": "Mexico", - "my_": "Malaysia", - "mz_": "Mosambik", - "na_": "Namibia", - "nc_": "Ny-Caledonia", - "ne_": "Niger", - "nf_": "Norfolk Island", - "ng_": "Nigeria", - "ni_": "Nicaragua", - "nl_": "Nederland", - "no_": "Norge", - "np_": "Nepal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "New Zealand", - "om_": "Oman", - "pa_": "Panama", - "pe_": "Peru", - "pf_": "Fransk Polynesia", - "pg_": "Papua Ny-Guinea", - "ph_": "Filippinene", - "pk_": "Pakistan", - "pl_": "Polen", - "pm_": "Saint Pierre og Miquelon", - "pn_": "Pitcairn", - "pr_": "Puerto Rico", - "ps_": "Det palestinske området, okkupert", - "pt_": "Portugal", - "pw_": "Palau", - "py_": "Paraguay", - "qa_": "Qatar", - "re_": "Reunion", - "ro_": "Romania", - "rs_": "Serbia", - "ru_": "Russland", - "rw_": "Rwanda", - "sa_": "Saudi-Arabia", - "sb_": "Salomonøyene", - "sc_": "Seychellene", - "sd_": "Sudan", - "se_": "Sverige", - "sg_": "Singapore", - "si_": "Slovenia", - "sk_": "Slovakia", - "sl_": "Sierra Leone", - "sm_": "San Marino", - "sn_": "Senegal", - "so_": "Somalia", - "sr_": "Surinam", - "ss_": "Sør-Sudan", - "st_": "São Tomé og Príncipe", - "sv_": "El Salvador", - "sy_": "Den syriske arabiske republikken", - "sz_": "Swaziland", - "ta_": "Tristan da Cunha", - "tc_": "Turks- og Caicosøyene", - "td_": "Tsjad", - "tg_": "Togo", - "th_": "Thailand", - "tj_": "Tadsjikistan", - "tk_": "Tokelau", - "tl_": "Øst-Timor", - "tm_": "Turkmenistan", - "tn_": "Tunisia", - "to_": "Tonga", - "tr_": "Türkiye", - "tt_": "Trinidad og Tobago", - "tv_": "Tuvalu", - "tw_": "Taiwan", - "tz_": "Tanzania, Den forente republikken Tanzania", - "ua_": "Ukraina", - "ug_": "Uganda", - "us_": "USA", - "uy_": "Uruguay", - "uz_": "Usbekistan", - "va_": "Vatikanstaten (Hellige stol)", - "vc_": "Saint Vincent og Grenadinene", - "ve_": "Venezuela", - "vg_": "De britiske Jomfruøyene", - "vi_": "De amerikanske Jomfruøyene", - "vn_": "Vietnam", - "vu_": "Vanuatu", - "wf_": "Wallis og Futuna", - "ws_": "Samoa", - "ye_": "Jemen", - "yt_": "Mayotte", - "za_": "Sør-Afrika", - "zm_": "Zambia", - "zw_": "Zimbabwe" -} diff --git a/lib/l10n/nl.arb b/lib/l10n/nl.arb deleted file mode 100644 index 6487c001..00000000 --- a/lib/l10n/nl.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "nl", - "invalidPhoneNumber": "Ongeldig telefoonnummer", - "invalidCountry": "Ongeldig land", - "invalidMobilePhoneNumber": "Ongeldig mobiel nummer", - "invalidFixedLinePhoneNumber": "Ongeldig vast nummer", - "requiredPhoneNumber": "Telefoonnummer vereist", - "noResultMessage": "Geen resultaat", - "ac_": "Hemelvaart Eiland", - "ad_": "Andorra", - "ae_": "Verenigde Arabische Emiraten", - "af_": "Afghanistan", - "ag_": "Antigua en Barbuda", - "ai_": "Anguilla", - "al_": "Albanië", - "am_": "Armenië", - "an_": "Nederlandse Antillen", - "ao_": "Angola", - "aq_": "Antarctica", - "ar_": "Argentinië", - "as_": "Amerikaans Samoa", - "at_": "Oostenrijk", - "au_": "Australië", - "aw_": "Aruba", - "ax_": "Aland-eilanden", - "az_": "Azerbeidzjan", - "ba_": "Bosnië-Herzegovina", - "bb_": "Barbados", - "bd_": "Bangladesh", - "be_": "Belgie", - "bf_": "Burkina Faso", - "bg_": "Bulgarije", - "bh_": "Bahrein", - "bi_": "Burundi", - "bj_": "Benin", - "bl_": "Sint-Bartholomeus", - "bm_": "Bermuda", - "bn_": "Brunei Darussalam", - "bo_": "Bolivia, Plurinationale Staat", - "bq_": "Bonaire", - "br_": "Brazilië", - "bs_": "Bahamas", - "bt_": "Bhutan", - "bw_": "Botswana", - "by_": "Wit-Rusland", - "bz_": "Belize", - "ca_": "Canada", - "cc_": "Cocos (Keeling) eilanden", - "cd_": "Congo, de Democratische Republiek Congo", - "cf_": "Centraal Afrikaanse Republiek", - "cg_": "Congo", - "ch_": "Zwitserland", - "ci_": "Ivoorkust", - "ck_": "Cook Eilanden", - "cl_": "Chili", - "cm_": "Kameroen", - "cn_": "China", - "co_": "Colombia", - "cr_": "Costa Rica", - "cu_": "Cuba", - "cv_": "Kaapverdië", - "cx_": "Kersteiland", - "cy_": "Cyprus", - "cz_": "Tsjechië", - "de_": "Duitsland", - "dj_": "Djibouti", - "dk_": "Denemarken", - "dm_": "Dominica", - "do_": "Dominicaanse Republiek", - "dz_": "Algerije", - "ec_": "Ecuador", - "ee_": "Estland", - "eg_": "Egypte", - "er_": "Eritrea", - "es_": "Spanje", - "et_": "Ethiopië", - "fi_": "Finland", - "fj_": "Fiji", - "fk_": "Falklandeilanden (Malvinas)", - "fm_": "Micronesië, Federale Staten van Micronesië", - "fo_": "Faeröer", - "fr_": "Frankrijk", - "ga_": "Gabon", - "gb_": "Verenigd Koningkrijk", - "gd_": "Grenada", - "ge_": "Georgië", - "gf_": "Frans Guyana", - "gg_": "Guernsey", - "gh_": "Ghana", - "gi_": "Gibraltar", - "gl_": "Groenland", - "gm_": "Gambia", - "gn_": "Guinea", - "gp_": "Guadeloupe", - "gq_": "Equatoriaal-Guinea", - "gr_": "Griekenland", - "gs_": "Zuid-Georgië en de Zuidelijke Sandwicheilanden", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Guinee-Bissau", - "gy_": "Guyana", - "hk_": "Hong Kong", - "hn_": "Honduras", - "hr_": "Kroatië", - "ht_": "Haïti", - "hu_": "Hongarije", - "id_": "Indonesië", - "ie_": "Ierland", - "il_": "Israël", - "im_": "Isle of Man", - "in_": "India", - "io_": "Brits-Indisch oceaan gebied", - "iq_": "Irak", - "ir_": "Iran, Islamitische Republiek Perzische Golf", - "is_": "IJsland", - "it_": "Italië", - "je_": "Jersey", - "jm_": "Jamaica", - "jo_": "Jordanië", - "jp_": "Japan", - "ke_": "Kenia", - "kg_": "Kirgizië", - "kh_": "Cambodja", - "ki_": "Kiribati", - "km_": "Comoren", - "kn_": "Saint Kitts en Nevis", - "kp_": "Korea, Democratische Volksrepubliek Korea", - "kr_": "Korea, Republiek Zuid-Korea", - "kw_": "Koeweit", - "ky_": "Kaaiman Eilanden", - "kz_": "Kazachstan", - "la_": "Laos", - "lb_": "Libanon", - "lc_": "Saint Lucia", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Liberia", - "ls_": "Lesotho", - "lt_": "Litouwen", - "lu_": "Luxemburg", - "lv_": "Letland", - "ly_": "Libië", - "ma_": "Marokko", - "mc_": "Monaco", - "md_": "Moldavië", - "me_": "Montenegro", - "mf_": "Sint-Maarten", - "mg_": "Madagascar", - "mh_": "Marshall eilanden", - "mk_": "Macedonië", - "ml_": "Mali", - "mm_": "Myanmar", - "mn_": "Mongolië", - "mo_": "Macao", - "mp_": "noordelijke Mariana eilanden", - "mq_": "Martinique", - "mr_": "Mauritanië", - "ms_": "Montserrat", - "mt_": "Malta", - "mu_": "Mauritius", - "mv_": "Maldiven", - "mw_": "Malawi", - "mx_": "Mexico", - "my_": "Maleisië", - "mz_": "Mozambique", - "na_": "Namibië", - "nc_": "Nieuw-Caledonië", - "ne_": "Niger", - "nf_": "Norfolkeiland", - "ng_": "Nigeria", - "ni_": "Nicaragua", - "nl_": "Nederland", - "no_": "Noorwegen", - "np_": "Nepal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "Nieuw-Zeeland", - "om_": "Oman", - "pa_": "Panama", - "pe_": "Peru", - "pf_": "Frans-Polynesië", - "pg_": "Papoea-Nieuw-Guinea", - "ph_": "Filippijnen", - "pk_": "Pakistan", - "pl_": "Polen", - "pm_": "Saint Pierre en Miquelon", - "pn_": "Pitcairn", - "pr_": "Puerto Rico", - "ps_": "Palestijns gebied, bezet", - "pt_": "Portugal", - "pw_": "Palau", - "py_": "Paraguay", - "qa_": "Qatar", - "re_": "Bijeenkomst", - "ro_": "Roemenië", - "rs_": "Servië", - "ru_": "Rusland", - "rw_": "Rwanda", - "sa_": "Saoedi-Arabië", - "sb_": "Solomon eilanden", - "sc_": "Seychellen", - "sd_": "Soedan", - "se_": "Zweden", - "sg_": "Singapore", - "sh_": "Sint-Helena, Ascension en Tristan Da Cunha", - "si_": "Slovenië", - "sj_": "Svalbard en Jan Mayen", - "sk_": "Slowakije", - "sl_": "Sierra Leone", - "sm_": "San Marino", - "sn_": "Senegal", - "so_": "Somalië", - "sr_": "Suriname", - "ss_": "Zuid Soedan", - "st_": "Sao Tomé en Principe", - "sv_": "El Salvador", - "sy_": "Syrische Arabische Republiek", - "sz_": "Swaziland", - "ta_": "Tristan da Cunha", - "tc_": "Turks- en Caicoseilanden", - "td_": "Tsjaad", - "tg_": "Gaan", - "th_": "Thailand", - "tj_": "Tadzjikistan", - "tk_": "Tokelau", - "tl_": "Oost-Timor", - "tm_": "Turkmenistan", - "tn_": "Tunesië", - "to_": "Tonga", - "tr_": "kalkoen", - "tt_": "Trinidad en Tobago", - "tv_": "Tuvalu", - "tw_": "Taiwan", - "tz_": "Tanzania, Verenigde Republiek Tanzania", - "ua_": "Oekraïne", - "ug_": "Oeganda", - "us_": "Verenigde Staten", - "uy_": "Uruguay", - "uz_": "Oezbekistan", - "va_": "Heilige Stoel (Vaticaanstad)", - "vc_": "Saint Vincent en de Grenadines", - "ve_": "Venezuela", - "vg_": "Britse Maagdeneilanden", - "vi_": "Maagdeneilanden, VS", - "vn_": "Vietnam", - "vu_": "Vanuatu", - "wf_": "Wallis en Futuna", - "ws_": "Samoa", - "ye_": "Jemen", - "yt_": "Mayotte", - "za_": "Zuid-Afrika", - "zm_": "Zambia", - "zw_": "Zimbabwe" -} \ No newline at end of file diff --git a/lib/l10n/pt.arb b/lib/l10n/pt.arb deleted file mode 100644 index e7dccb8f..00000000 --- a/lib/l10n/pt.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "pt", - "invalidPhoneNumber": "Número de telefone inválido", - "invalidCountry": "País inválido", - "invalidMobilePhoneNumber": "Número de telefone celular inválido", - "invalidFixedLinePhoneNumber": "Número de telefone fixo inválido", - "requiredPhoneNumber": "Número de telefone obrigatório", - "noResultMessage": "Sem resultado", - "ac_": "Ilha da Ascensão", - "ad_": "Andorra", - "ae_": "Emirados Árabes Unidos", - "af_": "Afeganistão", - "ag_": "Antigua e Barbuda", - "ai_": "Anguilla", - "al_": "Albânia", - "am_": "Armênia", - "an_": "Antilhas Holandesas", - "ao_": "Angola", - "aq_": "Antártica", - "ar_": "Argentina", - "as_": "Samoa Americana", - "at_": "Áustria", - "au_": "Austrália", - "aw_": "Aruba", - "ax_": "Ilhas Aland", - "az_": "Azerbaijão", - "ba_": "Bósnia e Herzegovina", - "bb_": "Barbados", - "bd_": "Bangladesh", - "be_": "Bélgica", - "bf_": "Burkina Faso", - "bg_": "Bulgária", - "bh_": "Bahrain", - "bi_": "Burundi", - "bj_": "Benin", - "bl_": "São Bartolomeu", - "bm_": "Bermudas", - "bn_": "Brunei Darussalam", - "bo_": "Bolívia, Estado Plurinacional de", - "bq_": "Bonaire", - "br_": "Brasil", - "bs_": "Bahamas", - "bt_": "Butão", - "bw_": "Botswana", - "by_": "Bielo-Rússia", - "bz_": "Belize", - "ca_": "Canadá", - "cc_": "Ilhas Cocos (Keeling)", - "cd_": "Congo, República Democrática do Congo", - "cf_": "República Centro-Africana", - "cg_": "Congo", - "ch_": "Suíça", - "ci_": "Costa do Marfim", - "ck_": "Ilhas Cook", - "cl_": "Chile", - "cm_": "Camarões", - "cn_": "China", - "co_": "Colômbia", - "cr_": "Costa Rica", - "cu_": "Cuba", - "cv_": "cabo Verde", - "cx_": "Ilha do Natal", - "cy_": "Chipre", - "cz_": "República Checa", - "de_": "Alemanha", - "dj_": "Djibouti", - "dk_": "Dinamarca", - "dm_": "Dominica", - "do_": "República Dominicana", - "dz_": "Argélia", - "ec_": "Equador", - "ee_": "Estônia", - "eg_": "Egito", - "er_": "Eritreia", - "es_": "Espanha", - "et_": "Etiópia", - "fi_": "Finlândia", - "fj_": "Fiji", - "fk_": "Ilhas Falkland (Malvinas)", - "fm_": "Micronésia, Estados Federados da Micronésia", - "fo_": "ilhas Faroe", - "fr_": "França", - "ga_": "Gabão", - "gb_": "Reino Unido", - "gd_": "Grenada", - "ge_": "Georgia", - "gf_": "Guiana Francesa", - "gg_": "Guernsey", - "gh_": "Gana", - "gi_": "Gibraltar", - "gl_": "Groenlândia", - "gm_": "Gâmbia", - "gn_": "Guiné", - "gp_": "Guadalupe", - "gq_": "Guiné Equatorial", - "gr_": "Grécia", - "gs_": "Geórgia do Sul e Ilhas Sandwich do Sul", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Guinea-bissau", - "gy_": "Guiana", - "hk_": "Hong Kong", - "hn_": "Honduras", - "hr_": "Croácia", - "ht_": "Haiti", - "hu_": "Hungria", - "id_": "Indonésia", - "ie_": "Irlanda", - "il_": "Israel", - "im_": "Ilha de Man", - "in_": "Índia", - "io_": "Território Britânico do Oceano Índico", - "iq_": "Iraque", - "ir_": "Irã, República Islâmica do Golfo Pérsico", - "is_": "Islândia", - "it_": "Itália", - "je_": "Jersey", - "jm_": "Jamaica", - "jo_": "Jordânia", - "jp_": "Japão", - "ke_": "Quênia", - "kg_": "Quirguistão", - "kh_": "Camboja", - "ki_": "Kiribati", - "km_": "Comores", - "kn_": "São Cristóvão e Neves", - "kp_": "Coreia, República Popular Democrática da Coreia", - "kr_": "Coreia, República da Coreia do Sul", - "kw_": "Kuwait", - "ky_": "Ilhas Cayman", - "kz_": "Cazaquistão", - "la_": "Laos", - "lb_": "Líbano", - "lc_": "Santa Lúcia", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Libéria", - "ls_": "Lesoto", - "lt_": "Lituânia", - "lu_": "Luxemburgo", - "lv_": "Letônia", - "ly_": "Jamahiriya Árabe da Líbia", - "ma_": "Marrocos", - "mc_": "Mônaco", - "md_": "Moldova", - "me_": "Montenegro", - "mf_": "são Martinho", - "mg_": "Madagáscar", - "mh_": "Ilhas Marshall", - "mk_": "Macedonia", - "ml_": "Mali", - "mm_": "Myanmar", - "mn_": "Mongólia", - "mo_": "Macau", - "mp_": "Ilhas Marianas do Norte", - "mq_": "Martinica", - "mr_": "Mauritânia", - "ms_": "Montserrat", - "mt_": "Malta", - "mu_": "Maurício", - "mv_": "Maldivas", - "mw_": "Malawi", - "mx_": "México", - "my_": "Malásia", - "mz_": "Moçambique", - "na_": "Namibia", - "nc_": "Nova Caledônia", - "ne_": "Níger", - "nf_": "Ilha Norfolk", - "ng_": "Nigéria", - "ni_": "Nicarágua", - "nl_": "Países Baixos", - "no_": "Noruega", - "np_": "Nepal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "Nova Zelândia", - "om_": "Omã", - "pa_": "Panamá", - "pe_": "Peru", - "pf_": "Polinésia Francesa", - "pg_": "Papua Nova Guiné", - "ph_": "Filipinas", - "pk_": "Paquistão", - "pl_": "Polônia", - "pm_": "São Pedro e Miquelão", - "pn_": "Pitcairn", - "pr_": "Porto Rico", - "ps_": "Território Palestino, Ocupado", - "pt_": "Portugal", - "pw_": "Palau", - "py_": "Paraguai", - "qa_": "Catar", - "re_": "Reunião", - "ro_": "Romênia", - "rs_": "Sérvia", - "ru_": "Rússia", - "rw_": "Ruanda", - "sa_": "Arábia Saudita", - "sb_": "Ilhas Salomão", - "sc_": "Seychelles", - "sd_": "Sudão", - "se_": "Suécia", - "sg_": "Cingapura", - "sh_": "Santa Helena, Ascensão e Tristão da Cunha", - "si_": "Eslovênia", - "sj_": "Svalbard e Jan Mayen", - "sk_": "Eslováquia", - "sl_": "Serra Leoa", - "sm_": "San Marino", - "sn_": "Senegal", - "so_": "Somália", - "sr_": "Suriname", - "ss_": "Sudão do Sul", - "st_": "São Tomé e Príncipe", - "sv_": "El Salvador", - "sy_": "República Árabe da Síria", - "sz_": "Suazilândia", - "ta_": "Tristan da Cunha", - "tc_": "Ilhas Turcas e Caicos", - "td_": "Chade", - "tg_": "Ir", - "th_": "Tailândia", - "tj_": "Tajiquistão", - "tk_": "Tokelau", - "tl_": "Timor-Leste", - "tm_": "Turcomenistão", - "tn_": "Tunísia", - "to_": "Tonga", - "tr_": "Peru", - "tt_": "Trinidad e Tobago", - "tv_": "Tuvalu", - "tw_": "Taiwan", - "tz_": "Tanzânia, República Unida da Tanzânia", - "ua_": "Ucrânia", - "ug_": "Uganda", - "us_": "Estados Unidos", - "uy_": "Uruguai", - "uz_": "Uzbequistão", - "va_": "Santa Sé (Estado da Cidade do Vaticano)", - "vc_": "São Vicente e Granadinas", - "ve_": "Venezuela", - "vg_": "Ilhas Virgens Britânicas", - "vi_": "Ilhas Virgens, EUA", - "vn_": "Vietnã", - "vu_": "Vanuatu", - "wf_": "Wallis e Futuna", - "ws_": "Samoa", - "ye_": "Iémen", - "yt_": "Mayotte", - "za_": "África do Sul", - "zm_": "Zâmbia", - "zw_": "Zimbábue" -} \ No newline at end of file diff --git a/lib/l10n/ru.arb b/lib/l10n/ru.arb deleted file mode 100644 index 061d00b6..00000000 --- a/lib/l10n/ru.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "ru", - "invalidPhoneNumber": "Неправильный номер телефона", - "invalidCountry": "Неверная страна", - "invalidMobilePhoneNumber": "Неверный номер мобильного телефона", - "invalidFixedLinePhoneNumber": "Недействительный номер стационарного телефона", - "requiredPhoneNumber": "Требуется номер телефона", - "noResultMessage": "Безрезультатно", - "ac_": "Остров Вознесения", - "ad_": "Андорра", - "ae_": "Объединенные Арабские Эмираты", - "af_": "Афганистан", - "ag_": "Антигуа и Барбуда", - "ai_": "Ангилья", - "al_": "Албания", - "am_": "Армения", - "an_": "Нидерландские Антильские острова", - "ao_": "Ангола", - "aq_": "Антарктида", - "ar_": "Аргентина", - "as_": "американское Самоа", - "at_": "Австрия", - "au_": "Австралия", - "aw_": "Аруба", - "ax_": "Аландские острова", - "az_": "Азербайджан", - "ba_": "Босния и Герцеговина", - "bb_": "Барбадос", - "bd_": "Бангладеш", - "be_": "Бельгия", - "bf_": "Буркина-Фасо", - "bg_": "Болгария", - "bh_": "Бахрейн", - "bi_": "Бурунди", - "bj_": "Бенин", - "bl_": "Сен-Бартелеми", - "bm_": "Бермудские острова", - "bn_": "Бруней-Даруссалам", - "bo_": "Боливия, Многонациональное Государство", - "bq_": "Бонайре", - "br_": "Бразилия", - "bs_": "Багамы", - "bt_": "Бутан", - "bw_": "Ботсвана", - "by_": "Беларусь", - "bz_": "Белиз", - "ca_": "Канада", - "cc_": "Кокосовые (Килинг) острова", - "cd_": "Конго, Демократическая Республика Конго", - "cf_": "Центрально-Африканская Республика", - "cg_": "Конго", - "ch_": "Швейцария", - "ci_": "Берег Слоновой Кости", - "ck_": "Острова Кука", - "cl_": "Чили", - "cm_": "Камерун", - "cn_": "Китай", - "co_": "Колумбия", - "cr_": "Коста-Рика", - "cu_": "Куба", - "cv_": "Кабо-Верде", - "cx_": "Остров Рождества", - "cy_": "Кипр", - "cz_": "Республика Чехия", - "de_": "Германия", - "dj_": "Джибути", - "dk_": "Дания", - "dm_": "Доминика", - "do_": "Доминиканская Республика", - "dz_": "Алжир", - "ec_": "Эквадор", - "ee_": "Эстония", - "eg_": "Египет", - "er_": "Эритрея", - "es_": "Испания", - "et_": "Эфиопия", - "fi_": "Финляндия", - "fj_": "Фиджи", - "fk_": "Фолклендские (Мальвинские) острова", - "fm_": "Микронезия, Федеративные Штаты Микронезии", - "fo_": "Фарерские острова", - "fr_": "Франция", - "ga_": "Габон", - "gb_": "Великобритания", - "gd_": "Гренада", - "ge_": "Грузия", - "gf_": "Французская Гвиана", - "gg_": "Гернси", - "gh_": "Гана", - "gi_": "Гибралтар", - "gl_": "Гренландия", - "gm_": "Гамбия", - "gn_": "Гвинея", - "gp_": "Гваделупа", - "gq_": "Экваториальная Гвинея", - "gr_": "Греция", - "gs_": "Южная Георгия и Южные Сандвичевы острова", - "gt_": "Гватемала", - "gu_": "Гуам", - "gw_": "Гвинея-Бисау", - "gy_": "Гайана", - "hk_": "Гонконг", - "hn_": "Гондурас", - "hr_": "Хорватия", - "ht_": "Гаити", - "hu_": "Венгрия", - "id_": "Индонезия", - "ie_": "Ирландия", - "il_": "Израиль", - "im_": "Остров Мэн", - "in_": "Индия", - "io_": "Британская территория Индийского океана", - "iq_": "Ирак", - "ir_": "Иран, Исламская Республика Персидский залив", - "is_": "Исландия", - "it_": "Италия", - "je_": "Джерси", - "jm_": "Ямайка", - "jo_": "Иордания", - "jp_": "Япония", - "ke_": "Кения", - "kg_": "Кыргызстан", - "kh_": "Камбоджа", - "ki_": "Кирибати", - "km_": "Коморские острова", - "kn_": "Сент-Китс и Невис", - "kp_": "Корея, Корейская Народно-Демократическая Республика", - "kr_": "Корея, Республика Южная Корея", - "kw_": "Кувейт", - "ky_": "Каймановы острова", - "kz_": "Казахстан", - "la_": "Лаос", - "lb_": "Ливан", - "lc_": "Санкт-Люсия", - "li_": "Лихтенштейн", - "lk_": "Шри-Ланка", - "lr_": "Либерия", - "ls_": "Лесото", - "lt_": "Литва", - "lu_": "Люксембург", - "lv_": "Латвия", - "ly_": "Ливийская арабская джамахирия", - "ma_": "Марокко", - "mc_": "Монако", - "md_": "Молдова", - "me_": "Черногория", - "mf_": "Сен-Мартен", - "mg_": "Мадагаскар", - "mh_": "Маршалловы острова", - "mk_": "Македония", - "ml_": "Мали", - "mm_": "Мьянма", - "mn_": "Монголия", - "mo_": "Макао", - "mp_": "Северные Марианские острова", - "mq_": "Мартиника", - "mr_": "Мавритания", - "ms_": "Монтсеррат", - "mt_": "Мальта", - "mu_": "Маврикий", - "mv_": "Мальдивы", - "mw_": "Малави", - "mx_": "Мексика", - "my_": "Малайзия", - "mz_": "Мозамбик", - "na_": "Намибия", - "nc_": "Новая Каледония", - "ne_": "Нигер", - "nf_": "Остров Норфолк", - "ng_": "Нигерия", - "ni_": "Никарагуа", - "nl_": "Нидерланды", - "no_": "Норвегия", - "np_": "Непал", - "nr_": "Науру", - "nu_": "Ниуэ", - "nz_": "Новая Зеландия", - "om_": "Оман", - "pa_": "Панама", - "pe_": "Перу", - "pf_": "Французская Полинезия", - "pg_": "Папуа - Новая Гвинея", - "ph_": "Филиппины", - "pk_": "Пакистан", - "pl_": "Польша", - "pm_": "Сен-Пьер и Микелон", - "pn_": "Питкэрн", - "pr_": "Пуэрто-Рико", - "ps_": "Палестинская территория, оккупированная", - "pt_": "Португалия", - "pw_": "Палау", - "py_": "Парагвай", - "qa_": "Катар", - "re_": "Воссоединение", - "ro_": "Румыния", - "rs_": "Сербия", - "ru_": "Россия", - "rw_": "Руанда", - "sa_": "Саудовская Аравия", - "sb_": "Соломоновы острова", - "sc_": "Сейшельские острова", - "sd_": "Судан", - "se_": "Швеция", - "sg_": "Сингапур", - "sh_": "Святой Елены, Вознесения и Тристан-да-Кунья", - "si_": "Словения", - "sj_": "Шпицберген и Ян Майен", - "sk_": "Словакия", - "sl_": "Сьерра-Леоне", - "sm_": "Сан-Марино", - "sn_": "Сенегал", - "so_": "Сомали", - "sr_": "Суринам", - "ss_": "южный Судан", - "st_": "Сан-Томе и Принсипи", - "sv_": "Эль Сальвадор", - "sy_": "Сирийская Арабская Республика", - "sz_": "Свазиленд", - "ta_": "Тристан-да-Кунья", - "tc_": "Острова Теркс и Кайкос", - "td_": "Чад", - "tg_": "Идти", - "th_": "Таиланд", - "tj_": "Таджикистан", - "tk_": "Токелау", - "tl_": "Тимор-Лешти", - "tm_": "Туркменистан", - "tn_": "Тунис", - "to_": "Тонга", - "tr_": "Турция", - "tt_": "Тринидад и Тобаго", - "tv_": "Тувалу", - "tw_": "Тайвань", - "tz_": "Танзания, Объединенная Республика Танзания", - "ua_": "Украина", - "ug_": "Уганда", - "us_": "Соединенные Штаты Америки", - "uy_": "Уругвай", - "uz_": "Узбекистан", - "va_": "Святой Престол (государство-город Ватикан)", - "vc_": "Святой Винсент и Гренадины", - "ve_": "Венесуэла", - "vg_": "Виргинские острова, Британские", - "vi_": "Виргинские острова, США", - "vn_": "Вьетнам", - "vu_": "Вануату", - "wf_": "Уоллис и Футуна", - "ws_": "Самоа", - "ye_": "Йемен", - "yt_": "Майотта", - "za_": "Южная Африка", - "zm_": "Замбия", - "zw_": "Зимбабве" -} diff --git a/lib/l10n/sv.arb b/lib/l10n/sv.arb deleted file mode 100644 index 674d2bec..00000000 --- a/lib/l10n/sv.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "sv", - "invalidPhoneNumber": "Ogiltigt telefonnummer", - "invalidCountry": "Ogiltigt land", - "invalidMobilePhoneNumber": "Ogiltigt mobilnummer", - "invalidFixedLinePhoneNumber": "Ogiltigt fast telefonnummer", - "requiredPhoneNumber": "Obligatoriskt telefonnummer", - "noResultMessage": "Inget resultat", - "ac_": "Ascension Island", - "ad_": "Andorra", - "ae_": "Förenade Arabemiraten", - "af_": "Afghanistan", - "ag_": "Antigua och Barbuda", - "ai_": "Anguilla", - "al_": "Albanien", - "am_": "Armenien", - "an_": "Nederländska Antillerna", - "ao_": "Angola", - "aq_": "Antarktis", - "ar_": "Argentina", - "as_": "Amerikanska Samoa", - "at_": "Österrike", - "au_": "Australien", - "aw_": "Aruba", - "ax_": "Åland", - "az_": "Azerbajdzjan", - "ba_": "Bosnien och Hercegovina", - "bb_": "Barbados", - "bd_": "Bangladesh", - "be_": "Belgien", - "bf_": "Burkina Faso", - "bg_": "Bulgarien", - "bh_": "Bahrain", - "bi_": "Burundi", - "bj_": "Benin", - "bl_": "S:t Barthélemy", - "bm_": "Bermuda", - "bn_": "Brunei", - "bo_": "Bolivia", - "bq_": "Bonaire", - "br_": "Brasilien", - "bs_": "Bahamas", - "bt_": "Bhutan", - "bw_": "Botswana", - "by_": "Vitryssland", - "bz_": "Belize", - "ca_": "Kanada", - "cc_": "Kokosöarna", - "cd_": "Kongo-Kinshasa", - "cf_": "Centralafrikanska republiken", - "cg_": "Kongo-Brazzaville", - "ch_": "Schweiz", - "ci_": "Côte d’Ivoire", - "ck_": "Cooköarna", - "cl_": "Chile", - "cm_": "Kamerun", - "cn_": "Kina", - "co_": "Colombia", - "cr_": "Costa Rica", - "cu_": "Kuba", - "cv_": "Kap Verde", - "cx_": "Julön", - "cy_": "Cypern", - "cz_": "Tjeckien", - "de_": "Tyskland", - "dj_": "Djibouti", - "dk_": "Danmark", - "dm_": "Dominica", - "do_": "Dominikanska republiken", - "dz_": "Algeriet", - "ec_": "Ecuador", - "ee_": "Estland", - "eg_": "Egypten", - "er_": "Eritrea", - "es_": "Spanien", - "et_": "Etiopien", - "fi_": "Finland", - "fj_": "Fiji", - "fk_": "Falklandsöarna", - "fm_": "Mikronesien", - "fo_": "Färöarna", - "fr_": "Frankrike", - "ga_": "Gabon", - "gb_": "Storbritannien", - "gd_": "Grenada", - "ge_": "Georgien", - "gf_": "Franska Guyana", - "gg_": "Guernsey", - "gh_": "Ghana", - "gi_": "Gibraltar", - "gl_": "Grönland", - "gm_": "Gambia", - "gn_": "Guinea", - "gp_": "Guadeloupe", - "gq_": "Ekvatorialguinea", - "gr_": "Grekland", - "gs_": "Sydgeorgien och Sydsandwichöarna", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Guinea-Bissau", - "gy_": "Guyana", - "hk_": "Hongkong SAR", - "hn_": "Honduras", - "hr_": "Kroatien", - "ht_": "Haiti", - "hu_": "Ungern", - "id_": "Indonesien", - "ie_": "Irland", - "il_": "Israel", - "im_": "Isle of Man", - "in_": "Indien", - "io_": "Brittiska territoriet i Indiska oceanen", - "iq_": "Irak", - "ir_": "Iran", - "is_": "Island", - "it_": "Italien", - "je_": "Jersey", - "jm_": "Jamaica", - "jo_": "Jordanien", - "jp_": "Japan", - "ke_": "Kenya", - "kg_": "Kirgizistan", - "kh_": "Kambodja", - "ki_": "Kiribati", - "km_": "Komorerna", - "kn_": "S:t Kitts och Nevis", - "kp_": "Nordkorea", - "kr_": "Sydkorea", - "kw_": "Kuwait", - "ky_": "Caymanöarna", - "kz_": "Kazakstan", - "la_": "Laos", - "lb_": "Libanon", - "lc_": "S:t Lucia", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Liberia", - "ls_": "Lesotho", - "lt_": "Litauen", - "lu_": "Luxemburg", - "lv_": "Lettland", - "ly_": "Libyen", - "ma_": "Marocko", - "mc_": "Monaco", - "md_": "Moldavien", - "me_": "Montenegro", - "mf_": "Saint-Martin", - "mg_": "Madagaskar", - "mh_": "Marshallöarna", - "mk_": "Nordmakedonien", - "ml_": "Mali", - "mm_": "Myanmar (Burma)", - "mn_": "Mongoliet", - "mo_": "Macao SAR", - "mp_": "Nordmarianerna", - "mq_": "Martinique", - "mr_": "Mauretanien", - "ms_": "Montserrat", - "mt_": "Malta", - "mu_": "Mauritius", - "mv_": "Maldiverna", - "mw_": "Malawi", - "mx_": "Mexiko", - "my_": "Malaysia", - "mz_": "Moçambique", - "na_": "Namibia", - "nc_": "Nya Kaledonien", - "ne_": "Niger", - "nf_": "Norfolkön", - "ng_": "Nigeria", - "ni_": "Nicaragua", - "nl_": "Nederländerna", - "no_": "Norge", - "np_": "Nepal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "Nya Zeeland", - "om_": "Oman", - "pa_": "Panama", - "pe_": "Peru", - "pf_": "Franska Polynesien", - "pg_": "Papua Nya Guinea", - "ph_": "Filippinerna", - "pk_": "Pakistan", - "pl_": "Polen", - "pm_": "S:t Pierre och Miquelon", - "pn_": "Pitcairnöarna", - "pr_": "Puerto Rico", - "ps_": "Palestinska territorierna", - "pt_": "Portugal", - "pw_": "Palau", - "py_": "Paraguay", - "qa_": "Qatar", - "re_": "Réunion", - "ro_": "Rumänien", - "rs_": "Serbien", - "ru_": "Ryssland", - "rw_": "Rwanda", - "sa_": "Saudiarabien", - "sb_": "Salomonöarna", - "sc_": "Seychellerna", - "sd_": "Sudan", - "se_": "Sverige", - "sg_": "Singapore", - "sh_": "S:t Helena", - "si_": "Slovenien", - "sj_": "Svalbard och Jan Mayen", - "sk_": "Slovakien", - "sl_": "Sierra Leone", - "sm_": "San Marino", - "sn_": "Senegal", - "so_": "Somalia", - "sr_": "Surinam", - "ss_": "Sydsudan", - "st_": "São Tomé och Príncipe", - "sv_": "El Salvador", - "sy_": "Syrien", - "sz_": "Swaziland", - "ta_": "Tristan da Cunha", - "tc_": "Turks- och Caicosöarna", - "td_": "Tchad", - "tg_": "Togo", - "th_": "Thailand", - "tj_": "Tadzjikistan", - "tk_": "Tokelauöarna", - "tl_": "Östtimor", - "tm_": "Turkmenistan", - "tn_": "Tunisien", - "to_": "Tonga", - "tr_": "Turkiet", - "tt_": "Trinidad och Tobago", - "tv_": "Tuvalu", - "tw_": "Taiwan", - "tz_": "Tanzania", - "ua_": "Ukraina", - "ug_": "Uganda", - "us_": "USA", - "uy_": "Uruguay", - "uz_": "Uzbekistan", - "va_": "Vatikanstaten", - "vc_": "S:t Vincent och Grenadinerna", - "ve_": "Venezuela", - "vg_": "Brittiska Jungfruöarna", - "vi_": "Amerikanska Jungfruöarna", - "vn_": "Vietnam", - "vu_": "Vanuatu", - "wf_": "Wallis- och Futunaöarna", - "ws_": "Samoa", - "ye_": "Jemen", - "yt_": "Mayotte", - "za_": "Sydafrika", - "zm_": "Zambia", - "zw_": "Zimbabwe" -} \ No newline at end of file diff --git a/lib/l10n/tr.arb b/lib/l10n/tr.arb deleted file mode 100644 index dd24adcd..00000000 --- a/lib/l10n/tr.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "tr", - "invalidPhoneNumber": "Geçersiz telefon numarası", - "invalidCountry": "Geçersiz ülke", - "invalidMobilePhoneNumber": "Geçersiz cep telefonu numarası", - "invalidFixedLinePhoneNumber": "Geçersiz sabit hat telefon numarası", - "requiredPhoneNumber": "Telefon numarası gerekli", - "noResultMessage": "Sonuç yok", - "ac_": "Yükselme adası", - "ad_": "Andora", - "ae_": "Birleşik Arap Emirlikleri", - "af_": "Afganistan", - "ag_": "Antigua ve Barbuda", - "ai_": "Anguilla", - "al_": "Arnavutluk", - "am_": "Ermenistan", - "an_": "Hollanda Antilleri", - "ao_": "Angola", - "aq_": "Antarktika", - "ar_": "Arjantin", - "as_": "Amerikan Samoası", - "at_": "Avusturya", - "au_": "Avustralya", - "aw_": "Aruba", - "ax_": "Aland Adaları", - "az_": "Azerbaycan", - "ba_": "Bosna Hersek", - "bb_": "Barbados", - "bd_": "Bangladeş", - "be_": "Belçika", - "bf_": "Burkina Faso", - "bg_": "Bulgaristan", - "bh_": "Bahreyn", - "bi_": "Burundi", - "bj_": "Benin", - "bl_": "Saint Barthelemy", - "bm_": "Bermuda", - "bn_": "Brunei Darussalam", - "bo_": "Bolivya", - "bq_": "Bonaire", - "br_": "Brezilya", - "bs_": "Bahamalar", - "bt_": "Butan", - "bw_": "Botsvana", - "by_": "Belarus", - "bz_": "Belize", - "ca_": "Kanada", - "cc_": "Cocos (Keeling) Adaları", - "cd_": "Kongo Demokratik Cumhuriyeti", - "cf_": "Orta Afrika Cumhuriyeti", - "cg_": "Kongo", - "ch_": "İsviçre", - "ci_": "Fildişi Sahili", - "ck_": "Cook Adaları", - "cl_": "Şili", - "cm_": "Kamerun", - "cn_": "Çin", - "co_": "Kolombiya", - "cr_": "Kosta Rika", - "cu_": "Küba", - "cv_": "Cabo Verde", - "cx_": "Christmas Adası", - "cy_": "Kıbrıs", - "cz_": "Çek Cumhuriyeti", - "de_": "Almanya", - "dj_": "Cibuti", - "dk_": "Danimarka", - "dm_": "Dominika", - "do_": "Dominik Cumhuriyeti", - "dz_": "Cezayir", - "ec_": "Ekvador", - "ee_": "Estonya", - "eg_": "Mısır", - "er_": "Eritre", - "es_": "İspanya", - "et_": "Etiyopya", - "fi_": "Finlandiya", - "fj_": "Fiji", - "fk_": "Falkland (Malvina) Adaları ", - "fm_": "Mikronezya, Mikronezya Federal Devletleri", - "fo_": "Faroe Adaları", - "fr_": "Fransa", - "ga_": "Gabon", - "gb_": "Birleşik Krallık", - "gd_": "Grenada", - "ge_": "Gürcistan", - "gf_": "Fransız Guyanası", - "gg_": "Guernsey", - "gh_": "Gana", - "gi_": "Cebelitarık", - "gl_": "Grönland", - "gm_": "Gambiya", - "gn_": "Gine", - "gp_": "Guadeloupe", - "gq_": "Ekvator Ginesi", - "gr_": "Yunanistan", - "gs_": "Güney Georgia ve Güney Sandwich Adaları", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Gine-Bissau", - "gy_": "Guyana", - "hk_": "Hong Kong", - "hn_": "Honduras", - "hr_": "Hırvatistan", - "ht_": "Haiti", - "hu_": "Macaristan", - "id_": "Endonezya", - "ie_": "İrlanda", - "il_": "İsrail", - "im_": "Man Adası", - "in_": "Hindistan", - "io_": "İngiliz Hint Okyanusu Bölgesi", - "iq_": "Irak", - "ir_": "İran", - "is_": "İzlanda", - "it_": "İtalya", - "je_": "Jersey", - "jm_": "Jamaika", - "jo_": "Ürdün", - "jp_": "Japonya", - "ke_": "Kenya", - "kg_": "Kırgızistan", - "kh_": "Kamboçya", - "ki_": "Kiribati", - "km_": "Komorlar", - "kn_": "Saint Kitts ve Nevis", - "kp_": "Kuzey Kore", - "kr_": "Güney Kore", - "kw_": "Kuveyt", - "ky_": "Cayman Adaları", - "kz_": "Kazakistan", - "la_": "Laos", - "lb_": "Lübnan", - "lc_": "Saint Lucia", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Liberya", - "ls_": "Lesoto", - "lt_": "Litvanya", - "lu_": "Lüksemburg", - "lv_": "Letonya", - "ly_": "Libya", - "ma_": "Fas", - "mc_": "Monako", - "md_": "Moldova", - "me_": "Karadağ", - "mf_": "Saint Martin", - "mg_": "Madagaskar", - "mh_": "Marşal Adaları", - "mk_": "Makedonya", - "ml_": "Mali", - "mm_": "Myanmar", - "mn_": "Moğolistan", - "mo_": "Macao", - "mp_": "Kuzey Mariana Adaları", - "mq_": "Martinique", - "mr_": "Mauritania", - "ms_": "Montserrat", - "mt_": "Malta", - "mu_": "Mauritius", - "mv_": "Maldivler", - "mw_": "Malawi", - "mx_": "Meksika", - "my_": "Malezya", - "mz_": "Mozambik", - "na_": "Namibya", - "nc_": "Yeni Kaledonya", - "ne_": "Nijer", - "nf_": "Norfolk Adası", - "ng_": "Nijerya", - "ni_": "Nikaragua", - "nl_": "Hollanda", - "no_": "Norveç", - "np_": "Nepal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "Yeni Zelanda", - "om_": "Umman", - "pa_": "Panama", - "pe_": "Peru", - "pf_": "Fransız Polinezyası", - "pg_": "Papua Yeni Gine", - "ph_": "Filipinler", - "pk_": "Pakistan", - "pl_": "Polonya", - "pm_": "Saint Pierre ve Miquelon", - "pn_": "Pitcairn Adaları", - "pr_": "Porto Riko", - "ps_": "İşgal Altındaki Filistin Toprakları", - "pt_": "Portekiz", - "pw_": "Palau", - "py_": "Paraguay", - "qa_": "Katar", - "re_": "Reunion", - "ro_": "Romanya", - "rs_": "Sırbistan", - "ru_": "Rusya", - "rw_": "Ruanda", - "sa_": "Suudi Arabistan", - "sb_": "Solomon Adaları", - "sc_": "Seyşeller", - "sd_": "Sudan", - "se_": "İsveç", - "sg_": "Singapur", - "sh_": "Saint Helena, Ascension ve Tristan da Cunha", - "si_": "Slovenya", - "sj_": "Svalbard ve Jan Mayen", - "sk_": "Slovakya", - "sl_": "Sierra Leone", - "sm_": "San Marino", - "sn_": "Senegal", - "so_": "Somali", - "sr_": "Surinam", - "ss_": "Güney Sudan", - "st_": "Sao Tome ve Principe", - "sv_": "El Salvador", - "sy_": "Suriye", - "sz_": "Esvati̇ni̇", - "ta_": "Tristan da Cunha", - "tc_": "Turks ve Caicos Adaları ", - "td_": "Çad", - "tg_": "Togo", - "th_": "Tayland", - "tj_": "Tacikistan", - "tk_": "Tokelau", - "tl_": "Doğu Timor", - "tm_": "Türkmenistan", - "tn_": "Tunus", - "to_": "Tonga", - "tr_": "Türkiye", - "tt_": "Trinidad ve Tobago", - "tv_": "Tuvalu", - "tw_": "Tayvan", - "tz_": "Tanzanya", - "ua_": "Ukrayna", - "ug_": "Uganda", - "us_": "Amerika Birleşik Devletleri", - "uy_": "Uruguay", - "uz_": "Özbekistan", - "va_": "Vatikan", - "vc_": "Saint Vincent ve Grenadinler", - "ve_": "Venezuela", - "vg_": "Britanya Virjin Adaları", - "vi_": "ABD Virjin Adaları", - "vn_": "Vietnam", - "vu_": "Vanuatu", - "wf_": "Wallis ve Futuna", - "ws_": "Samoa", - "ye_": "Yemen", - "yt_": "Mayotte", - "za_": "Güney Afrika", - "zm_": "Zambia", - "zw_": "Zimbabve" -} \ No newline at end of file diff --git a/lib/l10n/uk.arb b/lib/l10n/uk.arb deleted file mode 100644 index 6b8502f5..00000000 --- a/lib/l10n/uk.arb +++ /dev/null @@ -1,252 +0,0 @@ -{ - "@@locale": "uk", - "invalidPhoneNumber": "Невірний номер телефону", - "invalidCountry": "Недійсна країна", - "invalidMobilePhoneNumber": "Невірний номер мобільного телефону", - "invalidFixedLinePhoneNumber": "Невірний номер стаціонарного телефону", - "requiredPhoneNumber": "Необхідний номер телефону", - "noResultMessage": "Немає результату", - "ac_": "Острів Вознесіння", - "ad_": "Андорра", - "ae_": "Об'єднані Арабські Емірати", - "af_": "Афганістан", - "ag_": "Антигуа і Барбуда", - "ai_": "Ангілья", - "al_": "Албанія", - "am_": "Вірменія", - "an_": "Нідерландські Антильські острови", - "ao_": "Ангола", - "aq_": "Антарктида", - "ar_": "Аргентина", - "as_": "Американське Самоа", - "at_": "Австрія", - "au_": "Австралія", - "aw_": "Аруба", - "ax_": "Аландські острови", - "az_": "Азербайджан", - "ba_": "Боснія і Герцеговина", - "bb_": "Барбадос", - "bd_": "Бангладеш", - "be_": "Бельгія", - "bf_": "Буркіна-Фасо", - "bg_": "Болгарія", - "bh_": "Бахрейн", - "bi_": "Бурунді", - "bj_": "Бенін", - "bl_": "Сен-Бартелемі", - "bm_": "Бермудські острови", - "bn_": "Бруней-Даруссалам", - "bo_": "Болівія, Багатонаціональна Держава", - "bq_": "Бонайре", - "br_": "Бразилія", - "bs_": "Багамські острови", - "bt_": "Бутан", - "bw_": "Ботсвана", - "by_": "Білорусь", - "bz_": "Беліз", - "ca_": "Канада", - "cc_": "Кокосові (Кілінгові) острови", - "cd_": "Конго, Демократична Республіка Конго", - "cf_": "Центральноафриканська Республіка", - "cg_": "Конго", - "ch_": "Швейцарія", - "ci_": "Кот-д'івуар", - "ck_": "Острови Кука", - "cl_": "Чилі", - "cm_": "Камерун", - "cn_": "Китай", - "co_": "Колумбія", - "cr_": "Коста-Ріка", - "cu_": "Куба", - "cv_": "Кабо-Верде", - "cx_": "Острів Різдва", - "cy_": "Кіпр", - "cz_": "Чеська Республіка", - "de_": "Німеччина", - "dj_": "Джибуті", - "dk_": "Данія", - "dm_": "Домініка", - "do_": "Домініканська Республіка", - "dz_": "Алжир", - "ec_": "Еквадор", - "ee_": "Естонія", - "eg_": "Єгипет", - "er_": "Еритрея", - "es_": "Іспанія", - "et_": "Ефіопія", - "fi_": "Фінляндія", - "fj_": "Фіджі", - "fk_": "Фолклендські (Мальвінські) острови", - "fm_": "Мікронезія, Федеративні Штати Мікронезії", - "fo_": "Фарерські острови", - "fr_": "Франція", - "ga_": "Габон", - "gb_": "Великобританія", - "gd_": "Гренада", - "ge_": "Грузія", - "gf_": "Французька Гвіана", - "gg_": "Гернсі", - "gh_": "Гана", - "gi_": "Гібралтар", - "gl_": "Гренландія", - "gm_": "Гамбія", - "gn_": "Гвінея", - "gp_": "Гваделупа", - "gq_": "Екваторіальна Гвінея", - "gr_": "Греція", - "gs_": "Південна Георгія і Південні Сандвічеві острови", - "gt_": "Гватемала", - "gu_": "Гуам", - "gw_": "Гвінея-Бісау", - "gy_": "Гайана", - "hk_": "Гонконг", - "hn_": "Гондурас", - "hr_": "Хорватія", - "ht_": "Гаїті", - "hu_": "Угорщина", - "id_": "Індонезія", - "ie_": "Ірландія", - "il_": "Ізраїль", - "im_": "Острів Мен", - "in_": "Індія", - "io_": "Британська територія в Індійському океані", - "iq_": "Ірак", - "ir_": "Іран, Ісламська Республіка", - "is_": "Ісландія", - "it_": "Італія", - "je_": "Джерсі", - "jm_": "Ямайка", - "jo_": "Йорданія", - "jp_": "Японія", - "ke_": "Кенія", - "kg_": "Киргизстан", - "kh_": "Камбоджа", - "ki_": "Кірібаті", - "km_": "Коморські острови", - "kn_": "Сент-Кітс і Невіс", - "kp_": "Корея, Корейська Народно-Демократична Республіка", - "kr_": "Корея, Республіка Південна Корея", - "kw_": "Кувейт", - "ky_": "Кайманові острови", - "kz_": "Казахстан", - "la_": "Лаос", - "lb_": "Ліван", - "lc_": "Сент-Люсія", - "li_": "Ліхтенштейн", - "lk_": "Шрі-Ланка", - "lr_": "Ліберія", - "ls_": "Лесото", - "lt_": "Литва", - "lu_": "Люксембург", - "lv_": "Латвія", - "ly_": "Лівійська Арабська Джамахірія", - "ma_": "Марокко", - "mc_": "Монако", - "md_": "Молдова", - "me_": "Чорногорія", - "mf_": "Сен-Мартен", - "mg_": "Мадагаскар", - "mh_": "Маршаллові Острови", - "mk_": "Македонія", - "ml_": "Малі", - "mm_": "М'янма", - "mn_": "Монголія", - "mo_": "Макао", - "mp_": "Північні Маріанські острови", - "mq_": "Мартініка", - "mr_": "Мавританія", - "ms_": "Монтсеррат", - "mt_": "Мальта", - "mu_": "Маврикій", - "mv_": "Мальдіви", - "mw_": "Малаві", - "mx_": "Мексика", - "my_": "Малайзія", - "mz_": "Мозамбік", - "na_": "Намібія", - "nc_": "Нова Каледонія", - "ne_": "Нігер", - "nf_": "Острів Норфолк", - "ng_": "Нігерія", - "ni_": "Нікарагуа", - "nl_": "Нідерланди", - "no_": "Норвегія", - "np_": "Непал", - "nr_": "Науру", - "nu_": "Ніуе", - "nz_": "Нова Зеландія", - "om_": "Оман", - "pa_": "Панама", - "pe_": "Перу", - "pf_": "Французька Полінезія", - "pg_": "Папуа-Нова Гвінея", - "ph_": "Філіппіни", - "pk_": "Пакистан", - "pl_": "Польща", - "pm_": "Сен-П'єр і Мікелон", - "pn_": "Піткерн", - "pr_": "Пуерто-Ріко", - "ps_": "Палестинська територія, окупована", - "pt_": "Португалія", - "pw_": "Палау", - "py_": "Парагвай", - "qa_": "Катар", - "re_": "Реюньйон", - "ro_": "Румунія", - "rs_": "Сербія", - "ru_": "Росія", - "rw_": "Руанда", - "sa_": "Саудівська Аравія", - "sb_": "Соломонові острови", - "sc_": "Сейшельські острови", - "sd_": "Судан", - "se_": "Швеція", - "sg_": "Сінгапур", - "si_": "Словенія", - "sk_": "Словаччина", - "sl_": "Сьєрра-Леоне", - "sm_": "Сан-Марино", - "sn_": "Сенегал", - "so_": "Сомалі", - "sr_": "Суринам", - "ss_": "Південний Судан", - "st_": "Сан-Томе і Принсіпі", - "sv_": "Сальвадор", - "sy_": "Сирійська Арабська Республіка", - "sz_": "Свазіленд", - "ta_": "Трістан-да-Кунья", - "tc_": "Турки і Кайкос", - "td_": "Чад", - "tg_": "Того", - "th_": "Таїланд", - "tj_": "Таджикистан", - "tk_": "Токелау", - "tl_": "Тимор-Лешті", - "tm_": "Туркменістан", - "tn_": "Туніс", - "to_": "Тонга", - "tr_": "Туреччина", - "tt_": "Тринідад і Тобаго", - "tv_": "Тувалу", - "tw_": "Тайвань", - "tz_": "Танзанія, Об'єднана Республіка Танзанія", - "ua_": "Україна", - "ug_": "Уганда", - "us_": "Сполучені Штати Америки", - "uy_": "Уругвай", - "uz_": "Узбекистан", - "va_": "Святий Престол (місто-держава Ватикан)", - "vc_": "Сент-Вінсент і Гренадіни", - "ve_": "Венесуела", - "vg_": "Британські Віргінські острови", - "vi_": "Віргінські острови, США", - "vn_": "В'єтнам", - "vu_": "Вануату", - "wf_": "Уолліс і Футуна", - "ws_": "Самоа", - "ye_": "Ємен", - "yt_": "Майотта", - "za_": "Південна Африка", - "zm_": "Замбія", - "zw_": "Зімбабве" -} \ No newline at end of file diff --git a/lib/l10n/uz.arb b/lib/l10n/uz.arb deleted file mode 100644 index 3f3cb817..00000000 --- a/lib/l10n/uz.arb +++ /dev/null @@ -1,252 +0,0 @@ -{ - "@@locale": "uz", - "invalidPhoneNumber": "Telefon raqami noto‘g‘ri", - "invalidCountry": "Yaroqsiz mamlakat", - "invalidMobilePhoneNumber": "Telfon raqami noto‘g‘ri", - "invalidFixedLinePhoneNumber": "Ruxsat etilgan telefon raqami yaroqsiz", - "requiredPhoneNumber": "Telfon raqami majburiy", - "noResultMessage": "Ma'lumot topilmadi", - "ac_": "Ascension Island", - "ad_": "Andorra", - "ae_": "BAA", - "af_": "Afg'oniston", - "ag_": "Antigua va Barbuda", - "ai_": "Anguilla", - "al_": "Albaniya", - "am_": "Armeniya", - "an_": "Netherlands Antilles", - "ao_": "Angola", - "aq_": "Antarctica", - "ar_": "Argentina", - "as_": "American Samoa", - "at_": "Austria", - "au_": "Australia", - "aw_": "Aruba", - "ax_": "Aland Islands", - "az_": "Ozarbayjon", - "ba_": "Bosnia and Herzegovina", - "bb_": "Barbados", - "bd_": "Bangladesh", - "be_": "Belgiya", - "bf_": "Burkina Faso", - "bg_": "Bolgariya", - "bh_": "Bahrain", - "bi_": "Burundi", - "bj_": "Benin", - "bl_": "Saint Barthelemy", - "bm_": "Bermuda", - "bn_": "Brunei Darussalam", - "bo_": "Bolivia, Plurinational State of", - "bq_": "Bonaire", - "br_": "Braziliya", - "bs_": "Bahamas", - "bt_": "Bhutan", - "bw_": "Botswana", - "by_": "Belarusiya", - "bz_": "Belize", - "ca_": "Kanada", - "cc_": "Cocos (Keeling) Islands", - "cd_": "Congo, The Democratic Republic of the Congo", - "cf_": "Central African Republic", - "cg_": "Congo", - "ch_": "Shveysariya", - "ci_": "Kot-dʼIvuar Respublikasi", - "ck_": "Kuk orollari", - "cl_": "Chili", - "cm_": "Kamerun", - "cn_": "Xitoy", - "co_": "Kolumbiya", - "cr_": "Kosta-Rika", - "cu_": "Kuba", - "cv_": "Cape Verde", - "cx_": "Christmas Island", - "cy_": "Cyprus", - "cz_": "Czech Republic", - "de_": "Germaniya", - "dj_": "Jibuti", - "dk_": "Denmark", - "dm_": "Dominica", - "do_": "Dominika Respublikasi", - "dz_": "Algeria", - "ec_": "Ekvador", - "ee_": "Estoniya", - "eg_": "Misr", - "er_": "Eritreya", - "es_": "Ispaniya", - "et_": "Efiopiya", - "fi_": "Finlandiya", - "fj_": "Fiji", - "fk_": "Folklend orollari", - "fm_": "Micronesia, Federated States of Micronesia", - "fo_": "Faroe Islands", - "fr_": "Fransiya", - "ga_": "Gabon", - "gb_": "Buyuk Britaniya", - "gd_": "Grenada", - "ge_": "Gurjiston", - "gf_": "Fransiya Gvianasi", - "gg_": "Guernsey", - "gh_": "Ghana", - "gi_": "Gibraltar", - "gl_": "Greenland", - "gm_": "Gambia", - "gn_": "Guinea", - "gp_": "Guadeloupe", - "gq_": "Equatorial Guinea", - "gr_": "Greece", - "gs_": "South Georgia and the South Sandwich Islands", - "gt_": "Guatemala", - "gu_": "Guam", - "gw_": "Guinea-Bissau", - "gy_": "Guyana", - "hk_": "Hong Kong", - "hn_": "Honduras", - "hr_": "Croatia", - "ht_": "Gaiti", - "hu_": "Vengriya", - "id_": "Indoneziya", - "ie_": "Irlandiya oroli", - "il_": "Isroil", - "im_": "Isle of Man", - "in_": "Hindiston", - "io_": "British Indian Ocean Territory", - "iq_": "Iroq", - "ir_": "Iran, Islamic Republic of", - "is_": "Islandiya", - "it_": "Italya", - "je_": "Jersey", - "jm_": "Jamaica", - "jo_": "Jordan", - "jp_": "Yaponiya", - "ke_": "Kenya", - "kg_": "Qirgʻiziston", - "kh_": "Kambodja", - "ki_": "Kiribati", - "km_": "Comoros", - "kn_": "Saint Kitts and Nevis", - "kp_": "Shimoliy Korya", - "kr_": "Janubiy Koreya", - "kw_": "Quvayt", - "ky_": "Cayman Islands", - "kz_": "Qozog'iston", - "la_": "Laos", - "lb_": "Livan", - "lc_": "Saint Lucia", - "li_": "Liechtenstein", - "lk_": "Sri Lanka", - "lr_": "Liberia", - "ls_": "Lesotho", - "lt_": "Litva", - "lu_": "Luksemburg", - "lv_": "Latvia", - "ly_": "Libya", - "ma_": "Morocco", - "mc_": "Monaco", - "md_": "Moldova", - "me_": "Montenegro", - "mf_": "Saint Martin", - "mg_": "Madagascar", - "mh_": "Marshall Islands", - "mk_": "Macedonia", - "ml_": "Mali", - "mm_": "Myanmar", - "mn_": "Mongolia", - "mo_": "Macao", - "mp_": "Northern Mariana Islands", - "mq_": "Martinique", - "mr_": "Mauritania", - "ms_": "Montserrat", - "mt_": "Malta", - "mu_": "Mauritius", - "mv_": "Maldiv", - "mw_": "Malavi", - "mx_": "Meksika", - "my_": "Malaziya", - "mz_": "Mozambik", - "na_": "Namibia", - "nc_": "New Caledonia", - "ne_": "Nigerya", - "nf_": "Norfolk Island", - "ng_": "Nigeria", - "ni_": "Nicaragua", - "nl_": "Netherlands", - "no_": "Norway", - "np_": "Nepal", - "nr_": "Nauru", - "nu_": "Niue", - "nz_": "Yangi zelandiya", - "om_": "Oman", - "pa_": "Panama", - "pe_": "Peru", - "pf_": "French Polynesia", - "pg_": "Papua New Guinea", - "ph_": "Philippines", - "pk_": "Pokiston", - "pl_": "Polsha", - "pm_": "Saint Pierre and Miquelon", - "pn_": "Pitcairn", - "pr_": "Puerto Rico", - "ps_": "Palestinian Territory, Occupied", - "pt_": "Portugaliya", - "pw_": "Palau", - "py_": "Paragvay", - "qa_": "Qatar", - "re_": "Reyunion", - "ro_": "Ruminiya", - "rs_": "Serbia", - "ru_": "Rossiya", - "rw_": "Rwanda", - "sa_": "Saudiya Arabistoni", - "sb_": "Solomon Islands", - "sc_": "Seyshel orollari", - "sd_": "Sudan", - "se_": "Shvetsiya", - "sg_": "Singapur", - "si_": "Slovenia", - "sk_": "Slovakia", - "sl_": "Sierra Leone", - "sm_": "San Marino", - "sn_": "Senegal", - "so_": "Somalia", - "sr_": "Suriname", - "ss_": "South Sudan", - "st_": "Sao Tome and Principe", - "sv_": "El Salvador", - "sy_": "Suriya", - "sz_": "Esvatini Qirolligi", - "ta_": "Tristan da Cunha", - "tc_": "Turks and Caicos Islands", - "td_": "Chad", - "tg_": "Togo", - "th_": "Tailand", - "tj_": "Tojikistan", - "tk_": "Tokelau", - "tl_": "Timor-Leste", - "tm_": "Turkmaniston", - "tn_": "Tunisia", - "to_": "Tonga", - "tr_": "Turkiya", - "tt_": "Trinidad and Tobago", - "tv_": "Tuvalu", - "tw_": "Tayvan", - "tz_": "Tanzania, United Republic of Tanzania", - "ua_": "Ukraina", - "ug_": "Uganda", - "us_": "AQSH", - "uy_": "Urugvay", - "uz_": "O'zbekiston", - "va_": "Holy See (Vatican City State)", - "vc_": "Saint Vincent and the Grenadines", - "ve_": "Venesuela", - "vg_": "Virgin Islands, British", - "vi_": "Virgin Islands, U.S.", - "vn_": "Vetnam", - "vu_": "Vanuatu", - "wf_": "Uollis va Futuna", - "ws_": "Samoa", - "ye_": "Yaman", - "yt_": "Mayotte", - "za_": "JAR", - "zm_": "Zambia", - "zw_": "Zimbabwe" -} \ No newline at end of file diff --git a/lib/l10n/zh.arb b/lib/l10n/zh.arb deleted file mode 100644 index 5623433f..00000000 --- a/lib/l10n/zh.arb +++ /dev/null @@ -1,254 +0,0 @@ -{ - "@@locale": "zh", - "invalidPhoneNumber": "无效的电话号码", - "invalidCountry": "无效国家", - "invalidMobilePhoneNumber": "无效的手机号码", - "invalidFixedLinePhoneNumber": "无效的固定电话号码", - "requiredPhoneNumber": "需要电话号码", - "noResultMessage": "没有结果", - "ac_": "阿森松岛", - "ad_": "安道尔", - "ae_": "阿拉伯联合酋长国", - "af_": "阿富汗", - "ag_": "安提瓜和巴布达", - "ai_": "安圭拉岛", - "al_": "阿尔巴尼亚", - "am_": "亚美尼亚", - "an_": "荷属安的列斯", - "ao_": "安哥拉", - "aq_": "南极洲", - "ar_": "阿根廷", - "as_": "美属萨摩亚", - "at_": "奥地利", - "au_": "澳大利亚", - "aw_": "阿鲁巴岛", - "ax_": "奥兰群岛", - "az_": "阿塞拜疆", - "ba_": "波斯尼亚和黑塞哥维那", - "bb_": "巴巴多斯", - "bd_": "孟加拉国", - "be_": "比利时", - "bf_": "布基纳法索", - "bg_": "保加利亚", - "bh_": "巴林", - "bi_": "布隆迪", - "bj_": "贝宁", - "bl_": "圣巴托洛缪岛", - "bm_": "百慕大", - "bn_": "文莱达鲁萨兰国", - "bo_": "玻利维亚多民族国", - "bq_": "博内尔岛", - "br_": "巴西", - "bs_": "巴哈马", - "bt_": "不丹", - "bw_": "博茨瓦纳", - "by_": "白俄罗斯", - "bz_": "伯利兹", - "ca_": "加拿大", - "cc_": "科科斯(基林)群岛", - "cd_": "刚果民主共和国", - "cf_": "中非共和国", - "cg_": "刚果", - "ch_": "瑞士", - "ci_": "科特迪瓦", - "ck_": "库克群岛", - "cl_": "智利", - "cm_": "喀麦隆", - "cn_": "中国", - "co_": "哥伦比亚", - "cr_": "哥斯达黎加", - "cu_": "古巴", - "cv_": "佛得角", - "cx_": "圣诞岛", - "cy_": "塞浦路斯", - "cz_": "捷克共和国", - "de_": "德国", - "dj_": "吉布地", - "dk_": "丹麦", - "dm_": "多米尼加", - "do_": "多明尼加共和国", - "dz_": "阿尔及利亚", - "ec_": "厄瓜多尔", - "ee_": "爱沙尼亚", - "eg_": "埃及", - "er_": "厄立特里亚", - "es_": "西班牙", - "et_": "埃塞俄比亚", - "fi_": "芬兰", - "fj_": "斐济", - "fk_": "福克兰群岛(马尔维纳斯)", - "fm_": "密克罗尼西亚,密克罗尼西亚联邦", - "fo_": "法罗群岛", - "fr_": "法国", - "ga_": "加蓬", - "gb_": "英国", - "gd_": "格林纳达", - "ge_": "乔治亚州", - "gf_": "法属圭亚那", - "gg_": "根西岛", - "gh_": "加纳", - "gi_": "直布罗陀", - "gl_": "格陵兰", - "gm_": "冈比亚", - "gn_": "几内亚", - "gp_": "瓜德罗普岛", - "gq_": "赤道几内亚", - "gr_": "希腊", - "gs_": "南乔治亚岛和南桑威奇群岛", - "gt_": "危地马拉", - "gu_": "关岛", - "gw_": "几内亚比绍", - "gy_": "圭亚那", - "hk_": "香港", - "hn_": "洪都拉斯", - "hr_": "克罗地亚", - "ht_": "海地", - "hu_": "匈牙利", - "id_": "印度尼西亚", - "ie_": "爱尔兰", - "il_": "以色列", - "im_": "马恩岛", - "in_": "印度", - "io_": "英属印度洋领地", - "iq_": "伊拉克", - "ir_": "伊朗,波斯湾伊斯兰共和国", - "is_": "冰岛", - "it_": "意大利", - "je_": "球衣", - "jm_": "的牙买加", - "jo_": "约旦", - "jp_": "日本", - "ke_": "肯尼亚", - "kg_": "吉尔吉斯斯坦", - "kh_": "柬埔寨", - "ki_": "基里巴斯", - "km_": "科摩罗", - "kn_": "圣基茨和尼维斯", - "kp_": "韩国,朝鲜民主主义人民共和国", - "kr_": "大韩民国", - "kw_": "科威特", - "ky_": "开曼群岛", - "kz_": "哈萨克斯坦", - "la_": "老挝", - "lb_": "黎巴嫩的", - "lc_": "圣卢西亚", - "li_": "列支敦士登", - "lk_": "斯里兰卡", - "lr_": "利比里亚", - "ls_": "莱索托", - "lt_": "立陶宛", - "lu_": "卢森堡", - "lv_": "拉脱维亚", - "ly_": "阿拉伯利比亚民众国", - "ma_": "摩洛哥", - "mc_": "摩纳哥", - "md_": "摩尔多瓦", - "me_": "黑山共和国", - "mf_": "圣马丁", - "mg_": "马达加斯加", - "mh_": "马绍尔群岛", - "mk_": "马其顿", - "ml_": "马里", - "mm_": "缅甸", - "mn_": "蒙古", - "mo_": "澳门", - "mp_": "北马里亚纳群岛", - "mq_": "马提尼克岛", - "mr_": "毛里塔尼亚", - "ms_": "蒙特塞拉特", - "mt_": "马耳他", - "mu_": "毛里求斯", - "mv_": "马尔代夫", - "mw_": "马拉维", - "mx_": "墨西哥", - "my_": "马来西亚", - "mz_": "莫桑比克", - "na_": "纳米比亚", - "nc_": "新喀里多尼亚", - "ne_": "尼日尔", - "nf_": "诺福克岛", - "ng_": "奈及利亚", - "ni_": "尼加拉瓜", - "nl_": "荷兰", - "no_": "挪威", - "np_": "尼尼泊尔", - "nr_": "瑙鲁", - "nu_": "纽埃", - "nz_": "新西兰", - "om_": "阿曼", - "pa_": "巴拿马", - "pe_": "秘鲁", - "pf_": "法属波利尼西亚", - "pg_": "巴布亚新几内亚", - "ph_": "菲律宾", - "pk_": "巴基斯坦", - "pl_": "波兰", - "pm_": "圣皮埃尔和密克隆群岛", - "pn_": "皮特凯恩", - "pr_": "波多黎各", - "ps_": "被占领的巴勒斯坦领土", - "pt_": "葡萄牙", - "pw_": "u琉", - "py_": "巴拉圭", - "qa_": "卡塔尔", - "re_": "团圆", - "ro_": "罗马尼亚", - "rs_": "塞尔维亚", - "ru_": "俄罗斯", - "rw_": "卢旺达", - "sa_": "沙特阿拉伯", - "sb_": "所罗门群岛", - "sc_": "塞舌尔", - "sd_": "苏丹", - "se_": "瑞典", - "sg_": "新加坡", - "sh_": "圣海伦娜,升天和特里斯坦·达库纳", - "si_": "斯洛文尼亚", - "sj_": "斯瓦尔巴和扬·马延", - "sk_": "斯洛伐克", - "sl_": "塞拉利昂", - "sm_": "圣马力诺", - "sn_": "塞内加尔", - "so_": "索马里", - "sr_": "苏里南", - "ss_": "南苏丹", - "st_": "圣多美和普林西比", - "sv_": "萨尔瓦多", - "sy_": "阿拉伯叙利亚共和国", - "sz_": "斯威士兰", - "ta_": "特里斯坦达库尼亚", - "tc_": "特克斯和凯科斯群岛", - "td_": "乍得", - "tg_": "多哥", - "th_": "泰国", - "tj_": "塔吉克斯坦", - "tk_": "托克劳", - "tl_": "东帝汶", - "tm_": "土库曼斯坦", - "tn_": "突尼斯", - "to_": "汤加", - "tr_": "火鸡", - "tt_": "特立尼达和多巴哥", - "tv_": "图瓦卢", - "tw_": "台湾", - "tz_": "坦桑尼亚联合共和国坦桑尼亚", - "ua_": "乌克兰", - "ug_": "乌干达", - "us_": "美国", - "uy_": "乌拉圭", - "uz_": "乌兹别克斯坦", - "va_": "罗马教廷(梵蒂冈城国)", - "vc_": "圣文森特和格林纳丁斯", - "ve_": "委内瑞拉", - "vg_": "英属维尔京群岛", - "vi_": "美国维尔京群岛", - "vn_": "越南", - "vu_": "瓦努阿图", - "wf_": "瓦利斯和富图纳群岛", - "ws_": "萨摩亚", - "ye_": "也门", - "yt_": "马约特岛", - "za_": "南非", - "zm_": "赞比亚", - "zw_": "津巴布韦" -} \ No newline at end of file diff --git a/lib/phone_form_field.dart b/lib/phone_form_field.dart index d685b512..3316582f 100644 --- a/lib/phone_form_field.dart +++ b/lib/phone_form_field.dart @@ -1,17 +1,11 @@ library phone_number_input; -export 'src/widgets/phone_form_field.dart'; -export 'src/widgets/country_selector/country_selector_navigator.dart'; -export 'src/widgets/country_selector/country_selector.dart'; -export 'src/widgets/country_code_chip.dart'; +export 'src/phone_form_field.dart'; +export 'src/country_selector_navigator.dart'; +export 'src/country_button.dart'; export 'src/validation/phone_validator.dart'; - -export 'l10n/generated/phone_field_localization.dart'; - -export 'src/controllers/phone_controller.dart'; -export 'src/widgets/country_selector/country.dart'; -export 'src/widgets/country_selector/localized_country_registry.dart'; +export 'src/localization/localization.dart'; export 'package:phone_numbers_parser/phone_numbers_parser.dart' show PhoneNumber, PhoneNumberType, IsoCode; diff --git a/lib/src/controllers/phone_controller.dart b/lib/src/controllers/phone_controller.dart deleted file mode 100644 index 94c95ecc..00000000 --- a/lib/src/controllers/phone_controller.dart +++ /dev/null @@ -1,28 +0,0 @@ -import 'dart:async'; - -import 'package:flutter/material.dart'; -import 'package:phone_form_field/phone_form_field.dart'; - -class PhoneController extends ValueNotifier { - final PhoneNumber? initialValue; - // when we want to select the national number - final StreamController _selectionRequestController = - StreamController.broadcast(); - Stream get selectionRequestStream => _selectionRequestController.stream; - - PhoneController(this.initialValue) : super(initialValue); - - selectNationalNumber() { - _selectionRequestController.add(null); - } - - reset() { - value = null; - } - - @override - void dispose() { - _selectionRequestController.close(); - super.dispose(); - } -} diff --git a/lib/src/controllers/phone_field_controller.dart b/lib/src/controllers/phone_field_controller.dart deleted file mode 100644 index 7ef9e85c..00000000 --- a/lib/src/controllers/phone_field_controller.dart +++ /dev/null @@ -1,64 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:phone_form_field/phone_form_field.dart'; - -class PhoneFieldController extends ChangeNotifier { - late final ValueNotifier isoCodeController; - late final TextEditingController nationalNumberController; - - /// focus node of the national number - final FocusNode focusNode; - - IsoCode get isoCode => isoCodeController.value; - String? get national => nationalNumberController.text; - - set isoCode(IsoCode isoCode) => isoCodeController.value = isoCode; - - set national(String? national) { - national = national ?? ''; - final currentSelectionOffset = - nationalNumberController.selection.extentOffset; - final isCursorAtEnd = - currentSelectionOffset == nationalNumberController.text.length; - var offset = national.length; - - if (isCursorAtEnd) { - offset = national.length; - } else if (currentSelectionOffset <= national.length) { - offset = currentSelectionOffset; - } - // when the cursor is at the end we need to preserve that - // since there is formatting going on we need to explicitely do it - nationalNumberController.value = TextEditingValue( - text: national, - selection: TextSelection.fromPosition( - TextPosition(offset: offset), - ), - ); - } - - PhoneFieldController({ - required String? national, - required IsoCode isoCode, - required this.focusNode, - }) { - isoCodeController = ValueNotifier(isoCode); - nationalNumberController = TextEditingController(text: national); - isoCodeController.addListener(notifyListeners); - nationalNumberController.addListener(notifyListeners); - } - - selectNationalNumber() { - nationalNumberController.selection = TextSelection( - baseOffset: 0, - extentOffset: nationalNumberController.value.text.length, - ); - focusNode.requestFocus(); - } - - @override - void dispose() { - isoCodeController.dispose(); - nationalNumberController.dispose(); - super.dispose(); - } -} diff --git a/lib/src/country/country_button.dart b/lib/src/country/country_button.dart new file mode 100644 index 00000000..dcc5286c --- /dev/null +++ b/lib/src/country/country_button.dart @@ -0,0 +1,80 @@ +import 'package:circle_flags/circle_flags.dart'; +import 'package:flutter/material.dart'; +import 'package:phone_numbers_parser/phone_numbers_parser.dart'; + +import 'localized_country.dart'; + +@Deprecated('Use [CountryButton] instead') +typedef CountryChip = CountryButton; + +class CountryButton extends StatelessWidget { + final Function()? onTap; + final IsoCode isoCode; + final bool showFlag; + final bool showDialCode; + final TextStyle? textStyle; + final EdgeInsets padding; + final double flagSize; + final TextDirection? textDirection; + final bool showIsoCode; + final bool enabled; + + const CountryButton({ + super.key, + required this.isoCode, + required this.onTap, + this.textStyle, + this.showFlag = true, + this.showDialCode = true, + this.padding = const EdgeInsets.fromLTRB(12, 16, 4, 16), + this.flagSize = 20, + this.textDirection, + this.showIsoCode = false, + this.enabled = true, + }); + + @override + Widget build(BuildContext context) { + final textStyle = this.textStyle ?? + Theme.of(context).textTheme.labelMedium ?? + const TextStyle(); + final country = LocalizedCountry.fromContext(context, isoCode); + return InkWell( + onTap: onTap, + child: Padding( + padding: padding, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (showIsoCode) ...[ + Text( + country.isoCode.name, + style: textStyle.copyWith( + color: enabled ? null : Theme.of(context).disabledColor, + ), + ), + const SizedBox(width: 8), + ], + if (showFlag) ...[ + CircleFlag( + country.isoCode.name, + size: flagSize, + ), + const SizedBox(width: 8), + ], + if (showDialCode) ...[ + Text( + country.formattedCountryDialingCode, + style: textStyle.copyWith( + color: enabled ? null : Theme.of(context).disabledColor, + ), + textDirection: textDirection, + ), + ], + const Icon(Icons.arrow_drop_down), + ], + ), + ), + ); + } +} diff --git a/lib/src/country_button.dart b/lib/src/country_button.dart new file mode 100644 index 00000000..6b6da824 --- /dev/null +++ b/lib/src/country_button.dart @@ -0,0 +1,86 @@ +import 'package:circle_flags/circle_flags.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_country_selector/flutter_country_selector.dart'; +import 'package:phone_form_field/phone_form_field.dart'; + +@Deprecated('Use [CountryButton] instead') +typedef CountryChip = CountryButton; + +class CountryButton extends StatelessWidget { + final Function()? onTap; + final IsoCode isoCode; + final bool showFlag; + final bool showDialCode; + final TextStyle? textStyle; + final EdgeInsets padding; + final double flagSize; + final TextDirection? textDirection; + final bool showIsoCode; + final bool enabled; + + const CountryButton({ + super.key, + required this.isoCode, + required this.onTap, + this.textStyle, + this.showFlag = true, + this.showDialCode = true, + this.padding = const EdgeInsets.fromLTRB(12, 16, 4, 16), + this.flagSize = 20, + this.textDirection, + this.showIsoCode = false, + this.enabled = true, + }); + + @override + Widget build(BuildContext context) { + final textStyle = this.textStyle ?? + Theme.of(context).textTheme.labelMedium ?? + const TextStyle(); + final countryLocalization = CountrySelectorLocalization.of(context) ?? + CountrySelectorLocalizationEn(); + final localization = PhoneFieldLocalization.of(context); + final countryName = countryLocalization.countryName(isoCode); + final countryDialCode = '+ ${countryLocalization.countryDialCode(isoCode)}'; + return Semantics( + label: localization.tapToSelectACountry(countryName, countryDialCode), + child: InkWell( + onTap: onTap, + child: Padding( + padding: padding, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (showIsoCode) ...[ + Text( + isoCode.name, + style: textStyle.copyWith( + color: enabled ? null : Theme.of(context).disabledColor, + ), + ), + const SizedBox(width: 8), + ], + if (showFlag) ...[ + CircleFlag( + isoCode.name, + size: flagSize, + ), + const SizedBox(width: 8), + ], + if (showDialCode) ...[ + Text( + countryDialCode, + style: textStyle.copyWith( + color: enabled ? null : Theme.of(context).disabledColor, + ), + textDirection: textDirection, + ), + ], + const Icon(Icons.arrow_drop_down), + ], + ), + ), + ), + ); + } +} diff --git a/lib/src/widgets/country_selector/country_selector_navigator.dart b/lib/src/country_selector_navigator.dart similarity index 71% rename from lib/src/widgets/country_selector/country_selector_navigator.dart rename to lib/src/country_selector_navigator.dart index 9c2070e6..74f61a29 100644 --- a/lib/src/widgets/country_selector/country_selector_navigator.dart +++ b/lib/src/country_selector_navigator.dart @@ -1,14 +1,11 @@ -import 'package:circle_flags/circle_flags.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:phone_form_field/phone_form_field.dart'; -import 'package:phone_form_field/src/widgets/country_selector/country_selector_page.dart'; +import 'package:flutter_country_selector/flutter_country_selector.dart'; abstract class CountrySelectorNavigator { final List? countries; final List? favorites; - final bool addSeparator; - final bool showCountryCode; + final bool showDialCode; final bool sortCountries; final String? noResultMessage; final bool searchAutofocus; @@ -24,8 +21,10 @@ abstract class CountrySelectorNavigator { const CountrySelectorNavigator({ this.countries, this.favorites, - this.addSeparator = true, - this.showCountryCode = true, + @Deprecated('This is always on by default, this can be safely removed') + bool addSeparator = true, + @Deprecated('Use [showDialCode] instead') bool? showCountryCode, + bool? showDialCode, this.sortCountries = false, this.noResultMessage, required this.searchAutofocus, @@ -37,21 +36,22 @@ abstract class CountrySelectorNavigator { this.scrollPhysics, this.flagSize = 40, this.useRootNavigator = true, - }); + }) : showDialCode = showDialCode ?? showCountryCode ?? true; + + @Deprecated('Use [show] instead') + Future navigate(BuildContext context) => show(context); - Future navigate(BuildContext context, FlagCache flagCache); + Future show(BuildContext context); - CountrySelector _getCountrySelector({ - required ValueChanged onCountrySelected, - required FlagCache flagCache, + CountrySelectorSheet _getCountrySelector({ + required ValueChanged onCountrySelected, ScrollController? scrollController, }) { - return CountrySelector( - countries: countries, - onCountrySelected: onCountrySelected, + return CountrySelector.sheet( + countries: countries ?? IsoCode.values, favoriteCountries: favorites ?? [], - addFavoritesSeparator: addSeparator, - showCountryCode: showCountryCode, + onCountrySelected: onCountrySelected, + showDialCode: showDialCode, noResultMessage: noResultMessage, scrollController: scrollController, searchAutofocus: searchAutofocus, @@ -62,7 +62,6 @@ abstract class CountrySelectorNavigator { searchBoxIconColor: searchBoxIconColor, scrollPhysics: scrollPhysics, flagSize: flagSize, - flagCache: flagCache, ); } @@ -84,21 +83,23 @@ abstract class CountrySelectorNavigator { ScrollPhysics? scrollPhysics, }) = DialogNavigator._; - const factory CountrySelectorNavigator.searchDelegate({ - List? countries, - List? favorites, + @Deprecated('Use [CountrySelectorNavigator.page] instead') + const factory CountrySelectorNavigator.searchDelegate() = + CountrySelectorNavigator.page; + + const factory CountrySelectorNavigator.page({ bool addSeparator, bool showCountryCode, bool sortCountries, String? noResultMessage, - bool searchAutofocus, TextStyle? subtitleStyle, TextStyle? titleStyle, InputDecoration? searchBoxDecoration, TextStyle? searchBoxTextStyle, Color? searchBoxIconColor, ScrollPhysics? scrollPhysics, - }) = SearchDelegateNavigator._; + ThemeData? appBarTheme, + }) = PageNavigator._; const factory CountrySelectorNavigator.bottomSheet({ List? countries, @@ -178,7 +179,7 @@ class DialogNavigator extends CountrySelectorNavigator { }); @override - Future navigate(BuildContext context, FlagCache flagCache) { + Future show(BuildContext context) { return showDialog( context: context, builder: (_) => Dialog( @@ -188,7 +189,6 @@ class DialogNavigator extends CountrySelectorNavigator { child: _getCountrySelector( onCountrySelected: (country) => Navigator.of(context, rootNavigator: true).pop(country), - flagCache: flagCache, ), ), ), @@ -196,8 +196,8 @@ class DialogNavigator extends CountrySelectorNavigator { } } -class SearchDelegateNavigator extends CountrySelectorNavigator { - const SearchDelegateNavigator._({ +class PageNavigator extends CountrySelectorNavigator { + const PageNavigator._({ super.countries, super.favorites, super.addSeparator, @@ -211,34 +211,37 @@ class SearchDelegateNavigator extends CountrySelectorNavigator { super.searchBoxTextStyle, super.searchBoxIconColor, super.scrollPhysics, + this.appBarTheme, }); - CountrySelectorSearchDelegate _getCountrySelectorSearchDelegate({ - required ValueChanged onCountrySelected, - required FlagCache flagCache, + final ThemeData? appBarTheme; + + CountrySelectorPage _getCountrySelectorPage({ + required ValueChanged onCountrySelected, ScrollController? scrollController, }) { - return CountrySelectorSearchDelegate( - onCountrySelected: onCountrySelected, - scrollController: scrollController, - addFavoritesSeparator: addSeparator, - countries: countries, - favoriteCountries: favorites ?? [], - noResultMessage: noResultMessage, - searchAutofocus: searchAutofocus, - showCountryCode: showCountryCode, - titleStyle: titleStyle, - subtitleStyle: subtitleStyle, - flagCache: flagCache); + return CountrySelector.page( + onCountrySelected: onCountrySelected, + scrollController: scrollController, + countries: countries ?? IsoCode.values, + favoriteCountries: favorites ?? [], + noResultMessage: noResultMessage, + searchAutofocus: searchAutofocus, + showDialCode: showDialCode, + titleStyle: titleStyle, + subtitleStyle: subtitleStyle, + ); } @override - Future navigate(BuildContext context, FlagCache flagCache) { - return showSearch( - context: context, - delegate: _getCountrySelectorSearchDelegate( - onCountrySelected: (country) => Navigator.pop(context, country), - flagCache: flagCache, + Future show( + BuildContext context, + ) { + return Navigator.of(context).push( + MaterialPageRoute( + builder: (ctx) => _getCountrySelectorPage( + onCountrySelected: (country) => Navigator.pop(context, country), + ), ), ); } @@ -262,8 +265,10 @@ class BottomSheetNavigator extends CountrySelectorNavigator { }); @override - Future navigate(BuildContext context, FlagCache flagCache) { - Country? selected; + Future show( + BuildContext context, + ) { + IsoCode? selected; final ctrl = showBottomSheet( context: context, builder: (_) => MediaQuery( @@ -274,7 +279,6 @@ class BottomSheetNavigator extends CountrySelectorNavigator { selected = country; Navigator.pop(context, country); }, - flagCache: flagCache, ), ), ), @@ -304,17 +308,15 @@ class ModalBottomSheetNavigator extends CountrySelectorNavigator { }); @override - Future navigate( + Future show( BuildContext context, - FlagCache flagCache, ) { - return showModalBottomSheet( + return showModalBottomSheet( context: context, builder: (_) => SizedBox( height: height ?? MediaQuery.of(context).size.height - 90, child: _getCountrySelector( onCountrySelected: (country) => Navigator.pop(context, country), - flagCache: flagCache, ), ), isScrollControlled: true, @@ -351,13 +353,14 @@ class DraggableModalBottomSheetNavigator extends CountrySelectorNavigator { }); @override - Future navigate(BuildContext context, FlagCache flagCache) { + Future show(BuildContext context) { final effectiveBorderRadius = borderRadius ?? const BorderRadius.only( topLeft: Radius.circular(16), topRight: Radius.circular(16), ); - return showModalBottomSheet( + + return showModalBottomSheet( context: context, shape: RoundedRectangleBorder( borderRadius: effectiveBorderRadius, @@ -368,17 +371,12 @@ class DraggableModalBottomSheetNavigator extends CountrySelectorNavigator { maxChildSize: maxChildSize, expand: false, builder: (context, scrollController) { - return Container( - decoration: ShapeDecoration( - color: Theme.of(context).canvasColor, - shape: RoundedRectangleBorder( - borderRadius: effectiveBorderRadius, - ), - ), + return _CountrySelectorWidget( + scrollController: scrollController, + borderRadius: effectiveBorderRadius, child: _getCountrySelector( onCountrySelected: (country) => Navigator.pop(context, country), scrollController: scrollController, - flagCache: flagCache, ), ); }, @@ -388,3 +386,49 @@ class DraggableModalBottomSheetNavigator extends CountrySelectorNavigator { ); } } + +class _CountrySelectorWidget extends StatefulWidget { + final ScrollController scrollController; + final BorderRadiusGeometry borderRadius; + final Widget child; + + const _CountrySelectorWidget({ + required this.scrollController, + required this.child, + required this.borderRadius, + }); + + @override + State<_CountrySelectorWidget> createState() => _CountrySelectorWidgetState(); +} + +class _CountrySelectorWidgetState extends State<_CountrySelectorWidget> { + @override + initState() { + super.initState(); + widget.scrollController.addListener(_onScrollListener); + } + + @override + dispose() { + widget.scrollController.removeListener(_onScrollListener); + super.dispose(); + } + + _onScrollListener() { + FocusManager.instance.primaryFocus?.unfocus(); + } + + @override + Widget build(BuildContext context) { + return Container( + decoration: ShapeDecoration( + color: Theme.of(context).canvasColor, + shape: RoundedRectangleBorder( + borderRadius: widget.borderRadius, + ), + ), + child: widget.child, + ); + } +} diff --git a/lib/src/localization/generated/phone_field_localization_impl.dart b/lib/src/localization/generated/phone_field_localization_impl.dart new file mode 100644 index 00000000..006cc07a --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl.dart @@ -0,0 +1,267 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:intl/intl.dart' as intl; + +import 'phone_field_localization_impl_ar.dart'; +import 'phone_field_localization_impl_ckb.dart'; +import 'phone_field_localization_impl_de.dart'; +import 'phone_field_localization_impl_el.dart'; +import 'phone_field_localization_impl_en.dart'; +import 'phone_field_localization_impl_es.dart'; +import 'phone_field_localization_impl_fa.dart'; +import 'phone_field_localization_impl_fr.dart'; +import 'phone_field_localization_impl_hi.dart'; +import 'phone_field_localization_impl_it.dart'; +import 'phone_field_localization_impl_ku.dart'; +import 'phone_field_localization_impl_nb.dart'; +import 'phone_field_localization_impl_nl.dart'; +import 'phone_field_localization_impl_pt.dart'; +import 'phone_field_localization_impl_ru.dart'; +import 'phone_field_localization_impl_sv.dart'; +import 'phone_field_localization_impl_tr.dart'; +import 'phone_field_localization_impl_uk.dart'; +import 'phone_field_localization_impl_uz.dart'; +import 'phone_field_localization_impl_zh.dart'; + +/// Callers can lookup localized strings with an instance of PhoneFieldLocalizationImpl +/// returned by `PhoneFieldLocalizationImpl.of(context)`. +/// +/// Applications need to include `PhoneFieldLocalizationImpl.delegate()` in their app's +/// `localizationDelegates` list, and the locales they support in the app's +/// `supportedLocales` list. For example: +/// +/// ```dart +/// import 'generated/phone_field_localization_impl.dart'; +/// +/// return MaterialApp( +/// localizationsDelegates: PhoneFieldLocalizationImpl.localizationsDelegates, +/// supportedLocales: PhoneFieldLocalizationImpl.supportedLocales, +/// home: MyApplicationHome(), +/// ); +/// ``` +/// +/// ## Update pubspec.yaml +/// +/// Please make sure to update your pubspec.yaml to include the following +/// packages: +/// +/// ```yaml +/// dependencies: +/// # Internationalization support. +/// flutter_localizations: +/// sdk: flutter +/// intl: any # Use the pinned version from flutter_localizations +/// +/// # Rest of dependencies +/// ``` +/// +/// ## iOS Applications +/// +/// iOS applications define key application metadata, including supported +/// locales, in an Info.plist file that is built into the application bundle. +/// To configure the locales supported by your app, you’ll need to edit this +/// file. +/// +/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. +/// Then, in the Project Navigator, open the Info.plist file under the Runner +/// project’s Runner folder. +/// +/// Next, select the Information Property List item, select Add Item from the +/// Editor menu, then select Localizations from the pop-up menu. +/// +/// Select and expand the newly-created Localizations item then, for each +/// locale your application supports, add a new item and select the locale +/// you wish to add from the pop-up menu in the Value field. This list should +/// be consistent with the languages listed in the PhoneFieldLocalizationImpl.supportedLocales +/// property. +abstract class PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImpl(String locale) + : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + + final String localeName; + + static PhoneFieldLocalizationImpl? of(BuildContext context) { + return Localizations.of( + context, PhoneFieldLocalizationImpl); + } + + static const LocalizationsDelegate delegate = + _PhoneFieldLocalizationImplDelegate(); + + /// A list of this localizations delegate along with the default localizations + /// delegates. + /// + /// Returns a list of localizations delegates containing this delegate along with + /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, + /// and GlobalWidgetsLocalizations.delegate. + /// + /// Additional delegates can be added by appending to this list in + /// MaterialApp. This list does not have to be used at all if a custom list + /// of delegates is preferred or required. + static const List> localizationsDelegates = + >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; + + /// A list of this localizations delegate's supported locales. + static const List supportedLocales = [ + Locale('ar'), + Locale('ckb'), + Locale('de'), + Locale('el'), + Locale('en'), + Locale('es'), + Locale('fa'), + Locale('fr'), + Locale('hi'), + Locale('it'), + Locale('ku'), + Locale('nb'), + Locale('nl'), + Locale('pt'), + Locale('ru'), + Locale('sv'), + Locale('tr'), + Locale('uk'), + Locale('uz'), + Locale('zh') + ]; + + /// No description provided for @invalidPhoneNumber. + /// + /// In en, this message translates to: + /// **'Invalid phone number'** + String get invalidPhoneNumber; + + /// No description provided for @invalidCountry. + /// + /// In en, this message translates to: + /// **'Invalid country'** + String get invalidCountry; + + /// No description provided for @invalidMobilePhoneNumber. + /// + /// In en, this message translates to: + /// **'Invalid mobile phone number'** + String get invalidMobilePhoneNumber; + + /// No description provided for @invalidFixedLinePhoneNumber. + /// + /// In en, this message translates to: + /// **'Invalid fixed line phone number'** + String get invalidFixedLinePhoneNumber; + + /// No description provided for @requiredPhoneNumber. + /// + /// In en, this message translates to: + /// **'Required phone number'** + String get requiredPhoneNumber; + + /// semantic description of the country button + /// + /// In en, this message translates to: + /// **'Tap to select a country. Current selection: {countryName} {countryDialCode}'** + String tapToSelectACountry(String countryName, String countryDialCode); + + /// No description provided for @enterPhoneNumber. + /// + /// In en, this message translates to: + /// **'Enter your phone number'** + String get enterPhoneNumber; +} + +class _PhoneFieldLocalizationImplDelegate + extends LocalizationsDelegate { + const _PhoneFieldLocalizationImplDelegate(); + + @override + Future load(Locale locale) { + return SynchronousFuture( + lookupPhoneFieldLocalizationImpl(locale)); + } + + @override + bool isSupported(Locale locale) => [ + 'ar', + 'ckb', + 'de', + 'el', + 'en', + 'es', + 'fa', + 'fr', + 'hi', + 'it', + 'ku', + 'nb', + 'nl', + 'pt', + 'ru', + 'sv', + 'tr', + 'uk', + 'uz', + 'zh' + ].contains(locale.languageCode); + + @override + bool shouldReload(_PhoneFieldLocalizationImplDelegate old) => false; +} + +PhoneFieldLocalizationImpl lookupPhoneFieldLocalizationImpl(Locale locale) { + // Lookup logic when only language code is specified. + switch (locale.languageCode) { + case 'ar': + return PhoneFieldLocalizationImplAr(); + case 'ckb': + return PhoneFieldLocalizationImplCkb(); + case 'de': + return PhoneFieldLocalizationImplDe(); + case 'el': + return PhoneFieldLocalizationImplEl(); + case 'en': + return PhoneFieldLocalizationImplEn(); + case 'es': + return PhoneFieldLocalizationImplEs(); + case 'fa': + return PhoneFieldLocalizationImplFa(); + case 'fr': + return PhoneFieldLocalizationImplFr(); + case 'hi': + return PhoneFieldLocalizationImplHi(); + case 'it': + return PhoneFieldLocalizationImplIt(); + case 'ku': + return PhoneFieldLocalizationImplKu(); + case 'nb': + return PhoneFieldLocalizationImplNb(); + case 'nl': + return PhoneFieldLocalizationImplNl(); + case 'pt': + return PhoneFieldLocalizationImplPt(); + case 'ru': + return PhoneFieldLocalizationImplRu(); + case 'sv': + return PhoneFieldLocalizationImplSv(); + case 'tr': + return PhoneFieldLocalizationImplTr(); + case 'uk': + return PhoneFieldLocalizationImplUk(); + case 'uz': + return PhoneFieldLocalizationImplUz(); + case 'zh': + return PhoneFieldLocalizationImplZh(); + } + + throw FlutterError( + 'PhoneFieldLocalizationImpl.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.'); +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_ar.dart b/lib/src/localization/generated/phone_field_localization_impl_ar.dart new file mode 100644 index 00000000..a63202c9 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_ar.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Arabic (`ar`). +class PhoneFieldLocalizationImplAr extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplAr([String locale = 'ar']) : super(locale); + + @override + String get invalidPhoneNumber => 'رقم الهاتف غير صحيح'; + + @override + String get invalidCountry => 'دولة غير صحيح'; + + @override + String get invalidMobilePhoneNumber => 'رقم الهاتف الخلوي غير صحيح'; + + @override + String get invalidFixedLinePhoneNumber => 'رقم الهاتف الثابت غير صحيح'; + + @override + String get requiredPhoneNumber => 'رقم الهاتف مطلوب'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_ckb.dart b/lib/src/localization/generated/phone_field_localization_impl_ckb.dart new file mode 100644 index 00000000..bf8f4183 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_ckb.dart @@ -0,0 +1,30 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Central Kurdish (`ckb`). +class PhoneFieldLocalizationImplCkb extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplCkb([String locale = 'ckb']) : super(locale); + + @override + String get invalidPhoneNumber => 'ژمارەی تەلەفۆنی نادروست'; + + @override + String get invalidCountry => 'وڵاتێکی نادروست'; + + @override + String get invalidMobilePhoneNumber => 'ژمارەی مۆبایل نادروستە'; + + @override + String get invalidFixedLinePhoneNumber => + 'ژمارەی تەلەفۆنی هێڵی جێگیر نادروستە'; + + @override + String get requiredPhoneNumber => 'ژمارەی تەلەفۆنی پێویست'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_de.dart b/lib/src/localization/generated/phone_field_localization_impl_de.dart new file mode 100644 index 00000000..ab7fdfc3 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_de.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for German (`de`). +class PhoneFieldLocalizationImplDe extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplDe([String locale = 'de']) : super(locale); + + @override + String get invalidPhoneNumber => 'Ungültige Telefonnummer'; + + @override + String get invalidCountry => 'Ungültiges Land'; + + @override + String get invalidMobilePhoneNumber => 'Ungültige Handynummer'; + + @override + String get invalidFixedLinePhoneNumber => 'Ungültige Festnetznummer'; + + @override + String get requiredPhoneNumber => 'Telefonnummer erforderlich'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_el.dart b/lib/src/localization/generated/phone_field_localization_impl_el.dart new file mode 100644 index 00000000..824e88dc --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_el.dart @@ -0,0 +1,30 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Modern Greek (`el`). +class PhoneFieldLocalizationImplEl extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplEl([String locale = 'el']) : super(locale); + + @override + String get invalidPhoneNumber => 'Μη έγκυρος αριθμός τηλεφώνου'; + + @override + String get invalidCountry => 'Μη έγκυρη χώρα'; + + @override + String get invalidMobilePhoneNumber => 'Μη έγκυρος αριθμός κινητού τηλεφώνου'; + + @override + String get invalidFixedLinePhoneNumber => + 'Μη έγκυρος αριθμός σταθερού τηλεφώνου'; + + @override + String get requiredPhoneNumber => 'Απαιτούμενος αριθμός τηλεφώνου'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_en.dart b/lib/src/localization/generated/phone_field_localization_impl_en.dart new file mode 100644 index 00000000..bc499b37 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_en.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for English (`en`). +class PhoneFieldLocalizationImplEn extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplEn([String locale = 'en']) : super(locale); + + @override + String get invalidPhoneNumber => 'Invalid phone number'; + + @override + String get invalidCountry => 'Invalid country'; + + @override + String get invalidMobilePhoneNumber => 'Invalid mobile phone number'; + + @override + String get invalidFixedLinePhoneNumber => 'Invalid fixed line phone number'; + + @override + String get requiredPhoneNumber => 'Required phone number'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_es.dart b/lib/src/localization/generated/phone_field_localization_impl_es.dart new file mode 100644 index 00000000..9971104d --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_es.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Spanish Castilian (`es`). +class PhoneFieldLocalizationImplEs extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplEs([String locale = 'es']) : super(locale); + + @override + String get invalidPhoneNumber => 'Numero de telefono invalido'; + + @override + String get invalidCountry => 'País invalido'; + + @override + String get invalidMobilePhoneNumber => 'Número de teléfono celular invalido'; + + @override + String get invalidFixedLinePhoneNumber => 'Número de teléfono fijo invalido'; + + @override + String get requiredPhoneNumber => 'Número de teléfono obligatorio'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_fa.dart b/lib/src/localization/generated/phone_field_localization_impl_fa.dart new file mode 100644 index 00000000..b75a0ed4 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_fa.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Persian (`fa`). +class PhoneFieldLocalizationImplFa extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplFa([String locale = 'fa']) : super(locale); + + @override + String get invalidPhoneNumber => 'شماره تلفن نامعتبر است'; + + @override + String get invalidCountry => 'کشور نامعتبر است'; + + @override + String get invalidMobilePhoneNumber => 'شماره تلفن همراه نامعتبر است'; + + @override + String get invalidFixedLinePhoneNumber => 'شماره تلفن ثابت نامعتبر است'; + + @override + String get requiredPhoneNumber => 'شماره تلفن الزامی است'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_fr.dart b/lib/src/localization/generated/phone_field_localization_impl_fr.dart new file mode 100644 index 00000000..404aa43f --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_fr.dart @@ -0,0 +1,30 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for French (`fr`). +class PhoneFieldLocalizationImplFr extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplFr([String locale = 'fr']) : super(locale); + + @override + String get invalidPhoneNumber => 'Numéro de téléphone invalide'; + + @override + String get invalidCountry => 'Pays invalide'; + + @override + String get invalidMobilePhoneNumber => + 'Numéro de téléphone portable invalide'; + + @override + String get invalidFixedLinePhoneNumber => 'Numéro de téléphone fixe invalide'; + + @override + String get requiredPhoneNumber => 'Numéro de téléphone requis'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_hi.dart b/lib/src/localization/generated/phone_field_localization_impl_hi.dart new file mode 100644 index 00000000..2989cba5 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_hi.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Hindi (`hi`). +class PhoneFieldLocalizationImplHi extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplHi([String locale = 'hi']) : super(locale); + + @override + String get invalidPhoneNumber => 'अवैध फोन नंबर'; + + @override + String get invalidCountry => 'अवैध देश'; + + @override + String get invalidMobilePhoneNumber => 'अमान्य सेल फ़ोन नंबर'; + + @override + String get invalidFixedLinePhoneNumber => 'अवैध लैंडलाइन नंबर'; + + @override + String get requiredPhoneNumber => 'फ़ोन नंबर आवश्यक'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_it.dart b/lib/src/localization/generated/phone_field_localization_impl_it.dart new file mode 100644 index 00000000..ca7c75b7 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_it.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Italian (`it`). +class PhoneFieldLocalizationImplIt extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplIt([String locale = 'it']) : super(locale); + + @override + String get invalidPhoneNumber => 'Numero di telefono invalido'; + + @override + String get invalidCountry => 'Paese invalido'; + + @override + String get invalidMobilePhoneNumber => 'Numero di cellulare invalido'; + + @override + String get invalidFixedLinePhoneNumber => 'Numero di rete fissa invalido'; + + @override + String get requiredPhoneNumber => 'Numero di telefono richiesto'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_ku.dart b/lib/src/localization/generated/phone_field_localization_impl_ku.dart new file mode 100644 index 00000000..f6b874f3 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_ku.dart @@ -0,0 +1,30 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Kurdish (`ku`). +class PhoneFieldLocalizationImplKu extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplKu([String locale = 'ku']) : super(locale); + + @override + String get invalidPhoneNumber => 'ژمارەی تەلەفۆنی نادروست'; + + @override + String get invalidCountry => 'وڵاتێکی نادروست'; + + @override + String get invalidMobilePhoneNumber => 'ژمارەی مۆبایل نادروستە'; + + @override + String get invalidFixedLinePhoneNumber => + 'ژمارەی تەلەفۆنی هێڵی جێگیر نادروستە'; + + @override + String get requiredPhoneNumber => 'ژمارەی تەلەفۆنی پێویست'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_nb.dart b/lib/src/localization/generated/phone_field_localization_impl_nb.dart new file mode 100644 index 00000000..557f4c2e --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_nb.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Norwegian Bokmål (`nb`). +class PhoneFieldLocalizationImplNb extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplNb([String locale = 'nb']) : super(locale); + + @override + String get invalidPhoneNumber => 'Ugyldig telefonnummer'; + + @override + String get invalidCountry => 'Ugyldig land'; + + @override + String get invalidMobilePhoneNumber => 'Ugyldig mobilnummer'; + + @override + String get invalidFixedLinePhoneNumber => 'Ugyldig fasttelefonnummer'; + + @override + String get requiredPhoneNumber => 'Telefonnummer er påkrevd'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_nl.dart b/lib/src/localization/generated/phone_field_localization_impl_nl.dart new file mode 100644 index 00000000..7cdfbd58 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_nl.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Dutch Flemish (`nl`). +class PhoneFieldLocalizationImplNl extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplNl([String locale = 'nl']) : super(locale); + + @override + String get invalidPhoneNumber => 'Ongeldig telefoonnummer'; + + @override + String get invalidCountry => 'Ongeldig land'; + + @override + String get invalidMobilePhoneNumber => 'Ongeldig mobiel nummer'; + + @override + String get invalidFixedLinePhoneNumber => 'Ongeldig vast nummer'; + + @override + String get requiredPhoneNumber => 'Telefoonnummer vereist'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_pt.dart b/lib/src/localization/generated/phone_field_localization_impl_pt.dart new file mode 100644 index 00000000..595626a7 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_pt.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Portuguese (`pt`). +class PhoneFieldLocalizationImplPt extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplPt([String locale = 'pt']) : super(locale); + + @override + String get invalidPhoneNumber => 'Número de telefone inválido'; + + @override + String get invalidCountry => 'País inválido'; + + @override + String get invalidMobilePhoneNumber => 'Número de telefone celular inválido'; + + @override + String get invalidFixedLinePhoneNumber => 'Número de telefone fixo inválido'; + + @override + String get requiredPhoneNumber => 'Número de telefone obrigatório'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_ru.dart b/lib/src/localization/generated/phone_field_localization_impl_ru.dart new file mode 100644 index 00000000..638dcba0 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_ru.dart @@ -0,0 +1,30 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Russian (`ru`). +class PhoneFieldLocalizationImplRu extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplRu([String locale = 'ru']) : super(locale); + + @override + String get invalidPhoneNumber => 'Неправильный номер телефона'; + + @override + String get invalidCountry => 'Неверная страна'; + + @override + String get invalidMobilePhoneNumber => 'Неверный номер мобильного телефона'; + + @override + String get invalidFixedLinePhoneNumber => + 'Недействительный номер стационарного телефона'; + + @override + String get requiredPhoneNumber => 'Требуется номер телефона'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_sv.dart b/lib/src/localization/generated/phone_field_localization_impl_sv.dart new file mode 100644 index 00000000..8657e29a --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_sv.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Swedish (`sv`). +class PhoneFieldLocalizationImplSv extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplSv([String locale = 'sv']) : super(locale); + + @override + String get invalidPhoneNumber => 'Ogiltigt telefonnummer'; + + @override + String get invalidCountry => 'Ogiltigt land'; + + @override + String get invalidMobilePhoneNumber => 'Ogiltigt mobilnummer'; + + @override + String get invalidFixedLinePhoneNumber => 'Ogiltigt fast telefonnummer'; + + @override + String get requiredPhoneNumber => 'Obligatoriskt telefonnummer'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_tr.dart b/lib/src/localization/generated/phone_field_localization_impl_tr.dart new file mode 100644 index 00000000..3de180db --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_tr.dart @@ -0,0 +1,30 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Turkish (`tr`). +class PhoneFieldLocalizationImplTr extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplTr([String locale = 'tr']) : super(locale); + + @override + String get invalidPhoneNumber => 'Geçersiz telefon numarası'; + + @override + String get invalidCountry => 'Geçersiz ülke'; + + @override + String get invalidMobilePhoneNumber => 'Geçersiz cep telefonu numarası'; + + @override + String get invalidFixedLinePhoneNumber => + 'Geçersiz sabit hat telefon numarası'; + + @override + String get requiredPhoneNumber => 'Telefon numarası gerekli'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_uk.dart b/lib/src/localization/generated/phone_field_localization_impl_uk.dart new file mode 100644 index 00000000..01de3fe2 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_uk.dart @@ -0,0 +1,30 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Ukrainian (`uk`). +class PhoneFieldLocalizationImplUk extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplUk([String locale = 'uk']) : super(locale); + + @override + String get invalidPhoneNumber => 'Невірний номер телефону'; + + @override + String get invalidCountry => 'Недійсна країна'; + + @override + String get invalidMobilePhoneNumber => 'Невірний номер мобільного телефону'; + + @override + String get invalidFixedLinePhoneNumber => + 'Невірний номер стаціонарного телефону'; + + @override + String get requiredPhoneNumber => 'Необхідний номер телефону'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_uz.dart b/lib/src/localization/generated/phone_field_localization_impl_uz.dart new file mode 100644 index 00000000..cba75598 --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_uz.dart @@ -0,0 +1,30 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Uzbek (`uz`). +class PhoneFieldLocalizationImplUz extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplUz([String locale = 'uz']) : super(locale); + + @override + String get invalidPhoneNumber => 'Telefon raqami noto‘g‘ri'; + + @override + String get invalidCountry => 'Yaroqsiz mamlakat'; + + @override + String get invalidMobilePhoneNumber => 'Telfon raqami noto‘g‘ri'; + + @override + String get invalidFixedLinePhoneNumber => + 'Ruxsat etilgan telefon raqami yaroqsiz'; + + @override + String get requiredPhoneNumber => 'Telfon raqami majburiy'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/generated/phone_field_localization_impl_zh.dart b/lib/src/localization/generated/phone_field_localization_impl_zh.dart new file mode 100644 index 00000000..7af7943f --- /dev/null +++ b/lib/src/localization/generated/phone_field_localization_impl_zh.dart @@ -0,0 +1,29 @@ +import 'phone_field_localization_impl.dart'; + +/// The translations for Chinese (`zh`). +class PhoneFieldLocalizationImplZh extends PhoneFieldLocalizationImpl { + PhoneFieldLocalizationImplZh([String locale = 'zh']) : super(locale); + + @override + String get invalidPhoneNumber => '无效的电话号码'; + + @override + String get invalidCountry => '无效国家'; + + @override + String get invalidMobilePhoneNumber => '无效的手机号码'; + + @override + String get invalidFixedLinePhoneNumber => '无效的固定电话号码'; + + @override + String get requiredPhoneNumber => '需要电话号码'; + + @override + String tapToSelectACountry(String countryName, String countryDialCode) { + return 'Tap to select a country. Current selection: $countryName $countryDialCode'; + } + + @override + String get enterPhoneNumber => 'Enter your phone number'; +} diff --git a/lib/src/localization/localization.dart b/lib/src/localization/localization.dart new file mode 100644 index 00000000..d1eb6868 --- /dev/null +++ b/lib/src/localization/localization.dart @@ -0,0 +1,17 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_country_selector/flutter_country_selector.dart'; + +import 'generated/phone_field_localization_impl.dart'; +import 'generated/phone_field_localization_impl_en.dart'; + +abstract class PhoneFieldLocalization { + static const Set delegates = { + ...CountrySelectorLocalization.localizationsDelegates, + PhoneFieldLocalizationImpl.delegate, + }; + + static PhoneFieldLocalizationImpl of(BuildContext context) { + return PhoneFieldLocalizationImpl.of(context) ?? + PhoneFieldLocalizationImplEn(); + } +} diff --git a/lib/src/phone_controller.dart b/lib/src/phone_controller.dart new file mode 100644 index 00000000..747897dd --- /dev/null +++ b/lib/src/phone_controller.dart @@ -0,0 +1,108 @@ +part of 'phone_form_field.dart'; + +class PhoneController extends ChangeNotifier { + /// focus node of the national number + // final FocusNode focusNode; + final PhoneNumber initialValue; + PhoneNumber _value; + PhoneNumber get value => _value; + + set value(PhoneNumber phoneNumber) { + _value = phoneNumber; + final formattedNsn = _value.formatNsn(); + if (_formattedNationalNumberController.text != formattedNsn) { + changeNationalNumber(formattedNsn); + } else { + notifyListeners(); + } + } + + /// text editing controller of the nsn ( where user types the phone number ) + late final TextEditingController _formattedNationalNumberController; + PhoneController({ + this.initialValue = const PhoneNumber(isoCode: IsoCode.US, nsn: ''), + }) : _value = initialValue, + _formattedNationalNumberController = TextEditingController( + text: initialValue.formatNsn(), + ); + + changeCountry(IsoCode isoCode) { + _value = PhoneNumber.parse( + _value.nsn, + destinationCountry: isoCode, + ); + notifyListeners(); + } + + changeNationalNumber(String? text) { + text = text ?? ''; + var newFormattedText = text; + + // if starts with + then we parse the whole number + final startsWithPlus = + text.startsWith(RegExp('[${AllowedCharacters.plus}]')); + + if (startsWithPlus) { + final phoneNumber = _tryParseWithPlus(text); + // if we could parse the phone number we can change the value inside + // the national number field to remove the "+ country dial code" + if (phoneNumber != null) { + _value = phoneNumber; + newFormattedText = _value.formatNsn(); + } + } else { + final phoneNumber = PhoneNumber.parse( + text, + destinationCountry: _value.isoCode, + ); + _value = phoneNumber; + newFormattedText = phoneNumber.formatNsn(); + } + _formattedNationalNumberController.value = TextEditingValue( + text: newFormattedText, + selection: _computeSelection(text, newFormattedText), + ); + notifyListeners(); + } + + /// When the cursor is at the end of the text we need to preserve that. + /// Since there is formatting going on we need to explicitely do it. + /// We don't want to do it in the middle because the user might have + /// used arrow keys to move inside the text. + TextSelection _computeSelection(String originalText, String newText) { + final currentSelectionOffset = + _formattedNationalNumberController.selection.extentOffset; + final isCursorAtEnd = currentSelectionOffset == originalText.length; + var offset = currentSelectionOffset; + + if (isCursorAtEnd || currentSelectionOffset >= newText.length) { + offset = newText.length; + } + return TextSelection.fromPosition( + TextPosition(offset: offset), + ); + } + + PhoneNumber? _tryParseWithPlus(String text) { + try { + return PhoneNumber.parse(text); + // parsing "+", a country code won't be found + } on PhoneNumberException { + return null; + } + } + + selectNationalNumber() { + _formattedNationalNumberController.selection = TextSelection( + baseOffset: 0, + extentOffset: _formattedNationalNumberController.value.text.length, + ); + notifyListeners(); + } + + @override + void dispose() { + _formattedNationalNumberController.dispose(); + super.dispose(); + } +} diff --git a/lib/src/phone_form_field.dart b/lib/src/phone_form_field.dart new file mode 100644 index 00000000..6d6f2afd --- /dev/null +++ b/lib/src/phone_form_field.dart @@ -0,0 +1,194 @@ +import 'dart:ui' as ui show BoxHeightStyle, BoxWidthStyle; + +import 'package:circle_flags/circle_flags.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:phone_form_field/phone_form_field.dart'; +import 'package:phone_form_field/src/validation/allowed_characters.dart'; +import 'package:phone_numbers_parser/phone_numbers_parser.dart'; + +part 'phone_controller.dart'; +part 'phone_form_field_state.dart'; + +/// Phone input extending form field. +/// +/// ### controller: +/// {@template controller} +/// Use a [PhoneController] for PhoneFormField when you need to dynamically +/// change the value. +/// +/// Whenever the user modifies the phone field with an +/// associated [controller], the phone field updates +/// the display value and the controller notifies its listeners. +/// {@endtemplate} +/// +/// You can also use an [initialValue]: +/// {@template initialValue} +/// The initial value used. +/// +/// Only one of [initialValue] and [controller] can be specified. +/// If [controller] is specified the [initialValue] will be +/// the first value of the [PhoneController] +/// {@endtemplate} +class PhoneFormField extends FormField { + /// {@macro controller} + final PhoneController? controller; + + final bool shouldFormat; + + /// callback called when the input value changes + final Function(PhoneNumber)? onChanged; + + /// country that is displayed when there is no value + final IsoCode defaultCountry; + + /// the focusNode of the national number + final FocusNode? focusNode; + + /// how to display the country selection + final CountrySelectorNavigator countrySelectorNavigator; + + /// padding inside country button, + /// this can be used to align the country button with the phone number + /// and is mostly useful when using [isCountryButtonPersistent] as true. + final EdgeInsets? countryButtonPadding; + + /// whether the user can select a new country when pressing the country button + final bool isCountrySelectionEnabled; + + /// This controls wether the country button is alway shown or is hidden by + /// the label when the national number is empty. In flutter terms this controls + /// whether the country button is shown as a prefix or prefixIcon inside + /// the text field. + final bool isCountryButtonPersistent; + + /// show Dial Code or not in the country button + final bool showDialCode; + + /// show selected iso code or not in the country button + final bool showIsoCodeInInput; + + /// The size of the flag inside the country button + final double flagSize; + + /// whether the flag is shown inside the country button + final bool showFlagInInput; + + // textfield inputs + final InputDecoration decoration; + final TextInputType keyboardType; + final TextInputAction? textInputAction; + final TextStyle? style; + final TextStyle? countryCodeStyle; + final StrutStyle? strutStyle; + final TextAlign textAlign; + final TextAlignVertical? textAlignVertical; + final bool autofocus; + final String obscuringCharacter; + final bool obscureText; + final bool autocorrect; + final SmartDashesType? smartDashesType; + final SmartQuotesType? smartQuotesType; + final bool enableSuggestions; + final Widget Function(BuildContext, EditableTextState)? contextMenuBuilder; + final bool? showCursor; + final VoidCallback? onEditingComplete; + final ValueChanged? onSubmitted; + final AppPrivateCommandCallback? onAppPrivateCommand; + final Function(PointerDownEvent)? onTapOutside; + final double cursorWidth; + final double? cursorHeight; + final Radius? cursorRadius; + final Color? cursorColor; + final ui.BoxHeightStyle selectionHeightStyle; + final ui.BoxWidthStyle selectionWidthStyle; + final Brightness? keyboardAppearance; + final EdgeInsets scrollPadding; + final bool enableInteractiveSelection; + final TextSelectionControls? selectionControls; + bool get selectionEnabled => enableInteractiveSelection; + final MouseCursor? mouseCursor; + final ScrollPhysics? scrollPhysics; + final ScrollController? scrollController; + final Iterable? autofillHints; + final bool enableIMEPersonalizedLearning; + final List? inputFormatters; + + PhoneFormField({ + super.key, + this.controller, + @Deprecated('This is now always true and has no effect anymore') + this.shouldFormat = true, + this.onChanged, + this.focusNode, + this.showFlagInInput = true, + this.countrySelectorNavigator = const CountrySelectorNavigator.page(), + @Deprecated( + 'Use [initialValue] or [controller] to set the initial phone number') + this.defaultCountry = IsoCode.US, + this.flagSize = 16, + this.isCountrySelectionEnabled = true, + bool? isCountryButtonPersistent, + @Deprecated('Use [isCountryButtonPersistent]') + bool? isCountryChipPersistent, + this.showDialCode = true, + this.showIsoCodeInInput = false, + this.countryButtonPadding, + // form field inputs + super.validator, + super.initialValue, + super.onSaved, + super.autovalidateMode = AutovalidateMode.onUserInteraction, + super.restorationId, + super.enabled = true, + // textfield inputs + this.decoration = const InputDecoration(), + this.keyboardType = TextInputType.phone, + this.textInputAction, + this.style, + this.countryCodeStyle, + this.strutStyle, + this.textAlign = TextAlign.start, + this.textAlignVertical, + this.autofocus = false, + this.obscuringCharacter = '*', + this.obscureText = false, + this.autocorrect = true, + this.smartDashesType, + this.smartQuotesType, + this.enableSuggestions = true, + this.contextMenuBuilder, + this.showCursor, + this.onEditingComplete, + this.onSubmitted, + this.onAppPrivateCommand, + this.onTapOutside, + this.inputFormatters, + this.cursorWidth = 2.0, + this.cursorHeight, + this.cursorRadius, + this.cursorColor, + this.selectionHeightStyle = ui.BoxHeightStyle.tight, + this.selectionWidthStyle = ui.BoxWidthStyle.tight, + this.keyboardAppearance, + this.scrollPadding = const EdgeInsets.all(20.0), + this.enableInteractiveSelection = true, + this.selectionControls, + this.mouseCursor, + this.scrollPhysics, + this.scrollController, + this.autofillHints, + this.enableIMEPersonalizedLearning = true, + }) : assert( + initialValue == null || controller == null, + 'One of initialValue or controller can be specified at a time', + ), + isCountryButtonPersistent = + isCountryButtonPersistent ?? isCountryChipPersistent ?? true, + super( + builder: (state) => (state as PhoneFormFieldState).builder(), + ); + + @override + PhoneFormFieldState createState() => PhoneFormFieldState(); +} diff --git a/lib/src/phone_form_field_state.dart b/lib/src/phone_form_field_state.dart new file mode 100644 index 00000000..6868bcae --- /dev/null +++ b/lib/src/phone_form_field_state.dart @@ -0,0 +1,200 @@ +part of 'phone_form_field.dart'; + +class PhoneFormFieldState extends FormFieldState { + late final PhoneController controller; + late final FocusNode focusNode; + + @override + PhoneFormField get widget => super.widget as PhoneFormField; + + @override + void initState() { + super.initState(); + + controller = widget.controller ?? + PhoneController( + initialValue: widget.initialValue ?? + // remove this line when defaultCountry is removed (now deprecated) + // and just use the US default country if no initialValue is set + PhoneNumber(isoCode: widget.defaultCountry, nsn: ''), + ); + controller.addListener(_onControllerValueChanged); + focusNode = widget.focusNode ?? FocusNode(); + _preloadFlagsInMemory(); + } + + void _preloadFlagsInMemory() { + CircleFlag.preload(IsoCode.values.map((isoCode) => isoCode.name).toList()); + } + + @override + void dispose() { + controller.removeListener(_onControllerValueChanged); + super.dispose(); + } + + // overriding method from FormFieldState + @override + void didChange(PhoneNumber? value) { + if (value == null) { + return; + } + super.didChange(value); + + if (controller.value != value) { + controller.value = value; + } + } + + void _onControllerValueChanged() { + /// when the controller changes because the user called + /// controller.value = x we need to change the value of the form field + if (controller.value != value) { + didChange(controller.value); + } + } + + void _onTextfieldChanged(String value) { + controller.changeNationalNumber(value); + didChange(controller.value); + widget.onChanged?.call(controller.value); + } + + // overriding method of form field, so when the user resets a form, + // and subsequently every form field descendant, the controller is updated + @override + void reset() { + controller.value = controller.initialValue; + super.reset(); + } + + void _selectCountry() async { + if (!widget.isCountrySelectionEnabled) { + return; + } + final selected = await widget.countrySelectorNavigator.show(context); + if (selected != null) { + controller.changeCountry(selected); + } + focusNode.requestFocus(); + } + + Widget builder() { + final localization = PhoneFieldLocalization.of(context); + return Semantics( + label: localization.enterPhoneNumber, + child: TextField( + decoration: widget.decoration.copyWith( + errorText: errorText, + prefixIcon: widget.isCountryButtonPersistent + ? _getCountryCodeChip(context) + : null, + prefix: widget.isCountryButtonPersistent + ? null + : _getCountryCodeChip(context), + ), + controller: controller._formattedNationalNumberController, + focusNode: focusNode, + enabled: widget.enabled, + inputFormatters: widget.inputFormatters ?? + [ + FilteringTextInputFormatter.allow(RegExp( + '[${AllowedCharacters.plus}${AllowedCharacters.digits}${AllowedCharacters.punctuation}]')), + ], + onChanged: _onTextfieldChanged, + autofillHints: widget.autofillHints, + keyboardType: widget.keyboardType, + textInputAction: widget.textInputAction, + style: widget.style, + strutStyle: widget.strutStyle, + textAlign: widget.textAlign, + textAlignVertical: widget.textAlignVertical, + autofocus: widget.autofocus, + obscuringCharacter: widget.obscuringCharacter, + obscureText: widget.obscureText, + autocorrect: widget.autocorrect, + smartDashesType: widget.smartDashesType, + smartQuotesType: widget.smartQuotesType, + enableSuggestions: widget.enableSuggestions, + showCursor: widget.showCursor, + onEditingComplete: widget.onEditingComplete, + onAppPrivateCommand: widget.onAppPrivateCommand, + cursorWidth: widget.cursorWidth, + cursorHeight: widget.cursorHeight, + cursorRadius: widget.cursorRadius, + cursorColor: widget.cursorColor, + onTapOutside: widget.onTapOutside, + selectionHeightStyle: widget.selectionHeightStyle, + selectionWidthStyle: widget.selectionWidthStyle, + keyboardAppearance: widget.keyboardAppearance, + scrollPadding: widget.scrollPadding, + enableInteractiveSelection: widget.enableInteractiveSelection, + selectionControls: widget.selectionControls, + mouseCursor: widget.mouseCursor, + scrollController: widget.scrollController, + scrollPhysics: widget.scrollPhysics, + restorationId: widget.restorationId, + enableIMEPersonalizedLearning: widget.enableIMEPersonalizedLearning, + ), + ); + } + + Widget _getCountryCodeChip(BuildContext context) { + return AnimatedBuilder( + animation: controller, + builder: (context, _) => CountryButton( + key: const ValueKey('country-code-chip'), + isoCode: controller.value.isoCode, + onTap: widget.enabled ? _selectCountry : null, + padding: _computeCountryButtonPadding(context), + showFlag: widget.showFlagInInput, + showIsoCode: widget.showIsoCodeInInput, + showDialCode: widget.showDialCode, + textStyle: widget.countryCodeStyle ?? + widget.decoration.labelStyle ?? + TextStyle( + fontSize: 16, + color: Theme.of(context).textTheme.bodySmall?.color, + ), + flagSize: widget.flagSize, + enabled: widget.enabled, + ), + ); + } + + /// computes the padding inside the country button + /// this is used to align the flag and dial code with the rest + /// of the phone number. + /// The padding must work for this matrix: + /// - has label or not + /// - is border underline or outline + /// - is country button shown as a prefix or prefixIcon (isCountryChipPersistent) + /// - text direction + EdgeInsets _computeCountryButtonPadding(BuildContext context) { + final countryButtonPadding = widget.countryButtonPadding; + final isUnderline = widget.decoration.border is UnderlineInputBorder; + final hasLabel = + widget.decoration.label != null || widget.decoration.labelText != null; + final isLtr = Directionality.of(context) == TextDirection.ltr; + + EdgeInsets padding = isLtr + ? const EdgeInsets.fromLTRB(12, 16, 4, 16) + : const EdgeInsets.fromLTRB(4, 16, 12, 16); + if (countryButtonPadding != null) { + padding = countryButtonPadding; + } else if (!widget.isCountryButtonPersistent) { + padding = isLtr + ? const EdgeInsets.only(right: 4, left: 12) + : const EdgeInsets.only(left: 4, right: 12); + } else if (isUnderline && hasLabel) { + padding = isLtr + ? const EdgeInsets.fromLTRB(12, 25, 4, 7) + : const EdgeInsets.fromLTRB(4, 25, 12, 7); + } else if (isUnderline && !hasLabel) { + padding = isLtr + ? const EdgeInsets.fromLTRB(12, 2, 4, 0) + : const EdgeInsets.fromLTRB(4, 2, 12, 0); + } + return padding; + } +} diff --git a/lib/src/constants/patterns.dart b/lib/src/validation/allowed_characters.dart similarity index 90% rename from lib/src/constants/patterns.dart rename to lib/src/validation/allowed_characters.dart index fa0833a0..78871b29 100644 --- a/lib/src/constants/patterns.dart +++ b/lib/src/validation/allowed_characters.dart @@ -1,4 +1,4 @@ -class Patterns { +class AllowedCharacters { /// accepted punctuation within a phone number static const String punctuation = r' ()\[\]\-\.\/\\'; static const String plus = r'\++'; diff --git a/lib/src/validation/localized_validation_error.dart b/lib/src/validation/localized_validation_error.dart new file mode 100644 index 00000000..7da57585 --- /dev/null +++ b/lib/src/validation/localized_validation_error.dart @@ -0,0 +1,3 @@ +// we do not have access to context inside a validator, +// thus we return an error code, and localize that code in the view +// where it is easier to access the context \ No newline at end of file diff --git a/lib/src/validation/phone_validator.dart b/lib/src/validation/phone_validator.dart index 2f62ff45..30a88de9 100644 --- a/lib/src/validation/phone_validator.dart +++ b/lib/src/validation/phone_validator.dart @@ -1,8 +1,9 @@ +import 'package:flutter/material.dart'; import 'package:phone_form_field/phone_form_field.dart'; typedef PhoneNumberInputValidator = String? Function(PhoneNumber? phoneNumber); -class PhoneValidator { +abstract class PhoneValidator { /// allow to compose several validators /// Note that validator list order is important as first /// validator failing will return according message. @@ -20,174 +21,107 @@ class PhoneValidator { }; } - static PhoneNumberInputValidator required({ + static PhoneNumberInputValidator required( + BuildContext context, { /// custom error message String? errorText, }) { return (PhoneNumber? valueCandidate) { if (valueCandidate == null || (valueCandidate.nsn.trim().isEmpty)) { - return errorText ?? 'requiredPhoneNumber'; + return errorText ?? + PhoneFieldLocalization.of(context).requiredPhoneNumber; } return null; }; } - static PhoneNumberInputValidator invalid({ + static PhoneNumberInputValidator valid( + BuildContext context, { /// custom error message String? errorText, - - /// determine whether a missing value should be reported as invalid - bool allowEmpty = true, - }) => - valid(errorText: errorText, allowEmpty: allowEmpty); - - static PhoneNumberInputValidator valid({ - /// custom error message - String? errorText, - - /// determine whether a missing value should be reported as invalid - bool allowEmpty = true, }) { - return (PhoneNumber? valueCandidate) { - if (valueCandidate == null && !allowEmpty) { - return errorText ?? 'invalidPhoneNumber'; - } if (valueCandidate != null && - (!allowEmpty || valueCandidate.nsn.isNotEmpty) && + valueCandidate.nsn.isNotEmpty && !valueCandidate.isValid()) { - return errorText ?? 'invalidPhoneNumber'; + return errorText ?? + PhoneFieldLocalization.of(context).invalidPhoneNumber; } return null; }; } - @Deprecated('use validType, invalid type naming was backward') - static PhoneNumberInputValidator invalidType( - /// expected phonetype - PhoneNumberType expectedType, { - /// custom error message - String? errorText, - - /// determine whether a missing value should be reported as invalid - bool allowEmpty = true, - }) => - validType( - expectedType, - errorText: errorText, - allowEmpty: allowEmpty, - ); - static PhoneNumberInputValidator validType( + BuildContext context, + /// expected phonetype PhoneNumberType expectedType, { /// custom error message String? errorText, - - /// determine whether a missing value should be reported as invalid - bool allowEmpty = true, }) { - final defaultMessage = expectedType == PhoneNumberType.mobile - ? 'invalidMobilePhoneNumber' - : 'invalidFixedLinePhoneNumber'; return (PhoneNumber? valueCandidate) { if (valueCandidate != null && - (!allowEmpty || valueCandidate.nsn.isNotEmpty) && + valueCandidate.nsn.isNotEmpty && !valueCandidate.isValid(type: expectedType)) { - return errorText ?? defaultMessage; + if (expectedType == PhoneNumberType.mobile) { + return errorText ?? + PhoneFieldLocalization.of(context).invalidMobilePhoneNumber; + } else if (expectedType == PhoneNumberType.fixedLine) { + return errorText ?? + PhoneFieldLocalization.of(context).invalidFixedLinePhoneNumber; + } + return errorText ?? + PhoneFieldLocalization.of(context).invalidPhoneNumber; } return null; }; } - @Deprecated('use validFixedLine, naming was backward') - static PhoneNumberInputValidator invalidFixedLine({ - /// custom error message - String? errorText, - - /// determine whether a missing value should be reported as invalid - bool allowEmpty = true, - }) => - validFixedLine(errorText: errorText, allowEmpty: allowEmpty); - /// convenience shortcut method for /// invalidType(context, PhoneNumberType.fixedLine, ...) - static PhoneNumberInputValidator validFixedLine({ + static PhoneNumberInputValidator validFixedLine( + BuildContext context, { /// custom error message String? errorText, - - /// determine whether a missing value should be reported as invalid - bool allowEmpty = true, }) => validType( + context, PhoneNumberType.fixedLine, errorText: errorText, - allowEmpty: allowEmpty, - ); - - @Deprecated('Use validMobile, naming was backward') - static PhoneNumberInputValidator invalidMobile({ - /// custom error message - String? errorText, - - /// determine whether a missing value should be reported as invalid - bool allowEmpty = true, - }) => - validMobile( - errorText: errorText, - allowEmpty: allowEmpty, ); /// convenience shortcut method for /// invalidType(context, PhoneNumberType.mobile, ...) - static PhoneNumberInputValidator validMobile({ + static PhoneNumberInputValidator validMobile( + BuildContext context, { /// custom error message String? errorText, - - /// determine whether a missing value should be reported as invalid - bool allowEmpty = true, }) => validType( + context, PhoneNumberType.mobile, errorText: errorText, - allowEmpty: allowEmpty, - ); - - @Deprecated('Use valid country, naming was backward') - static invalidCountry( - /// list of valid country isocode - List expectedCountries, { - /// custom error message - String? errorText, - - /// determine whether a missing value should be reported as invalid - bool allowEmpty = true, - }) => - validCountry( - expectedCountries, - errorText: errorText, - allowEmpty: allowEmpty, ); static PhoneNumberInputValidator validCountry( + BuildContext context, + /// list of valid country isocode List expectedCountries, { /// custom error message String? errorText, - - /// determine whether a missing value should be reported as invalid - bool allowEmpty = true, }) { return (PhoneNumber? valueCandidate) { if (valueCandidate != null && - (!allowEmpty || valueCandidate.nsn.isNotEmpty) && + (valueCandidate.nsn.isNotEmpty) && !expectedCountries.contains(valueCandidate.isoCode)) { - return errorText ?? 'invalidCountry'; + return errorText ?? PhoneFieldLocalization.of(context).invalidCountry; } return null; }; } + @Deprecated('Use null instead') static PhoneNumberInputValidator get none => (PhoneNumber? valueCandidate) { return null; }; diff --git a/lib/src/validation/validator_translator.dart b/lib/src/validation/validator_translator.dart deleted file mode 100644 index a8ee7af4..00000000 --- a/lib/src/validation/validator_translator.dart +++ /dev/null @@ -1,45 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:phone_form_field/l10n/generated/phone_field_localization.dart'; - -typedef _PhoneValidatorMessageDelegate = String? Function(BuildContext context); - -class ValidatorTranslator { - static final Map _validatorMessages = - { - 'invalidPhoneNumber': (ctx) => - PhoneFieldLocalization.of(ctx)?.invalidPhoneNumber, - 'invalidCountry': (ctx) => PhoneFieldLocalization.of(ctx)?.invalidCountry, - 'invalidMobilePhoneNumber': (ctx) => - PhoneFieldLocalization.of(ctx)?.invalidMobilePhoneNumber, - 'invalidFixedLinePhoneNumber': (ctx) => - PhoneFieldLocalization.of(ctx)?.invalidFixedLinePhoneNumber, - 'requiredPhoneNumber': (ctx) => - PhoneFieldLocalization.of(ctx)?.requiredPhoneNumber, - }; - - static final Map _defaults = { - 'invalidPhoneNumber': 'Invalid phone number', - 'invalidCountry': 'Invalid country', - 'invalidMobilePhoneNumber': 'Invalid mobile phone number', - 'invalidFixedLinePhoneNumber': 'Invalid fixedline phone number', - 'requiredPhoneNumber': 'required phone number', - }; - - /// Localised name depending on the current application locale - /// If you have many LocalisedName to handle in a same context, consider - /// supplying the second optional PhoneFieldLocalization to avoid - /// walking up the widget to get [PhoneFieldLocalization] instance - /// for each call. - static String message( - BuildContext context, - String key, - ) { - String? name = getMessageFromKey(context, key); - return name ?? _defaults[key] ?? key; - } - - static String? getMessageFromKey(BuildContext ctx, String key) { - final _PhoneValidatorMessageDelegate? translateFn = _validatorMessages[key]; - return translateFn?.call(ctx); - } -} diff --git a/lib/src/widgets/country_code_chip.dart b/lib/src/widgets/country_code_chip.dart deleted file mode 100644 index 97e35f50..00000000 --- a/lib/src/widgets/country_code_chip.dart +++ /dev/null @@ -1,57 +0,0 @@ -import 'package:circle_flags/circle_flags.dart'; -import 'package:flutter/material.dart'; -import 'package:phone_numbers_parser/phone_numbers_parser.dart'; - -import 'country_selector/country.dart'; - -class CountryCodeChip extends StatelessWidget { - final Country country; - final bool showFlag; - final bool showDialCode; - final TextStyle textStyle; - final EdgeInsets padding; - final double flagSize; - final TextDirection? textDirection; - final bool showIsoCode; - - CountryCodeChip({ - super.key, - required IsoCode isoCode, - this.textStyle = const TextStyle(), - this.showFlag = true, - this.showDialCode = true, - this.padding = const EdgeInsets.all(20), - this.flagSize = 20, - this.textDirection, - this.showIsoCode = false, - }) : country = Country(isoCode, ''); - - @override - Widget build(BuildContext context) { - return Row( - mainAxisSize: MainAxisSize.min, - children: [ - if (showIsoCode) ...[ - Text( - country.isoCode.name, - style: textStyle, - ), - const SizedBox(width: 8), - ], - if (showFlag) ...[ - CircleFlag( - country.isoCode.name, - size: flagSize, - ), - const SizedBox(width: 8), - ], - if (showDialCode) - Text( - country.displayCountryCode, - style: textStyle, - textDirection: textDirection, - ), - ], - ); - } -} diff --git a/lib/src/widgets/country_selector/country.dart b/lib/src/widgets/country_selector/country.dart deleted file mode 100644 index cc978241..00000000 --- a/lib/src/widgets/country_selector/country.dart +++ /dev/null @@ -1,35 +0,0 @@ -import 'package:phone_numbers_parser/metadata.dart'; -import 'package:phone_numbers_parser/phone_numbers_parser.dart'; - -/// Country regroup informations for displaying a list of countries -class Country { - /// Country alpha-2 iso code - final IsoCode isoCode; - - /// localized name of the country - final String name; - - /// country dialing code to call them internationally - final String countryCode; - - /// returns "+ [countryCode]" - String get displayCountryCode => '+ $countryCode'; - - Country(this.isoCode, this.name) - : countryCode = metadataByIsoCode[isoCode]?.countryCode ?? ''; - - @override - bool operator ==(Object other) => - identical(this, other) || - other is Country && - runtimeType == other.runtimeType && - isoCode == other.isoCode; - - @override - int get hashCode => isoCode.hashCode; - - @override - String toString() { - return 'Country{isoCode: $isoCode}'; - } -} diff --git a/lib/src/widgets/country_selector/country_finder.dart b/lib/src/widgets/country_selector/country_finder.dart deleted file mode 100644 index 00788f8b..00000000 --- a/lib/src/widgets/country_selector/country_finder.dart +++ /dev/null @@ -1,81 +0,0 @@ -// responsible of searching through the country list - -import 'package:diacritic/diacritic.dart'; -import 'package:phone_form_field/phone_form_field.dart'; - -class CountryFinder { - late final List _allCountries; - late List _filteredCountries; - List get filteredCountries => _filteredCountries; - - bool get isNotEmpty => _filteredCountries.isNotEmpty; - String _searchedText = ''; - String get searchedText => _searchedText; - - CountryFinder(List allCountries, {bool sort = true}) { - _allCountries = [...allCountries]; - if (sort) { - _allCountries.sort((a, b) => a.name.compareTo(b.name)); - } - _filteredCountries = [..._allCountries]; - } - - // filter a - void filter(String txt) { - if (txt == _searchedText) { - return; - } - _searchedText = txt; - // reset search - if (txt.isEmpty) { - _filteredCountries = [..._allCountries]; - } - - // if the txt is a number we check the country code instead - final asInt = int.tryParse(txt); - final isInt = asInt != null; - if (isInt) { - // toString to remove any + in front if its an int - _filterByCountryCallingCode(txt); - } else { - _filterByName(txt); - } - } - - void _filterByCountryCallingCode(String countryCallingCode) { - int getSortPoint(Country country) => - country.countryCode == countryCallingCode ? 1 : 0; - - _filteredCountries = _allCountries - .where((country) => country.countryCode.contains(countryCallingCode)) - .toList() - // puts the closest match at the top - ..sort((a, b) => getSortPoint(b) - getSortPoint(a)); - } - - void _filterByName(String searchTxt) { - searchTxt = removeDiacritics(searchTxt.toLowerCase()); - // since we keep countries that contain the searched text, - // we need to put the countries that start with that text in front. - int getSortPoint(String name, IsoCode isoCode) { - bool isStartOfString = name.startsWith(searchTxt) || - isoCode.name.toLowerCase().startsWith(searchTxt); - return isStartOfString ? 1 : 0; - } - - int compareCountries(Country a, Country b) { - final sortPoint = - getSortPoint(b.name, b.isoCode) - getSortPoint(a.name, a.isoCode); - // sort alphabetically when comparison with search term get same result - return sortPoint == 0 ? a.name.compareTo(b.name) : sortPoint; - } - - _filteredCountries = _allCountries.where((country) { - final countryName = removeDiacritics(country.name.toLowerCase()); - return countryName.contains(searchTxt) || - country.isoCode.name.toLowerCase().contains(searchTxt); - }).toList() - // puts the ones that begin by txt first - ..sort(compareCountries); - } -} diff --git a/lib/src/widgets/country_selector/country_list.dart b/lib/src/widgets/country_selector/country_list.dart deleted file mode 100644 index 613ccff9..00000000 --- a/lib/src/widgets/country_selector/country_list.dart +++ /dev/null @@ -1,110 +0,0 @@ -import 'package:circle_flags/circle_flags.dart'; -import 'package:flutter/material.dart'; - -import '../../../l10n/generated/phone_field_localization.dart'; -import 'country.dart'; - -class CountryList extends StatelessWidget { - /// Callback function triggered when user select a country - final Function(Country) onTap; - - /// List of countries to display - final List countries; - final double flagSize; - - /// list of favorite countries to display at the top - final List favorites; - - /// proxy to the ListView.builder controller (ie: [ScrollView.controller]) - final ScrollController? scrollController; - - /// The [ScrollPhysics] of the Country List - final ScrollPhysics? scrollPhysics; - - /// whether the country dialcode should be displayed as the [ListTile.subtitle] - final bool showDialCode; - - final String? noResultMessage; - - late final List _allListElement; - - final TextStyle? subtitleStyle; - final TextStyle? titleStyle; - final FlagCache? flagCache; - - CountryList({ - super.key, - required this.countries, - required this.favorites, - required this.onTap, - required this.noResultMessage, - required this.flagCache, - this.scrollController, - this.scrollPhysics, - this.showDialCode = true, - this.flagSize = 40, - this.subtitleStyle, - this.titleStyle, - }) { - _allListElement = [ - ...favorites, - if (favorites.isNotEmpty) null, // delimiter - ...countries, - ]; - } - - @override - Widget build(BuildContext context) { - if (_allListElement.isEmpty) { - return Center( - child: Text( - noResultMessage ?? - PhoneFieldLocalization.of(context)?.noResultMessage ?? - 'No result found', - key: const ValueKey('no-result'), - ), - ); - } - return ListView.builder( - physics: scrollPhysics, - controller: scrollController, - itemCount: _allListElement.length, - itemBuilder: (BuildContext context, int index) { - final country = _allListElement[index]; - if (country == null) { - return const Divider(key: ValueKey('countryListSeparator')); - } - - return ListTile( - key: ValueKey(country.isoCode.name), - leading: CircleFlag( - country.isoCode.name, - key: ValueKey('circle-flag-${country.isoCode.name}'), - size: flagSize, - cache: flagCache, - ), - title: Align( - alignment: AlignmentDirectional.centerStart, - child: Text( - country.name, - textAlign: TextAlign.start, - style: titleStyle, - ), - ), - subtitle: showDialCode - ? Align( - alignment: AlignmentDirectional.centerStart, - child: Text( - country.displayCountryCode, - textDirection: TextDirection.ltr, - textAlign: TextAlign.start, - style: subtitleStyle, - ), - ) - : null, - onTap: () => onTap(country), - ); - }, - ); - } -} diff --git a/lib/src/widgets/country_selector/country_selector.dart b/lib/src/widgets/country_selector/country_selector.dart deleted file mode 100644 index 4771b89b..00000000 --- a/lib/src/widgets/country_selector/country_selector.dart +++ /dev/null @@ -1,167 +0,0 @@ -import 'package:circle_flags/circle_flags.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:phone_form_field/l10n/generated/phone_field_localization.dart'; -import 'package:phone_form_field/l10n/generated/phone_field_localization_en.dart'; -import 'package:phone_form_field/src/widgets/country_selector/localized_country_registry.dart'; -import 'package:phone_numbers_parser/phone_numbers_parser.dart'; - -import 'country_finder.dart'; -import 'country.dart'; -import 'country_list.dart'; -import 'search_box.dart'; - -class CountrySelector extends StatefulWidget { - /// List of countries to display in the selector - /// Value optional in constructor. - /// when omitted, the full country list is displayed - final List? countries; - - /// Callback triggered when user select a country - final ValueChanged onCountrySelected; - - /// ListView.builder scroll controller (ie: [ScrollView.controller]) - final ScrollController? scrollController; - - /// The [ScrollPhysics] of the Country List - final ScrollPhysics? scrollPhysics; - - /// Determine the countries to be displayed on top of the list - /// Check [addFavoritesSeparator] property to enable/disable adding a - /// list divider between favorites and others defaults countries - final List favoriteCountries; - - /// Whether to add a list divider between favorites & defaults - /// countries. - final bool addFavoritesSeparator; - - /// Whether to show the country country code (ie: +1 / +33 /...) - /// as a listTile subtitle - final bool showCountryCode; - - /// The message displayed instead of the list when the search has no results - final String? noResultMessage; - - /// whether the search input is auto focussed - final bool searchAutofocus; - - /// The [TextStyle] of the country subtitle - final TextStyle? subtitleStyle; - - /// The [TextStyle] of the country title - final TextStyle? titleStyle; - - /// The [InputDecoration] of the Search Box - final InputDecoration? searchBoxDecoration; - - /// The [TextStyle] of the Search Box - final TextStyle? searchBoxTextStyle; - - /// The [Color] of the Search Icon in the Search Box - final Color? searchBoxIconColor; - final double flagSize; - final FlagCache flagCache; - - const CountrySelector({ - super.key, - required this.onCountrySelected, - required this.flagCache, - this.scrollController, - this.scrollPhysics, - this.addFavoritesSeparator = true, - this.showCountryCode = false, - this.noResultMessage, - this.favoriteCountries = const [], - this.countries, - this.searchAutofocus = kIsWeb, - this.subtitleStyle, - this.titleStyle, - this.searchBoxDecoration, - this.searchBoxTextStyle, - this.searchBoxIconColor, - this.flagSize = 40, - }); - - @override - CountrySelectorState createState() => CountrySelectorState(); -} - -class CountrySelectorState extends State { - late CountryFinder _countryFinder; - late CountryFinder _favoriteCountryFinder; - - @override - didChangeDependencies() { - super.didChangeDependencies(); - final localization = - PhoneFieldLocalization.of(context) ?? PhoneFieldLocalizationEn(); - final isoCodes = widget.countries ?? IsoCode.values; - final countryRegistry = LocalizedCountryRegistry.cached(localization); - final notFavoriteCountries = - countryRegistry.whereIsoIn(isoCodes, omit: widget.favoriteCountries); - final favoriteCountries = - countryRegistry.whereIsoIn(widget.favoriteCountries); - _countryFinder = CountryFinder(notFavoriteCountries); - _favoriteCountryFinder = CountryFinder(favoriteCountries, sort: false); - } - - _onSearch(String searchedText) { - _countryFinder.filter(searchedText); - _favoriteCountryFinder.filter(searchedText); - setState(() {}); - } - - onSubmitted() { - if (_favoriteCountryFinder.filteredCountries.isNotEmpty) { - widget.onCountrySelected(_favoriteCountryFinder.filteredCountries.first); - } else if (_countryFinder.filteredCountries.isNotEmpty) { - widget.onCountrySelected(_countryFinder.filteredCountries.first); - } - } - - @override - Widget build(BuildContext context) { - return Column( - children: [ - const SizedBox(height: 8), - Container( - width: 50, - height: 4, - decoration: BoxDecoration( - color: Theme.of(context).colorScheme.secondary, - borderRadius: BorderRadius.circular(8), - ), - ), - SizedBox( - height: 70, - width: double.infinity, - child: SearchBox( - autofocus: widget.searchAutofocus, - onChanged: _onSearch, - onSubmitted: onSubmitted, - decoration: widget.searchBoxDecoration, - style: widget.searchBoxTextStyle, - searchIconColor: widget.searchBoxIconColor, - ), - ), - const SizedBox(height: 16), - const Divider(height: 0, thickness: 1.2), - Flexible( - child: CountryList( - favorites: _favoriteCountryFinder.filteredCountries, - countries: _countryFinder.filteredCountries, - showDialCode: widget.showCountryCode, - onTap: widget.onCountrySelected, - flagSize: widget.flagSize, - scrollController: widget.scrollController, - scrollPhysics: widget.scrollPhysics, - noResultMessage: widget.noResultMessage, - titleStyle: widget.titleStyle, - subtitleStyle: widget.subtitleStyle, - flagCache: widget.flagCache, - ), - ), - ], - ); - } -} diff --git a/lib/src/widgets/country_selector/country_selector_page.dart b/lib/src/widgets/country_selector/country_selector_page.dart deleted file mode 100644 index 7a322c36..00000000 --- a/lib/src/widgets/country_selector/country_selector_page.dart +++ /dev/null @@ -1,143 +0,0 @@ -import 'package:circle_flags/circle_flags.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:phone_form_field/l10n/generated/phone_field_localization.dart'; -import 'package:phone_form_field/l10n/generated/phone_field_localization_en.dart'; -import 'package:phone_form_field/src/widgets/country_selector/localized_country_registry.dart'; -import 'package:phone_numbers_parser/phone_numbers_parser.dart'; - -import 'country_finder.dart'; -import 'country.dart'; -import 'country_list.dart'; - -class CountrySelectorSearchDelegate extends SearchDelegate { - late CountryFinder _countryFinder; - late CountryFinder _favoriteCountryFinder; - - /// List of countries to display in the selector - /// Value optional in constructor. - /// when omitted, the full country list is displayed - final List countriesIso; - - /// Callback triggered when user select a country - final ValueChanged onCountrySelected; - - /// ListView.builder scroll controller (ie: [ScrollView.controller]) - final ScrollController? scrollController; - - /// The [ScrollPhysics] of the Country List - final ScrollPhysics? scrollPhysics; - - /// Determine the countries to be displayed on top of the list - /// Check [addFavoritesSeparator] property to enable/disable adding a - /// list divider between favorites and others defaults countries - final List favoriteCountriesIso; - - /// Whether to add a list divider between favorites & defaults - /// countries. - final bool addFavoritesSeparator; - - /// Whether to show the country country code (ie: +1 / +33 /...) - /// as a listTile subtitle - final bool showCountryCode; - - /// The message displayed instead of the list when the search has no results - final String? noResultMessage; - - /// whether the search input is auto focussed - final bool searchAutofocus; - final double flagSize; - - LocalizedCountryRegistry? _localizedCountryRegistry; - - /// Override default title TextStyle - final TextStyle? titleStyle; - - /// Override default subtitle TextStyle - final TextStyle? subtitleStyle; - - final FlagCache? flagCache; - - CountrySelectorSearchDelegate({ - Key? key, - required this.onCountrySelected, - required this.flagCache, - this.scrollController, - this.scrollPhysics, - this.addFavoritesSeparator = true, - this.showCountryCode = false, - this.noResultMessage, - List favoriteCountries = const [], - List? countries, - this.searchAutofocus = kIsWeb, - this.flagSize = 40, - this.titleStyle, - this.subtitleStyle, - }) : countriesIso = countries ?? IsoCode.values, - favoriteCountriesIso = favoriteCountries; - - @override - List? buildActions(BuildContext context) { - return [ - IconButton( - onPressed: () => query = '', - icon: const Icon(Icons.clear), - ), - ]; - } - - void _initIfRequired(BuildContext context) { - final localization = - PhoneFieldLocalization.of(context) ?? PhoneFieldLocalizationEn(); - final countryRegistry = LocalizedCountryRegistry.cached(localization); - // if localization has not changed no need to do anything - if (countryRegistry == _localizedCountryRegistry) { - return; - } - _localizedCountryRegistry = countryRegistry; - final notFavoriteCountries = countryRegistry.whereIsoIn( - countriesIso, - omit: favoriteCountriesIso, - ); - final favoriteCountries = countryRegistry.whereIsoIn(favoriteCountriesIso); - _countryFinder = CountryFinder(notFavoriteCountries); - _favoriteCountryFinder = CountryFinder(favoriteCountries, sort: false); - } - - void _updateList() { - _countryFinder.filter(query); - _favoriteCountryFinder.filter(query); - } - - @override - Widget? buildLeading(BuildContext context) { - return BackButton( - onPressed: () => Navigator.of(context).pop(), - ); - } - - @override - Widget buildSuggestions(BuildContext context) { - _initIfRequired(context); - _updateList(); - - return CountryList( - favorites: _favoriteCountryFinder.filteredCountries, - countries: _countryFinder.filteredCountries, - showDialCode: showCountryCode, - onTap: onCountrySelected, - flagSize: flagSize, - scrollController: scrollController, - scrollPhysics: scrollPhysics, - noResultMessage: noResultMessage, - titleStyle: titleStyle, - subtitleStyle: subtitleStyle, - flagCache: flagCache, - ); - } - - @override - Widget buildResults(BuildContext context) { - return buildSuggestions(context); - } -} diff --git a/lib/src/widgets/country_selector/localized_country_registry.dart b/lib/src/widgets/country_selector/localized_country_registry.dart deleted file mode 100644 index 3418e157..00000000 --- a/lib/src/widgets/country_selector/localized_country_registry.dart +++ /dev/null @@ -1,287 +0,0 @@ -import 'package:phone_form_field/phone_form_field.dart'; - -// NOTE: this is ugly, something else needs to be used. -// If someone has the hearth for some refactor... - -/// this saves the localized countries for each country -/// for a given language in a cache, so it does not -/// have to be recreated - -class LocalizedCountryRegistry { - final PhoneFieldLocalization _localization; - - static LocalizedCountryRegistry? _instance; - - late final Map _localizedCountries = Map.fromIterable( - // remove iso codes that do not have a traduction yet.. - IsoCode.values.where((iso) => _names.containsKey(iso)), - value: (isoCode) => Country(isoCode, _names[isoCode]!), - ); - - LocalizedCountryRegistry._(this._localization); - - factory LocalizedCountryRegistry.cached(PhoneFieldLocalization localization) { - final instance = _instance; - if (instance != null && instance._localization == localization) { - return instance; - } - return LocalizedCountryRegistry._(localization); - } - - Country? find(IsoCode isoCode) => _localizedCountries[isoCode]; - - /// gets localized countries from isocodes - List whereIsoIn( - List isoCodes, { - List omit = const [], - }) { - final omitSet = Set.from(omit); - return isoCodes - .where((isoCode) => !omitSet.contains(isoCode)) - .where((isoCode) => _localizedCountries.containsKey(isoCode)) - .map((iso) => _localizedCountries[iso]!) - .toList(); - } - - late final Map _names = { - IsoCode.AC: _localization.ac_, - IsoCode.AD: _localization.ad_, - IsoCode.AE: _localization.ae_, - IsoCode.AF: _localization.af_, - IsoCode.AG: _localization.ag_, - IsoCode.AI: _localization.ai_, - IsoCode.AL: _localization.al_, - IsoCode.AM: _localization.am_, - IsoCode.AO: _localization.ao_, - IsoCode.AR: _localization.ar_, - IsoCode.AS: _localization.as_, - IsoCode.AT: _localization.at_, - IsoCode.AU: _localization.au_, - IsoCode.AW: _localization.aw_, - IsoCode.AX: _localization.ax_, - IsoCode.AZ: _localization.az_, - IsoCode.BA: _localization.ba_, - IsoCode.BB: _localization.bb_, - IsoCode.BD: _localization.bd_, - IsoCode.BE: _localization.be_, - IsoCode.BF: _localization.bf_, - IsoCode.BG: _localization.bg_, - IsoCode.BH: _localization.bh_, - IsoCode.BI: _localization.bi_, - IsoCode.BJ: _localization.bj_, - IsoCode.BL: _localization.bl_, - IsoCode.BM: _localization.bm_, - IsoCode.BN: _localization.bn_, - IsoCode.BO: _localization.bo_, - IsoCode.BQ: _localization.bq_, - IsoCode.BR: _localization.br_, - IsoCode.BS: _localization.bs_, - IsoCode.BT: _localization.bt_, - IsoCode.BW: _localization.bw_, - IsoCode.BY: _localization.by_, - IsoCode.BZ: _localization.bz_, - IsoCode.CA: _localization.ca_, - IsoCode.CC: _localization.cc_, - IsoCode.CD: _localization.cd_, - IsoCode.CF: _localization.cf_, - IsoCode.CG: _localization.cg_, - IsoCode.CH: _localization.ch_, - IsoCode.CI: _localization.ci_, - IsoCode.CK: _localization.ck_, - IsoCode.CL: _localization.cl_, - IsoCode.CM: _localization.cm_, - IsoCode.CN: _localization.cn_, - IsoCode.CO: _localization.co_, - IsoCode.CR: _localization.cr_, - IsoCode.CU: _localization.cu_, - IsoCode.CV: _localization.cv_, - IsoCode.CX: _localization.cx_, - IsoCode.CY: _localization.cy_, - IsoCode.CZ: _localization.cz_, - IsoCode.DE: _localization.de_, - IsoCode.DJ: _localization.dj_, - IsoCode.DK: _localization.dk_, - IsoCode.DM: _localization.dm_, - IsoCode.DO: _localization.do_, - IsoCode.DZ: _localization.dz_, - IsoCode.EC: _localization.ec_, - IsoCode.EE: _localization.ee_, - IsoCode.EG: _localization.eg_, - IsoCode.ER: _localization.er_, - IsoCode.ES: _localization.es_, - IsoCode.ET: _localization.et_, - IsoCode.FI: _localization.fi_, - IsoCode.FJ: _localization.fj_, - IsoCode.FK: _localization.fk_, - IsoCode.FM: _localization.fm_, - IsoCode.FO: _localization.fo_, - IsoCode.FR: _localization.fr_, - IsoCode.GA: _localization.ga_, - IsoCode.GB: _localization.gb_, - IsoCode.GD: _localization.gd_, - IsoCode.GE: _localization.ge_, - IsoCode.GF: _localization.gf_, - IsoCode.GG: _localization.gg_, - IsoCode.GH: _localization.gh_, - IsoCode.GI: _localization.gi_, - IsoCode.GL: _localization.gl_, - IsoCode.GM: _localization.gm_, - IsoCode.GN: _localization.gn_, - IsoCode.GP: _localization.gp_, - IsoCode.GQ: _localization.gq_, - IsoCode.GR: _localization.gr_, - IsoCode.GT: _localization.gt_, - IsoCode.GU: _localization.gu_, - IsoCode.GW: _localization.gw_, - IsoCode.GY: _localization.gy_, - IsoCode.HK: _localization.hk_, - IsoCode.HN: _localization.hn_, - IsoCode.HR: _localization.hr_, - IsoCode.HT: _localization.ht_, - IsoCode.HU: _localization.hu_, - IsoCode.ID: _localization.id_, - IsoCode.IE: _localization.ie_, - IsoCode.IL: _localization.il_, - IsoCode.IM: _localization.im_, - IsoCode.IN: _localization.in_, - IsoCode.IO: _localization.io_, - IsoCode.IQ: _localization.iq_, - IsoCode.IR: _localization.ir_, - IsoCode.IS: _localization.is_, - IsoCode.IT: _localization.it_, - IsoCode.JE: _localization.je_, - IsoCode.JM: _localization.jm_, - IsoCode.JO: _localization.jo_, - IsoCode.JP: _localization.jp_, - IsoCode.KE: _localization.ke_, - IsoCode.KG: _localization.kg_, - IsoCode.KH: _localization.kh_, - IsoCode.KI: _localization.ki_, - IsoCode.KM: _localization.km_, - IsoCode.KN: _localization.kn_, - IsoCode.KP: _localization.kp_, - IsoCode.KR: _localization.kr_, - IsoCode.KW: _localization.kw_, - IsoCode.KY: _localization.ky_, - IsoCode.KZ: _localization.kz_, - IsoCode.LA: _localization.la_, - IsoCode.LB: _localization.lb_, - IsoCode.LC: _localization.lc_, - IsoCode.LI: _localization.li_, - IsoCode.LK: _localization.lk_, - IsoCode.LR: _localization.lr_, - IsoCode.LS: _localization.ls_, - IsoCode.LT: _localization.lt_, - IsoCode.LU: _localization.lu_, - IsoCode.LV: _localization.lv_, - IsoCode.LY: _localization.ly_, - IsoCode.MA: _localization.ma_, - IsoCode.MC: _localization.mc_, - IsoCode.MD: _localization.md_, - IsoCode.ME: _localization.me_, - IsoCode.MF: _localization.mf_, - IsoCode.MG: _localization.mg_, - IsoCode.MH: _localization.mh_, - IsoCode.MK: _localization.mk_, - IsoCode.ML: _localization.ml_, - IsoCode.MM: _localization.mm_, - IsoCode.MN: _localization.mn_, - IsoCode.MO: _localization.mo_, - IsoCode.MP: _localization.mp_, - IsoCode.MQ: _localization.mq_, - IsoCode.MR: _localization.mr_, - IsoCode.MS: _localization.ms_, - IsoCode.MT: _localization.mt_, - IsoCode.MU: _localization.mu_, - IsoCode.MV: _localization.mv_, - IsoCode.MW: _localization.mw_, - IsoCode.MX: _localization.mx_, - IsoCode.MY: _localization.my_, - IsoCode.MZ: _localization.mz_, - IsoCode.NA: _localization.na_, - IsoCode.NC: _localization.nc_, - IsoCode.NE: _localization.ne_, - IsoCode.NF: _localization.nf_, - IsoCode.NG: _localization.ng_, - IsoCode.NI: _localization.ni_, - IsoCode.NL: _localization.nl_, - IsoCode.NO: _localization.no_, - IsoCode.NP: _localization.np_, - IsoCode.NR: _localization.nr_, - IsoCode.NU: _localization.nu_, - IsoCode.NZ: _localization.nz_, - IsoCode.OM: _localization.om_, - IsoCode.PA: _localization.pa_, - IsoCode.PE: _localization.pe_, - IsoCode.PF: _localization.pf_, - IsoCode.PG: _localization.pg_, - IsoCode.PH: _localization.ph_, - IsoCode.PK: _localization.pk_, - IsoCode.PL: _localization.pl_, - IsoCode.PM: _localization.pm_, - IsoCode.PR: _localization.pr_, - IsoCode.PS: _localization.ps_, - IsoCode.PT: _localization.pt_, - IsoCode.PW: _localization.pw_, - IsoCode.PY: _localization.py_, - IsoCode.QA: _localization.qa_, - IsoCode.RE: _localization.re_, - IsoCode.RO: _localization.ro_, - IsoCode.RS: _localization.rs_, - IsoCode.RU: _localization.ru_, - IsoCode.RW: _localization.rw_, - IsoCode.SA: _localization.sa_, - IsoCode.SB: _localization.sb_, - IsoCode.SC: _localization.sc_, - IsoCode.SD: _localization.sd_, - IsoCode.SE: _localization.se_, - IsoCode.SG: _localization.sg_, - IsoCode.SI: _localization.si_, - IsoCode.SK: _localization.sk_, - IsoCode.SL: _localization.sl_, - IsoCode.SM: _localization.sm_, - IsoCode.SN: _localization.sn_, - IsoCode.SO: _localization.so_, - IsoCode.SR: _localization.sr_, - IsoCode.SS: _localization.ss_, - IsoCode.ST: _localization.st_, - IsoCode.SV: _localization.sv_, - IsoCode.SY: _localization.sy_, - IsoCode.SZ: _localization.sz_, - IsoCode.TA: _localization.ta_, - IsoCode.TC: _localization.tc_, - IsoCode.TD: _localization.td_, - IsoCode.TG: _localization.tg_, - IsoCode.TH: _localization.th_, - IsoCode.TJ: _localization.tj_, - IsoCode.TK: _localization.tk_, - IsoCode.TL: _localization.tl_, - IsoCode.TM: _localization.tm_, - IsoCode.TN: _localization.tn_, - IsoCode.TO: _localization.to_, - IsoCode.TR: _localization.tr_, - IsoCode.TT: _localization.tt_, - IsoCode.TV: _localization.tv_, - IsoCode.TW: _localization.tw_, - IsoCode.TZ: _localization.tz_, - IsoCode.UA: _localization.ua_, - IsoCode.UG: _localization.ug_, - IsoCode.US: _localization.us_, - IsoCode.UY: _localization.uy_, - IsoCode.UZ: _localization.uz_, - IsoCode.VA: _localization.va_, - IsoCode.VC: _localization.vc_, - IsoCode.VE: _localization.ve_, - IsoCode.VG: _localization.vg_, - IsoCode.VI: _localization.vi_, - IsoCode.VN: _localization.vn_, - IsoCode.VU: _localization.vu_, - IsoCode.WF: _localization.wf_, - IsoCode.WS: _localization.ws_, - IsoCode.YE: _localization.ye_, - IsoCode.YT: _localization.yt_, - IsoCode.ZA: _localization.za_, - IsoCode.ZM: _localization.zm_, - IsoCode.ZW: _localization.zw_ - }; -} diff --git a/lib/src/widgets/country_selector/search_box.dart b/lib/src/widgets/country_selector/search_box.dart deleted file mode 100644 index ec1ec5e7..00000000 --- a/lib/src/widgets/country_selector/search_box.dart +++ /dev/null @@ -1,50 +0,0 @@ -import 'package:flutter/material.dart'; - -class SearchBox extends StatelessWidget { - final Function(String) onChanged; - final Function() onSubmitted; - final bool autofocus; - final InputDecoration? decoration; - final TextStyle? style; - final Color? searchIconColor; - - const SearchBox({ - super.key, - required this.onChanged, - required this.onSubmitted, - required this.autofocus, - this.decoration, - this.style, - this.searchIconColor, - }); - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.fromLTRB(16, 16, 16, 0), - child: TextField( - autofocus: autofocus, - onChanged: onChanged, - onSubmitted: (_) => onSubmitted(), - cursorColor: style?.color, - style: style, - decoration: decoration ?? - InputDecoration( - prefixIcon: Icon( - Icons.search, - color: searchIconColor ?? - (Theme.of(context).brightness == Brightness.dark - ? Colors.white54 - : Colors.black38), - ), - filled: true, - isDense: true, - border: OutlineInputBorder( - borderSide: BorderSide.none, - borderRadius: BorderRadius.circular(20), - ), - ), - ), - ); - } -} diff --git a/lib/src/widgets/phone_field.dart b/lib/src/widgets/phone_field.dart deleted file mode 100644 index 70cdbf6e..00000000 --- a/lib/src/widgets/phone_field.dart +++ /dev/null @@ -1,127 +0,0 @@ -import 'dart:ui' as ui show BoxHeightStyle, BoxWidthStyle; - -import 'package:circle_flags/circle_flags.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; -import 'package:phone_form_field/src/constants/patterns.dart'; -import 'package:phone_form_field/src/controllers/phone_field_controller.dart'; - -import '../../phone_form_field.dart'; - -part 'phone_field_state.dart'; - -/// Phone field -/// -/// This deals with mostly UI and has no dependency on any phone parser library -class PhoneField extends StatefulWidget { - final PhoneFieldController controller; - final bool showFlagInInput; - final bool showIsoCodeInInput; - final bool showDialCode; - final String? errorText; - final double flagSize; - final InputDecoration decoration; - final bool isCountrySelectionEnabled; - final bool isCountryChipPersistent; - - /// configures the way the country picker selector is shown - final CountrySelectorNavigator selectorNavigator; - - // textfield inputs - final TextInputType keyboardType; - final TextInputAction? textInputAction; - final TextStyle? style; - final TextStyle? countryCodeStyle; - final StrutStyle? strutStyle; - final TextAlign textAlign; - final TextAlignVertical? textAlignVertical; - final bool autofocus; - final String obscuringCharacter; - final bool obscureText; - final bool autocorrect; - final SmartDashesType? smartDashesType; - final SmartQuotesType? smartQuotesType; - final bool enableSuggestions; - final Widget Function(BuildContext, EditableTextState)? contextMenuBuilder; - final bool? showCursor; - final VoidCallback? onEditingComplete; - final ValueChanged? onSubmitted; - final AppPrivateCommandCallback? onAppPrivateCommand; - final Function(PointerDownEvent)? onTapOutside; - final bool? enabled; - final double cursorWidth; - final double? cursorHeight; - final Radius? cursorRadius; - final Color? cursorColor; - final ui.BoxHeightStyle selectionHeightStyle; - final ui.BoxWidthStyle selectionWidthStyle; - final Brightness? keyboardAppearance; - final EdgeInsets scrollPadding; - final bool enableInteractiveSelection; - final TextSelectionControls? selectionControls; - bool get selectionEnabled => enableInteractiveSelection; - final MouseCursor? mouseCursor; - final ScrollPhysics? scrollPhysics; - final ScrollController? scrollController; - final Iterable? autofillHints; - final String? restorationId; - final bool enableIMEPersonalizedLearning; - final List? inputFormatters; - - const PhoneField({ - // form field params - super.key, - required this.controller, - required this.showFlagInInput, - required this.selectorNavigator, - required this.flagSize, - required this.errorText, - required this.decoration, - required this.isCountrySelectionEnabled, - required this.isCountryChipPersistent, - // textfield inputs - required this.keyboardType, - required this.textInputAction, - required this.style, - required this.countryCodeStyle, - required this.strutStyle, - required this.textAlign, - required this.textAlignVertical, - required this.autofocus, - required this.obscuringCharacter, - required this.obscureText, - required this.autocorrect, - required this.smartDashesType, - required this.smartQuotesType, - required this.enableSuggestions, - required this.contextMenuBuilder, - required this.showCursor, - required this.onEditingComplete, - required this.onSubmitted, - required this.onAppPrivateCommand, - required this.enabled, - required this.cursorWidth, - required this.cursorHeight, - required this.cursorRadius, - required this.cursorColor, - required this.selectionHeightStyle, - required this.selectionWidthStyle, - required this.keyboardAppearance, - required this.scrollPadding, - required this.enableInteractiveSelection, - required this.selectionControls, - required this.mouseCursor, - required this.scrollPhysics, - required this.scrollController, - required this.autofillHints, - required this.restorationId, - required this.enableIMEPersonalizedLearning, - required this.inputFormatters, - required this.showDialCode, - required this.showIsoCodeInInput, - required this.onTapOutside, - }); - - @override - PhoneFieldState createState() => PhoneFieldState(); -} diff --git a/lib/src/widgets/phone_field_state.dart b/lib/src/widgets/phone_field_state.dart deleted file mode 100644 index e6c4ea18..00000000 --- a/lib/src/widgets/phone_field_state.dart +++ /dev/null @@ -1,185 +0,0 @@ -part of 'phone_field.dart'; - -class PhoneFieldState extends State { - PhoneFieldController get controller => widget.controller; - final _flagCache = FlagCache(); - PhoneFieldState(); - - @override - void initState() { - controller.focusNode.addListener(onFocusChange); - _preloadFlagsInMemory(); - super.initState(); - } - - void _preloadFlagsInMemory() { - _flagCache.preload(IsoCode.values.map((isoCode) => isoCode.name)); - } - - void onFocusChange() { - setState(() {}); - } - - @override - void dispose() { - controller.focusNode.removeListener(onFocusChange); - super.dispose(); - } - - void selectCountry() async { - if (!widget.isCountrySelectionEnabled) { - return; - } - SystemChannels.textInput.invokeMethod('TextInput.hide'); - final selected = - await widget.selectorNavigator.navigate(context, _flagCache); - if (selected != null) { - controller.isoCode = selected.isoCode; - } - controller.focusNode.requestFocus(); - SystemChannels.textInput.invokeMethod('TextInput.show'); - } - - @override - Widget build(BuildContext context) { - // the idea here is to have a mouse region that surround the input which - // contains a flag button and a text field. The text field is surrounded - // by padding so we want to request focus even when clicking outside of the - // inner field. - // When the country chip is not shown it request focus to the inner text - // field which doesn't span the whole input - // When the country chip is shown, clicking on it request country selection - return MouseRegion( - cursor: SystemMouseCursors.text, - child: GestureDetector( - onTap: controller.focusNode.requestFocus, - // absorb pointer when the country chip is not shown, else flutter - // still allows the country chip to be clicked even though it is not shown - child: InputDecorator( - decoration: _getOutterInputDecoration(), - isFocused: controller.focusNode.hasFocus, - isEmpty: _isEffectivelyEmpty(), - child: TextField( - focusNode: controller.focusNode, - controller: controller.nationalNumberController, - enabled: widget.enabled, - decoration: _getInnerInputDecoration(), - inputFormatters: widget.inputFormatters ?? - [ - FilteringTextInputFormatter.allow(RegExp( - '[${Patterns.plus}${Patterns.digits}${Patterns.punctuation}]')), - ], - autofillHints: widget.autofillHints, - keyboardType: widget.keyboardType, - textInputAction: widget.textInputAction, - style: widget.style, - strutStyle: widget.strutStyle, - textAlign: widget.textAlign, - textAlignVertical: widget.textAlignVertical, - autofocus: widget.autofocus, - obscuringCharacter: widget.obscuringCharacter, - obscureText: widget.obscureText, - autocorrect: widget.autocorrect, - smartDashesType: widget.smartDashesType, - smartQuotesType: widget.smartQuotesType, - enableSuggestions: widget.enableSuggestions, - contextMenuBuilder: widget.contextMenuBuilder, - showCursor: widget.showCursor, - onEditingComplete: widget.onEditingComplete, - onSubmitted: widget.onSubmitted, - onAppPrivateCommand: widget.onAppPrivateCommand, - cursorWidth: widget.cursorWidth, - cursorHeight: widget.cursorHeight, - cursorRadius: widget.cursorRadius, - cursorColor: widget.cursorColor, - onTapOutside: widget.onTapOutside, - selectionHeightStyle: widget.selectionHeightStyle, - selectionWidthStyle: widget.selectionWidthStyle, - keyboardAppearance: widget.keyboardAppearance, - scrollPadding: widget.scrollPadding, - enableInteractiveSelection: widget.enableInteractiveSelection, - selectionControls: widget.selectionControls, - mouseCursor: widget.mouseCursor, - scrollController: widget.scrollController, - scrollPhysics: widget.scrollPhysics, - restorationId: widget.restorationId, - enableIMEPersonalizedLearning: widget.enableIMEPersonalizedLearning, - ), - ), - ), - ); - } - - Widget _getCountryCodeChip() { - return Directionality( - textDirection: TextDirection.ltr, - child: MouseRegion( - cursor: SystemMouseCursors.click, - child: GestureDetector( - onTap: selectCountry, - // material here else the click pass through empty spaces - child: Material( - color: Colors.transparent, - child: Padding( - padding: !widget.showDialCode && !widget.showFlagInInput - ? EdgeInsets.zero - : const EdgeInsetsDirectional.fromSTEB(8, 0, 8, 0), - child: CountryCodeChip( - key: const ValueKey('country-code-chip'), - isoCode: controller.isoCode, - showFlag: widget.showFlagInInput, - showIsoCode: widget.showIsoCodeInInput, - showDialCode: widget.showDialCode, - textStyle: widget.countryCodeStyle ?? - widget.decoration.labelStyle ?? - TextStyle( - fontSize: 16, - color: Theme.of(context).textTheme.bodySmall?.color, - ), - flagSize: widget.flagSize, - ), - ), - ), - ), - ), - ); - } - - InputDecoration _getInnerInputDecoration() { - return InputDecoration.collapsed( - hintText: widget.decoration.hintText, - hintStyle: widget.decoration.hintStyle, - ).copyWith( - focusedBorder: InputBorder.none, - errorBorder: InputBorder.none, - disabledBorder: InputBorder.none, - enabledBorder: InputBorder.none, - focusedErrorBorder: InputBorder.none, - ); - } - - InputDecoration _getOutterInputDecoration() { - final directionality = Directionality.of(context); - - return widget.decoration.copyWith( - hintText: null, - errorText: widget.errorText, - prefix: - directionality == TextDirection.ltr ? _getCountryCodeChip() : null, - suffix: - directionality == TextDirection.rtl ? _getCountryCodeChip() : null, - ); - } - - bool _isEffectivelyEmpty() { - if (widget.isCountryChipPersistent) return false; - final outterDecoration = _getOutterInputDecoration(); - // when there is not label and an hint text we need to have - // isEmpty false so the country code is displayed along the - // hint text to not have the hint text in the middle - if (outterDecoration.label == null && outterDecoration.hintText != null) { - return false; - } - return controller.nationalNumberController.text.isEmpty; - } -} diff --git a/lib/src/widgets/phone_form_field.dart b/lib/src/widgets/phone_form_field.dart deleted file mode 100644 index 254ca9ea..00000000 --- a/lib/src/widgets/phone_form_field.dart +++ /dev/null @@ -1,229 +0,0 @@ -import 'dart:async'; -import 'dart:ui' as ui show BoxHeightStyle, BoxWidthStyle; - -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; -import 'package:phone_numbers_parser/phone_numbers_parser.dart'; - -import '../constants/patterns.dart'; -import '../controllers/phone_controller.dart'; -import '../controllers/phone_field_controller.dart'; -import '../validation/phone_validator.dart'; -import '../validation/validator_translator.dart'; -import 'country_selector/country_selector_navigator.dart'; -import 'phone_field.dart'; - -part 'phone_form_field_state.dart'; - -/// Phone input extending form field. -/// -/// ### controller: -/// {@template controller} -/// Use a [PhoneController] for PhoneFormField when you need to dynamically -/// change the value. -/// -/// Whenever the user modifies the phone field with an -/// associated [controller], the phone field updates -/// the display value and the controller notifies its listeners. -/// {@endtemplate} -/// -/// You can also use an [initialValue]: -/// {@template initialValue} -/// The initial value used. -/// -/// Only one of [initialValue] and [controller] can be specified. -/// If [controller] is specified the [initialValue] will be -/// the first value of the [PhoneController] -/// {@endtemplate} -/// -/// ### formatting: -/// {@template shouldFormat} -/// Specify whether the field will format the national number with [shouldFormat] = true (default) -/// eg: +33677784455 will be displayed as +33 6 77 78 44 55. -/// -/// The formats are localized for the country code. -/// eg: +1 677-784-455 & +33 6 77 78 44 55 -/// -/// -/// This does not affect the output value, only the display. -/// Therefor [onSizeFound] will still return a [PhoneNumber] -/// with nsn of 677784455. -/// {@endtemplate} -/// -/// ### phoneNumberType: -/// {@template phoneNumberType} -/// specify the type of phone number with [phoneNumberType]. -/// -/// accepted values are: -/// - null (can be mobile or fixedLine) -/// - mobile -/// - fixedLine -/// {@endtemplate} -/// -/// -/// ### Country picker: -/// -/// {@template selectorNavigator} -/// specify which type of country selector will be shown with [selectorNavigator]. -/// -/// Uses one of: -/// - const BottomSheetNavigator() -/// - const DraggableModalBottomSheetNavigator() -/// - const ModalBottomSheetNavigator() -/// - const DialogNavigator() -/// {@endtemplate} -/// -/// ### Country Code visibility: -/// -/// The country dial code will be visible when: -/// - the field is focussed. -/// - the field has a value for national number. -/// - the field has no label obstructing the view. -class PhoneFormField extends FormField { - /// {@macro controller} - final PhoneController? controller; - - /// {@macro shouldFormat} - final bool shouldFormat; - - /// callback called when the input value changes - final ValueChanged? onChanged; - - /// country that is displayed when there is no value - final IsoCode defaultCountry; - - /// the focusNode of the national number - final FocusNode? focusNode; - - /// show Dial Code or not - final bool showDialCode; - - /// show selected iso code or not - final bool showIsoCodeInInput; - - PhoneFormField({ - super.key, - this.controller, - this.shouldFormat = true, - this.onChanged, - this.focusNode, - bool showFlagInInput = true, - CountrySelectorNavigator countrySelectorNavigator = - const CountrySelectorNavigator.searchDelegate(), - Function(PhoneNumber?)? super.onSaved, - this.defaultCountry = IsoCode.US, - InputDecoration decoration = - const InputDecoration(border: UnderlineInputBorder()), - AutovalidateMode super.autovalidateMode = AutovalidateMode.onUserInteraction, - PhoneNumber? initialValue, - double flagSize = 16, - PhoneNumberInputValidator? validator, - bool isCountrySelectionEnabled = true, - bool isCountryChipPersistent = true, - // textfield inputs - TextInputType keyboardType = TextInputType.phone, - TextInputAction? textInputAction, - TextStyle? style, - TextStyle? countryCodeStyle, - StrutStyle? strutStyle, - TextAlign textAlign = TextAlign.start, - TextAlignVertical? textAlignVertical, - bool autofocus = false, - String obscuringCharacter = '*', - bool obscureText = false, - bool autocorrect = true, - SmartDashesType? smartDashesType, - SmartQuotesType? smartQuotesType, - bool enableSuggestions = true, - Widget Function(BuildContext, EditableTextState)? contextMenuBuilder, - bool? showCursor, - VoidCallback? onEditingComplete, - ValueChanged? onSubmitted, - AppPrivateCommandCallback? onAppPrivateCommand, - Function(PointerDownEvent)? onTapOutside, - List? inputFormatters, - super.enabled, - double cursorWidth = 2.0, - double? cursorHeight, - Radius? cursorRadius, - Color? cursorColor, - ui.BoxHeightStyle selectionHeightStyle = ui.BoxHeightStyle.tight, - ui.BoxWidthStyle selectionWidthStyle = ui.BoxWidthStyle.tight, - Brightness? keyboardAppearance, - EdgeInsets scrollPadding = const EdgeInsets.all(20.0), - bool enableInteractiveSelection = true, - TextSelectionControls? selectionControls, - MouseCursor? mouseCursor, - ScrollPhysics? scrollPhysics, - ScrollController? scrollController, - Iterable? autofillHints, - super.restorationId, - bool enableIMEPersonalizedLearning = true, - this.showDialCode = true, - this.showIsoCodeInInput = false, - }) : assert( - initialValue == null || controller == null, - 'One of initialValue or controller can be specified at a time', - ), - super( - initialValue: controller != null ? controller.value : initialValue, - validator: validator ?? PhoneValidator.valid(), - builder: (state) { - final field = state as PhoneFormFieldState; - return PhoneField( - controller: field._childController, - showFlagInInput: showFlagInInput, - showIsoCodeInInput: showIsoCodeInInput, - selectorNavigator: countrySelectorNavigator, - errorText: field.getErrorText(), - showDialCode: showDialCode, - flagSize: flagSize, - decoration: decoration, - enabled: enabled, - isCountrySelectionEnabled: isCountrySelectionEnabled, - isCountryChipPersistent: isCountryChipPersistent, - // textfield params - autofillHints: autofillHints, - keyboardType: keyboardType, - textInputAction: textInputAction, - style: style, - countryCodeStyle: countryCodeStyle, - strutStyle: strutStyle, - textAlign: textAlign, - textAlignVertical: textAlignVertical, - autofocus: autofocus, - obscuringCharacter: obscuringCharacter, - obscureText: obscureText, - autocorrect: autocorrect, - smartDashesType: smartDashesType, - smartQuotesType: smartQuotesType, - enableSuggestions: enableSuggestions, - contextMenuBuilder: contextMenuBuilder, - showCursor: showCursor, - onEditingComplete: onEditingComplete, - onSubmitted: onSubmitted, - onAppPrivateCommand: onAppPrivateCommand, - onTapOutside: onTapOutside, - cursorWidth: cursorWidth, - cursorHeight: cursorHeight, - cursorRadius: cursorRadius, - cursorColor: cursorColor, - selectionHeightStyle: selectionHeightStyle, - selectionWidthStyle: selectionWidthStyle, - keyboardAppearance: keyboardAppearance, - scrollPadding: scrollPadding, - enableInteractiveSelection: enableInteractiveSelection, - selectionControls: selectionControls, - mouseCursor: mouseCursor, - scrollController: scrollController, - scrollPhysics: scrollPhysics, - restorationId: restorationId, - enableIMEPersonalizedLearning: enableIMEPersonalizedLearning, - inputFormatters: inputFormatters, - ); - }, - ); - - @override - PhoneFormFieldState createState() => PhoneFormFieldState(); -} diff --git a/lib/src/widgets/phone_form_field_state.dart b/lib/src/widgets/phone_form_field_state.dart deleted file mode 100644 index 7fada3e1..00000000 --- a/lib/src/widgets/phone_form_field_state.dart +++ /dev/null @@ -1,114 +0,0 @@ -part of 'phone_form_field.dart'; - -class PhoneFormFieldState extends FormFieldState { - late final PhoneController _controller; - late final PhoneFieldController _childController; - late final StreamSubscription _selectionSubscription; - - @override - PhoneFormField get widget => super.widget as PhoneFormField; - - @override - void initState() { - super.initState(); - _controller = widget.controller ?? PhoneController(value); - _childController = PhoneFieldController( - isoCode: _controller.value?.isoCode ?? widget.defaultCountry, - national: _getFormattedNsn(), - focusNode: widget.focusNode ?? FocusNode(), - ); - _controller.addListener(_onControllerChange); - _childController.addListener(() => _onChildControllerChange()); - // to expose text selection of national number - _selectionSubscription = _controller.selectionRequestStream - .listen((event) => _childController.selectNationalNumber()); - } - - @override - void dispose() { - super.dispose(); - _childController.dispose(); - _selectionSubscription.cancel(); - _controller.removeListener(_onControllerChange); - // dispose the controller only when it's initialised in this instance - // otherwise this should be done where instance is created - if (widget.controller == null) { - _controller.dispose(); - } - } - - @override - void reset() { - _controller.value = widget.initialValue; - super.reset(); - } - - /// when the controller changes this function will - /// update the childController so the [PhoneField] which - /// deals with the UI can display the correct value. - void _onControllerChange() { - final phone = _controller.value; - - widget.onChanged?.call(phone); - didChange(phone); - final formatted = _getFormattedNsn(); - if (_childController.national != formatted) { - _childController.national = formatted; - } - if (_childController.isoCode != phone?.isoCode) { - _childController.isoCode = phone?.isoCode ?? widget.defaultCountry; - } - } - - /// when the base controller changes (when the user manually input something) - /// then we need to update the local controller's value. - void _onChildControllerChange() { - if (_childController.national == _controller.value?.nsn && - _childController.isoCode == _controller.value?.isoCode) { - return; - } - - if (_childController.national == null) { - return _controller.value = null; - } - // we convert the multiple controllers from the child controller - // to a full blown PhoneNumber to access validation, formatting etc. - PhoneNumber phoneNumber; - // when the nsn input change we check if its not a whole number - // to allow for copy pasting and auto fill. If it is one then - // we parse it accordingly. - // we assume it's a whole phone number if it starts with + - final childNsn = _childController.national; - if (childNsn != null && childNsn.startsWith(RegExp('[${Patterns.plus}]'))) { - // if starts with + then we parse the whole number - // to figure out the country code - final international = childNsn; - try { - phoneNumber = PhoneNumber.parse(international); - } on PhoneNumberException { - return; - } - } else { - phoneNumber = PhoneNumber.parse( - childNsn ?? '', - destinationCountry: _childController.isoCode, - ); - } - _controller.value = phoneNumber; - } - - String? _getFormattedNsn() { - if (widget.shouldFormat) { - return _controller.value?.getFormattedNsn(); - } - return _controller.value?.nsn; - } - - /// gets the localized error text if any - String? getErrorText() { - if (errorText != null) { - return ValidatorTranslator.message(context, errorText!); - } - return null; - } -} diff --git a/pubspec.yaml b/pubspec.yaml index 7b8cd3e8..a4f6a9ec 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,15 +10,18 @@ environment: dependencies: flutter: sdk: flutter - flutter_localizations: # Add this line + flutter_localizations: sdk: flutter - - circle_flags: ^3.0.1 - phone_numbers_parser: ^8.1.0 - intl: ">=0.17.0 <=1.0.0" - diacritic: ^0.1.3 + intl: ">=0.18.1 <=1.0.0" + flutter_country_selector: ^1.0.2 + circle_flags: ^4.0.0 + phone_numbers_parser: ^8.1.3 + diacritic: ^0.1.5 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^3.0.1 + +flutter: + generate: true diff --git a/test/_country_selector_test.dart b/test/_country_selector_test.dart deleted file mode 100644 index 5d97bd7a..00000000 --- a/test/_country_selector_test.dart +++ /dev/null @@ -1,251 +0,0 @@ -import 'package:circle_flags/circle_flags.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:phone_form_field/phone_form_field.dart'; -import 'package:phone_form_field/src/widgets/country_selector/search_box.dart'; - -void main() { - group('CountrySelector', () { - group('Without internationalization', () { - final app = MaterialApp( - home: Scaffold( - body: CountrySelector( - onCountrySelected: (c) {}, - flagCache: FlagCache(), - ), - ), - ); - - testWidgets('Should filter with text', (tester) async { - await tester.pumpWidget(app); - await tester.pumpAndSettle(); - final txtFound = find.byType(SearchBox); - expect(txtFound, findsOneWidget); - await tester.enterText(txtFound, 'sp'); - await tester.pumpAndSettle(); - final tiles = find.byType(ListTile); - expect(tiles, findsWidgets); - expect( - tester.widget(tiles.first).key, equals(const Key('ES'))); - // not the right language (we let english go through tho) - await tester.enterText(txtFound, 'Espagne'); - await tester.pumpAndSettle(); - expect(tiles, findsNothing); - await tester.pumpAndSettle(); - // country codes - await tester.enterText(txtFound, '33'); - await tester.pumpAndSettle(); - expect(tiles, findsWidgets); - expect( - tester.widget(tiles.first).key, equals(const Key('FR'))); - }); - }); - - group('With internationalization', () { - final app = MaterialApp( - locale: const Locale('es', ''), - localizationsDelegates: const [ - ...GlobalMaterialLocalizations.delegates, - PhoneFieldLocalization.delegate, - ], - supportedLocales: const [Locale('es', '')], - home: Scaffold( - body: CountrySelector( - onCountrySelected: (c) {}, - flagCache: FlagCache(), - ), - ), - ); - - testWidgets('Should filter with text', (tester) async { - await tester.pumpWidget(app); - await tester.pump(const Duration(seconds: 1)); - final txtFound = find.byType(SearchBox); - expect(txtFound, findsOneWidget); - await tester.enterText(txtFound, 'esp'); - await tester.pump(const Duration(seconds: 1)); - final tiles = find.byType(ListTile); - expect(tiles, findsWidgets); - expect( - tester.widget(tiles.first).key, equals(const Key('ES'))); - // not the right language (we let english go through tho) - await tester.enterText(txtFound, 'Espagne'); - await tester.pump(const Duration(seconds: 1)); - expect(tiles, findsNothing); - await tester.pump(const Duration(seconds: 1)); - // country codes - await tester.enterText(txtFound, '33'); - await tester.pump(const Duration(seconds: 1)); - expect(tiles, findsWidgets); - expect( - tester.widget(tiles.first).key, equals(const Key('FR'))); - }); - }); - - group('sorted countries with or without favorites', () { - Widget builder({ - List? favorites, - bool addFavoritesSeparator = false, - }) => - MaterialApp( - locale: const Locale('fr'), - localizationsDelegates: const [ - PhoneFieldLocalization.delegate, - ...GlobalMaterialLocalizations.delegates, - ], - supportedLocales: const [Locale('fr')], - home: Scaffold( - body: CountrySelector( - onCountrySelected: (c) {}, - addFavoritesSeparator: addFavoritesSeparator, - favoriteCountries: favorites ?? const [], - flagCache: FlagCache(), - ), - ), - ); - - testWidgets('should be properly sorted without favorites', - (tester) async { - await tester.pumpWidget(builder()); - await tester.pump(const Duration(seconds: 1)); - final allTiles = find.byType(ListTile); - expect(allTiles, findsWidgets); - // expect(tester.widget(allTiles.first).key, equals(Key('AF'))); - }); - - testWidgets('should be properly sorted with favorites', (tester) async { - await tester.pumpWidget(builder(favorites: [IsoCode.GU, IsoCode.GY])); - await tester.pump(const Duration(seconds: 1)); - final allTiles = find.byType(ListTile, skipOffstage: false); - expect(allTiles, findsWidgets); - expect(tester.widget(allTiles.at(0)).key, - equals(Key(IsoCode.GU.name))); - expect(tester.widget(allTiles.at(1)).key, - equals(Key(IsoCode.GY.name))); - - final txtFound = find.byType(SearchBox); - expect(txtFound, findsOneWidget); - await tester.enterText(txtFound, 'guy'); - await tester.pumpAndSettle(); - final filteredTiles = find.byType(ListTile); - expect(filteredTiles, findsWidgets); - expect(filteredTiles.evaluate().length, equals(2)); - }); - - testWidgets('should display/hide separator', (tester) async { - await tester.pumpWidget(builder( - favorites: [IsoCode.GU, IsoCode.GY], - addFavoritesSeparator: true, - )); - await tester.pump(const Duration(seconds: 1)); - final list = find.byType(ListView); - expect(list, findsOneWidget); - final allTiles = find.descendant( - of: list, - matching: find.byWidgetPredicate( - (Widget widget) => widget is ListTile || widget is Divider, - ), - ); - - expect(allTiles, findsWidgets); - expect( - tester.widget(allTiles.at(2)), - isA(), - reason: 'separator should be visible after the favorites countries', - ); - - final txtFound = find.byType(SearchBox); - expect(txtFound, findsOneWidget); - await tester.enterText(txtFound, 'guy'); - await tester.pump(const Duration(seconds: 1)); - final tiles = find.byType(ListTile); - expect(tiles, findsWidgets); - expect( - tiles.evaluate().length, - equals(2), - reason: 'Separator should be hidden as all elements' - 'found are in favorites', - ); - }); - }); - - group('Empty search result', () { - Widget builder({ - String? noResultMessage, - }) => - MaterialApp( - locale: const Locale('fr'), - localizationsDelegates: const [ - PhoneFieldLocalization.delegate, - ...GlobalMaterialLocalizations.delegates, - ], - supportedLocales: const [Locale('fr')], - home: Scaffold( - body: CountrySelector( - onCountrySelected: (c) {}, - noResultMessage: noResultMessage, - flagCache: FlagCache(), - ), - ), - ); - - testWidgets('should display default untranslated no result message', - (tester) async { - await tester.pumpWidget(MaterialApp( - home: Scaffold( - body: CountrySelector( - onCountrySelected: (c) {}, - flagCache: FlagCache(), - ), - ), - )); - - final txtFound = find.byType(SearchBox); - expect(txtFound, findsOneWidget); - await tester.enterText(txtFound, 'fake search with no result'); - await tester.pumpAndSettle(); - - // no listitem should be displayed when no result found - final allTiles = find.byType(ListTile); - expect(allTiles, findsNothing); - - final noResultWidget = find.text('No result found'); - expect(noResultWidget, findsOneWidget); - }); - - testWidgets('should display default translated no result message', - (tester) async { - await tester.pumpWidget(builder()); - - final txtFound = find.byType(SearchBox); - expect(txtFound, findsOneWidget); - await tester.enterText(txtFound, 'fake search with no result'); - await tester.pumpAndSettle(); - - // no listitem should be displayed when no result found - final allTiles = find.byType(ListTile); - expect(allTiles, findsNothing); - - final noResultWidget = find.text('Aucun résultat'); - expect(noResultWidget, findsOneWidget); - }); - - testWidgets('should display custom no result message', (tester) async { - await tester.pumpWidget(builder(noResultMessage: 'Bad news !')); - - final txtFound = find.byType(SearchBox); - expect(txtFound, findsOneWidget); - await tester.enterText(txtFound, 'fake search with no result'); - await tester.pumpAndSettle(); - - // no listitem should be displayed when no result found - final allTiles = find.byType(ListTile); - expect(allTiles, findsNothing); - - final noResultWidget = find.text('Bad news !'); - expect(noResultWidget, findsOneWidget); - }); - }); - }); -} diff --git a/test/_country_selector_navigator_test.dart b/test/country_selector_navigator_test.dart similarity index 61% rename from test/_country_selector_navigator_test.dart rename to test/country_selector_navigator_test.dart index c1462e75..6601c1bf 100644 --- a/test/_country_selector_navigator_test.dart +++ b/test/country_selector_navigator_test.dart @@ -1,5 +1,5 @@ -import 'package:circle_flags/circle_flags.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_country_selector/flutter_country_selector.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:phone_form_field/phone_form_field.dart'; @@ -16,36 +16,44 @@ void main() { ), ); + testWidgets('should navigate to page', (tester) async { + const nav = CountrySelectorNavigator.page(); + await tester.pumpWidget(getApp((ctx) => nav.show(ctx))); + await tester.tap(find.byType(ElevatedButton)); + await tester.pumpAndSettle(); + expect(find.byType(CountrySelectorPage), findsOneWidget); + }); + testWidgets('should navigate to dialog', (tester) async { const nav = CountrySelectorNavigator.dialog(); - await tester.pumpWidget(getApp((ctx) => nav.navigate(ctx, FlagCache()))); + await tester.pumpWidget(getApp((ctx) => nav.show(ctx))); await tester.tap(find.byType(ElevatedButton)); await tester.pumpAndSettle(); - expect(find.byType(CountrySelector), findsOneWidget); + expect(find.byType(CountrySelectorSheet), findsOneWidget); }); testWidgets('should navigate to modal bottom sheet', (tester) async { const nav = CountrySelectorNavigator.modalBottomSheet(); - await tester.pumpWidget(getApp((ctx) => nav.navigate(ctx, FlagCache()))); + await tester.pumpWidget(getApp((ctx) => nav.show(ctx))); await tester.tap(find.byType(ElevatedButton)); await tester.pump(const Duration(seconds: 1)); - expect(find.byType(CountrySelector), findsOneWidget); + expect(find.byType(CountrySelectorSheet), findsOneWidget); }); testWidgets('should navigate to bottom sheet', (tester) async { const nav = CountrySelectorNavigator.bottomSheet(); - await tester.pumpWidget(getApp((ctx) => nav.navigate(ctx, FlagCache()))); + await tester.pumpWidget(getApp((ctx) => nav.show(ctx))); await tester.tap(find.byType(ElevatedButton)); await tester.pump(const Duration(seconds: 1)); - expect(find.byType(CountrySelector), findsOneWidget); + expect(find.byType(CountrySelectorSheet), findsOneWidget); }); testWidgets('should navigate to draggable sheet', (tester) async { const nav = CountrySelectorNavigator.draggableBottomSheet(); - await tester.pumpWidget(getApp((ctx) => nav.navigate(ctx, FlagCache()))); + await tester.pumpWidget(getApp((ctx) => nav.show(ctx))); await tester.tap(find.byType(ElevatedButton)); await tester.pump(const Duration(seconds: 1)); - expect(find.byType(CountrySelector), findsOneWidget); + expect(find.byType(CountrySelectorSheet), findsOneWidget); }); }); } diff --git a/test/phone_form_field_test.dart b/test/phone_form_field_test.dart index b79ca0f4..0a1884ca 100644 --- a/test/phone_form_field_test.dart +++ b/test/phone_form_field_test.dart @@ -1,14 +1,15 @@ import 'package:circle_flags/circle_flags.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_country_selector/flutter_country_selector.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:phone_form_field/phone_form_field.dart'; -import 'package:phone_form_field/src/widgets/country_selector/country_list.dart'; +import 'package:phone_form_field/src/localization/generated/phone_field_localization_impl_en.dart'; void main() { group('PhoneFormField', () { final formKey = GlobalKey(); final phoneKey = GlobalKey>(); + Widget getWidget({ Function(PhoneNumber?)? onChanged, Function(PhoneNumber?)? onSaved, @@ -17,82 +18,89 @@ void main() { PhoneController? controller, bool showFlagInInput = true, bool showDialCode = true, - IsoCode defaultCountry = IsoCode.US, - bool shouldFormat = false, - PhoneNumberInputValidator? validator, + PhoneNumberInputValidator Function(BuildContext)? validatorBuilder, + bool enabled = true, }) => MaterialApp( - localizationsDelegates: const [ - GlobalMaterialLocalizations.delegate, - PhoneFieldLocalization.delegate, - ], + localizationsDelegates: PhoneFieldLocalization.delegates, supportedLocales: const [Locale('en')], home: Scaffold( - body: Form( - key: formKey, - child: PhoneFormField( - key: phoneKey, - initialValue: initialValue, - onChanged: onChanged, - onSaved: onSaved, - onTapOutside: onTapOutside, - showFlagInInput: showFlagInInput, - showDialCode: showDialCode, - controller: controller, - defaultCountry: defaultCountry, - shouldFormat: shouldFormat, - validator: validator, - ), - ), + body: Builder(builder: (context) { + return Form( + key: formKey, + child: PhoneFormField( + key: phoneKey, + initialValue: initialValue, + onChanged: onChanged, + onSaved: onSaved, + onTapOutside: onTapOutside, + showFlagInInput: showFlagInInput, + showDialCode: showDialCode, + controller: controller, + validator: validatorBuilder?.call(context), + enabled: enabled, + autovalidateMode: AutovalidateMode.onUserInteraction, + ), + ); + }), ), ); - group('display', () { - testWidgets('Should display input', (tester) async { - await tester.pumpWidget(getWidget()); - expect(find.byType(TextField), findsOneWidget); - }); + testWidgets('Should display input', (tester) async { + await tester.pumpWidget( + getWidget(initialValue: PhoneNumber.parse('+33')), + ); + expect(find.byType(PhoneFormField), findsOneWidget); + }); - testWidgets('Should display country code', (tester) async { - await tester.pumpWidget(getWidget()); - expect(find.byType(CountryCodeChip), findsWidgets); - }); + testWidgets('Should display country code', (tester) async { + await tester.pumpWidget(getWidget()); + expect(find.byType(CountryButton), findsWidgets); + }); - testWidgets('Should display flag', (tester) async { - await tester.pumpWidget(getWidget()); - expect(find.byType(CircleFlag), findsWidgets); - }); + testWidgets('Should display flag', (tester) async { + await tester.pumpWidget(getWidget()); + expect(find.byType(CircleFlag), findsWidgets); + }); + + testWidgets( + 'Should not show country selection when disabled and country chip is tapped', + (tester) async { + await tester.pumpWidget(getWidget(enabled: false)); + final countryChip = + tester.widget(find.byType(CountryButton)); + expect(countryChip.enabled, false); + + await tester.tap(find.byType(CountryButton), warnIfMissed: false); + await tester.pumpAndSettle(); + + expect(find.byType(CountrySelectorSheet), findsNothing); + expect(find.byType(CountrySelectorPage), findsNothing); }); group('Country code', () { testWidgets('Should open dialog when country code is clicked', (tester) async { await tester.pumpWidget(getWidget()); - expect(find.byType(CountryList), findsNothing); + expect(find.byType(CountrySelectorPage), findsNothing); await tester.tap(find.byType(PhoneFormField)); await tester.pump(const Duration(seconds: 1)); - await tester.tap(find.byType(CountryCodeChip)); + await tester.tap(find.byType(CountryButton)); await tester.pumpAndSettle(); - expect(find.byType(CountryList), findsOneWidget); - }); - testWidgets('Should have a default country', (tester) async { - await tester.pumpWidget(getWidget(defaultCountry: IsoCode.FR)); - expect(find.text('+ 33'), findsWidgets); + expect(find.byType(CountrySelectorPage), findsOneWidget); }); - testWidgets('Should hide flag', (tester) async { await tester.pumpWidget(getWidget(showFlagInInput: false)); expect(find.byType(CircleFlag), findsNothing); }); - testWidgets('Should format when shouldFormat is true', (tester) async { + testWidgets('Should format phone number', (tester) async { PhoneNumber? phoneNumber = PhoneNumber.parse( '', destinationCountry: IsoCode.FR, ); - await tester.pumpWidget( - getWidget(initialValue: phoneNumber, shouldFormat: true)); + await tester.pumpWidget(getWidget(initialValue: phoneNumber)); await tester.pump(const Duration(seconds: 1)); final phoneField = find.byType(PhoneFormField); await tester.enterText(phoneField, '677777777'); @@ -102,219 +110,313 @@ void main() { testWidgets('Should show dial code when showDialCode is true', (tester) async { - PhoneNumber? phoneNumber = PhoneNumber.parse( - '', - destinationCountry: IsoCode.FR, - ); + PhoneNumber phoneNumber = PhoneNumber.parse('+33'); - await tester.pumpWidget(getWidget( + await tester.pumpWidget( + getWidget( initialValue: phoneNumber, showDialCode: true, - defaultCountry: IsoCode.FR)); + ), + ); await tester.pump(const Duration(seconds: 1)); expect(find.text('+ 33'), findsOneWidget); }); testWidgets('Should hide dial code when showDialCode is false', (tester) async { - PhoneNumber? phoneNumber = PhoneNumber.parse( - '', - destinationCountry: IsoCode.FR, - ); + PhoneNumber phoneNumber = PhoneNumber.parse('+33'); - await tester.pumpWidget(getWidget( + await tester.pumpWidget( + getWidget( initialValue: phoneNumber, showDialCode: false, - defaultCountry: IsoCode.FR)); + ), + ); await tester.pump(const Duration(seconds: 1)); expect(find.text('+ 33'), findsNothing); }); }); - group('value changes', () { - testWidgets('Should display initial value', (tester) async { - await tester.pumpWidget(getWidget( - initialValue: PhoneNumber.parse('478787827', - destinationCountry: IsoCode.FR))); - expect(find.text('+ 33'), findsWidgets); - expect(find.text('478787827'), findsOneWidget); - }); + testWidgets('Should display initial value', (tester) async { + await tester.pumpWidget( + getWidget( + initialValue: PhoneNumber.parse('+33478787827'), + ), + ); + await tester.pumpAndSettle(); + expect(find.text('+ 33'), findsWidgets); + expect(find.text('4 78 78 78 27'), findsOneWidget); + }); - testWidgets('Should change value of controller', (tester) async { - final controller = PhoneController(null); - PhoneNumber? newValue; - controller.addListener(() { - newValue = controller.value; - }); - await tester.pumpWidget( - getWidget(controller: controller, defaultCountry: IsoCode.US)); - final phoneField = find.byType(PhoneFormField); - await tester.tap(phoneField); - // non digits should not work - await tester.enterText(phoneField, '123456789'); - expect( - newValue, - equals( - PhoneNumber.parse( - '123456789', - destinationCountry: IsoCode.US, - ), - ), - ); + testWidgets('Should change value of controller', (tester) async { + final controller = PhoneController( + initialValue: PhoneNumber.parse('+1'), + ); + PhoneNumber? newValue; + controller.addListener(() { + newValue = controller.value; }); + await tester.pumpWidget(getWidget(controller: controller)); + final phoneField = find.byType(PhoneFormField); + await tester.tap(phoneField); + // non digits should not work + await tester.enterText(phoneField, '123456789'); + expect( + newValue, + equals(PhoneNumber.parse('+1 123456789')), + ); + }); - testWidgets('Should change value of input when controller changes', - (tester) async { - final controller = PhoneController(null); - // ignore: unused_local_variable - PhoneNumber? newValue; - controller.addListener(() { - newValue = controller.value; - }); - await tester.pumpWidget( - getWidget(controller: controller, defaultCountry: IsoCode.US)); - controller.value = - PhoneNumber.parse('488997722', destinationCountry: IsoCode.FR); - await tester.pump(const Duration(seconds: 1)); - expect(find.text('+ 33'), findsWidgets); - expect(find.text('488997722'), findsOneWidget); - }); - testWidgets( - 'Should change value of country code chip when full number copy pasted', - (tester) async { - final controller = PhoneController(null); - // ignore: unused_local_variable - PhoneNumber? newValue; - controller.addListener(() { - newValue = controller.value; - }); - await tester.pumpWidget( - getWidget(controller: controller, defaultCountry: IsoCode.US)); - final phoneField = find.byType(PhoneFormField); - await tester.tap(phoneField); - // non digits should not work - await tester.enterText(phoneField, '+33 0488 99 77 22'); - await tester.pump(); - expect(controller.value?.isoCode, equals(IsoCode.FR)); - expect(controller.value?.nsn, equals('488997722')); + testWidgets('Should change value of input when controller changes', + (tester) async { + final controller = PhoneController(); + await tester.pumpWidget(getWidget(controller: controller)); + controller.value = PhoneNumber.parse('+33488997722'); + + await tester.pumpAndSettle(); + + expect(find.text('+ 33'), findsWidgets); + expect(find.text(controller.value.formatNsn()), findsOneWidget); + }); + + testWidgets( + 'Should change value of country code chip when full number copy pasted', + (tester) async { + final controller = PhoneController(); + // ignore: unused_local_variable + PhoneNumber? newValue; + controller.addListener(() { + newValue = controller.value; }); + await tester.pumpWidget(getWidget(controller: controller)); + final phoneField = find.byType(PhoneFormField); + await tester.tap(phoneField); + // non digits should not work + await tester.enterText(phoneField, '+33 0488 99 77 22'); + await tester.pump(); + expect(controller.value.isoCode, equals(IsoCode.FR)); + expect(controller.value.nsn, equals('488997722')); + }); - testWidgets('Should call onChange', (tester) async { - bool changed = false; - PhoneNumber? phoneNumber = - PhoneNumber.parse('', destinationCountry: IsoCode.FR); - void onChanged(PhoneNumber? p) { - changed = true; - phoneNumber = p; - } + testWidgets('Should call onChange', (tester) async { + bool changed = false; + PhoneNumber? phoneNumber = + PhoneNumber.parse('', destinationCountry: IsoCode.FR); + void onChanged(PhoneNumber? p) { + changed = true; + phoneNumber = p; + } + + await tester.pumpWidget( + getWidget( + initialValue: phoneNumber, + onChanged: onChanged, + ), + ); + final phoneField = find.byType(PhoneFormField); + await tester.tap(phoneField); + // non digits should not work + await tester.enterText(phoneField, 'aaa'); + await tester.pump(const Duration(seconds: 1)); + expect(changed, equals(false)); + await tester.enterText(phoneField, '123'); + await tester.pump(const Duration(seconds: 1)); + expect(changed, equals(true)); + expect( + phoneNumber, + equals(PhoneNumber.parse('123', destinationCountry: IsoCode.FR)), + ); + }); + group('validator', () { + testWidgets( + 'Should display invalid message when PhoneValidator.valid is used ' + 'and the phone number is invalid', (tester) async { + PhoneNumber? phoneNumber = PhoneNumber.parse('+33'); await tester.pumpWidget( getWidget( initialValue: phoneNumber, - onChanged: onChanged, + validatorBuilder: (context) => PhoneValidator.valid(context), ), ); final phoneField = find.byType(PhoneFormField); - await tester.tap(phoneField); - // non digits should not work - await tester.enterText(phoneField, 'aaa'); - await tester.pump(const Duration(seconds: 1)); - expect(changed, equals(false)); - await tester.enterText(phoneField, '123'); - await tester.pump(const Duration(seconds: 1)); - expect(changed, equals(true)); - expect(phoneNumber, - equals(PhoneNumber.parse('123', destinationCountry: IsoCode.FR))); - }); - }); - - group('validity', () { - testWidgets('Should tell when a phone number is not valid', - (tester) async { - PhoneNumber? phoneNumber = PhoneNumber.parse( - '', - destinationCountry: IsoCode.FR, - ); - await tester.pumpWidget(getWidget(initialValue: phoneNumber)); - final phoneField = find.byType(PhoneFormField); await tester.enterText(phoneField, '9984'); - await tester.pump(const Duration(seconds: 1)); + await tester.pumpAndSettle(const Duration(seconds: 1)); - expect(find.text('Invalid phone number'), findsOneWidget); + expect( + find.text(PhoneFieldLocalizationImplEn().invalidPhoneNumber), + findsOneWidget, + ); }); testWidgets( - 'Should tell when a phone number is not valid for a given phone number type', + 'Should display invalid mobile phone when PhoneValidator.validMobile' + ' is used and the phone number is not a mobile phone number', (tester) async { - PhoneNumber? phoneNumber = PhoneNumber.parse( - '', - destinationCountry: IsoCode.BE, - ); - // valid fixed line + PhoneNumber? phoneNumber = PhoneNumber.parse('+33'); await tester.pumpWidget(getWidget( initialValue: phoneNumber, - validator: PhoneValidator.validFixedLine(), + validatorBuilder: (context) => PhoneValidator.validMobile(context), )); final phoneField = find.byType(PhoneFormField); - await tester.enterText(phoneField, '77777777'); + await tester.enterText(phoneField, '6 99 99 99 99'); await tester.pumpAndSettle(); - expect(find.text('Invalid'), findsNothing); - // invalid mobile + expect( + find.text(PhoneFieldLocalizationImplEn().invalidMobilePhoneNumber), + findsNothing, + ); + await tester.enterText(phoneField, '777'); + await tester.pumpAndSettle(); + expect( + find.text(PhoneFieldLocalizationImplEn().invalidMobilePhoneNumber), + findsOneWidget, + ); + }); + + testWidgets( + 'Should display invalid fixed line phone when PhoneValidator.validFixedLine' + ' is used and the phone number is not a fixed line phone number', + (tester) async { + PhoneNumber? phoneNumber = PhoneNumber.parse('+32'); await tester.pumpWidget(getWidget( initialValue: phoneNumber, - validator: PhoneValidator.validMobile( - errorText: 'Invalid phone number', - ), + validatorBuilder: (context) => PhoneValidator.validFixedLine(context), )); - final phoneField2 = find.byType(PhoneFormField); + final phoneField = find.byType(PhoneFormField); + await tester.enterText(phoneField, '67777777'); await tester.pumpAndSettle(); - await tester.enterText(phoneField2, '77777777'); + expect( + find.text(PhoneFieldLocalizationImplEn().invalidFixedLinePhoneNumber), + findsNothing, + ); + await tester.enterText(phoneField, '777'); await tester.pumpAndSettle(); - expect(find.text('Invalid phone number'), findsOneWidget); + expect( + find.text(PhoneFieldLocalizationImplEn().invalidFixedLinePhoneNumber), + findsOneWidget, + ); + }); - // valid mobile + testWidgets( + 'should display error when PhoneValidator.required is used and the nsn is empty', + (WidgetTester tester) async { + final controller = + PhoneController(initialValue: PhoneNumber.parse('+32 444')); await tester.pumpWidget(getWidget( - initialValue: phoneNumber, - validator: PhoneValidator.validMobile( - errorText: 'Invalid phone number', - ), + controller: controller, + validatorBuilder: (context) => PhoneValidator.required(context), )); - final phoneField3 = find.byType(PhoneFormField); - await tester.enterText(phoneField3, '477668899'); + controller.changeNationalNumber(''); await tester.pumpAndSettle(); - expect(find.text('Invalid'), findsNothing); + + expect( + find.text(PhoneFieldLocalizationImplEn().requiredPhoneNumber), + findsOneWidget, + ); }); - }); - group('Format', () { - testWidgets('Should format when shouldFormat is true', (tester) async { - PhoneNumber? phoneNumber = PhoneNumber.parse( - '', - destinationCountry: IsoCode.FR, + testWidgets( + 'should show error message when PhoneValidator.validCountry ' + 'is used and the current country is invalid', + (WidgetTester tester) async { + final controller = + PhoneController(initialValue: PhoneNumber.parse('+32 444')); + await tester.pumpWidget(getWidget( + controller: controller, + validatorBuilder: (context) => + PhoneValidator.validCountry(context, [IsoCode.FR, IsoCode.BE]), + )); + controller.changeCountry(IsoCode.US); + await tester.pumpAndSettle(); + expect( + find.text(PhoneFieldLocalizationImplEn().invalidCountry), + findsOneWidget, + ); + }, + ); + + testWidgets('should validate against all validators when compose is used', + (WidgetTester tester) async { + bool first = false; + bool second = false; + bool last = false; + + final validator = PhoneValidator.compose([ + (PhoneNumber? p) { + first = true; + return null; + }, + (PhoneNumber? p) { + second = true; + return null; + }, + (PhoneNumber? p) { + last = true; + return null; + }, + ]); + + await tester.pumpWidget( + getWidget( + initialValue: PhoneNumber.parse('+33'), + validatorBuilder: (context) => validator, + ), ); + final phoneField = find.byType(PhoneFormField); + await tester.enterText(phoneField, '9999'); + await tester.pumpAndSettle(); + expect(first, isTrue); + expect(second, isTrue); + expect(last, isTrue); + }); + testWidgets( + 'should stop and return first validator failure when compose is used', + (WidgetTester tester) async { + bool firstValidationDone = false; + bool lastValidationDone = false; + final validator = PhoneValidator.compose([ + (PhoneNumber? p) { + firstValidationDone = true; + return null; + }, + (PhoneNumber? p) { + return 'validation failed'; + }, + (PhoneNumber? p) { + lastValidationDone = true; + return null; + }, + ]); await tester.pumpWidget( - getWidget(initialValue: phoneNumber, shouldFormat: true)); - await tester.pump(const Duration(seconds: 1)); + getWidget( + initialValue: PhoneNumber.parse('+33'), + validatorBuilder: (context) => validator, + ), + ); final phoneField = find.byType(PhoneFormField); - await tester.enterText(phoneField, '677777777'); - await tester.pump(const Duration(seconds: 1)); - expect(find.text('6 77 77 77 77'), findsOneWidget); + await tester.enterText(phoneField, '9999'); + await tester.pumpAndSettle(); + + expect(find.text('validation failed'), findsOneWidget); + expect(firstValidationDone, isTrue); + expect(lastValidationDone, isFalse); }); - testWidgets('Should not format when shouldFormat is false', - (tester) async { + }); + + group('Format', () { + testWidgets('Should format when shouldFormat is true', (tester) async { PhoneNumber? phoneNumber = PhoneNumber.parse( '', destinationCountry: IsoCode.FR, ); - await tester.pumpWidget( - getWidget(initialValue: phoneNumber, shouldFormat: false)); + await tester.pumpWidget(getWidget(initialValue: phoneNumber)); await tester.pump(const Duration(seconds: 1)); final phoneField = find.byType(PhoneFormField); await tester.enterText(phoneField, '677777777'); await tester.pump(const Duration(seconds: 1)); - expect(find.text('677777777'), findsOneWidget); + expect(find.text('6 77 77 77 77'), findsOneWidget); }); }); @@ -335,18 +437,22 @@ void main() { onSaved: onSaved, )); final phoneField = find.byType(PhoneFormField); - await tester.enterText(phoneField, '479281938'); + await tester.enterText(phoneField, '477889922'); await tester.pump(const Duration(seconds: 1)); formKey.currentState?.save(); await tester.pump(const Duration(seconds: 1)); expect(saved, isTrue); expect( - phoneNumber, - equals(PhoneNumber.parse( - '479281938', + phoneNumber, + equals( + PhoneNumber.parse( + '477 88 99 22', destinationCountry: IsoCode.FR, - ))); + ), + ), + ); }); + testWidgets('Should call onTapOutside', (tester) async { PhoneNumber? phoneNumber = PhoneNumber.parse( '', @@ -370,7 +476,7 @@ void main() { // Tap on the PhoneFormField to focus it final phoneField = find.byType(PhoneFormField); - await tester.enterText(phoneField, '479281938'); + await tester.enterText(phoneField, '488 22 33 44'); await tester.pump(const Duration(seconds: 1)); // Verify that the PhoneFormField has focus @@ -416,20 +522,18 @@ void main() { ); }); - testWidgets('Should reset', (tester) async { - PhoneNumber? phoneNumber = PhoneNumber.parse( - '', - destinationCountry: IsoCode.FR, - ); + testWidgets('Should reset with form state', (tester) async { + PhoneNumber? phoneNumber = PhoneNumber.parse('+32'); await tester.pumpWidget(getWidget(initialValue: phoneNumber)); await tester.pump(const Duration(seconds: 1)); - const national = '123456'; + const national = '477 88 99 22'; final phoneField = find.byType(PhoneFormField); await tester.enterText(phoneField, national); + await tester.pumpAndSettle(); expect(find.text(national), findsOneWidget); formKey.currentState?.reset(); - await tester.pump(const Duration(seconds: 1)); + await tester.pumpAndSettle(); expect(find.text(national), findsNothing); }); }); diff --git a/test/phone_validator_test.dart b/test/phone_validator_test.dart deleted file mode 100644 index c246e9e5..00000000 --- a/test/phone_validator_test.dart +++ /dev/null @@ -1,203 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:phone_form_field/phone_form_field.dart'; - -void main() async { - group('PhoneValidator.compose', () { - testWidgets('compose should test each validator', - (WidgetTester tester) async { - bool first = false; - bool second = false; - bool last = false; - - final validator = PhoneValidator.compose([ - (PhoneNumber? p) { - first = true; - return null; - }, - (PhoneNumber? p) { - second = true; - return null; - }, - (PhoneNumber? p) { - last = true; - return null; - }, - ]); - - expect( - validator(const PhoneNumber(isoCode: IsoCode.FR, nsn: '')), isNull); - expect(first, isTrue); - expect(second, isTrue); - expect(last, isTrue); - }); - - testWidgets('compose should stop and return first validator failure', - (WidgetTester tester) async { - bool firstValidationDone = false; - bool lastValidationDone = false; - final validator = PhoneValidator.compose([ - (PhoneNumber? p) { - firstValidationDone = true; - return null; - }, - (PhoneNumber? p) { - return 'validation failed'; - }, - (PhoneNumber? p) { - lastValidationDone = true; - return null; - }, - ]); - expect(validator(const PhoneNumber(isoCode: IsoCode.FR, nsn: '')), - equals('validation failed')); - expect(firstValidationDone, isTrue); - expect(lastValidationDone, isFalse); - }); - }); - - group('PhoneValidator.required', () { - testWidgets('should be required value', (WidgetTester tester) async { - final validator = PhoneValidator.required(); - expect( - validator(const PhoneNumber(isoCode: IsoCode.US, nsn: '')), - equals('requiredPhoneNumber'), - ); - - final validatorWithText = PhoneValidator.required( - errorText: 'custom message', - ); - expect( - validatorWithText(const PhoneNumber(isoCode: IsoCode.US, nsn: '')), - equals('custom message'), - ); - }); - }); - - group('PhoneValidator.invalid', () { - testWidgets('should be invalid', (WidgetTester tester) async { - final validator = PhoneValidator.valid(); - expect( - validator(const PhoneNumber(isoCode: IsoCode.FR, nsn: '123')), - equals('invalidPhoneNumber'), - ); - - final validatorWithText = PhoneValidator.valid( - errorText: 'custom message', - ); - expect( - validatorWithText(const PhoneNumber(isoCode: IsoCode.FR, nsn: '123')), - equals('custom message'), - ); - }); - - testWidgets('should (not) be invalid when (no) value entered', - (WidgetTester tester) async { - final validator = PhoneValidator.valid(); - expect( - validator(const PhoneNumber(isoCode: IsoCode.FR, nsn: '')), - isNull, - ); - - final validatorNotEmpty = PhoneValidator.valid(allowEmpty: false); - expect( - validatorNotEmpty(const PhoneNumber(isoCode: IsoCode.FR, nsn: '')), - equals('invalidPhoneNumber'), - ); - }); - }); - - group('PhoneValidator.type', () { - testWidgets('should be invalid mobile type', (WidgetTester tester) async { - final validator = PhoneValidator.validMobile(); - expect( - validator(const PhoneNumber(isoCode: IsoCode.FR, nsn: '412345678')), - equals('invalidMobilePhoneNumber'), - ); - - final validatorWithText = PhoneValidator.validMobile( - errorText: 'custom type message', - ); - expect( - validatorWithText( - const PhoneNumber(isoCode: IsoCode.FR, nsn: '412345678')), - equals('custom type message'), - ); - }); - - testWidgets('should (not) be invalid mobile type when (no) value entered', - (WidgetTester tester) async { - final validator = PhoneValidator.validMobile(); - expect( - validator(const PhoneNumber(isoCode: IsoCode.FR, nsn: '')), - isNull, - ); - - final validatorNotEmpty = PhoneValidator.validMobile(allowEmpty: false); - expect( - validatorNotEmpty(const PhoneNumber(isoCode: IsoCode.FR, nsn: '')), - equals('invalidMobilePhoneNumber'), - ); - }); - - testWidgets('should be invalid fixed line type', - (WidgetTester tester) async { - final validator = PhoneValidator.validFixedLine(); - expect( - validator(const PhoneNumber(isoCode: IsoCode.FR, nsn: '612345678')), - equals('invalidFixedLinePhoneNumber'), - ); - - final validatorWithText = PhoneValidator.validFixedLine( - errorText: 'custom fixed type message', - ); - expect( - validatorWithText( - const PhoneNumber(isoCode: IsoCode.FR, nsn: '612345678')), - equals('custom fixed type message'), - ); - }); - - testWidgets( - 'should (not) be invalid fixed line type when (no) value entered', - (WidgetTester tester) async { - final validator = PhoneValidator.validFixedLine(); - expect( - validator(const PhoneNumber(isoCode: IsoCode.FR, nsn: '')), isNull); - - final validatorNotEmpty = - PhoneValidator.validFixedLine(allowEmpty: false); - expect( - validatorNotEmpty(const PhoneNumber(isoCode: IsoCode.FR, nsn: '')), - equals('invalidFixedLinePhoneNumber'), - ); - }); - }); - - group('PhoneValidator.country', () { - testWidgets('should be invalid country', (WidgetTester tester) async { - final validator = PhoneValidator.validCountry([IsoCode.FR, IsoCode.BE]); - expect( - validator(const PhoneNumber(isoCode: IsoCode.US, nsn: '112')), - equals('invalidCountry'), - ); - }); - - testWidgets('should (not) be invalid country when (no) value entered', - (WidgetTester tester) async { - final validator = PhoneValidator.validCountry([IsoCode.US, IsoCode.BE]); - expect( - validator(const PhoneNumber(isoCode: IsoCode.FR, nsn: '')), - isNull, - ); - - final validatorNotEmpty = PhoneValidator.validCountry( - [IsoCode.US, IsoCode.BE], - allowEmpty: false, - ); - expect( - validatorNotEmpty(const PhoneNumber(isoCode: IsoCode.FR, nsn: '')), - equals('invalidCountry'), - ); - }); - }); -}