From e87edbefcbe6a78ed6ac05910a7dd9caadc79122 Mon Sep 17 00:00:00 2001 From: cedvdb Date: Mon, 5 Feb 2024 15:57:33 +0100 Subject: [PATCH] Revert "9.0.0 (#214)" This reverts commit 29de145525177dd379b5d24de3d49075b4c90b06. --- .github/workflows/{tests.yml => ci.yml} | 0 .github/workflows/deploy_demo.yml | 49 - .gitignore | 6 +- .pubignore | 36 + CHANGELOG.md | 18 - README.md | 113 +- build.sh | 1 + demo_image.png | Bin 0 -> 131018 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 295 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 406 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 450 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 282 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 462 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 704 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 406 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 586 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 862 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 862 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 1674 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 762 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 1226 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 1418 -> 3612 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 102994 -> 0 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 5680 -> 0 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 520 -> 0 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 14142 -> 0 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 1066 -> 0 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 36406 -> 0 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 2218 -> 0 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 +- .../patterns.dart} | 2 +- 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 - .../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 -- .../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_navigator.dart | 174 +- .../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 +- ... => _country_selector_navigator_test.dart} | 26 +- test/_country_selector_test.dart | 251 +++ test/phone_form_field_test.dart | 524 ++--- test/phone_validator_test.dart | 203 ++ 206 files changed, 22858 insertions(+), 4588 deletions(-) rename .github/workflows/{tests.yml => ci.yml} (100%) delete mode 100644 .github/workflows/deploy_demo.yml create mode 100644 .pubignore create mode 100644 build.sh create mode 100644 demo_image.png create mode 100644 example/.github/workflows/ci.yml create mode 100644 example/.pubignore delete mode 100644 example/ios/RunnerTests/RunnerTests.swift delete mode 100644 example/linux/.gitignore delete mode 100644 example/linux/CMakeLists.txt delete mode 100644 example/linux/flutter/CMakeLists.txt delete mode 100644 example/linux/flutter/generated_plugins.cmake delete mode 100644 example/linux/main.cc delete mode 100644 example/linux/my_application.cc delete mode 100644 example/linux/my_application.h delete mode 100644 example/macos/.gitignore delete mode 100644 example/macos/Flutter/Flutter-Debug.xcconfig delete mode 100644 example/macos/Flutter/Flutter-Release.xcconfig delete mode 100644 example/macos/Flutter/GeneratedPluginRegistrant.swift delete mode 100644 example/macos/Flutter/ephemeral/Flutter-Generated.xcconfig delete mode 100644 example/macos/Flutter/ephemeral/flutter_export_environment.sh delete mode 100644 example/macos/Runner.xcodeproj/project.pbxproj delete mode 100644 example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 example/macos/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 example/macos/Runner/AppDelegate.swift delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png delete mode 100644 example/macos/Runner/Base.lproj/MainMenu.xib delete mode 100644 example/macos/Runner/Configs/AppInfo.xcconfig delete mode 100644 example/macos/Runner/Configs/Debug.xcconfig delete mode 100644 example/macos/Runner/Configs/Release.xcconfig delete mode 100644 example/macos/Runner/Configs/Warnings.xcconfig delete mode 100644 example/macos/Runner/DebugProfile.entitlements delete mode 100644 example/macos/Runner/Info.plist delete mode 100644 example/macos/Runner/MainFlutterWindow.swift delete mode 100644 example/macos/Runner/Release.entitlements delete mode 100644 example/macos/RunnerTests/RunnerTests.swift create mode 100644 example/windows/flutter/generated_plugin_registrant.cc create mode 100644 example/windows/flutter/generated_plugin_registrant.h delete mode 100644 l10n/ar.arb delete mode 100644 l10n/ckb.arb delete mode 100644 l10n/de.arb delete mode 100644 l10n/el.arb delete mode 100644 l10n/en.arb delete mode 100644 l10n/es.arb delete mode 100644 l10n/fa.arb delete mode 100644 l10n/fr.arb delete mode 100644 l10n/hi.arb delete mode 100644 l10n/it.arb delete mode 100644 l10n/ku.arb delete mode 100644 l10n/nb.arb delete mode 100644 l10n/nl.arb delete mode 100644 l10n/pt.arb delete mode 100644 l10n/ru.arb delete mode 100644 l10n/sv.arb delete mode 100644 l10n/tr.arb delete mode 100644 l10n/uk.arb delete mode 100644 l10n/uz.arb delete mode 100644 l10n/zh.arb create mode 100644 lib/l10n/ar.arb create mode 100644 lib/l10n/de.arb create mode 100644 lib/l10n/el.arb create mode 100644 lib/l10n/en.arb create mode 100644 lib/l10n/es.arb create mode 100644 lib/l10n/fa.arb create mode 100644 lib/l10n/fr.arb create mode 100644 lib/l10n/generated/phone_field_localization.dart create mode 100644 lib/l10n/generated/phone_field_localization_ar.dart create mode 100644 lib/l10n/generated/phone_field_localization_de.dart create mode 100644 lib/l10n/generated/phone_field_localization_el.dart create mode 100644 lib/l10n/generated/phone_field_localization_en.dart create mode 100644 lib/l10n/generated/phone_field_localization_es.dart create mode 100644 lib/l10n/generated/phone_field_localization_fa.dart create mode 100644 lib/l10n/generated/phone_field_localization_fr.dart create mode 100644 lib/l10n/generated/phone_field_localization_hi.dart create mode 100644 lib/l10n/generated/phone_field_localization_it.dart create mode 100644 lib/l10n/generated/phone_field_localization_nb.dart create mode 100644 lib/l10n/generated/phone_field_localization_nl.dart create mode 100644 lib/l10n/generated/phone_field_localization_pt.dart create mode 100644 lib/l10n/generated/phone_field_localization_ru.dart create mode 100644 lib/l10n/generated/phone_field_localization_sv.dart create mode 100644 lib/l10n/generated/phone_field_localization_tr.dart create mode 100644 lib/l10n/generated/phone_field_localization_uk.dart create mode 100644 lib/l10n/generated/phone_field_localization_uz.dart create mode 100644 lib/l10n/generated/phone_field_localization_zh.dart create mode 100644 lib/l10n/hi.arb create mode 100644 lib/l10n/it.arb create mode 100644 lib/l10n/nb.arb create mode 100644 lib/l10n/nl.arb create mode 100644 lib/l10n/pt.arb create mode 100644 lib/l10n/ru.arb create mode 100644 lib/l10n/sv.arb create mode 100644 lib/l10n/tr.arb create mode 100644 lib/l10n/uk.arb create mode 100644 lib/l10n/uz.arb create mode 100644 lib/l10n/zh.arb rename lib/src/{validation/allowed_characters.dart => constants/patterns.dart} (90%) create mode 100644 lib/src/controllers/phone_controller.dart create mode 100644 lib/src/controllers/phone_field_controller.dart delete mode 100644 lib/src/country/country_button.dart delete mode 100644 lib/src/country_button.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_ar.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_ckb.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_de.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_el.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_en.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_es.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_fa.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_fr.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_hi.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_it.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_ku.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_nb.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_nl.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_pt.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_ru.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_sv.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_tr.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_uk.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_uz.dart delete mode 100644 lib/src/localization/generated/phone_field_localization_impl_zh.dart delete mode 100644 lib/src/localization/localization.dart delete mode 100644 lib/src/phone_controller.dart delete mode 100644 lib/src/phone_form_field.dart delete mode 100644 lib/src/phone_form_field_state.dart delete mode 100644 lib/src/validation/localized_validation_error.dart create mode 100644 lib/src/validation/validator_translator.dart create mode 100644 lib/src/widgets/country_code_chip.dart create mode 100644 lib/src/widgets/country_selector/country.dart create mode 100644 lib/src/widgets/country_selector/country_finder.dart create mode 100644 lib/src/widgets/country_selector/country_list.dart create mode 100644 lib/src/widgets/country_selector/country_selector.dart rename lib/src/{ => widgets/country_selector}/country_selector_navigator.dart (71%) create mode 100644 lib/src/widgets/country_selector/country_selector_page.dart create mode 100644 lib/src/widgets/country_selector/localized_country_registry.dart create mode 100644 lib/src/widgets/country_selector/search_box.dart create mode 100644 lib/src/widgets/phone_field.dart create mode 100644 lib/src/widgets/phone_field_state.dart create mode 100644 lib/src/widgets/phone_form_field.dart create mode 100644 lib/src/widgets/phone_form_field_state.dart rename test/{country_selector_navigator_test.dart => _country_selector_navigator_test.dart} (61%) create mode 100644 test/_country_selector_test.dart create mode 100644 test/phone_validator_test.dart diff --git a/.github/workflows/tests.yml b/.github/workflows/ci.yml similarity index 100% rename from .github/workflows/tests.yml rename to .github/workflows/ci.yml diff --git a/.github/workflows/deploy_demo.yml b/.github/workflows/deploy_demo.yml deleted file mode 100644 index 9de33649..00000000 --- a/.github/workflows/deploy_demo.yml +++ /dev/null @@ -1,49 +0,0 @@ -# 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/.gitignore b/.gitignore index 2aad77e9..5bce2af0 100644 --- a/.gitignore +++ b/.gitignore @@ -27,8 +27,4 @@ .dart_tool/ .packages build/ -example/build -**/generated_plugin_registrant.dart -**/generated_plugin_registrant.cc -**/generated_plugin_registrant.h -**/generated_plugin_registrant.cmake +example/build \ No newline at end of file diff --git a/.pubignore b/.pubignore new file mode 100644 index 00000000..d01dc04c --- /dev/null +++ b/.pubignore @@ -0,0 +1,36 @@ +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 aa938b90..3524e354 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,21 +1,3 @@ -## [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 58860224..9ea08993 100644 --- a/README.md +++ b/README.md @@ -5,42 +5,52 @@ Flutter phone input integrated with flutter internationalization ## Features - Totally cross platform, this is a dart only package / dependencies -- Internationalization: many languages supported -- Semantics +- Internationalization - Phone formatting localized by region - Phone number validation (built-in validators included for main use cases) -- Support auto fill and copy paste -- Form field +- Support autofill and copy paste +- Extends Flutter's FormField - 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(); -/// params +// all params PhoneFormField( - 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 - // ... -); + 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 +) + ``` ## Validation @@ -58,6 +68,7 @@ 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 @@ -92,8 +103,8 @@ Here are the list of the parameters available for all built-in country selector ### Built-in country selector -* **CountrySelectorNavigator.page** - Open a page to select the country. +* **CountrySelectorNavigator.searchDelegate** + Open a dialog to select the country. No extra parameters * **CountrySelectorNavigator.dialog** @@ -123,11 +134,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 `show` expected to return the selected country: +It has one required method `navigate` expected to return the selected country: ```dart class CustomCountrySelectorNavigator implements CountrySelectorNavigator { - Future show(BuildContext context) { + Future navigate(BuildContext context) { // ask user for a country and return related `Country` class } } @@ -142,12 +153,6 @@ 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 @@ -170,26 +175,26 @@ This package uses the `flutter_country_selector` package under the hood, which e That's it. -### Supported languages - - - ar - - de - - el - - en - - es - - fa - - fr - - hi - - it - - ku - - nb - - nl - - pt - - ru - - sv - - tr - - uk - - uz - - zh + A bunch of languages are built-in: + + - 'ar', + - 'de', + - 'en', + - 'el' + - 'es', + - 'fr', + - 'hin', + - 'it', + - 'nb', + - 'nl', + - 'pt', + - 'ru', + - 'uz', + - 'uk', + - 'tr', + - 'zh', + - 'sv', + -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. + If one of the language you target is not supported you can submit a + pull request with the translated file in src/l10n diff --git a/build.sh b/build.sh new file mode 100644 index 00000000..27451c48 --- /dev/null +++ b/build.sh @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..3ce97c4ded06771c39d6749c355e11ac1aff04a9 GIT binary patch literal 131018 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

