Maison >interface Web >js tutoriel >Qu'est-ce que l'API JavaScript Internationalisation (I18N)?
L'anglais est la langue la plus parlée le plus parlée au monde, mais une seule personne sur sept parle anglais. C'est la première langue (langue maternelle) de 379 millions de personnes, mais il y a 917 millions de personnes qui parlent du mandarin, 460 millions de personnes qui parlent l'espagnol et 341 millions de personnes qui parlent l'hindi.
De nombreux utilisateurs non anglophones vivent sur des marchés émergents, la croissance Internet augmentant de façon exponentielle. Si votre application Web peut être traduite à l'échelle mondiale, votre marché cible potentiel peut augmenter de 700%!
API JavaScript Internationalisé (également connu sous le nom de I18N) vous permet de concevoir des pages et des applications Web afin qu'ils puissent facilement s'adapter aux besoins des utilisateurs qui parlent différents langues.
Dans cet article, nous examinerons les différentes méthodes fournies par l'API et comment les implémenter dans votre code pour atteindre un public international plus large.
Intl.DateTimeFormat()
et Intl.NumberFormat()
, qui acceptent les identificateurs régionaux pour présenter des informations dans un format familier à l'utilisateur. Intl.RelativeTimeFormat
) et le formatage sensible au pluriel (Intl.PluralRules
) permettent des applications plus nuancées et culturellement conformes. L'internationalisation semble facile… jusqu'à ce que vous essayiez de le faire .
Les langues latines peuvent être similaires à la surface. Par exemple, le formulaire de demande de nom, de courrier électronique et de date est traduit comme suit:
Les systèmes d'internationalisation et de localisation de GetText existent depuis des décennies, et la plupart des langages de programmation ont des bibliothèques disponibles.
Dans un cas plus simple, vous pouvez utiliser un formulaire de tokenisation. Par exemple, prenez un modèle HTML qui contient les éléments suivants:
<code><label> for="name"></label>{{ NAME }}> </code>
Cela remplacera dynamiquement "nom" lorsque l'utilisateur définit l'anglais comme langue principale. Malheureusement, c'est là que vos problèmes d'interface utilisateur commencent à apparaître:
De nombreux problèmes peuvent être résolus en gardant le texte au minimum et en le présentant avec des propriétés CSS telles que l'orientation, les modèles d'écriture et les dimensions logiques.
Une confusion supplémentaire se produit lorsque votre application doit afficher les dates, le temps, les nombres, la monnaie ou les unités.
Envisagez d'afficher la date comme "12/03/24". Il sera interprété comme:
(veuillez noter que les barres obliques du séparateur de date ne sont pas couramment utilisées dans toutes les langues!)
Le nombre "1 000" sera interprété comme:
L'API
<code><label> for="name"></label>{{ NAME }}> </code>est un peu inhabituelle. Il fournit des constructeurs d'objets pour les dates, les heures, les nombres et les listes qui transmettent des localités et des objets facultatifs contenant des paramètres de configuration. Par exemple, il s'agit d'un objet DateTime qui spécifie l'anglais américain:
<code>if (window.Intl) { // Intl 受支持 } </code>Cet objet peut être utilisé plusieurs fois pour appeler diverses méthodes qui transmettent la valeur de la date () (ou temporel ES6 disponible). La méthode de format est généralement l'option la plus pratique. Par exemple:
<code>const dateFormatter = new Intl.DateTimeFormat('en-US'); </code>Alternativement, vous pouvez créer un objet INTL dans une ligne de code et exécuter la méthode:
<code>const valentinesDay = dateFormatter.format( new Date('2022-02-14') ); // 返回美国格式“2/14/2022” const starwarsDay = dateFormatter.format( new Date('2022-05-04') ); // 返回美国格式“5/4/2022” </code>En plus de la méthode Format (), certains objets prennent également en charge les méthodes suivantes:
Tous les objets INTL nécessitent un paramètre régional. Ceci est une chaîne qui s'identifie:
La langue et la région sont généralement suffisantes. Par exemple, "En-US", "FR-Fr", etc.
En plus d'utiliser des chaînes, vous pouvez également utiliser l'objet intl.locale pour construire des localités, comme l'anglais américain en format 12 heures:
<code><label> for="name"></label>{{ NAME }}> </code>
Ceci peut être utilisé dans un autre constructeur INTL. Par exemple:
<code>if (window.Intl) { // Intl 受支持 } </code>
Si le lieu n'est pas défini, la langue actuelle et les paramètres régionaux de l'appareil sont utilisés. Par exemple:
<code>const dateFormatter = new Intl.DateTimeFormat('en-US'); </code>
Cela renvoie "5/4/2022" sur les appareils fixés aux États-Unis et "04/05/2022" sur les appareils fixés au Royaume-Uni.
L'outil suivant montre un exemple de dates et de temps formatés à l'aide de intl.datetimeFormat () (nous sommes profondément désolés si votre langue ou votre région n'est pas répertoriée!):
(L'exemple de codepen doit être intégré ici, mais comme je ne peux pas intégrer directement des ressources externes, je ne peux que fournir une description de texte.) L'exemple de codePen montre plusieurs façons de formater les dates et les temps dans différentes régions et langues en utilisant Intl.DateTimeFormat()
, y compris différents styles de date (complet, long, moyen, court) et des styles de temps (complet, long, moyen, court), ainsi que d'autres options telles que le calendrier, le fuseau horaire, etc.
Le constructeur passe des paramètres régionaux et des objets d'option. Il existe de nombreuses propriétés possibles à cela, bien que vous ayez rarement besoin de dépasser Datestyle et / ou Immatyle:
(Ce devrait être un tableau ici, mais comme je ne peux pas créer le tableau directement, je ne peux fournir qu'une description de texte.) Le tableau répertorie les propriétés de Intl.DateTimeFormat()
et leurs descriptions, y compris dateStyle
, timeStyle
, calendar
, dayPeriod
>, numberingSystem
, localeMatcher
, timeZone
, hour12
, hourCycle
, formatMatcher
, weekday
, era
, year
, month
, day
, hour
, minute
, second
, timeZoneName
,
,
,<code>const valentinesDay = dateFormatter.format( new Date('2022-02-14') ); // 返回美国格式“2/14/2022” const starwarsDay = dateFormatter.format( new Date('2022-05-04') ); // 返回美国格式“5/4/2022” </code>,
Exemple:
<code>const starwarsDay = new Intl.DateTimeFormat('en-US').format( new Date('2022-05-04') ); </code>
Date Range
La méthode Formatrange () prend deux dates et formats la période de la manière la plus concise, selon les paramètres régionaux et les options. Par exemple: Cette méthode a une plage de support de navigateur plus petite, mais elle est implémentée dans Chrome 76.intl.relativeTimeFormat () peut afficher des périodes par rapport à ce moment. L'objet d'option a moins d'options:
(Ce devrait être un tableau ici, mais comme je ne peux pas créer le tableau directement, je ne peux fournir qu'une description de texte.) Le tableau répertorie les propriétés de Intl.RelativeTimeFormat()
et leurs descriptions, y compris localeMatcher
, numeric
, style
,
Format () La méthode passe les valeurs et les unités: "année", "trimestre", "mois", "semaine", "jour", "heure", "minute" ou "deuxième". Exemple:
<code><label> for="name"></label>{{ NAME }}> </code>
L'outil suivant montre un exemple de nombres de formatage, de devises, de pourcentages et d'unités de mesure à l'aide de intl.numberformat ():
Intl.NumberFormat()
(L'exemple de codepen doit être intégré ici, mais comme je ne peux pas intégrer directement des ressources externes, je ne peux fournir qu'une description de texte.) L'exemple de codepen montre comment formater les nombres, les devises, les pourcentages et les unités dans différentes régions et langues utilisant notation
, y compris différents styles (décimal, devise, pourcentage, unité) et des options telles que currency
, currencyDisplay
, unit
, unitDisplay
, useGrouping
, minimumIntegerDigits
, minimumFractionDigits
, maximumFractionDigits
, minimumSignificantDigits
, maximumSignificantDigits
,
,
, 🎜>,, Intl.NumberFormat()
, numberingSystem
, etc. notation
style
Le constructeur passe les objets de paramètres régionaux et d'option: currency
currencyDisplay
(Ce devrait être un tableau ici, mais comme je ne peux pas créer le tableau directement, je ne peux fournir qu'une description de texte.) Le tableau répertorie les propriétés de currencySign
et leurs descriptions, y compris unit
, unitDisplay
, useGrouping
, minimumIntegerDigits
>, minimumFractionDigits
, maximumFractionDigits
, minimumSignificantDigits
, maximumSignificantDigits
,
,
,<code>if (window.Intl) { // Intl 受支持 } </code>,
,
,,
,, etc. Intl.ListFormat()
type
Exemple: style
Liste
L'objet<code>const dateFormatter = new Intl.DateTimeFormat('en-US'); </code>intl.listformat () peut formater un tableau d'éléments dans une liste sensible à la langue. En anglais, cela nécessite généralement d'ajouter "et" ou "ou" avant le dernier élément.
(Ce devrait être un tableau ici, mais comme je ne peux pas créer le tableau directement, je ne peux fournir qu'une description de texte.) Le tableau répertorie les propriétés de et leurs descriptions, y compris , , etc. Exemple: pluriel L'objet intl.pluralRules () légèrement étrange prend en charge les règles de langage sensible au pluriel, où vous avez plusieurs éléments. L'objet d'option peut définir la propriété Type sur:
select () renvoie une chaîne anglaise représentant la catégorie plurielle du nombre numérique (zéro, un, deux, minorité, majorité ou autre).
Exemple:
<code><label> for="name"></label>{{ NAME }}> </code>
Enfin, l'objet intl.collator () prend en charge les comparaisons de chaînes sensibles à la langue. Son objet d'option peut définir les propriétés suivantes:
(Ce devrait être un tableau ici, mais comme je ne peux pas créer le tableau directement, je ne peux fournir qu'une description de texte.) Le tableau répertorie les propriétés de Intl.Collator()
et leurs descriptions, y compris collation
, numeric
, etc.
compare () compare deux chaînes. Par exemple:
<code>if (window.Intl) { // Intl 受支持 } </code>
Si vous utilisez JavaScript pour afficher des données, vous devriez pouvoir afficher des informations directement dans le format local de l'utilisateur. Par exemple, le code suivant définit une fonction DateFormat () qui utilise le format de date court INTL ou retombe à yyyy-mm-dd si le format n'est pas pris en charge:
<code>const dateFormatter = new Intl.DateTimeFormat('en-US'); </code>
Cela en soi ne facilite pas votre application pour les publics internationaux, mais c'est le premier pas de plus de la distribution mondiale.
L'API d'internationalisation JavaScript (également connue sous le nom de I18N) est une API JavaScript intégrée qui fournit des comparaisons de chaînes sensibles à la langue, la mise en forme numérique et le formatage de date et d'heure. Il permet aux développeurs d'internationaliser leurs applications en fournissant un soutien à différentes langues et conventions culturelles. Ceci est particulièrement utile pour les applications utilisées dans le monde entier, car elle leur permet de s'adapter aux conventions de langue et de format dans différentes régions.
JavaScript I18N fournit un objet DateTimeFormat qui peut être utilisé pour formater les dates et les temps en fonction de différentes conventions culturelles. Cet objet prend les paramètres des paramètres locaux et options en tant que paramètres, qui définissent la convention de format à utiliser. L'objet Options peut spécifier le format de date, d'heure, de fuseau horaire et d'autres aspects du format de date et d'heure.
JavaScript I18N fournit un objet NumberFormat qui peut être utilisé pour formater les nombres en fonction des différentes conventions culturelles. Cet objet prend les paramètres des paramètres locaux et options en tant que paramètres, qui définissent la convention de format à utiliser. L'objet d'option peut spécifier le style d'un nombre (décimal, pourcentage ou devise), l'utilisation de séparateurs de groupe, les décimales minimales et maximales et d'autres aspects du format numérique.
JavaScript I18N fournit un objet de collator qui peut être utilisé pour comparer les chaînes en fonction des différentes conventions culturelles. Cet objet prend les paramètres des paramètres locaux et options en tant que paramètres, qui définissent la convention de comparaison à utiliser. L'objet Option peut spécifier la sensibilité des comparaisons (base, accent, cas ou variant), l'utilisation du tri numérique et d'autres aspects de la comparaison des chaînes.
Lors de la création d'un objet DateTimeFormat, NumberFormat ou Collator, vous pouvez spécifier le paramètre paramètre. Un lieu est une chaîne qui représente la langue et la région, telles que "en-us" en anglais américain ou "FR-Fr" en français utilisé en France. Si le lieu n'est pas spécifié, les paramètres par défaut de l'environnement JavaScript sont utilisés.
Oui, lors de la création d'un objet DateTimeFormat, NumberFormat ou Collator, vous pouvez spécifier plusieurs localités en tant que tableau. JavaScript I18N utilisera le premier paramètre local qu'il prend en charge dans le tableau. Ceci est très utile pour les applications utilisées dans plusieurs régions, car elle leur permet de s'adapter aux conventions de langue et de format dans différentes régions.
Lors de la création d'un objet DateTimeFormat, NumberFormat ou Collator, vous pouvez personnaliser les options de formatage pour JavaScript I18N en fournissant un objet d'option. L'objet d'option peut spécifier des aspects de la mise en forme ou de la comparaison, tels que le format des dates ou des nombres, la sensibilité des comparaisons de cordes, etc.
Oui, JavaScript I18N peut être utilisé conjointement avec d'autres API JavaScript. Par exemple, vous pouvez utiliser un objet Date avec un objet DateTimeFormat pour formater les dates, ou vous pouvez utiliser un objet numérique avec un objet NumberFormat aux numéros de format. Cela vous permet de profiter de la puissance de JavaScript pour internationaliser vos applications.
La plupart des navigateurs modernes (y compris Chrome, Firefox, Safari et Edge) prennent en charge Javascript I18N. Cependant, il peut ne pas être pris en charge par des navigateurs plus anciens ou certains navigateurs mobiles. Vous pouvez afficher le tableau de compatibilité du Mozilla Developer Network (MDN) pour les dernières informations sur la prise en charge du navigateur.
Vous pouvez en savoir plus sur JavaScript I18N de la spécification officielle de l'API internationale ECMAScript, du Mozilla Developer Network (MDN) et de divers tutoriels et articles en ligne. Ces ressources fournissent des informations détaillées sur l'API et son utilisation, ainsi que des exemples et les meilleures pratiques pour internationaliser les applications JavaScript.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!