From 3b0972f6b8bcd55956c894b025cc53a976e85905 Mon Sep 17 00:00:00 2001 From: Jack OConnor Date: Tue, 16 Apr 2024 22:01:01 +0100 Subject: [PATCH] Update readme --- README.md | 18 +++++++++++++++--- screenshots/react.png | Bin 0 -> 17960 bytes 2 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 screenshots/react.png diff --git a/README.md b/README.md index 32d9b79f7..686c18d25 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # International Telephone Input [![Build Status](https://app.travis-ci.com/jackocnr/intl-tel-input.svg?branch=master)](https://app.travis-ci.com/jackocnr/intl-tel-input) version downloads -🎉 NEWS: we now have our own React component! Play with it on Storybook! 🎉 +⚛️ NEWS: we now have our own React component! Play with it on Storybook. -Typescript logo ANNOUNCEMENT: we now have our own Typescript type definitions (for both the JavaScript plugin and the React component), so no need to use `@types/intl-tel-input` any more! +Typescript logo NEWS: we now have our own Typescript type definitions (for both [the JavaScript plugin](https://github.com/jackocnr/intl-tel-input/blob/master/build/js/intlTelInput.d.ts) and [the React component](https://github.com/jackocnr/intl-tel-input/blob/master/react/build/IntlTelInput.d.ts)), so no need to use `@types/intl-tel-input` any more! + +🗣️ NEWS: we now provide [translation files](https://github.com/jackocnr/intl-tel-input/tree/master/build/js/i18n) for several common languages! [See them in action](https://intl-tel-input.com/examples/localise-countries.html). International Telephone Input is a JavaScript plugin for entering and validating international telephone numbers. It takes a regular input field, adds a searchable country dropdown, auto-detects the user's country, displays a relevant placeholder number, formats the number as you type, and provides comprehensive validation methods. @@ -53,6 +55,7 @@ By default, on mobile devices we show a fullscreen popup instead of the inline d * Typescript type definitions provided * Easily customise styles by overriding the provided CSS variables * React component included +* Translations for all country names (etc) provided in many different languages ## Browser Compatibility | Chrome | Firefox | Safari | Edge | @@ -139,6 +142,8 @@ You can always get the full international number (including country code) using If you know the user's country, you can set it with `initialCountry` (e.g. `"us"` for the United States), and if you don't, we recommend setting `initialCountry` to `"auto"` (along with the `geoIpLookup` option) to determine the user's country based on their IP address. +If you know the user's language, you can utilise the included translations to localise the country names (etc) - [see example](https://intl-tel-input.com/examples/localise-countries.html). + ## Initialisation Options When you initialise the plugin, the first argument is the input element, and the second is an object containing any initialisation options you want, which are detailed below. Note: any options that take country codes should be [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) codes. @@ -234,9 +239,16 @@ Which will generate the following (hidden) elements, which will be automatically **i18n** Type: `Object` Default: `{}` -Allow localisation/customisation of country names and other plugin text. To localise a country name, the key should be the iso2 country code, and the value should be the localised country name. [See example](https://intl-tel-input.com/examples/localise-countries.html). +Allow localisation/customisation of country names and other plugin text. There are two options: either import one of the [provided translation modules](https://github.com/jackocnr/intl-tel-input/tree/master/build/js/i18n) (see option 1 below), or define your own custom translations (see option 2 below). If defining your own, you will need to specify all country names (over 200 at last count - [see full list](https://github.com/jackocnr/intl-tel-input/blob/master/src/js/intl-tel-input/data.ts)) using their 2-character iso2 name, as well as the 7 interface keys listed below. [See example](https://intl-tel-input.com/examples/localise-countries.html). ```js +// OPTION 1: import one of the provided translation modules +import fr from "intl-tel-input/i18n/fr"; + +intlTelInput(input, { i18n: fr }); + + +// OPTION 2: define your own custom translations intlTelInput(input, { i18n: { // Country names (see full list here: https://github.com/jackocnr/intl-tel-input/blob/master/src/js/data.js) diff --git a/screenshots/react.png b/screenshots/react.png new file mode 100644 index 0000000000000000000000000000000000000000..9d281738fa92bd339c284a23c74f7e1001c23294 GIT binary patch literal 17960 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 BQ^^1T literal 0 HcmV?d00001