-o77QyHQxXu5yxL6~6 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 V-3*VU$%ChoIUz5Zc>IFPe*g&~yU73m literal 0 HcmV?d00001 diff --git a/example/.github/workflows/ci.yml b/example/.github/workflows/ci.yml new file mode 100644 index 00000000..2fd394ce --- /dev/null +++ b/example/.github/workflows/ci.yml @@ -0,0 +1,23 @@ +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 29a3a501..a1345d01 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -8,7 +8,6 @@ .buildlog/ .history .svn/ -migrate_working_dir/ # IntelliJ related *.iml @@ -27,10 +26,13 @@ migrate_working_dir/ .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 b5c370f3..0a999ee9 100644 --- a/example/.metadata +++ b/example/.metadata @@ -4,42 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "41456452f29d64e8deb623a3c927524bcf9f111b" - channel: "stable" + revision: db747aa1331bd95bc9b3874c842261ca2d302cd5 + 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 new file mode 100644 index 00000000..b349b8a0 --- /dev/null +++ b/example/.pubignore @@ -0,0 +1,76 @@ +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 2b3fce4c..a1356260 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://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) +- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) -For help getting started with Flutter development, view the -[online documentation](https://docs.flutter.dev/), which offers tutorials, +For help getting started with Flutter, view our +[online documentation](https://flutter.dev/docs), 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 0d290213..61b6c4de 100644 --- a/example/analysis_options.yaml +++ b/example/analysis_options.yaml @@ -13,7 +13,8 @@ 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.dev/lints. + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. # # 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 118ee1d9..5fe3c929 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -1,9 +1,3 @@ -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()) { @@ -12,6 +6,11 @@ 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' @@ -22,10 +21,12 @@ 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 @@ -43,8 +44,6 @@ 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() @@ -64,4 +63,6 @@ flutter { source '../..' } -dependencies {} +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml index 399f6981..c208884f 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 19b862ec..3f41384d 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ - - + 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 06952be7..3db14bb5 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 e83fb5da..4256f917 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,11 +1,12 @@ buildscript { - ext.kotlin_version = '1.7.10' + ext.kotlin_version = '1.6.10' repositories { google() mavenCentral() } dependencies { + classpath 'com.android.tools.build:gradle:4.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -25,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -tasks.register("clean", Delete) { +task clean(type: Delete) { delete rootProject.buildDir } diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 598d13fe..94adc3a3 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1,3 +1,3 @@ -org.gradle.jvmargs=-Xmx4G +org.gradle.jvmargs=-Xmx1536M 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 3c472b99..bc6a58af 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#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-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 7cd71285..44e62bcf 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,29 +1,11 @@ -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() +include ':app' - includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() - repositories { - google() - mavenCentral() - gradlePluginPortal() - } +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } - 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" +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" diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist index 7c569640..9625e105 100644 --- a/example/ios/Flutter/AppFrameworkInfo.plist +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 11.0 diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 69cdaed8..fe3d67b2 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -13,19 +13,8 @@ 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; @@ -53,8 +42,6 @@ 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 */ @@ -79,21 +66,12 @@ 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 = ""; }; @@ -101,7 +79,6 @@ isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, - 331C8081294A63A400263BE5 /* RunnerTests.xctest */, ); name = Products; sourceTree = ""; @@ -124,24 +101,6 @@ /* 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" */; @@ -168,14 +127,9 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { - 331C8080294A63A400263BE5 = { - CreatedOnToolsVersion = 14.0; - TestTargetID = 97C146ED1CF9000F007C117D; - }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; @@ -196,19 +150,11 @@ 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; @@ -230,7 +176,6 @@ files = ( ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -257,14 +202,6 @@ /* 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; @@ -276,14 +213,6 @@ }; /* 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; @@ -345,7 +274,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -375,56 +304,6 @@ }; 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 = { @@ -472,7 +351,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -521,7 +400,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -578,16 +457,6 @@ /* 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 87131a09..c87d15a3 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ - - - - 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=_*mso9Gw7hsN~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 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index 797d452e458972bab9d994556c8305db4c827017..2ccbfd967d9697cd4b83225558af2911e9571c9b 100644 GIT binary patch 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-`dUU+>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 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png index 6ed2d933e1120817fe9182483a228007b18ab6ae..f091b6b0bca859a3f474b03065bef75ba58a9e4c 100644 GIT binary patch delta 1582 zcmV+}2GRM#1GEf~8Gi-<0027t*>V5?1^Y=vK~!ko-J4%*6h$1z_l{zTu}>N$Y77dN z(jrej`JjnWDIm3fj{j>}J%k>VpVM zMunJ?rSR(^OuXDgm2)PP%Lw)()f=TG1B~ScNUFa-({vjDk;dweRiFe?w-6Qho(O1_ zv!(2WV2ZhFC1SqPt}wig>|5C zrh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)yRAZ>eDe#*r`yDAVgB_R* zLB*MAc8_?!g7#WjJA zNf*S~m|;6j!A4w$ko3-C-D?f3QiNoOywjDS!K#57`tfjzaqOr$8SWAG-j-YxSgf$JEO3s=FUciZf^T1|d zdlv{cAz-VWC8|7CEV-;Wb6Vzrt)AkMWOkTe+ZBtZc)X@JVej7(9Qa3q{qv~yUkR%F zgV1zYf*?t3UMs{3OLcKP1Z6m=c&$AQlc=-2K7W6gDCe$axhg&7qBi(Mc=7aOu!`S0t-8gf#ZQK=m_VkJUaO-56fxM&#U}>8ioQPQ~9Xan>71|{&AvQNWKoV z(G*V$cD|NEzl(OC?HDr#Cqt&AdqP30PY2p48uOaogm_>#S_o_EvD7yf32g)`v6|+S zX@6g&FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zmZQj(aA_HeBY&OC^ zjj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5KhX*|AU4QE#~SgPzO zXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&f`88QO)34l90xUaIcrN!i^H~!$VzZpscObr z3PVpq)=3d6{*YiK7;ZBp6>?f?;EtO_0nMBTIICp>R=3LV88-e@FYC%|E0}pO*gziiBLfe{%Kc@qo)p8GVT7N0* z4M_Lw1tG5n(zZ5$P*4jGZTlL!ZFJhUpIRgx=rAmS%;sT8&)W?`?kC{()PbwS3u#;G z5xOo6ZIjcs{+JdGz5K@sSo14D=FzK={`?LQo~r_Pel@s?4}xpcmx|K19GZo;!D-un zE}eyzVa=&&Sk`n2mb~yf2+vl6yMJIGxIEq&SWRe)op$60@i246YB3>oE(3e2L-^}4_|K@$pmRb!NBBQzlNb;zJF zMc&w;%{On(HbQ| z@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)yI9C9*oUga6 z=hxw6QasLPnee@3^pcqGR@o#L@+8nuG5suzgA#ZC&s z|EF-4U3#nH>r^ME@~U|CYWRjZ`yN=c=Fr}#_Mgg|JQ_F~MDJ{2FSyz9PS&T@VVxu? zJm1Eneyq~b<9m$74O-iHG@!Fk->^qks+0-Tx2T+XVGXw8twMc3$0rG>+mL)4wdl~R g1N9*XHQJT-A9HGq3eLdY0ssI207*qoM6N<$f)O(SQ~&?~ delta 435 zcmV;k0Zjh148jAD8Gi!+000dlDL?=K0EAFXR7L;)|5U~JDYo_jSDRPH_*uvJ?fL$s z;QQnD{*>GM-ShrilfUZt{^9lhT*&z4_x{-O{Rv#2V9EI}xb^~1iQe@7)8g(7UZ4B@ z|4zgB>+<*9=;^^)>d)H7pzGjuM>Jnezy3`@G2r z?{~a!Fj;`+8Gq^x2Jl;?IEV8)=fG217*|@)CCYgFze-x?IFODUIA>nWKpE+bn~n7; z-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGrXPIdeRE&b2Thd#{MtDK$ zpx*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{HY|nMnXd&JOovdH8X7*Z%cCe|Ky#N6OdYPD1DGfinGF##;07BPDy$fz({%k7zJV=01O#K z=|NTR39NyVgTVMzbvyw=V8BQ^20R3~6xvV{d46VD* zR9nhU01J#6NqMPrrB8cABapAFa= z`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#%Enr|^CWdVV!-4*Y_7rFv zlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br41c(0^;RmcE^tRgds9Z&8hKi= zcKAYL;9Lx6i;lps;xDq`;I4K{zDBEA0j=ca%(UaZ^JThn2CV|_Pl2;B96VFv)Rf2t z%PnxaEcWz-+|yxe=6OZ+TI0dnTP=HgLyBeJX=bZ{9ZiP$!~;)Hi_Rv<2T%y1?BKb+ zkiESjp?|HN*EQj_#)s*NZvW`;FEMwvTV79r(`E7ec!|kH=*oFeVBl&Qp6&^Fsyl30 z$u-+x<;Bl0CfwU;+0g8P&wgLx+sTA2EtZ>G3;|*)hG({h?CA-Ys=l7o?Y-5-F)=S* zIa%VwWI|`ou#mvIKy2;IvwM@+y~XFyn8tTw-G7c`@Zl5i^`8l&mlL{jhO&duh&h|% zw;xV1(6-=>lrmk$4clO3ePuq`9Wr=F#2*VHFb11%VdlH9IC*4@oo|fr*X$yJH6*TP z;Fg`qdbL$@eCS+>x6TV4ALi1JrwKQ0BQDN!_iY;)*|&?XLXO0VpiU)azS@j|*ol|7 zH-GVB^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy0um=e3$K3i6K{U_ z4K!EXqVZqE6)=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 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png index fe730945a01f64a61e2235dbe3f45b08f7729182..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 100644 GIT binary patch literal 1716 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 Zxpx7IC@PekH?;r&002ovPDHLkV1i)CYaajr diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 797d452e458972bab9d994556c8305db4c827017..2ccbfd967d9697cd4b83225558af2911e9571c9b 100644 GIT binary patch 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-`dUU+>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 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png index 502f463a9bc882b461c96aadf492d1729e49e725..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 100644 GIT binary patch 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;! delta 572 zcmV-C0>l014$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- 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 0ec303439225b78712f49115768196d8d76f6790..a6d6b8609df07bf62e5100a53a01510388bd2b22 100644 GIT binary patch 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^ 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 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 0ec303439225b78712f49115768196d8d76f6790..a6d6b8609df07bf62e5100a53a01510388bd2b22 100644 GIT binary patch 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^ 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 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 e9f5fea27c705180eb716271f41b582e76dcbd90..75b2d164a5a98e212cca15ea7bf2ab5de5108680 100644 GIT binary patch literal 3831 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 delta 1668 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 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png index 8953cba09064923c5daf2d37e7c3c836ccdd794b..6a84f41e14e27f4b11f16f9ee39279ac98f8d5ac 100644 GIT binary patch literal 3294 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 diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index 0467bf12aa4d28f374bb26596605a46dcbb3e7c8..d0e1f58536026aebc4f1f70e481f6993c9ff088d 100644 GIT binary patch literal 3612 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 iW8{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* diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index 5458fc41..7f553465 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -41,6 +41,8 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIViewControllerBasedStatusBarAppearance + CADisableMinimumFrameDurationOnPhone UIApplicationSupportsIndirectInputEvents diff --git a/example/ios/RunnerTests/RunnerTests.swift b/example/ios/RunnerTests/RunnerTests.swift deleted file mode 100644 index 86a7c3b1..00000000 --- a/example/ios/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -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 9bab2010..2f0b915b 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:phone_form_field/phone_form_field.dart'; void main() { @@ -10,33 +11,35 @@ 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 isCountryButtonPersistant; + final bool shouldFormat; + final bool isCountryChipPersistent; 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.isCountryButtonPersistant, + required this.shouldFormat, + required this.isCountryChipPersistent, required this.mobileOnly, required this.useRtl, }) : super(key: key); - PhoneNumberInputValidator? _getValidator(BuildContext context) { + PhoneNumberInputValidator? _getValidator() { List validators = []; if (mobileOnly) { - validators.add(PhoneValidator.validMobile(context)); + validators.add(PhoneValidator.validMobile()); } else { - validators.add(PhoneValidator.valid(context)); + validators.add(PhoneValidator.valid()); } return validators.isNotEmpty ? PhoneValidator.compose(validators) : null; } @@ -47,12 +50,13 @@ class PhoneFieldView extends StatelessWidget { child: Directionality( textDirection: useRtl ? TextDirection.rtl : TextDirection.ltr, child: PhoneFormField( - focusNode: focusNode, + key: inputKey, controller: controller, - isCountryButtonPersistent: isCountryButtonPersistant, + shouldFormat: shouldFormat && !useRtl, autofocus: false, autofillHints: const [AutofillHints.telephoneNumber], countrySelectorNavigator: selectorNavigator, + defaultCountry: IsoCode.US, decoration: InputDecoration( label: withLabel ? const Text('Phone') : null, border: outlineBorder @@ -63,13 +67,14 @@ class PhoneFieldView extends StatelessWidget { enabled: true, showIsoCodeInInput: false, showFlagInInput: true, - validator: _getValidator(context), + validator: _getValidator(), 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, ), ), ); @@ -82,7 +87,10 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - localizationsDelegates: PhoneFieldLocalization.delegates, + localizationsDelegates: const [ + ...GlobalMaterialLocalizations.delegates, + PhoneFieldLocalization.delegate + ], supportedLocales: const [ Locale('en', ''), Locale('fr', ''), @@ -98,7 +106,7 @@ class MyApp extends StatelessWidget { ], title: 'Phone field demo', theme: ThemeData( - brightness: Brightness.dark, + brightness: Brightness.light, primarySwatch: Colors.blue, ), home: const PhoneFormFieldScreen(), @@ -115,21 +123,21 @@ class PhoneFormFieldScreen extends StatefulWidget { class PhoneFormFieldScreenState extends State { late PhoneController controller; - final FocusNode focusNode = FocusNode(); - bool outlineBorder = true; bool mobileOnly = true; - bool isCountryButtonPersistent = true; + bool shouldFormat = true; + bool isCountryChipPersistent = false; bool withLabel = true; bool useRtl = false; CountrySelectorNavigator selectorNavigator = - const CountrySelectorNavigator.page(); + const CountrySelectorNavigator.searchDelegate(); final formKey = GlobalKey(); + final phoneKey = GlobalKey>(); @override initState() { super.initState(); - controller = PhoneController(); + controller = PhoneController(null); controller.addListener(() => setState(() {})); } @@ -142,6 +150,7 @@ class PhoneFormFieldScreenState extends State { @override Widget build(BuildContext context) { return Scaffold( + // drawer: AppDrawer(), appBar: AppBar( title: const Text('Phone_form_field'), ), @@ -165,9 +174,9 @@ class PhoneFormFieldScreenState extends State { title: const Text('Label'), ), SwitchListTile( - value: isCountryButtonPersistent, + value: isCountryChipPersistent, onChanged: (v) => - setState(() => isCountryButtonPersistent = v), + setState(() => isCountryChipPersistent = v), title: const Text('Persistent country chip'), ), SwitchListTile( @@ -175,6 +184,11 @@ 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) { @@ -197,8 +211,7 @@ class PhoneFormFieldScreenState extends State { }, items: const [ DropdownMenuItem( - value: CountrySelectorNavigator.bottomSheet( - favorites: [IsoCode.GU, IsoCode.GY]), + value: CountrySelectorNavigator.bottomSheet(), child: Text('Bottom sheet'), ), DropdownMenuItem( @@ -208,17 +221,19 @@ class PhoneFormFieldScreenState extends State { ), DropdownMenuItem( value: - CountrySelectorNavigator.modalBottomSheet(), + CountrySelectorNavigator.modalBottomSheet( + favorites: [IsoCode.US, IsoCode.BE], + ), child: Text('Modal sheet'), ), DropdownMenuItem( - value: CountrySelectorNavigator.dialog( - width: 720, - ), + value: + CountrySelectorNavigator.dialog(width: 720), child: Text('Dialog'), ), DropdownMenuItem( - value: CountrySelectorNavigator.page(), + value: + CountrySelectorNavigator.searchDelegate(), child: Text('Page'), ), ], @@ -229,45 +244,42 @@ class PhoneFormFieldScreenState extends State { const SizedBox(height: 40), Form( key: formKey, - child: Column( - children: [ - PhoneFieldView( - controller: controller, - focusNode: focusNode, - selectorNavigator: selectorNavigator, - withLabel: withLabel, - outlineBorder: outlineBorder, - isCountryButtonPersistant: - isCountryButtonPersistent, - mobileOnly: mobileOnly, - useRtl: useRtl, - ), - ], + child: PhoneFieldView( + inputKey: phoneKey, + controller: controller, + selectorNavigator: selectorNavigator, + withLabel: withLabel, + outlineBorder: outlineBorder, + isCountryChipPersistent: isCountryChipPersistent, + mobileOnly: mobileOnly, + shouldFormat: shouldFormat, + useRtl: useRtl, ), ), const SizedBox(height: 12), Text(controller.value.toString()), Text('is valid mobile number ' - '${controller.value.isValid(type: PhoneNumberType.mobile)}'), + '${controller.value?.isValid(type: PhoneNumberType.mobile) ?? 'false'}'), Text( - 'is valid fixed line number ${controller.value.isValid(type: PhoneNumberType.fixedLine)}'), + 'is valid fixed line number ${controller.value?.isValid(type: PhoneNumberType.fixedLine) ?? 'false'}'), const SizedBox(height: 12), ElevatedButton( - onPressed: () => formKey.currentState?.reset(), + onPressed: controller.value == null + ? null + : () => controller.reset(), child: const Text('reset'), ), const SizedBox(height: 12), ElevatedButton( - onPressed: () { - controller.selectNationalNumber(); - focusNode.requestFocus(); - }, + onPressed: () => controller.selectNationalNumber(), child: const Text('Select national number'), ), const SizedBox(height: 12), ElevatedButton( - onPressed: () => controller.value = - PhoneNumber.parse('+33 699 999 999'), + onPressed: () => controller.value = PhoneNumber.parse( + '699999999', + destinationCountry: IsoCode.FR, + ), child: const Text('Set +33 699 999 999'), ), ], diff --git a/example/linux/.gitignore b/example/linux/.gitignore deleted file mode 100644 index d3896c98..00000000 --- a/example/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/example/linux/CMakeLists.txt b/example/linux/CMakeLists.txt deleted file mode 100644 index 9cb0d1dd..00000000 --- a/example/linux/CMakeLists.txt +++ /dev/null @@ -1,145 +0,0 @@ -# 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 deleted file mode 100644 index d5bd0164..00000000 --- a/example/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -# 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 deleted file mode 100644 index 2e1de87a..00000000 --- a/example/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# -# 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 deleted file mode 100644 index e7c5c543..00000000 --- a/example/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#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 deleted file mode 100644 index 0ba8f430..00000000 --- a/example/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#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 deleted file mode 100644 index 72271d5e..00000000 --- a/example/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#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 deleted file mode 100644 index 746adbb6..00000000 --- a/example/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# 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 deleted file mode 100644 index c2efd0b6..00000000 --- a/example/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/macos/Flutter/Flutter-Release.xcconfig b/example/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index c2efd0b6..00000000 --- a/example/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/example/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index cccf817a..00000000 --- a/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,10 +0,0 @@ -// -// 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 deleted file mode 100644 index d4135f11..00000000 --- a/example/macos/Flutter/ephemeral/Flutter-Generated.xcconfig +++ /dev/null @@ -1,11 +0,0 @@ -// 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 deleted file mode 100644 index faefe6b3..00000000 --- a/example/macos/Flutter/ephemeral/flutter_export_environment.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/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 deleted file mode 100644 index 27e0f506..00000000 --- a/example/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,695 +0,0 @@ -// !$*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 deleted file mode 100644 index 18d98100..00000000 --- a/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 397f3d33..00000000 --- a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/example/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a16..00000000 --- a/example/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/example/macos/Runner/AppDelegate.swift b/example/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef643..00000000 --- a/example/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index a2ec33f1..00000000 --- a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "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 deleted file mode 100644 index 82b6f9d9a33e198f5747104729e1fcef999772a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? zgxkP+ytd)OMWe7QvTf8yj4;V=?m172!BEt@6*TPUT4m3)yir}esnIodFGatGnsSfJ z**;;yw=1VCb2J|A7cBz-F5QFOQh2JDQFLarE>;4ZMzQ$s^)fOscIVv2-o{?ct3~Zv zy{0zU>3`+-PluS|ADraI9n~=3#Tvfx{pDr^5i$^-h5tL*CV@AeQFLxv4Y<$xI{9y< zZ}li*WIQ+XS!IK;?IVD0)C?pNBA(DMxqozMy1L#j+ba1Cd+2w&{^d-OEWSSHmNH>9 z%1Ldo(}5*>a8rjQF&@%Ka`-M|HM+m<^E#bJtVg&YM}uMb7UVJ|OVQI-zt-*BqQ zG&mq`Bn7EY;;+b%Obs9i{gC^%>kUz`{Qnc=ps7ra_UxEP$!?f&|5fHnU(rr?7?)D z$3m9e{&;Zu6yfa1ixTr;80IP7KLgkKCbgv1%f_weZK6b7tY+AS%fyjf6dR(wQa9TD zYG9`#!N4DqpMim|{uViKVf0B+Vmsr7p)Y+;*T~-2HFr!IOedrpiXXz+BDppd5BTf3 ztsg4U?0wR?9@~`iV*nwGmtYFGnq`X< zf?G%=o!t50?gk^qN#J(~!sxi=_yeg?Vio04*w<2iBT+NYX>V#CFuQGLsX^u8dPIkP zPraQK?ro`rqA4t7yUbGYk;pw6Z})Bv=!l-a5^R5Ra^TjoXI?=Qdup)rtyhwo<(c9_ zF>6P%-6Aqxb8gf?wY1z!4*hagIch)&A4treifFk=E9v@kRXyMm?V*~^LEu%Y%0u(| z52VvVF?P^D<|fG)_au(!iqo~1<5eF$Sc5?)*$4P3MAlSircZ|F+9T66-$)0VUD6>e zl2zlSl_QQ?>ULUA~H?QbWazYeh61%B!!u;c(cs`;J|l z=7?q+vo^T#kzddr>C;VZ5h*;De8^F2y{iA#9|(|5@zYh4^FZ-3r)xej=GghMN3K2Y z=(xE`TM%V8UHc4`6Cdhz4%i0OY^%DSguLUXQ?Y3LP+5x3jyN)-UDVhEC}AI5wImt; zHY|*=UW}^bS3va-@L$-fJz2P2LbCl)XybkY)p%2MjPJd-FzkdyWW~NBC@NlPJkz{v z+6k6#nif`E>>KCGaP34oY*c#nBFm#G8a0^px1S6mm6Cs+d}E8{J;DX=NEHb|{fZm0 z@Ors@ebTgbf^Jg&DzVS|h&Or)56$+;%&sh0)`&6VkS@QxQ=#6WxF5g+FWSr7Lp9uF zV#rc`yLe?f*u6oZoi3WpOkKFf^>lHb2GC6t!)dyGaQbK7&BNZ7oyP)hUX1Y(LdW-I z6LI2$i%+g!zsjT(5l}5ROLb)8`9kkldbklcq6tfLSrAyh#s(C1U2Sz9`h3#T9eX#Hryi1AU^!uv*&6I~qdM_B7-@`~8#O^jN&t7+S zTKI6;T$1@`Kky-;;$rU1*TdY;cUyg$JXalGc&3-Rh zJ&7kx=}~4lEx*%NUJA??g8eIeavDIDC7hTvojgRIT$=MlpU}ff0BTTTvjsZ0=wR)8 z?{xmc((XLburb0!&SA&fc%%46KU0e&QkA%_?9ZrZU%9Wt{*5DCUbqIBR%T#Ksp?)3 z%qL(XlnM!>F!=q@jE>x_P?EU=J!{G!BQq3k#mvFR%lJO2EU2M8egD?0r!2s*lL2Y} zdrmy`XvEarM&qTUz4c@>Zn}39Xi2h?n#)r3C4wosel_RUiL8$t;FSuga{9}-%FuOU z!R9L$Q!njtyY!^070-)|#E8My)w*~4k#hi%Y77)c5zfs6o(0zaj~nla0Vt&7bUqfD zrZmH~A50GOvk73qiyfXX6R9x3Qh)K=>#g^^D65<$5wbZjtrtWxfG4w1f<2CzsKj@e zvdsQ$$f6N=-%GJk~N7G(+-29R)Cbz8SIn_u|(VYVSAnlWZhPp8z6qm5=hvS$Y zULkbE?8HQ}vkwD!V*wW7BDBOGc|75qLVkyIWo~3<#nAT6?H_YSsvS+%l_X$}aUj7o z>A9&3f2i-`__#MiM#|ORNbK!HZ|N&jKNL<-pFkqAwuMJi=(jlv5zAN6EW`ex#;d^Z z<;gldpFcVD&mpfJ1d7><79BnCn~z8U*4qo0-{i@1$CCaw+<$T{29l1S2A|8n9ccx0!1Pyf;)aGWQ15lwEEyU35_Y zQS8y~9j9ZiByE-#BV7eknm>ba75<_d1^*% zB_xp#q`bpV1f9o6C(vbhN((A-K+f#~3EJtjWVhRm+g$1$f2scX!eZkfa%EIZd2ZVG z6sbBo@~`iwZQC4rH9w84rlHjd!|fHc9~12Il&?-FldyN50A`jzt~?_4`OWmc$qkgI zD_@7^L@cwg4WdL(sWrBYmkH;OjZGE^0*^iWZM3HBfYNw(hxh5>k@MH>AerLNqUg*Og9LiYmTgPw zX9IiqU)s?_obULF(#f~YeK#6P>;21x+cJ$KTL}|$xeG?i`zO;dAk0{Uj6GhT-p-=f zP2NJUcRJ{fZy=bbsN1Jk3q}(!&|Fkt_~GYdcBd7^JIt)Q!!7L8`3@so@|GM9b(D$+ zlD&69JhPnT>;xlr(W#x`JJvf*DPX(4^OQ%1{t@)Lkw5nc5zLVmRt|s+v zn(25v*1Z(c8RP@=3l_c6j{{=M$=*aO^ zPMUbbEKO7m2Q$4Xn>GIdwm#P_P4`or_w0+J+joK&qIP#uEiCo&RdOaP_7Z;PvfMh@ zsXUTn>ppdoEINmmq5T1BO&57*?QNLolW-8iz-jv7VAIgoV&o<<-vbD)--SD%FFOLd z>T$u+V>)4Dl6?A24xd1vgm}MovrQjf-@YH7cIk6tP^eq-xYFymnoSxcw}{lsbCP1g zE_sX|c_nq(+INR3iq+Oj^TwkjhbdOo}FmpPS2*#NGxNgl98|H0M*lu)Cu0TrA|*t=i`KIqoUl(Q7jN zb6!H-rO*!&_>-t)vG5jG>WR6z#O9O&IvA-4ho9g;as~hSnt!oF5 z6w(4pxz|WpO?HO<>sC_OB4MW)l`-E9DZJ$!=ytzO}fWXwnP>`8yWm5tYw`b1KDdg zp@oD;g===H+sj+^v6DCpEu7R?fh7>@pz>f74V5&#PvBN+95?28`mIdGR@f*L@j2%% z%;Rz5R>l#1U zYCS_5_)zUjgq#0SdO#)xEfYJ)JrHLXfe8^GK3F*CA(Y)jsSPJ{j&Ae!SeWN%Ev727 zxdd3Y0n^OBOtBSKdglEBL)i5=NdKfqK=1n~6LX`ja;#Tr!II$AAH{Z#sp%`rwNGT5 zvHT%(LJB+kD{5N}7c_Rk6}@tikIeq%@MqxX%$P!(238YD(H<_d;xxo*oMiv^1io>g zt5z&6`}cjci90q2r0hutQXr!UA~|4e*u=k81D(Cp7n{4LVCa+u0%-8Uha+sqI#Om~ z!&)KN(#Zone^~&@Ja{|l?X64Dxk)q>tLRv{=0|t$`Kdaj z#{AJr>{_BtpS|XEgTVJ4WMvBRk-(mk@ZYGdY1VwI z81;z(MBGV|2j*Cj%dvl8?b2{{B#e0B7&7wfv+>g`R2^Ai5C_WUx|CnTrHm+RFGXrt zs<~zBtk@?Niu%|o6IEL+y60Q>zJlv``ePCa07C%*O~lj?74|}&A0!uA)3V7ST8b_- z6CBP1;x+S@xTzgOY2#s%@=bhZ@i@BwmS)neQG&=9KUtRf^K=MvjC5JnqLqykCE_P0 zjf#V4SdH2#%2EuDb!>FLHK7j;nd6VLW|$3gJuegpEl3DZ`BpJU$<}}A(rW?<6OB@9 zKP9G3An?T5BztrLdlximA;{>Tr7GAeSU=^<*y;%RHj+7;v+tonyh(8d;Izn}2{oz& zW)fsZ9gHYpI?B|uekS3zHUue3mI zb7?0+&Zm>Kq(F>~%VYEn)0b32I3~O^?Wx-HI|Zu?1-OA2yfyJ;gWygLOeU;)vRm3u z5J4vDIQYztnEm=QauX2(WJO{yzI0HUFl+oO&isMf!Yh2pu@p}65)|0EdWRbg(@J6qo5_Els>#|_2a1p0&y&UP z8x#Z69q=d663NPPi>DHx3|QhJl5Ka$Cfqbvl*oRLYYXiH>g8*vriy!0XgmT~&jh3l z+!|~l=oCj<*PD>1EY*#+^a{rVk3T(66rJ^DxGt|~XTNnJf$vix1v1qdYu+d@Jn~bh z!7`a`y+IEcS#O*fSzA;I`e_T~XYzpW7alC%&?1nr);tSkNwO&J`JnX+7X1Q8fRh_d zx%)Xh_YjI3hwTCmGUeq_Z@H#ovkk_b(`osa$`aNmt`9A#t&<^jvuf z1E1DrW(%7PpAOQGwURz@luEW9-)L!`Jy*aC*4mcD?Si~mb=3Kn#M#1il9%`C0wkZ` zbpJ-qEPaOE5Y5iv_z%Wr{y4jh#U+o^KtP{pPCq-Qf&!=Uu)cEE(Iu9`uT#oHwHj+w z_R=kr7vmr~{^5sxXkj|WzNhAlXkW^oB4V)BZ{({~4ylOcM#O>DR)ZhD;RWwmf|(}y zDn)>%iwCE=*82>zP0db>I4jN#uxcYWod+<;#RtdMGPDpQW;riE;3cu``1toL|FaWa zK)MVA%ogXt3q55(Q&q+sjOG`?h=UJE9P;8i#gI*#f}@JbV(DuGEkee;La*9{p&Z?;~lE!&-kUFCtoDHY*MS zzj+S$L9+aTs(F^4ufZe6>SBg;m@>0&+kEZMFmD*~p~sx?rx=!>Ge;KYw<33y#*&77 zFZI`YE(Iz?+tH;Fq;y=MaSqT{Ayh*HFv0(z{_?Q+7@nE%p?S8%X6c!+y;!0NLXwJV8Co_}R3*7>n+oMsQpv8}8ZS-P@(Rg|gmxZHzf=nMOUAAY}AZGfWVzZjE@4$=7xkIrs8BE%606aVU%kxz_04ipig51k& z(>c9rJL2q%xvU%Zj#GR9C9)HLCR;#zQBB@x;e_9$ayn(JmSg_*0G?+wOF?&iu@}S{ zt$;TPf*Lj$3=d<}Q3o!Hq@3~lFxoiCyeEt}o3fihIn{x2s1)e2@3##&GYDq~YO|!q zUs0P-zy)+ohl-VQ`bhvUpC{-d$lkpML_M%Kl6@#_@A}w{jWCDsPa#cSbWA#C4Sf|*C*&Z{ zz?hOU7Cc`?>H$WGqITA2P~fYudnQHxB8^;0ZFKC;19F#~n_2P@{cE{Czq-#K5L_8| zc3aOEwq4%zL5>YU_mc9fc-p~{fBTWUkxTiZvxt9FOqC{s#TBp(#dWc+{Ee{dZ#B!g zHnaOJ8;KO1G;QU2ciodE+#Z$Wuz*Hc6NRO!AUMi|gov=>=cwcZeL&`>Jfn!35hV1J z;B2@0!bIR853w%T*m6)gQ?DPnQ)o6EtKaN3L;o?*q<83d&lG&U=A|6hcT?f0)4h6{ zGIZ0|!}-?*n{zr}-}cC}qWxEN%g60+{my)o^57{QEn(tSrmD7o)|r0+HVpQPopFu; z0<S}pW8W2vXzSxEqGD+qePj^x?R$e2LO&*ewsLo{+_Z)Wl|Z1K47j zsKoNRlX)h2z^ls_>IZ0!2X5t&irUs%RAO$Dr>0o$-D+$!Kb9puSgpoWza1jnX6(eG zTg-U z6|kf1atI!_>#@|=d01Ro@Rg)BD?mY3XBsG7U9%lmq>4;Gf&2k3_oyEOdEN&X6Hl5K zCz^hyt67G;IE&@w1n~%ji_{sob_ssP#Ke|qd!Xx?J&+|2K=^`WfwZ-zt|sklFouxC zXZeDgluD2a?Zd3e{MtE$gQfAY9eO@KLX;@8N`(?1-m`?AWp!a8bA%UN>QTntIcJX zvbY+C-GD&F?>E?jo$xhyKa@ps9$Dnwq>&)GB=W~2V3m)k;GNR$JoPRk%#f3#hgVdZ zhW3?cSQ*((Fog26jiEeNvum-6ID-fbfJ?q1ZU#)dgnJ^FCm`+sdP?g;d4VD$3XKx{ zs|Y4ePJp|93fpu)RL+#lIN9Ormd;<_5|oN!k5CENnpO>{60X;DN>vgHCX$QZYtgrj z*1{bEA1LKi8#U%oa!4W-4G+458~`5O4S1&tuyv>%H9DjLip7cC~RRS@HvdJ<|c z$TxEL=)r)XTfTgVxaG!gtZhLL`$#=gz1X=j|I@n~eHDUCW39r=o_ml@B z0cDx$5;3OA2l)&41kiKY^z7sO_U%1=)Ka4gV(P#(<^ z_zhThw=}tRG|2|1m4EP|p{Swfq#eNzDdi&QcVWwP+7920UQB*DpO0(tZHvLVMIGJl zdZ5;2J%a!N1lzxFwAkq05DPUg2*6SxcLRsSNI6dLiK0&JRuYAqwL}Z!YVJ$?mdnDF z82)J_t=jbY&le6Hq$Qs}@AOZGpB1}$Ah#i;&SzD1QQNwi6&1ddUf7UG0*@kX?E zDCbHypPZ9+H~KnDwBeOXZ-W-Y80wpoGB*A) z_;26Z`#s0tKrf~QBi2rl2=>;CS1w)rcD3-sB!8NI*1iQo59PJ>OLnqeV4iK7`RBi^ zFW{*6;nlD&cSunmU3v4JKj|K4xeN(q>H%;SsY8yDdw5BJ75q8>Ov)&D5OPZ`XiRHl z;)mAA0Woy6f!xCK(9H2rq?qzp83liZAIpBPl-dQ&$2=&H?Im~%g;vnIw1I+8q|kr! z36&^9}CMmR(U2rf|j12oG=vb%Ypsq8u9Kq}U*ANX*)9uK}fAi8;V_7Z;0_4*iydDxN-? zv?qJ=T*{MzL~-xUv{_Kh_q9#F{8gPV!yPUUS8pEq*=}2-#1d=sC_|U-rX~F0 zBLawgCWy#?#ax{~DAnDvh^`}wyUO`ioMK~jgh%L7^}#h?beSyvQ_g>+`2`}`-1h7# zg*?qJdm=53hwN8~B=^|LPmYtOVrQ(W{sNm4uofq=4P@dUA%$onWbw_m-KWia&n9iv zi)!9#OJ#^}eg8tE{wSb9(c0D^PS1 z9EBS5*ypSiVRS_G0v?$hyoZOS7hFWlp4qbYkf9Y&{%OzhsIdHskLptn96@k6@^K@U zszd8POehITDK+AyW#JKpnWY;ju#MC$JjB1Y*~(E6N%{p#kO+bVxG3X<34n3fW=k{A zCZt|KP%x^GQ9%mU)KE0{LA=vaZvRQbxSlK~eAkwWo2Z<{j5eS5NVTMe`m%re8%~7K zZLtU&b~YDN%~uA9wPf>x2=PI=MA6_oVe>Ek$s5&&Z=8vvF5EODP4Av(b|dlNgF1O8 zy83W0WRdzjz2iNA~t1piEqlyU&`$yZtqR`6X_PmuP>W+D|8iH;FQ zN{JuU#Tz9mV=4R_IewROL1|mK^`lLat#LcIBfggzM(iO$pQT*-c_ z94^LUWw#5B9~sp2W1p`c)Y(xfR<{O^9n4E6vDDw{#-R4UMBKo{>Hqlqn*a9rl_>+0 zS5MwJC~nCC`1X%VCyWFsiDX;bfAJQAUkU#105f_s5U-8rqO}n8fA1{b>Fr6Q|Ea(V z5B11Lo^ooWF?`^{-U#?iatokWI-e$632frzY?Yzzx(xJc@LFM4A~-eg!u|tl{)8Nx ztZLXsSC*68g%9TFu(f&J9nmc^9hgyy#uUOMJFCaifSaDcyQ&6=8e9=t zIFEAQ{EK{|73{($!a4=!wj4ABcQrUQp#+gGM?wEUp(w@+Fzi{!lt}|3`PM%&d-seeR zB$}BrFGD3R10CE>Hsb>;PrP}pd` zaY4}6+Wu(`#uAV+E5SV7VIT7ES#b(U0%%DgN1}USJH>)mm;CHPv>}B18&0F~Kj@1= z&^Jyo+z-E)GRT4U*7$8wJO1OibWg0Jw>C$%Ge|=YwV@Y1(4fR>cV#6aGtRoF@I`*w_V4;)V231NzNqb6g@jdpjmjv*<2j02yU$F8ZS$fTvCC`%|Yn#x< zXUnP&b!GLpOY-TY3d?<-Hhxom_LM9`JC9LEX2{t1P-Nj%nG+0Vq)vQwvO^}coPH-> zAo8w#s>Je^Yy*#PlK=XDxpVS~pFe-j#jN-(As&LRewOf(kN-aKF(H+s*{*!0xrlZw zchJu@XAvQWX7DI1E8?F}Wc8m46eT+C<0eXVB+Z^(g=Kl@FG-cn@u$suj)1V2(KNg_ zh29ws6&6(q~+sOAoHY^o86A<#n*?Pg2)cK$+y;cY$hJLq4)4V84=j+3ShSr##Tk5kgmxB zkW+8A1GtceEx~^Ebhwm36U?oA)h)!mt=eg0QE$D1QsLNZ_T3NH?=B&0j~#298!6iv zhc0|-{46*3`Rx&nKSXnf1&w-Rs>#PGAGuY@cBTU-j|Fxbn3z49S#6KBaP^Lx*AOXxIibr z!1ysMi(&kr!1wwQB5w`BDH2~>T4bI`T1}A2RM0zd7ikC&kuBRsB`Z2@J!Udm{AmSN zrr0k6_qCZL**=)xRW`MFu(OY=OT;3G8eF~ z2mmkXZ9X(sjuKmq+_<=LSjphB$~R1o^Yb=rO!j!(4ErIox^x55o{pXSE9X$!76^*$ zoKhlAX6y%n^U=C~@!vIlEgXQGD@>oOU=_(aXF-Sjas*$AKESfRzxQ8#3yOj|y0OCU z>6Z-0%LCcjla&7I+CXm&caKp@@jQ!5M`(_{CL=@4#JJ}cHeZw>^b6fpv269LSV?gV5Q{kk?4;;y9RIsy5vk%DIRiL(9xe1aA@4!VX zDh2}xgUd5X?6nji%&7-%QuyKSYA-Z{PwJijUQ}In+EJl|x@dF1P<5bPa5W3&&?^h$ zZCo8LepKo0a(Fsln*cHL;D(gu9MMkoiM0*n31u)jHqX5x^F95tnI&^}^yKx3YwEm@ zo8?EZ710ykx@19{=yz5IXb8w4yjdveWb{IVL6Z(Cs>!a_0X^1E27o!4e&b43+J*u2Gb(59k2uK0goLwhO{ujLS ziI9LA9`&x~Y$6JNX!aEXR``}LUI}Gr#=<^wBHmg%v<)zRWDVtq)kT$-P7iU1R)2XZ zi~bYhV@EZ`@prgK(cs{>2jn$pxg$<|KjJ7%26Km>%KcXh^bU@y@V_Lf@=j1x%R4{v zOcQn{I}!2W<~08FOVnoV>zOTH=+>v9!jFo|q)ucqIe!N4{U5_G`>>*sVD{8I~4FqyU8imZ**-Gy`~Xd z4w35GMf%7^i65HdX{Iz|f2Kg193#KhPIeR)-=eYx3Z!%RM=JjwLrdk^B#6rg!ym2w zPbFqYyO4>W_Z6PonAwiu7?!h=x%sR-T+_*xZOGh2wWhWr%}%2^$$ zQvACIB~pi=m|`hXIMvoq`TOCx=J_D2>pi6$NPy3&8#vy|oX)=kM0Z}$BR$r0G}MzOk-OqG+VmZtOZoj6x4(tLh|5h) zBv64Y{DPHsy&_H(5_l(&Y}FhVvr9m_*_Q~Zy-}V9+VmGnvndEjYW4qt4K~N&Y&6g| zfpz*V=A#^mVmuOAz)(KVI<%v5NY0%Goy!{9&o41upsPWk(yFuRP|A4q6NMnX%V~MT zi_Rb-Bno2kI+j0Cw`@ydy{e%ARS#Z%b6I%_yfo_ZKXr4BLVoHzBKJ^ZG z-2>2IzU)55@9C|?_P$ew^-7zEiAKG1XAi{!3h%1m#9s%^pGy6S9wKFYY4<$djeoJP z{GI}Vd%idY$4_fh(7NXm7#;cC!DS&-{tGr!Qze{^%bUx2jgG@-kMta^q-EwrKB}d8 z{%FT>rFk_bzW<{lc%eYlrsiYTZXGgzD1&lmRyp+c1O=0=zAX=KV62bx-a~JP{cPF4 zU$-XT#(9&T>l@bMu3nSr{)%-5lV+0t&bxip4DVJ~vlL$J2P6X~ zd{FS8vm{Lhrieul*7&(AgPuXhjpGila%6_?-+k#b)cdk#M1jB*nE>G6NGOr+Ek{`= z9b%S1`$`=g0CC$>0$Db;l_szReLYVmce*(()9%Zz1`*fNXhI*oRlerWHarD(v^W^c zuc1Vuw6Gbp7ZsoRH>QGt#&lv;5G~Ovt$%7VFd*-rN2>UjbOWBFGNGO`bru7CFB4tn zL`^?69Lj_g_TA&`9`dSI8s|)K|QM0 zybvV7!>xDY|6c6y;Q}qs`){1+WQu_5Dgd8Qe|q}}bxjH+joQQtqs1IVZn6{e7T{ia zF|=^xa%eWO%(x<7j*QZbcU_;aVaVP!arexOLOtoSNt*hvsRL%}%)jPetSich(`b-^ zMZ$PM9%s@%*jPVz0Z^W*cK_>G4f}+eEVX`HOaHg#!B`<4v;x}zDLMR*M27`kNfp!! zOfdt(>k-g>7jf^{Se@3$8<+;R*cYtw+wD_Z8Pl~!JDCUEPq{Ea*!J9`%ihyNJZ30i zmfve}S5<$Uso}_?SuI$ks|{-ddGLu9WR9`^9)Kdi@Vs;x#SY-xp}wHPU0|vEA7234 z@BN1z7OF=OOQtPF$4twn3!HTVlUVD_)ubMM7PEPoiC6lQgL2q9PK4~e8v-OuH%lie z?NgBLkIdPMG$QBq(>r^AOHB`|*1#*!2Z? zuU8H|FD`OBRu^(R?Z-Vhr0j;FLpS~a34KREnd}B=EYHS*>Hm+f%tgJt!4J8Q`qn^4 z9F=tO#JRJ}tzA`vx$nZ)O%wC?Uiv0+_nz}5Lj4ki*&=K&*#U`=rv z`Q@Q{+IhAj@6lrNK2B=8Yln!O2%zomfRehFT~;!O@(@Xy|1Jlw*uOB-M$#6K^)QBm z_7%#QVUDPwnW{iOV-grMQQU|3{=BQMh}c5(yMGdoQf*)k9-B zMQ(^GdJh+y)>qJprknS!%WxqM>HlHOP#7UVdy>%PW$!l72J`n-p7j(DBKoGxXWh(Y z>BFDZl|7knU_jg_SSbvFk8)39%2)Hu5W0}HKlh>EaqvFoXI&56Yy)3) zQkE4X^P0QnPn?iUUVHJZXzPp`s5uv?pG{K9IgGoHvcmlBxubi|iF7n{)mhenIcxGs zgr0OpQy#Y#u=5lOyiECfE_Sn?Fj1LyoRKcbTgX{p<T*v!CGkPc)pcA2D=4Ekp0Gb*wpy7S88C%Ywsbr?MI(3UdsCM?XJ1X%*hNjB)XqZ*W(qDdtSb z<3XN74ARXL3=c^bfW~F%NM^5*Zx92>Wq`&M625p~j$8mYwLbk%Kf)jbn#<2z$%vP5 zy#b>-tF-S2_AB4;R^K&^-1LJrUmi@9rB^FLF)-k&YHK8P+k@RCJ1qSTZ@=kHxA3l$ zmK_ZG)l6(nmCR1a8|;QF-B5e_ELnjJ1$m-;4UXX?WytF_wz7#&AjwZYTMVieLbq@R z3t-q|G4^BB#EpNu4uyfDebB+-uu_$9>y-dzB30Y9F=R zrW-Heqnj*InPTWHgR9v^R7~hokldh&h8=HDhMW(EFfim1*{)5Lc1-+eBVkK-2!u=N zuZKABgJs3I--NbjE;>Undg6uK`^U>AQ6V zhc!RhYgvrmeGNsftr+(C<_MtuV$`5RZTf#5r=DR?gWG->#})#=(td%C3`oO+2B7im zUqY}&a_QNTn?s+?=mNXiREN%x_=(H)L|DtYPY>SR3pQfBOel7G_jR_{!9`dSj8Up-`JgcB;=Oor)U=_EVjF3C5{Sqh8cq=~bRjoBpoc$kJCgtTyZGSpQ4= zYi$6b$-dGmuTDF&@amhV?cU05g(AZV&v2$4m&j_~GZk;&keSO(@LRESRZ&p`dV*6w z2$em~p*8yM6j;SYorw`M5K2mluJq7P5Yn$VtZj8DEs2Zk=O@4T&Q}>~f31Z{uk}`E z{Dp{KObh1kk~~MfLUod72{Pk6G@T$_0_N??lOrdR=Z;VV#m0l)&@hz{Z?)@sgImi-&i1@95g53rON83v!yVPDHRU*Mzc4yZ(-Fr z{8{WXmIJf7jeswk$;6s~Qac6QyM3W&`}m#gRt=rr95A+Ad&wSAgvXZ|F))rBJVJ5W1CsjN`QaOzct2ocq#0!v zmj#075)C!3oS>&N;aHS@<+c>RHL)8j^p)k(8#7$LEx!1g_1^02!4_qA=;uhKW=+ix zGX%+vBMiRiF^^jm{mdO(?GdWJ#unO#_F^7mhT8)s(z_WlwFyJ#Xh)k5+RG2f;LC*K**1dr`#}~6A=0B=I&V;%zDA1)d@G!X#Rng)7G*2k8Kg447r0ox> z5NK`d(H-afBwo9feDOUi>;BbPsu!2|=@g=3j*PY}@YrOb+SX6?#Yb2xaaK!?>SX1J z_!VsB`2n1=wwSftkydm!39|-1?c%Epx?TO<(#GO~I&{f4+)XwRk<7RQ1~5>QcKH|D z?!}j1ueO0Lk;FZ{k4FA_(S`Ot0w~tl&m0duID*f6RY#bkw||o;kZ# zISYNTb|{~|X$m$Q-Jv#uxyw)eM0gIv`V#wOAp&Vv@>X4_tSZ&L#juM@$S9 zx_X_tLh<_^-F;LAQ09s@sPb%PMTrcw*HUV0P=RYSlM&AXEOI&&R&YCm_S<7DRBx^L zA^R^iwW+LMk(r*$Pq-fKU5X@=mQ=`ErO30H@@&qqnI7zJcrbSh+H<V ze&7Uli0xj@WrW#&-9%*FP~kPYF_YYM_hs5~|ExMynQ%qvq`leRB6W0yhC@pCb8>_P zlf=F~WMv_u*-DV=UaVu#2rlzK{q8D95VwZrfV?gj@rSNWXFvktUq)V5+YrlxwX302ae(;aG4e>L-M@3J+-f3IT{b9l!kg*2M zC1+ND9}6m^()LE87Mt+^Q|)!y#suc&v26C=0W88%a{?)E8Yvo@kM&KNMaOst#|-_CbUTm}WS@-c>nRb;&z^ zYr)+IE$1=jov(CZ%3uR+`~NI>1&Gs6W(jaamjcN$a`2!*nO}l|b%?)Q%%UWzw>A`C zR@px(P*7j$TK?jbv*%x)e^|jcLsv}aF(Z0=7(%Oa7+1wY>{B>d+i&ZA$}k(qgZPZY z;VkW~8eWnU&HPIAbco?&tc2O1$6=7n{u|^Y*nXoac{o1W-6aXfy~KlNbJfLoq~6;+ zDYmnv--Fhqrl+UV#k@_(1=gWNtqhyVKN=9CZ-{Ohi>e=~bm4IKbhM%%W zW8oXE!rGpV7Wt(_^4nndH1_imheaWzDi|I})9ZVZ9>pN+P%dVc5wG`Ze*4`@rjn1^ z`ln(;vPBHQUb}y8S>=8q__r7g+=z$>!pReVB0@XKchAvyGjLQs-u>+w%`frV4FeIG zj=7n~hGrwx*&5aHy(7X$bDZ7YhcP%(*>G^lAYMK;qG~V8Jz@b7oNg;IA1z$9@TbzW z;@I51@Ekef#qbxnG$Y8Z%bm~ibZ=4#%yKr%#b)CDrfKN`ujIY?tA4h9)i~dZ4E;ZM znvb$n2)zn$Wx&zlW%mJZDh28ox$@%`w3i7YFepXUChw}$UXKI=-TM51`M#FH=tdr*mQ!c=aB1296Lu>iTTKZWss0f z5~ihdImPN$aTle_AdbYC^31}_^EK|9R&l#%3hbx;8vJ+Gp^tm{9JDILu*1PW!rh^Dn9p<)h#Sl4kKM%nm<+!ESSk* zC;lLNT$fgr-!+{aBsSx$41b}yy6o>r3F#1&iv3cfY2N<+`0qJ+>=&Qxs}JOEkD?^l-F5i`t5+zNuvJf z3Fh4$mNqiFXL-aq4U4K@Ae$fq-TDT`rvrx;gqx96w^*@s=mcthCaIyPe(w)6kI{EqV10tcShHU9eeAPs)s?6#vrq}>y3FeTJu$Udha+z zs7}rmA@yR(L&>35sNjQqrw}o^)UitMU!5g6nnG)(tgst!^`FKJEzI1(d@j_w@;^hr zgYxlIRYjho4U$bhczfq&YySCqCE(5_d>l(4tk1v9!V7PB%Vx{QO=G2NC@c1%3rEzw zN<6i?h;CJX>h)kn49Sr)g#Em6km6ESP`1qc5C3ZHizN>r>V-fSS=X1nT{+Thh@kC! z(H=PlqDt7V6gOYezXUK-dretz!1?IUD6&eL2b!4=9h+HUO&DYZKMM>|YhlEEg?q?S z^XT4$2Fd|zT=x3U#L1|F;-#`to-Y6hiYkWdO=rRC)meY72pIfl`3zEGDU8($iWR^K zI$nq80aSJII<;#W5Pj>^_T&013BJ*O89Uoq z5>;Paa^E}xar^r=!pexg&OTM8wluk4R~Ru=)Hgk`Y#i_$jk{jc8hx}?(dW*X!l4vs z6_%$s#duJJFmaFc-5#>v6Yea=I~)s_pXGS>Tkz?s+WS}>Qp<9MappMLXpkXpSM~SmH6u)`Z5>o02kJs;w@KhdiZ3}29y*xr|6tMo zBHzGic+b+dTd!xOJ;p{Rguh^corJ;K?R6daayQKm+0rf7|AXg0qs!R9eS7t4{G=fs z1$=?kK1Ih=gEkI>@jgXDWHZt*C7FUEWs|u^pE3Z``^K|1KEC^sbN*4nQUfRc_AyE0 zn)?RrGjgPkzfE~_s!rDB!fDsV+*|kEX4+DyS#8%!cshn;s8svwBXSsDGX2ZRa0={* z=`p1F{zD17*Rk>Uk_cw3t5j=9-d6$}MoM~z{v{t^M!g75-+o8_XkP@CZWUQ2z!^26 zCNOu~hgrrK)y>bgqb{`Q_1^zrG4;cGarP!nb4E~(ZKWc`LVeEq;IewVneLp^ZU2+% z95PgN*M5v7Q;ZlGvM#`&u2NdHm%&gZ{bZM5wBCp&?HeZhwU87wyT_z!n4z+1?=RvXZ^72d*%+R1s1$KbAFtR|= zw;MEq=O7pMIKpFwKH6$OOszJAf<_Z<1)36cB>D>|Z6$gJL~jH`n3MMou$#Si%rDAu z4pSkJspG|^CJ86vg6kkfXsA_`8@8iOryOe!Qhn8SV6}mPlof3=WJRVqAr_b;e->`Z zMR(p|K|$L0^6;u~USxg#B6-ZNc%E1dv*^P=|2k*^NOBni#G%9Y?##{=)8KZwh85OL zSBG9|gb|hdmY^gn(ziY&O5#@I?W)W;361Yb^VQNpz0A7&^(7HRAsUvw#)fvhocvja zLxV65J0_$>&cVRctJFsn^qLos^tG`+B0_gQ{NeOwKt-!C^gGFufdtPT*Vi>l#X1|V z2XxsAcixN)Ekq=a##_^=k_^BFH5_zpvPDRP>u6+3$}i&b zy0@FdzAHw?i9OqnlTts_w5D@Nd#eM)KKEuN#m{|AJyscxa}(eA?z4&4yvXo{OBS65 z-?gW;<+;+ntM}U_yTmHm6*2zj0Imj<&ZgE9Wj|gfsXhrVH-c0p$7HXnR8bxDYOi z=_r3FA~u`L&2;Vir8}P3)k|@c?sK1U@&iWo{HEXcoy>6wQSuJ+b4l%aTBuigs&k@Y<2c=S3Ef?p zH>ki4yDuXdo_eu>X1{E$g(Q-u#zVXN^&%70guoizo7x(kQ0OZ}H$O9UB}(FaX8Ct1 zFpx~}EbHf2r6V;x=@8GH$C2|6*?K~?LrtMYd^bw*WYXhA z_))@RMH;nZedW3+qfWbv<|_#BYOxX^rhbN+!za)|!|8K*LRs(R$O*2SDM{g9k7e{u zN4VIdi}e#0&h?sBxu$>Yy%)j(k1V2fuhp8r!}gfF@b;F?U`6}YnnMh1&sSU&lR^?# zu!61+lGsuFEfDraX3+$QZibCbKzc{75G^T7@WZSQ)j5898G1AOXB*H*TSd`f<`IK# zm1%&t?i|2Z-a&r!pJehzg@!awNp)R)aa?q_SqGrxE5u+T#f?K2;GAHV?O&>!W@Q*k)7=g2vDW+7K zbyY9i{|nOF*SbMYoRQSAbSH2y$bE5(@d6xKxcF#@TE~X#3o=;`0sc!RupdRmQsML? z&>SCwS{FOpSr+@6Uuz3m`hj}(^g`Jz|6?({!%WVJn$H|ugxW+x-GEA?J&U^ugj3Nb z;65~)W<}iH2PJ@st8LtLfSOLXYgj=9<;?ih7rq$bXW9J#!B8!Wu6#U`A$wlcoC*&` z_9Js~7%m79#+edeT&P`@_Ng@e&5J+pqpx%31tAF71)pcz~-yJ>P5yX(nuM4;bUHDa8E(~~l{j~JeCGkX>nHJDpgSf&bTHEf)qw8{Q~CBPEVen|MW2P3vmf`8X9-g|>>ddp zcgfjbl~(?3Wa*NzQH>4nsM$3}Ul>pX1xC0oF3TZXe7=V!9!n?WgvH|R zpbruczmB%z=zkZ>=1R|gXwGThLELqD5KCUhtiRGT*JwKIvzbzV%ZU!e!VcNHSSX3> zObH|oohc8nvQZ2}q??C}@>!fe3gH+HF@4(qWqi>;ag~md#D;cl8&gQb^?2a@5cikT z=7r78@&5gV3Ggc9f=<<8v~yz`NcEGvbX1V_`IL(&+Z>LB zM~$ok2qXzod@1$TEl*U~H$V5g$er{Uj^($sWb7Nr{gsIbE(`$LRGECTOraXiU%=uq z0zvpi1S%)RxTjzoVcR4#10)fs()4Mtsa@e?9j)Bk!LsYyXIZga2q7d%`vQE!V@<1Y zmkpH3LeXJNO9f7l>F84g;huc=4nk(UnU}RLZmYk2TtB#lv34K(?8~gyx-mN%g=U44 zOPdr_!j-;IEbe|l9-buuKEy^Q9MLjSKG$S6dz)!U_32{1)N}L)3+COmlg=nY1@od$ zJ<0z-B%sisAR1yh>z-RfQQb6M4i-d#vxvb~f69M{JLPZv1JSCh1$gQ*LxOF-tH9!k zbQ0ZW)S7)qCSF|=2`q_A3}OHBNBueZwTTz^ar~gz#2KA74&&D)KHt~m4F_nK<^*7_ z!!pN@xiGkq%>1N(rNxw$zu-=1t*IpAy$ z4~dD0w%9;E?(greVWZ3(o9ux`elM>Rek#0 zO=#-(4p5B+wFzlEU7^k{3EdL6sIp|K*>xrriI`}E8ze|z-$YpN`^_teL_7P`%e>IN z7tNiH619P+0Q1hBR|W#POOta)1|LkIRtgz zMJ9VOxXN#o)mlXS=u%`Q>~PBuKEmOWsIuQRp{y%!ty{fEyL0gV)$LQeL#pqX3L@SR zJ2Gb^E9+KVd?;joVOXlGie3?z6>(>u(i!(qGz(W( ze~^xj&IRF<98ypEis{Y_FoHn%C0bW(XeF#Lj=2WUEBqKNPPFppEH?_a3}-h906X}C zSYKcZFU`Om5YlWhh@ogzCn3NvuM~F9jOX|xe-X*!YL+#ceh_tJoHXz`aTnvSrOAZ| zOtdGz?QdT!oAJr3(XL2G(p%2X4{xEohU&vd_zQ(U%ihHOlKPWnb$&YYhx48?|R++>`5?sxvM?!;ru|9 zZ#nwuTK^S%ce<+ggdJBE&fRrXN7O!{nu`%q`M{2Ef_+IRad2cf01P9pST9AOK>y75c!9}~)Et^6$`&Nm{wzWcm4c0j9DF!xJTpGrMp3esI4D_iiDe`sswXSu{dQZE_`^A11 z?Z@Hw=65mVu^%X`>;$mciK}XiZ{xw7I_!t)S00^JuxdCXhIRO~S*lPS(S^je`DH4E zxbKNs8RL`N?gCQ@YSOU=>0FE#Ku#DRO7JA&fu-X8b;3!^#{=7`WsDXUxfUsE(FKSQ z&=N`A7IwLq%+vt(F;z+T=uZNl=@K4|E%p{p^o5(BGjsE|WOR`%8+XgGW8xJTFJc4L zVY#L`OdnSM{HyS$fX1)3_JuNNH1aDsDqi>CzCT5=kY5zV<~29bX)c^I8R5n&ymHkx zj(QC4t#mDK;2xi8O%V;C{HqDQeM64=b4@sa*N_K0a&ro4+8LY6cFHz< ze|!g}zF|tDrP=`+U7KwKl20gdW1%!iN>1=uxA|NZJ2peruBOj?RBPb~8G;s6xIi6- z?_odhafsxoxiBf zwZZ)c*)FLc0#wE~bXw0TPBYl+h9hs|DYr_B4LR_YL@S1hQs=p zNEh%_fUvWZCbJtaF#kP5=(O#{8|g&Kmz1&8{@Lufw^DhtvKx955~aqxi2C=)Z-!Kd z+m-u+#^U4(HYn6a1w652kO0bYBt&goyx(n?MR^kI+{Q?0Y{G~W2) z0dS3fuJ?SU(6ZDp=kUley%PK}K_;YQyK|U|?7t9SHiyIfpT4a_kUVIhH4PSaj@3mo z`z}|mHhx1Pq?@(3vTBb5HTXuFAzFZEt0D-fw_kd=XvwIUh3VXTm{wbDA~cESd5cI1 zd>6=&AvG3yu+)`9oxmfrDQ(1fzv(_0l?bp{a364dXLRRBI8kBv!KsL;brY)#E3`o{ z3TlWUsS0{Voci?6MejccG9x_KiqN>So*1{25r6BSl9jUyR}1TgXBLL7Pr6Wv~Nu47;fbiU7TbL}>qmtl36YSZ() zVf@nqW(As~#`@bIC+AxSw!O5Pocf&rYaCFm?Jd?XR)p#@{!|5^Ws@wd855)mI^8y{ zws+VvGXW6%xoj@JkGb=~%oJ~7m6+uhOv?bH+jJJ~eFgp+}~*^C+3>R-MY!IZQoabCh( zN(T+z@Oyc^C)WqQESmh{d!!T8zS(!wX=R#hEKxMXy(eg zZ+Cwm1a%?;RH$h2_ws|nRjn8ZY!>3gn+6Ep4xT|AeFox7!rac2Lw?jsz}JqPE?5JG zok0}q1P;cuzs%Yrze|&d$oTr<`Lx{fbq2OV=!3v-ODq(n?|WxuhtmwJBIoW^^FB+D z-?Ok9HBKc5@)L(W&vmI{prL?4^OE9TR)bELS=<>*w%&aKjzi*@;5#P3moG@dm{Eke zhE#Is;&=o|{2GWai}7LYEI+gmc^Kj4K7w7n)+9godg?yB2?xs}pF1<*!Sv?D~Uvbkgs9xx9s#6zBv9l@ox>d#H6eqw^KZO;Vg}h!q zI33^$4}yF*q+q{DsJsa(SsV!YQ#zi^IF9MQV6i{SiN4dWWCi%YQ+hNc1r!^+<(YnB zG62-D`M3w3Q2;@X{S`n`{QO>migDpz0FK`->sYDOESs6u>-~<}_XN_6><2g7U#XC{ z$#Ig;n{_yEMnlvx-lP*;ts#DHV0r8j518>~33?Ak#jocW>uk>6V||p7{4rov#RS9c zdPD6r`qF1om9r!zS4Jk1>7fn#GCnmD=JIt1Na`X)=*LP7R!3XATgk`;&U*P<(0d z9p<0T&eYqQ9jot39FxpfuPSPYlfQ$s-*;+c1KL+cHIVcG5`H~^Ryu1Hk7%Nf$TCwR!SzG31@NHpm`mcp8v!wyWM49TjTxASJ-8JP*MTHLC}hF==PUOh8kaaXeGFGd<|e29vSDaS ztPeu&zv0^wN}Hahi`$pcDs~FVt2F;K!q}q*Y@{7i#stWfU`u2La4aerBKhV`^zG~j zJWvtZpcHIP7x*tfLSQcng6D(`HVp4=LWp_0Xt=2wEHjK)!DSz_Z?5J@>awRyk?azj zU-kdSs~cp))*pfJ_q7u`IsCq8F|OShB~D56S(Mwwlt?{yURE7#eI&WcpVq(@9Fd~g zeUiD!a4w51Nj(YzLnau+O3MDub|?loF0=<#jLztAM>PruE7yNDD0L}y=Ayuc?^?Ni zf~%GK=iEhn2}xKp7GonJx!JpDmDsco$|$XtRdUDwbM9$9s7x9-of2nKNj~?b@UOKz z9{`=Irz^ba-c&1vSQxSh;I2`cKc8-4)aCy%#bam;3_8vSJ-jw`_}lyukEC~z00EbC zI*dU3F21A)dSZr{qA5QF+{a%D`h#?8o%M?)*hWxuqnQD(TpcmfNq&UN$BmB)0!r8) zxno@Q?$_D&*4(rW6b+?-Y^5|*P`DHmJ%pI<6*yP)o}2^?>d7P#bd2j=vvx2mfLW@R zQLD`%buR*}nzNYNf%68w-D$7%v|=bXg1mYrdZy~}(@RRZ-U+Gx=nmCjVxr5Ag# zLw3R29-MHJl|`mRxj#sv@EfyR#-q>BE-XFEENbV$#dWM?!VjU8~kKZsd@G=HPrI{HiqN&j<92*-3$^M*;n@rG*i! zvi#?j;lc5w>@+r!6*CVUrN9as=S3?(ZBT979$5R#ZpPm?2VjIyQcEFp9orGR>f;G? zK<~FiYY6ow-&}|v7k?+03TC++so$)2~rN``u z>N%j$AbNQLX_!evzG8abf=15260vIXdz7K^a$YS)iw{@x5<|Rr#ii|ov=LJ{eu>dZYe_ip$ZuzvRu1dpjQK1BvP zH~m#t=2_wy>9+YkdNF-z` zQ*#7=^r%R*pIi2AI`>n9>(QJVE1k8?Ilav<)NUjW^O$}^yZZ{_Uwn!4Fq1`aslX;Y zj`XDIm`E1sz|wShA=?a@ZGKDSMU#Z3$E!1nZ)g^Eg3ZDoSN6@RXrGVCHvMIauS7d> zuJltXf9)LdTWdF!n%-iA9b#2$W#i??K)zYho^((ZqluvhAr@{H{diy0%@-~VW zKYC|2Ma)2^=skdLT@ZVqJfiCDqS@~qIGexL(BKy6Aw9ch0hoHN&E+m3*uka9+AIh3gTWdSe~W({-&^oFw`!j7$DcsF$7`pO?kRMK<9h=SV?cmyJIe`$4|zoI(6u9#qY9zM?#zNe^!Dl2>Z^dH`>`wSY# ztU;V*+g0R0DH6EnJA$U{QL&T~&s{`smeC2I-5mzv=v$l@iF;yN0hMibU=CG^e>J;+9k`Si9PzLaj$>}QKI6lWmO_o+_( zmhxA*0|-Na`+*J1qEMIXZf9rb#;pcOw>EDeDjb!|GumQ2!1ac;YqU|X;F@l1_lemzTN0J|U zFJF(kO21aHg)*KfuKT=BA{VDkOvlx(b{f|A9D69_BHUm#S$F>~`Mt@GesjLp3;reY zP~q>6Tt;`XkjqV?i7lqPbWGh`y<7dq<}pDHl-dDA4QG6`QDq)+vq_&HfW!}P6Cp4d zt>Qnli5ri*I1ILEOGD~3Y!@2^Jmcy1xDXmKolC?at}_6;neEfca0rLHT}NLpoUYh` zDbCtfZnYN&>}m-(F{5d1=)bBuZ?OcP`GmsQV@kn%JMJUIep`Avon#8=ATpEo-@hg& z12f-)R=HCD%pUjvbWa|P!}u)=wInpZG*LHKrZDMeC>Qils^IyY)x;kDRs4c3!DDOG zAptSsf#1X>kSli|Qka@S)6O4un-2aKL?bcV;$*>KSxHovjrfZ^-+c#>;(42yj71K| zzRyFiLrwv$rPcNA{mtv=o(*JDA0kS93>OE0D{KMJzLk$cc_5dCLWnJcFJd6_>BpE< z?aW9;^!;arQcIjloW&YL+~MkNO&a>N=pmhg>{SM<@`a&VeUA`ay*P@R$_+WS2%r?_ zs&Z%c`>ie+%!I=Lz>$9$7a`-`hoc&*dl60^whsaQ;~9~@JYn1Oc_bmgVVyAzUOYgZ z#j{`#D_YZ)(wa5;qzR#zo4a|-ANJjBB90r4Iun3*BkMxw_Ti>SjhktsmR|BPCLt>9 zZ_3eQjweI*-8+HNt)$9^s|+10w@sU!PY{`#BnF!ULS=#{k0Zr5`yOS?p8PfWbKT`6 z@T+PeRJ4`fj5t8bMs)0>o9|C>mBTlfQ*nFG#Rri-Q7}E}+eaz`LmO!`Y_pHkoAruu z`&!5VNnA3IG$}Pz)V&pt&AF!$E{J-;or3vWv3&Sl&9KzG+ae73Zf}=aP*SCI1{?0T z9SAC)W(?DSKOkcmW$(K5Bl?c@(5#>J#j@eq#ctX~$TIjkl>Wrfv%Ey+bl1Z-v?NxJ zwZ9!ae-MsHPUx&_W22?9$mCE%&~lzVG?hDXM%~gXGk+Q!Jf0BspkMWxy;^!n<6JIrSYjv z6F%~$8)0^qbUho9Sdf97b_n({$;|XH9-RHrohHuPcro@03KEPFejN&q?&nJFoIQY; zSI#uL6>2^^yOR!51OLO65xGas55dPG;3=uQ35ZYW04#+~byXQf^7Vq`G z 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 Pe7HEdAEg|=c=LY&YVNkY 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 deleted file mode 100644 index 13b35eba55c6dabc3aac36f33d859266c18fa0d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5680 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 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 deleted file mode 100644 index 0a3f5fa40fb3d1e0710331a48de5d256da3f275d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 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 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 deleted file mode 100644 index 2f1632cfddf3d9dade342351e627a0a75609fb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 deleted file mode 100644 index 92fb3cd5..00000000 --- a/example/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// 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 deleted file mode 100644 index 36b0fd94..00000000 --- a/example/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/example/macos/Runner/Configs/Release.xcconfig b/example/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f495..00000000 --- a/example/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/example/macos/Runner/Configs/Warnings.xcconfig b/example/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf47..00000000 --- a/example/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index dddb8a30..00000000 --- a/example/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,12 +0,0 @@ - - - - - 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 deleted file mode 100644 index 4789daa6..00000000 --- a/example/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - 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 deleted file mode 100644 index 3cc05eb2..00000000 --- a/example/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index 852fa1a4..00000000 --- a/example/macos/Runner/Release.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/example/macos/RunnerTests/RunnerTests.swift b/example/macos/RunnerTests/RunnerTests.swift deleted file mode 100644 index 5418c9f5..00000000 --- a/example/macos/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -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 841f7661..eff4efaa 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: circle_flags - sha256: "61bccd6a5f9bf3790ea0d42419c6942f0f60b2df510f948e154606e0bb55bbae" + sha256: cac0fe72ad731cae5984e30be536814d7df37eeb7efc388ba76fdb84dab47ac4 url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "3.0.1" clock: dependency: transitive description: @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: diacritic - sha256: "96db5db6149cbe4aa3cfcbfd170aca9b7648639be7e48025f9d458517f807fe4" + sha256: a84e03ec2779375fb86430dbe9d8fba62c68376f2499097a5f6e75556babe706 url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.1.4" fake_async: dependency: transitive description: @@ -78,14 +78,6 @@ 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: @@ -187,10 +179,10 @@ packages: dependency: transitive description: name: phone_numbers_parser - sha256: d0dad4f5b61c3d959b069df088ef7242ffed42a3cf74c7549fd7c324e1eb964e + sha256: "17a6686350c574a08f7beb839c5f908cc19b9c0eabd6e97029b517527a49da02" url: "https://pub.dev" source: hosted - version: "8.1.3" + version: "8.1.0" sky_engine: dependency: transitive description: flutter @@ -248,26 +240,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "18f6690295af52d081f6808f2f7c69f0eed6d7e23a71539d75f4aeb8f0062172" + sha256: "0f0c746dd2d6254a0057218ff980fc7f5670fd0fcf5e4db38a490d31eed4ad43" url: "https://pub.dev" source: hosted - version: "1.1.9+2" + version: "1.1.9+1" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "531d20465c10dfac7f5cd90b60bbe4dd9921f1ec4ca54c83ebb176dbacb7bb2d" + sha256: "0edf6d630d1bfd5589114138ed8fada3234deacc37966bec033d3047c29248b7" url: "https://pub.dev" source: hosted - version: "1.1.9+2" + version: "1.1.9+1" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "03012b0a33775c5530576b70240308080e1d5050f0faf000118c20e6463bc0ad" + sha256: d24333727332d9bd20990f1483af4e09abdb9b1fc7c3db940b56ab5c42790c26 url: "https://pub.dev" source: hosted - version: "1.1.9+2" + version: "1.1.9+1" vector_math: dependency: transitive description: @@ -293,5 +285,5 @@ packages: source: hosted version: "6.5.0" sdks: - dart: ">=3.2.4 <4.0.0" + dart: ">=3.2.0 <4.0.0" flutter: ">=3.7.0-0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 904c4b41..72f9f1a6 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -19,7 +19,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^2.0.3 + flutter_lints: ^2.0.1 flutter: uses-material-design: true diff --git a/example/web/index.html b/example/web/index.html index 45cf2ca3..b6b9dd23 100644 --- a/example/web/index.html +++ b/example/web/index.html @@ -31,29 +31,74 @@ example - - - - + diff --git a/example/windows/CMakeLists.txt b/example/windows/CMakeLists.txt index d960948a..1633297a 100644 --- a/example/windows/CMakeLists.txt +++ b/example/windows/CMakeLists.txt @@ -1,16 +1,13 @@ -# 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") -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(VERSION 3.14...3.25) +cmake_policy(SET CMP0063 NEW) -# Define build configuration option. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Configure build options. get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(IS_MULTICONFIG) set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" @@ -23,7 +20,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}") @@ -33,10 +30,6 @@ 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") @@ -45,14 +38,14 @@ function(APPLY_STANDARD_SETTINGS TARGET) target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") endfunction() -# Flutter library and tool build rules. set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") + +# Flutter library and tool build rules. add_subdirectory(${FLUTTER_MANAGED_DIR}) -# Application build; see runner/CMakeLists.txt. +# Application build add_subdirectory("runner") - # Generated plugin build rules, which manage building the plugins and adding # them to the application. include(flutter/generated_plugins.cmake) @@ -87,12 +80,6 @@ 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 903f4899..b2e4bd8d 100644 --- a/example/windows/flutter/CMakeLists.txt +++ b/example/windows/flutter/CMakeLists.txt @@ -1,4 +1,3 @@ -# 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") @@ -10,11 +9,6 @@ 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") @@ -97,7 +91,7 @@ add_custom_command( COMMAND ${CMAKE_COMMAND} -E env ${FLUTTER_TOOL_ENVIRONMENT} "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - ${FLUTTER_TARGET_PLATFORM} $ + windows-x64 $ 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 new file mode 100644 index 00000000..8b6d4680 --- /dev/null +++ b/example/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// 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 new file mode 100644 index 00000000..dc139d85 --- /dev/null +++ b/example/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// 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 394917c0..de2d8916 100644 --- a/example/windows/runner/CMakeLists.txt +++ b/example/windows/runner/CMakeLists.txt @@ -1,11 +1,6 @@ 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" @@ -15,26 +10,8 @@ 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 687e6bd2..5fdea291 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 // -#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 +#ifdef FLUTTER_BUILD_NUMBER +#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER #else -#define VERSION_AS_NUMBER 1,0,0,0 +#define VERSION_AS_NUMBER 1,0,0 #endif -#if defined(FLUTTER_VERSION) -#define VERSION_AS_STRING FLUTTER_VERSION +#ifdef FLUTTER_BUILD_NAME +#define VERSION_AS_STRING #FLUTTER_BUILD_NAME #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) 2024 com.example. All rights reserved." "\0" + VALUE "LegalCopyright", "Copyright (C) 2022 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 955ee303..b43b9095 100644 --- a/example/windows/runner/flutter_window.cpp +++ b/example/windows/runner/flutter_window.cpp @@ -26,16 +26,6 @@ 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 a61bf80d..bcb57b0e 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.Create(L"example", origin, size)) { + if (!window.CreateAndShow(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 a42ea768..c977c4a4 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 b2b08734..d19bdbbc 100644 --- a/example/windows/runner/utils.cpp +++ b/example/windows/runner/utils.cpp @@ -47,17 +47,16 @@ 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) - -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; + -1, nullptr, 0, nullptr, nullptr); + if (target_length == 0) { + return std::string(); } + std::string utf8_string; utf8_string.resize(target_length); int converted_length = ::WideCharToMultiByte( CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - input_length, utf8_string.data(), target_length, nullptr, nullptr); + -1, 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 60608d0f..c10f08dc 100644 --- a/example/windows/runner/win32_window.cpp +++ b/example/windows/runner/win32_window.cpp @@ -1,31 +1,13 @@ #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; @@ -49,8 +31,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 @@ -60,7 +42,7 @@ class WindowClassRegistrar { public: ~WindowClassRegistrar() = default; - // Returns the singleton registrar instance. + // Returns the singleton registar instance. static WindowClassRegistrar* GetInstance() { if (!instance_) { instance_ = new WindowClassRegistrar(); @@ -120,9 +102,9 @@ Win32Window::~Win32Window() { Destroy(); } -bool Win32Window::Create(const std::wstring& title, - const Point& origin, - const Size& size) { +bool Win32Window::CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size) { Destroy(); const wchar_t* window_class = @@ -135,7 +117,7 @@ bool Win32Window::Create(const std::wstring& title, double scale_factor = dpi / 96.0; HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, 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); @@ -144,15 +126,9 @@ bool Win32Window::Create(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, @@ -212,10 +188,6 @@ Win32Window::MessageHandler(HWND hwnd, SetFocus(child_content_); } return 0; - - case WM_DWMCOLORIZATIONCOLORCHANGED: - UpdateTheme(hwnd); - return 0; } return DefWindowProc(window_handle_, message, wparam, lparam); @@ -271,18 +243,3 @@ 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 e901dde6..17ba4311 100644 --- a/example/windows/runner/win32_window.h +++ b/example/windows/runner/win32_window.h @@ -28,16 +28,15 @@ class Win32Window { Win32Window(); virtual ~Win32Window(); - // Creates a win32 window with |title| that is positioned and sized using + // Creates and shows a win32 window with |title| and position and size 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 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(); + // 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); // Release OS resources associated with window. void Destroy(); @@ -77,7 +76,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 - // responds to changes in DPI. All other messages are handled by + // responsponds to changes in DPI. All other messages are handled by // MessageHandler. static LRESULT CALLBACK WndProc(HWND const window, UINT const message, @@ -87,9 +86,6 @@ 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 3f90898b..5482d2f7 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -1,7 +1,6 @@ -arb-dir: l10n +arb-dir: lib/l10n template-arb-file: en.arb -output-localization-file: phone_field_localization_impl.dart -output-class: PhoneFieldLocalizationImpl -output-dir: lib/src/localization/generated +output-localization-file: phone_field_localization.dart +output-class: PhoneFieldLocalization +output-dir: lib/l10n/generated synthetic-package: false -format: true diff --git a/l10n/ar.arb b/l10n/ar.arb deleted file mode 100644 index d5db5683..00000000 --- a/l10n/ar.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@locale": "ar", - "invalidPhoneNumber": "رقم الهاتف غير صحيح", - "invalidCountry": "دولة غير صحيح", - "invalidMobilePhoneNumber": "رقم الهاتف الخلوي غير صحيح", - "invalidFixedLinePhoneNumber": "رقم الهاتف الثابت غير صحيح", - "requiredPhoneNumber": "رقم الهاتف مطلوب" -} \ No newline at end of file diff --git a/l10n/ckb.arb b/l10n/ckb.arb deleted file mode 100644 index f6d83e93..00000000 --- a/l10n/ckb.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@locale": "ckb", - "invalidPhoneNumber": "ژمارەی تەلەفۆنی نادروست", - "invalidCountry": "وڵاتێکی نادروست", - "invalidMobilePhoneNumber": "ژمارەی مۆبایل نادروستە", - "invalidFixedLinePhoneNumber": "ژمارەی تەلەفۆنی هێڵی جێگیر نادروستە", - "requiredPhoneNumber": "ژمارەی تەلەفۆنی پێویست" -} \ No newline at end of file diff --git a/l10n/de.arb b/l10n/de.arb deleted file mode 100644 index 9f989b0c..00000000 --- a/l10n/de.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@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 deleted file mode 100644 index a2ee764b..00000000 --- a/l10n/el.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@locale": "el", - "invalidPhoneNumber": "Μη έγκυρος αριθμός τηλεφώνου", - "invalidCountry": "Μη έγκυρη χώρα", - "invalidMobilePhoneNumber": "Μη έγκυρος αριθμός κινητού τηλεφώνου", - "invalidFixedLinePhoneNumber": "Μη έγκυρος αριθμός σταθερού τηλεφώνου", - "requiredPhoneNumber": "Απαιτούμενος αριθμός τηλεφώνου" -} \ No newline at end of file diff --git a/l10n/en.arb b/l10n/en.arb deleted file mode 100644 index d8b2e7d2..00000000 --- a/l10n/en.arb +++ /dev/null @@ -1,21 +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", - "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 deleted file mode 100644 index 866dfa69..00000000 --- a/l10n/es.arb +++ /dev/null @@ -1,8 +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" -} \ No newline at end of file diff --git a/l10n/fa.arb b/l10n/fa.arb deleted file mode 100644 index b1b5c1a9..00000000 --- a/l10n/fa.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@locale": "fa", - "invalidPhoneNumber": "شماره تلفن نامعتبر است", - "invalidCountry": "کشور نامعتبر است", - "invalidMobilePhoneNumber": "شماره تلفن همراه نامعتبر است", - "invalidFixedLinePhoneNumber": "شماره تلفن ثابت نامعتبر است", - "requiredPhoneNumber": "شماره تلفن الزامی است" -} \ No newline at end of file diff --git a/l10n/fr.arb b/l10n/fr.arb deleted file mode 100644 index 85c5a0b3..00000000 --- a/l10n/fr.arb +++ /dev/null @@ -1,8 +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" -} \ No newline at end of file diff --git a/l10n/hi.arb b/l10n/hi.arb deleted file mode 100644 index 2fb8d481..00000000 --- a/l10n/hi.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@locale": "hi", - "invalidPhoneNumber": "अवैध फोन नंबर", - "invalidCountry": "अवैध देश", - "invalidMobilePhoneNumber": "अमान्य सेल फ़ोन नंबर", - "invalidFixedLinePhoneNumber": "अवैध लैंडलाइन नंबर", - "requiredPhoneNumber": "फ़ोन नंबर आवश्यक" -} \ No newline at end of file diff --git a/l10n/it.arb b/l10n/it.arb deleted file mode 100644 index 4a1fac6f..00000000 --- a/l10n/it.arb +++ /dev/null @@ -1,8 +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" -} \ No newline at end of file diff --git a/l10n/ku.arb b/l10n/ku.arb deleted file mode 100644 index 12a72ec6..00000000 --- a/l10n/ku.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@locale": "ku", - "invalidPhoneNumber": "ژمارەی تەلەفۆنی نادروست", - "invalidCountry": "وڵاتێکی نادروست", - "invalidMobilePhoneNumber": "ژمارەی مۆبایل نادروستە", - "invalidFixedLinePhoneNumber": "ژمارەی تەلەفۆنی هێڵی جێگیر نادروستە", - "requiredPhoneNumber": "ژمارەی تەلەفۆنی پێویست" -} \ No newline at end of file diff --git a/l10n/nb.arb b/l10n/nb.arb deleted file mode 100644 index 3cf2db0e..00000000 --- a/l10n/nb.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@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 deleted file mode 100644 index 51acf71c..00000000 --- a/l10n/nl.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@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 deleted file mode 100644 index a179e575..00000000 --- a/l10n/pt.arb +++ /dev/null @@ -1,8 +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" -} \ No newline at end of file diff --git a/l10n/ru.arb b/l10n/ru.arb deleted file mode 100644 index 11bff31c..00000000 --- a/l10n/ru.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@locale": "ru", - "invalidPhoneNumber": "Неправильный номер телефона", - "invalidCountry": "Неверная страна", - "invalidMobilePhoneNumber": "Неверный номер мобильного телефона", - "invalidFixedLinePhoneNumber": "Недействительный номер стационарного телефона", - "requiredPhoneNumber": "Требуется номер телефона" -} \ No newline at end of file diff --git a/l10n/sv.arb b/l10n/sv.arb deleted file mode 100644 index f9349d95..00000000 --- a/l10n/sv.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@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 deleted file mode 100644 index a522c126..00000000 --- a/l10n/tr.arb +++ /dev/null @@ -1,8 +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" -} \ No newline at end of file diff --git a/l10n/uk.arb b/l10n/uk.arb deleted file mode 100644 index 4bcc75b8..00000000 --- a/l10n/uk.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@locale": "uk", - "invalidPhoneNumber": "Невірний номер телефону", - "invalidCountry": "Недійсна країна", - "invalidMobilePhoneNumber": "Невірний номер мобільного телефону", - "invalidFixedLinePhoneNumber": "Невірний номер стаціонарного телефону", - "requiredPhoneNumber": "Необхідний номер телефону" -} \ No newline at end of file diff --git a/l10n/uz.arb b/l10n/uz.arb deleted file mode 100644 index c17feeaf..00000000 --- a/l10n/uz.arb +++ /dev/null @@ -1,8 +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" -} \ No newline at end of file diff --git a/l10n/zh.arb b/l10n/zh.arb deleted file mode 100644 index 6286aac9..00000000 --- a/l10n/zh.arb +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@@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 new file mode 100644 index 00000000..898255fd --- /dev/null +++ b/lib/l10n/ar.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..4d13f843 --- /dev/null +++ b/lib/l10n/de.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..a4826dfe --- /dev/null +++ b/lib/l10n/el.arb @@ -0,0 +1,252 @@ +{ + "@@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 new file mode 100644 index 00000000..1de71e5d --- /dev/null +++ b/lib/l10n/en.arb @@ -0,0 +1,252 @@ +{ + "@@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 new file mode 100644 index 00000000..79484c41 --- /dev/null +++ b/lib/l10n/es.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..db4bf2e3 --- /dev/null +++ b/lib/l10n/fa.arb @@ -0,0 +1,252 @@ +{ + "@@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 new file mode 100644 index 00000000..98ff2f60 --- /dev/null +++ b/lib/l10n/fr.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..9893da61 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization.dart @@ -0,0 +1,1709 @@ +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 new file mode 100644 index 00000000..905cc91d --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_ar.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..0d7d16c6 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_de.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..c64e5538 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_el.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..a10d384f --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_en.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..884a146d --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_es.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..a0336a64 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_fa.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..5f5c7dd6 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_fr.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..9f3e4408 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_hi.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..870a74e2 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_it.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..2f783cf2 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_nb.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..876f3e9d --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_nl.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..58b6da97 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_pt.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..99d31408 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_ru.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..02bb7b8a --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_sv.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..3b5e9868 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_tr.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..0ff9bae1 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_uk.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..b7ae3a83 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_uz.dart @@ -0,0 +1,754 @@ +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 new file mode 100644 index 00000000..1b944ce6 --- /dev/null +++ b/lib/l10n/generated/phone_field_localization_zh.dart @@ -0,0 +1,753 @@ +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 new file mode 100644 index 00000000..9e641136 --- /dev/null +++ b/lib/l10n/hi.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..d14981f0 --- /dev/null +++ b/lib/l10n/it.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..a1888147 --- /dev/null +++ b/lib/l10n/nb.arb @@ -0,0 +1,252 @@ +{ + "@@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 new file mode 100644 index 00000000..6487c001 --- /dev/null +++ b/lib/l10n/nl.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..e7dccb8f --- /dev/null +++ b/lib/l10n/pt.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..061d00b6 --- /dev/null +++ b/lib/l10n/ru.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..674d2bec --- /dev/null +++ b/lib/l10n/sv.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..dd24adcd --- /dev/null +++ b/lib/l10n/tr.arb @@ -0,0 +1,254 @@ +{ + "@@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 new file mode 100644 index 00000000..6b8502f5 --- /dev/null +++ b/lib/l10n/uk.arb @@ -0,0 +1,252 @@ +{ + "@@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 new file mode 100644 index 00000000..3f3cb817 --- /dev/null +++ b/lib/l10n/uz.arb @@ -0,0 +1,252 @@ +{ + "@@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 new file mode 100644 index 00000000..5623433f --- /dev/null +++ b/lib/l10n/zh.arb @@ -0,0 +1,254 @@ +{ + "@@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 3316582f..d685b512 100644 --- a/lib/phone_form_field.dart +++ b/lib/phone_form_field.dart @@ -1,11 +1,17 @@ library phone_number_input; -export 'src/phone_form_field.dart'; -export 'src/country_selector_navigator.dart'; -export 'src/country_button.dart'; +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/validation/phone_validator.dart'; -export 'src/localization/localization.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 'package:phone_numbers_parser/phone_numbers_parser.dart' show PhoneNumber, PhoneNumberType, IsoCode; diff --git a/lib/src/validation/allowed_characters.dart b/lib/src/constants/patterns.dart similarity index 90% rename from lib/src/validation/allowed_characters.dart rename to lib/src/constants/patterns.dart index 78871b29..fa0833a0 100644 --- a/lib/src/validation/allowed_characters.dart +++ b/lib/src/constants/patterns.dart @@ -1,4 +1,4 @@ -class AllowedCharacters { +class Patterns { /// accepted punctuation within a phone number static const String punctuation = r' ()\[\]\-\.\/\\'; static const String plus = r'\++'; diff --git a/lib/src/controllers/phone_controller.dart b/lib/src/controllers/phone_controller.dart new file mode 100644 index 00000000..94c95ecc --- /dev/null +++ b/lib/src/controllers/phone_controller.dart @@ -0,0 +1,28 @@ +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 new file mode 100644 index 00000000..7ef9e85c --- /dev/null +++ b/lib/src/controllers/phone_field_controller.dart @@ -0,0 +1,64 @@ +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 deleted file mode 100644 index dcc5286c..00000000 --- a/lib/src/country/country_button.dart +++ /dev/null @@ -1,80 +0,0 @@ -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 deleted file mode 100644 index 6b6da824..00000000 --- a/lib/src/country_button.dart +++ /dev/null @@ -1,86 +0,0 @@ -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/localization/generated/phone_field_localization_impl.dart b/lib/src/localization/generated/phone_field_localization_impl.dart deleted file mode 100644 index 006cc07a..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl.dart +++ /dev/null @@ -1,267 +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_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 deleted file mode 100644 index a63202c9..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_ar.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index bf8f4183..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_ckb.dart +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index ab7fdfc3..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_de.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 824e88dc..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_el.dart +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index bc499b37..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_en.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 9971104d..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_es.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index b75a0ed4..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_fa.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 404aa43f..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_fr.dart +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index 2989cba5..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_hi.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index ca7c75b7..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_it.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index f6b874f3..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_ku.dart +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index 557f4c2e..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_nb.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 7cdfbd58..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_nl.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 595626a7..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_pt.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 638dcba0..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_ru.dart +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index 8657e29a..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_sv.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 3de180db..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_tr.dart +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index 01de3fe2..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_uk.dart +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index cba75598..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_uz.dart +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index 7af7943f..00000000 --- a/lib/src/localization/generated/phone_field_localization_impl_zh.dart +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index d1eb6868..00000000 --- a/lib/src/localization/localization.dart +++ /dev/null @@ -1,17 +0,0 @@ -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 deleted file mode 100644 index 747897dd..00000000 --- a/lib/src/phone_controller.dart +++ /dev/null @@ -1,108 +0,0 @@ -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 deleted file mode 100644 index 6d6f2afd..00000000 --- a/lib/src/phone_form_field.dart +++ /dev/null @@ -1,194 +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/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 deleted file mode 100644 index 6868bcae..00000000 --- a/lib/src/phone_form_field_state.dart +++ /dev/null @@ -1,200 +0,0 @@ -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/validation/localized_validation_error.dart b/lib/src/validation/localized_validation_error.dart deleted file mode 100644 index 7da57585..00000000 --- a/lib/src/validation/localized_validation_error.dart +++ /dev/null @@ -1,3 +0,0 @@ -// 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 30a88de9..2f62ff45 100644 --- a/lib/src/validation/phone_validator.dart +++ b/lib/src/validation/phone_validator.dart @@ -1,9 +1,8 @@ -import 'package:flutter/material.dart'; import 'package:phone_form_field/phone_form_field.dart'; typedef PhoneNumberInputValidator = String? Function(PhoneNumber? phoneNumber); -abstract class PhoneValidator { +class PhoneValidator { /// allow to compose several validators /// Note that validator list order is important as first /// validator failing will return according message. @@ -21,107 +20,174 @@ abstract class PhoneValidator { }; } - static PhoneNumberInputValidator required( - BuildContext context, { + static PhoneNumberInputValidator required({ /// custom error message String? errorText, }) { return (PhoneNumber? valueCandidate) { if (valueCandidate == null || (valueCandidate.nsn.trim().isEmpty)) { - return errorText ?? - PhoneFieldLocalization.of(context).requiredPhoneNumber; + return errorText ?? 'requiredPhoneNumber'; } return null; }; } - static PhoneNumberInputValidator valid( - BuildContext context, { + static PhoneNumberInputValidator invalid({ /// 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 && - valueCandidate.nsn.isNotEmpty && + (!allowEmpty || valueCandidate.nsn.isNotEmpty) && !valueCandidate.isValid()) { - return errorText ?? - PhoneFieldLocalization.of(context).invalidPhoneNumber; + return errorText ?? 'invalidPhoneNumber'; } return null; }; } - static PhoneNumberInputValidator validType( - BuildContext context, + @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( /// 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 && - valueCandidate.nsn.isNotEmpty && + (!allowEmpty || valueCandidate.nsn.isNotEmpty) && !valueCandidate.isValid(type: expectedType)) { - 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 errorText ?? defaultMessage; } 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( - BuildContext context, { + static PhoneNumberInputValidator validFixedLine({ /// 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( - BuildContext context, { + static PhoneNumberInputValidator validMobile({ /// 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, ); - static PhoneNumberInputValidator validCountry( - BuildContext context, + @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( /// 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 && - (valueCandidate.nsn.isNotEmpty) && + (!allowEmpty || valueCandidate.nsn.isNotEmpty) && !expectedCountries.contains(valueCandidate.isoCode)) { - return errorText ?? PhoneFieldLocalization.of(context).invalidCountry; + return errorText ?? '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 new file mode 100644 index 00000000..a8ee7af4 --- /dev/null +++ b/lib/src/validation/validator_translator.dart @@ -0,0 +1,45 @@ +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 new file mode 100644 index 00000000..97e35f50 --- /dev/null +++ b/lib/src/widgets/country_code_chip.dart @@ -0,0 +1,57 @@ +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 new file mode 100644 index 00000000..cc978241 --- /dev/null +++ b/lib/src/widgets/country_selector/country.dart @@ -0,0 +1,35 @@ +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 new file mode 100644 index 00000000..00788f8b --- /dev/null +++ b/lib/src/widgets/country_selector/country_finder.dart @@ -0,0 +1,81 @@ +// 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 new file mode 100644 index 00000000..613ccff9 --- /dev/null +++ b/lib/src/widgets/country_selector/country_list.dart @@ -0,0 +1,110 @@ +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 new file mode 100644 index 00000000..4771b89b --- /dev/null +++ b/lib/src/widgets/country_selector/country_selector.dart @@ -0,0 +1,167 @@ +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/country_selector_navigator.dart b/lib/src/widgets/country_selector/country_selector_navigator.dart similarity index 71% rename from lib/src/country_selector_navigator.dart rename to lib/src/widgets/country_selector/country_selector_navigator.dart index 74f61a29..9c2070e6 100644 --- a/lib/src/country_selector_navigator.dart +++ b/lib/src/widgets/country_selector/country_selector_navigator.dart @@ -1,11 +1,14 @@ +import 'package:circle_flags/circle_flags.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_country_selector/flutter_country_selector.dart'; +import 'package:phone_form_field/phone_form_field.dart'; +import 'package:phone_form_field/src/widgets/country_selector/country_selector_page.dart'; abstract class CountrySelectorNavigator { final List? countries; final List? favorites; - final bool showDialCode; + final bool addSeparator; + final bool showCountryCode; final bool sortCountries; final String? noResultMessage; final bool searchAutofocus; @@ -21,10 +24,8 @@ abstract class CountrySelectorNavigator { const CountrySelectorNavigator({ this.countries, this.favorites, - @Deprecated('This is always on by default, this can be safely removed') - bool addSeparator = true, - @Deprecated('Use [showDialCode] instead') bool? showCountryCode, - bool? showDialCode, + this.addSeparator = true, + this.showCountryCode = true, this.sortCountries = false, this.noResultMessage, required this.searchAutofocus, @@ -36,22 +37,21 @@ 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 show(BuildContext context); + Future navigate(BuildContext context, FlagCache flagCache); - CountrySelectorSheet _getCountrySelector({ - required ValueChanged onCountrySelected, + CountrySelector _getCountrySelector({ + required ValueChanged onCountrySelected, + required FlagCache flagCache, ScrollController? scrollController, }) { - return CountrySelector.sheet( - countries: countries ?? IsoCode.values, - favoriteCountries: favorites ?? [], + return CountrySelector( + countries: countries, onCountrySelected: onCountrySelected, - showDialCode: showDialCode, + favoriteCountries: favorites ?? [], + addFavoritesSeparator: addSeparator, + showCountryCode: showCountryCode, noResultMessage: noResultMessage, scrollController: scrollController, searchAutofocus: searchAutofocus, @@ -62,6 +62,7 @@ abstract class CountrySelectorNavigator { searchBoxIconColor: searchBoxIconColor, scrollPhysics: scrollPhysics, flagSize: flagSize, + flagCache: flagCache, ); } @@ -83,23 +84,21 @@ abstract class CountrySelectorNavigator { ScrollPhysics? scrollPhysics, }) = DialogNavigator._; - @Deprecated('Use [CountrySelectorNavigator.page] instead') - const factory CountrySelectorNavigator.searchDelegate() = - CountrySelectorNavigator.page; - - const factory CountrySelectorNavigator.page({ + const factory CountrySelectorNavigator.searchDelegate({ + List? countries, + List? favorites, bool addSeparator, bool showCountryCode, bool sortCountries, String? noResultMessage, + bool searchAutofocus, TextStyle? subtitleStyle, TextStyle? titleStyle, InputDecoration? searchBoxDecoration, TextStyle? searchBoxTextStyle, Color? searchBoxIconColor, ScrollPhysics? scrollPhysics, - ThemeData? appBarTheme, - }) = PageNavigator._; + }) = SearchDelegateNavigator._; const factory CountrySelectorNavigator.bottomSheet({ List? countries, @@ -179,7 +178,7 @@ class DialogNavigator extends CountrySelectorNavigator { }); @override - Future show(BuildContext context) { + Future navigate(BuildContext context, FlagCache flagCache) { return showDialog( context: context, builder: (_) => Dialog( @@ -189,6 +188,7 @@ 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 PageNavigator extends CountrySelectorNavigator { - const PageNavigator._({ +class SearchDelegateNavigator extends CountrySelectorNavigator { + const SearchDelegateNavigator._({ super.countries, super.favorites, super.addSeparator, @@ -211,37 +211,34 @@ class PageNavigator extends CountrySelectorNavigator { super.searchBoxTextStyle, super.searchBoxIconColor, super.scrollPhysics, - this.appBarTheme, }); - final ThemeData? appBarTheme; - - CountrySelectorPage _getCountrySelectorPage({ - required ValueChanged onCountrySelected, + CountrySelectorSearchDelegate _getCountrySelectorSearchDelegate({ + required ValueChanged onCountrySelected, + required FlagCache flagCache, ScrollController? scrollController, }) { - return CountrySelector.page( - onCountrySelected: onCountrySelected, - scrollController: scrollController, - countries: countries ?? IsoCode.values, - favoriteCountries: favorites ?? [], - noResultMessage: noResultMessage, - searchAutofocus: searchAutofocus, - showDialCode: showDialCode, - titleStyle: titleStyle, - subtitleStyle: subtitleStyle, - ); + return CountrySelectorSearchDelegate( + onCountrySelected: onCountrySelected, + scrollController: scrollController, + addFavoritesSeparator: addSeparator, + countries: countries, + favoriteCountries: favorites ?? [], + noResultMessage: noResultMessage, + searchAutofocus: searchAutofocus, + showCountryCode: showCountryCode, + titleStyle: titleStyle, + subtitleStyle: subtitleStyle, + flagCache: flagCache); } @override - Future show( - BuildContext context, - ) { - return Navigator.of(context).push( - MaterialPageRoute( - builder: (ctx) => _getCountrySelectorPage( - onCountrySelected: (country) => Navigator.pop(context, country), - ), + Future navigate(BuildContext context, FlagCache flagCache) { + return showSearch( + context: context, + delegate: _getCountrySelectorSearchDelegate( + onCountrySelected: (country) => Navigator.pop(context, country), + flagCache: flagCache, ), ); } @@ -265,10 +262,8 @@ class BottomSheetNavigator extends CountrySelectorNavigator { }); @override - Future show( - BuildContext context, - ) { - IsoCode? selected; + Future navigate(BuildContext context, FlagCache flagCache) { + Country? selected; final ctrl = showBottomSheet( context: context, builder: (_) => MediaQuery( @@ -279,6 +274,7 @@ class BottomSheetNavigator extends CountrySelectorNavigator { selected = country; Navigator.pop(context, country); }, + flagCache: flagCache, ), ), ), @@ -308,15 +304,17 @@ class ModalBottomSheetNavigator extends CountrySelectorNavigator { }); @override - Future show( + Future navigate( 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, @@ -353,14 +351,13 @@ class DraggableModalBottomSheetNavigator extends CountrySelectorNavigator { }); @override - Future show(BuildContext context) { + Future navigate(BuildContext context, FlagCache flagCache) { final effectiveBorderRadius = borderRadius ?? const BorderRadius.only( topLeft: Radius.circular(16), topRight: Radius.circular(16), ); - - return showModalBottomSheet( + return showModalBottomSheet( context: context, shape: RoundedRectangleBorder( borderRadius: effectiveBorderRadius, @@ -371,12 +368,17 @@ class DraggableModalBottomSheetNavigator extends CountrySelectorNavigator { maxChildSize: maxChildSize, expand: false, builder: (context, scrollController) { - return _CountrySelectorWidget( - scrollController: scrollController, - borderRadius: effectiveBorderRadius, + return Container( + decoration: ShapeDecoration( + color: Theme.of(context).canvasColor, + shape: RoundedRectangleBorder( + borderRadius: effectiveBorderRadius, + ), + ), child: _getCountrySelector( onCountrySelected: (country) => Navigator.pop(context, country), scrollController: scrollController, + flagCache: flagCache, ), ); }, @@ -386,49 +388,3 @@ 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/widgets/country_selector/country_selector_page.dart b/lib/src/widgets/country_selector/country_selector_page.dart new file mode 100644 index 00000000..7a322c36 --- /dev/null +++ b/lib/src/widgets/country_selector/country_selector_page.dart @@ -0,0 +1,143 @@ +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 new file mode 100644 index 00000000..3418e157 --- /dev/null +++ b/lib/src/widgets/country_selector/localized_country_registry.dart @@ -0,0 +1,287 @@ +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 new file mode 100644 index 00000000..ec1ec5e7 --- /dev/null +++ b/lib/src/widgets/country_selector/search_box.dart @@ -0,0 +1,50 @@ +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 new file mode 100644 index 00000000..70cdbf6e --- /dev/null +++ b/lib/src/widgets/phone_field.dart @@ -0,0 +1,127 @@ +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 new file mode 100644 index 00000000..e6c4ea18 --- /dev/null +++ b/lib/src/widgets/phone_field_state.dart @@ -0,0 +1,185 @@ +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 new file mode 100644 index 00000000..254ca9ea --- /dev/null +++ b/lib/src/widgets/phone_form_field.dart @@ -0,0 +1,229 @@ +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 new file mode 100644 index 00000000..7fada3e1 --- /dev/null +++ b/lib/src/widgets/phone_form_field_state.dart @@ -0,0 +1,114 @@ +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 a4f6a9ec..7b8cd3e8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,18 +10,15 @@ environment: dependencies: flutter: sdk: flutter - flutter_localizations: + flutter_localizations: # Add this line sdk: flutter - 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 + + circle_flags: ^3.0.1 + phone_numbers_parser: ^8.1.0 + intl: ">=0.17.0 <=1.0.0" + diacritic: ^0.1.3 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^3.0.1 - -flutter: - generate: true 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 6601c1bf..c1462e75 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,44 +16,36 @@ 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.show(ctx))); + await tester.pumpWidget(getApp((ctx) => nav.navigate(ctx, FlagCache()))); await tester.tap(find.byType(ElevatedButton)); await tester.pumpAndSettle(); - expect(find.byType(CountrySelectorSheet), findsOneWidget); + expect(find.byType(CountrySelector), findsOneWidget); }); testWidgets('should navigate to modal bottom sheet', (tester) async { const nav = CountrySelectorNavigator.modalBottomSheet(); - await tester.pumpWidget(getApp((ctx) => nav.show(ctx))); + await tester.pumpWidget(getApp((ctx) => nav.navigate(ctx, FlagCache()))); await tester.tap(find.byType(ElevatedButton)); await tester.pump(const Duration(seconds: 1)); - expect(find.byType(CountrySelectorSheet), findsOneWidget); + expect(find.byType(CountrySelector), findsOneWidget); }); testWidgets('should navigate to bottom sheet', (tester) async { const nav = CountrySelectorNavigator.bottomSheet(); - await tester.pumpWidget(getApp((ctx) => nav.show(ctx))); + await tester.pumpWidget(getApp((ctx) => nav.navigate(ctx, FlagCache()))); await tester.tap(find.byType(ElevatedButton)); await tester.pump(const Duration(seconds: 1)); - expect(find.byType(CountrySelectorSheet), findsOneWidget); + expect(find.byType(CountrySelector), findsOneWidget); }); testWidgets('should navigate to draggable sheet', (tester) async { const nav = CountrySelectorNavigator.draggableBottomSheet(); - await tester.pumpWidget(getApp((ctx) => nav.show(ctx))); + await tester.pumpWidget(getApp((ctx) => nav.navigate(ctx, FlagCache()))); await tester.tap(find.byType(ElevatedButton)); await tester.pump(const Duration(seconds: 1)); - expect(find.byType(CountrySelectorSheet), findsOneWidget); + expect(find.byType(CountrySelector), findsOneWidget); }); }); } diff --git a/test/_country_selector_test.dart b/test/_country_selector_test.dart new file mode 100644 index 00000000..5d97bd7a --- /dev/null +++ b/test/_country_selector_test.dart @@ -0,0 +1,251 @@ +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/phone_form_field_test.dart b/test/phone_form_field_test.dart index 0a1884ca..b79ca0f4 100644 --- a/test/phone_form_field_test.dart +++ b/test/phone_form_field_test.dart @@ -1,15 +1,14 @@ import 'package:circle_flags/circle_flags.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_country_selector/flutter_country_selector.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/localization/generated/phone_field_localization_impl_en.dart'; +import 'package:phone_form_field/src/widgets/country_selector/country_list.dart'; void main() { group('PhoneFormField', () { final formKey = GlobalKey(); final phoneKey = GlobalKey>(); - Widget getWidget({ Function(PhoneNumber?)? onChanged, Function(PhoneNumber?)? onSaved, @@ -18,89 +17,82 @@ void main() { PhoneController? controller, bool showFlagInInput = true, bool showDialCode = true, - PhoneNumberInputValidator Function(BuildContext)? validatorBuilder, - bool enabled = true, + IsoCode defaultCountry = IsoCode.US, + bool shouldFormat = false, + PhoneNumberInputValidator? validator, }) => MaterialApp( - localizationsDelegates: PhoneFieldLocalization.delegates, + localizationsDelegates: const [ + GlobalMaterialLocalizations.delegate, + PhoneFieldLocalization.delegate, + ], supportedLocales: const [Locale('en')], home: Scaffold( - 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, - ), - ); - }), + 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, + ), + ), ), ); - 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(CountryButton), 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); + group('display', () { + testWidgets('Should display input', (tester) async { + await tester.pumpWidget(getWidget()); + expect(find.byType(TextField), findsOneWidget); + }); - await tester.tap(find.byType(CountryButton), warnIfMissed: false); - await tester.pumpAndSettle(); + testWidgets('Should display country code', (tester) async { + await tester.pumpWidget(getWidget()); + expect(find.byType(CountryCodeChip), findsWidgets); + }); - expect(find.byType(CountrySelectorSheet), findsNothing); - expect(find.byType(CountrySelectorPage), findsNothing); + testWidgets('Should display flag', (tester) async { + await tester.pumpWidget(getWidget()); + expect(find.byType(CircleFlag), findsWidgets); + }); }); group('Country code', () { testWidgets('Should open dialog when country code is clicked', (tester) async { await tester.pumpWidget(getWidget()); - expect(find.byType(CountrySelectorPage), findsNothing); + expect(find.byType(CountryList), findsNothing); await tester.tap(find.byType(PhoneFormField)); await tester.pump(const Duration(seconds: 1)); - await tester.tap(find.byType(CountryButton)); + await tester.tap(find.byType(CountryCodeChip)); await tester.pumpAndSettle(); - expect(find.byType(CountrySelectorPage), findsOneWidget); + 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); }); + testWidgets('Should hide flag', (tester) async { await tester.pumpWidget(getWidget(showFlagInInput: false)); expect(find.byType(CircleFlag), findsNothing); }); - testWidgets('Should format phone number', (tester) async { + testWidgets('Should format when shouldFormat is true', (tester) async { PhoneNumber? phoneNumber = PhoneNumber.parse( '', destinationCountry: IsoCode.FR, ); - await tester.pumpWidget(getWidget(initialValue: phoneNumber)); + await tester.pumpWidget( + getWidget(initialValue: phoneNumber, shouldFormat: true)); await tester.pump(const Duration(seconds: 1)); final phoneField = find.byType(PhoneFormField); await tester.enterText(phoneField, '677777777'); @@ -110,313 +102,219 @@ void main() { testWidgets('Should show dial code when showDialCode is true', (tester) async { - PhoneNumber phoneNumber = PhoneNumber.parse('+33'); + PhoneNumber? phoneNumber = PhoneNumber.parse( + '', + destinationCountry: IsoCode.FR, + ); - 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('+33'); + PhoneNumber? phoneNumber = PhoneNumber.parse( + '', + destinationCountry: IsoCode.FR, + ); - 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); }); }); - 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( - initialValue: PhoneNumber.parse('+1'), - ); - PhoneNumber? newValue; - controller.addListener(() { - newValue = controller.value; + 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); }); - 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(); - 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 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 country code chip when full number copy pasted', - (tester) async { - final controller = PhoneController(); - // ignore: unused_local_variable - PhoneNumber? newValue; - controller.addListener(() { - newValue = controller.value; + 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')); }); - 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; - } - - 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)), - ); - }); + testWidgets('Should call onChange', (tester) async { + bool changed = false; + PhoneNumber? phoneNumber = + PhoneNumber.parse('', destinationCountry: IsoCode.FR); + void onChanged(PhoneNumber? p) { + changed = true; + phoneNumber = p; + } - 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, - validatorBuilder: (context) => PhoneValidator.valid(context), + onChanged: onChanged, ), ); final phoneField = find.byType(PhoneFormField); - await tester.enterText(phoneField, '9984'); - await tester.pumpAndSettle(const Duration(seconds: 1)); + 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))); + }); + }); - expect( - find.text(PhoneFieldLocalizationImplEn().invalidPhoneNumber), - findsOneWidget, + 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)); + + expect(find.text('Invalid phone number'), findsOneWidget); }); testWidgets( - 'Should display invalid mobile phone when PhoneValidator.validMobile' - ' is used and the phone number is not a mobile phone number', + 'Should tell when a phone number is not valid for a given phone number type', (tester) async { - PhoneNumber? phoneNumber = PhoneNumber.parse('+33'); + PhoneNumber? phoneNumber = PhoneNumber.parse( + '', + destinationCountry: IsoCode.BE, + ); + // valid fixed line await tester.pumpWidget(getWidget( initialValue: phoneNumber, - validatorBuilder: (context) => PhoneValidator.validMobile(context), + validator: PhoneValidator.validFixedLine(), )); final phoneField = find.byType(PhoneFormField); - await tester.enterText(phoneField, '6 99 99 99 99'); + await tester.enterText(phoneField, '77777777'); await tester.pumpAndSettle(); - 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'); + expect(find.text('Invalid'), findsNothing); + // invalid mobile await tester.pumpWidget(getWidget( initialValue: phoneNumber, - validatorBuilder: (context) => PhoneValidator.validFixedLine(context), + validator: PhoneValidator.validMobile( + errorText: 'Invalid phone number', + ), )); - final phoneField = find.byType(PhoneFormField); - await tester.enterText(phoneField, '67777777'); + final phoneField2 = find.byType(PhoneFormField); await tester.pumpAndSettle(); - expect( - find.text(PhoneFieldLocalizationImplEn().invalidFixedLinePhoneNumber), - findsNothing, - ); - await tester.enterText(phoneField, '777'); + await tester.enterText(phoneField2, '77777777'); await tester.pumpAndSettle(); - expect( - find.text(PhoneFieldLocalizationImplEn().invalidFixedLinePhoneNumber), - findsOneWidget, - ); - }); + expect(find.text('Invalid phone number'), findsOneWidget); - 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')); + // valid mobile await tester.pumpWidget(getWidget( - controller: controller, - validatorBuilder: (context) => PhoneValidator.required(context), + initialValue: phoneNumber, + validator: PhoneValidator.validMobile( + errorText: 'Invalid phone number', + ), )); - controller.changeNationalNumber(''); + final phoneField3 = find.byType(PhoneFormField); + await tester.enterText(phoneField3, '477668899'); await tester.pumpAndSettle(); - - expect( - find.text(PhoneFieldLocalizationImplEn().requiredPhoneNumber), - findsOneWidget, - ); + expect(find.text('Invalid'), findsNothing); }); + }); - 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, - ), + group('Format', () { + testWidgets('Should format when shouldFormat is true', (tester) async { + PhoneNumber? phoneNumber = PhoneNumber.parse( + '', + destinationCountry: IsoCode.FR, ); - 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.parse('+33'), - validatorBuilder: (context) => validator, - ), - ); + getWidget(initialValue: phoneNumber, shouldFormat: true)); + await tester.pump(const Duration(seconds: 1)); final phoneField = find.byType(PhoneFormField); - await tester.enterText(phoneField, '9999'); - await tester.pumpAndSettle(); - - expect(find.text('validation failed'), findsOneWidget); - expect(firstValidationDone, isTrue); - expect(lastValidationDone, isFalse); + await tester.enterText(phoneField, '677777777'); + await tester.pump(const Duration(seconds: 1)); + expect(find.text('6 77 77 77 77'), findsOneWidget); }); - }); - - group('Format', () { - testWidgets('Should format when shouldFormat is true', (tester) async { + testWidgets('Should not format when shouldFormat is false', + (tester) async { PhoneNumber? phoneNumber = PhoneNumber.parse( '', destinationCountry: IsoCode.FR, ); - await tester.pumpWidget(getWidget(initialValue: phoneNumber)); + await tester.pumpWidget( + getWidget(initialValue: phoneNumber, shouldFormat: false)); 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('6 77 77 77 77'), findsOneWidget); + expect(find.text('677777777'), findsOneWidget); }); }); @@ -437,22 +335,18 @@ void main() { onSaved: onSaved, )); final phoneField = find.byType(PhoneFormField); - await tester.enterText(phoneField, '477889922'); + await tester.enterText(phoneField, '479281938'); 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( - '477 88 99 22', + phoneNumber, + equals(PhoneNumber.parse( + '479281938', destinationCountry: IsoCode.FR, - ), - ), - ); + ))); }); - testWidgets('Should call onTapOutside', (tester) async { PhoneNumber? phoneNumber = PhoneNumber.parse( '', @@ -476,7 +370,7 @@ void main() { // Tap on the PhoneFormField to focus it final phoneField = find.byType(PhoneFormField); - await tester.enterText(phoneField, '488 22 33 44'); + await tester.enterText(phoneField, '479281938'); await tester.pump(const Duration(seconds: 1)); // Verify that the PhoneFormField has focus @@ -522,18 +416,20 @@ void main() { ); }); - testWidgets('Should reset with form state', (tester) async { - PhoneNumber? phoneNumber = PhoneNumber.parse('+32'); + testWidgets('Should reset', (tester) async { + PhoneNumber? phoneNumber = PhoneNumber.parse( + '', + destinationCountry: IsoCode.FR, + ); await tester.pumpWidget(getWidget(initialValue: phoneNumber)); await tester.pump(const Duration(seconds: 1)); - const national = '477 88 99 22'; + const national = '123456'; final phoneField = find.byType(PhoneFormField); await tester.enterText(phoneField, national); - await tester.pumpAndSettle(); expect(find.text(national), findsOneWidget); formKey.currentState?.reset(); - await tester.pumpAndSettle(); + await tester.pump(const Duration(seconds: 1)); expect(find.text(national), findsNothing); }); }); diff --git a/test/phone_validator_test.dart b/test/phone_validator_test.dart new file mode 100644 index 00000000..c246e9e5 --- /dev/null +++ b/test/phone_validator_test.dart @@ -0,0 +1,203 @@ +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'), + ); + }); + }); +}