Contents

Como usar o React Intl para internacionalizar seus aplicativos React

React Intl é uma biblioteca amplamente utilizada que oferece uma coleção abrangente de componentes e ferramentas projetadas para facilitar a localização de aplicativos baseados em React. A prática de adaptar um aplicativo para acomodar vários idiomas e nuances culturais é chamada de internacionalização, que é comumente abreviada como i18n.

O ReactIntl permite a integração sem esforço de recursos de vários idiomas e localidades em um aplicativo React.

Instalando o React Intl

Para utilizar a biblioteca React Intl, é necessário realizar sua instalação. Isso pode ser feito por meio de uma variedade de gerenciadores de pacotes, como npm, yarn ou pnpm.

Para instalar o pacote usando o npm, execute o seguinte comando no seu terminal:

 npm install react-intl
 

Siga estes passos para instalar o pacote através do yarn:1. Abra um terminal ou uma linha de comandos no seu computador.2. Certifique-se de que tem o yarn instalado, executando o seguinte comando no terminal: yarn -v . Se o yarn não estiver instalado, pode descarregá-lo e instalá-lo a partir do sítio Web oficial ( https://yarnpkg.com/en/docs/install/ ).3. Quando o yarn estiver instalado, navegue para o diretório onde pretende instalar o pacote. Pode utilizar o comando cd para mudar de diretório. Por exemplo, se o pacote estiver localizado no diretório /Users/username/Documents/my-project/ , escreva cd /Users/username/Documents/my-project/ no terminal.4. Execute o seguinte comando no terminal

 yarn add react-intl
 

Como utilizar a biblioteca React Intl

A instalação da biblioteca React Intl permite a utilização dos seus componentes e capacidades na aplicação. A funcionalidade do React Intl é semelhante à da API JavaScript Intl.

A biblioteca React International fornece vários componentes de valor inestimável, incluindo os componentes FormattedMessage e IntlProvider .

O componente FormattedMessage serve o objetivo de apresentar cadeias de caracteres localizadas numa aplicação, enquanto o componente IntlProvider é responsável por fornecer os detalhes de tradução e formatação exigidos pela aplicação.

Antes de começar a utilizar os componentes FormattedMessage e IntlProvider para localizar a sua aplicação, é imperativo produzir um ficheiro de tradução. Este ficheiro engloba todos os recursos linguísticos necessários para o seu software. Pode criar ficheiros individuais para cada dialeto e topografia ou utilizar um ficheiro único que inclua todas as traduções.

Por exemplo:

 export const messagesInFrench = {
    greeting: "Bonjour {name}"
}
  
export const messagesInItalian = {
    greeting: "Buongiorno {name}"
}
 

messagesInFrench e messagesInItalian. É possível substituir o nome do marcador de posição na cadeia de saudação por um valor variável em tempo de execução.

locale , defaultLocale , e messages .

A prop. locale recebe uma cadeia de caracteres que designa as preferências de idioma ou região do utilizador e serve de reserva no caso de a preferência especificada não estar disponível. Entretanto, o defaultLocale determina o idioma predefinido a ser utilizado quando as preferências não estão definidas. Finalmente, a prop messages recebe um objeto de localização que contém todo o conteúdo traduzido para a aplicação.

Segue-se uma demonstração da utilização do IntlProvider :

 import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import { IntlProvider } from "react-intl";
import { messagesInFrench } from "./translation";

ReactDOM.createRoot(document.getElementById("root")).render(
  <React.StrictMode>
    <IntlProvider locale="fr" messages={messagesInFrench} defaultLocale="en">
      <App />
    </IntlProvider>
  </React.StrictMode>
);
 

O exemplo fornecido transmite a localidade francesa, as mensagens traduzidas em francês e uma localidade inglesa predefinida para o componente IntlProvider.

Ao fornecer várias instâncias de um objeto Locale ou Translation ao IntlProvider, este é capaz de identificar o idioma de navegação do cliente e utilizar as traduções correspondentes em conformidade.

Utilize o componente FormattedMessage para apresentar cadeias de caracteres traduzidas na sua aplicação, fornecendo-lhe o ID da mensagem como a propriedade id, que corresponde ao mesmo identificador no objeto messages.

O componente também aceita duas props, a “defaultMessage” e a “values”. A primeira serve de mensagem de reserva quando não está disponível uma tradução adequada para a localidade atual, enquanto a segunda fornece conteúdo dinâmico para preencher os lugares do texto localizado.

Por exemplo:

 import React from "react";
import { FormattedMessage } from "react-intl";

function App() {
  return (
    <div>
      <p>
        <FormattedMessage
          id="greeting"
          defaultMessage="Good morning {name}"
          values={{ name: 'John'}}
        />
      </p>
    </div>
  );
}

export default App;
 

O trecho de código mencionado acima utiliza a chave “greeting” do objeto “messagesInFrench” dentro do componente “FormattedMessage”. A propriedade “values” substitui o marcador de posição “{name}” pelo valor “John”.

Formatando números com o componente FormattedNumber

O React International oferece um componente FormattedNumber que permite a personalização da formatação de números de acordo com a localidade predominante. Este componente está equipado com vários atributos, incluindo estilo, moeda, dígitos de fração mínima e máxima, entre outros, para permitir aos utilizadores personalizar a apresentação de valores numéricos.

Eis alguns exemplos:

 import React from "react";
import { FormattedNumber } from "react-intl";

function App() {
  return (
    <div>
      <p>
        Decimal: <FormattedNumber value={123.456} style="decimal" />
      </p>
      <p>
        Percent: <FormattedNumber value={123.456} style="percent" />
      </p>
    </div>
  );
}

export default App;
 

A instância acima mencionada utiliza o componente FormattedNumber do utilitário, que está equipado com uma propriedade de valor que especifica o numeral a ser formatado.

Pode utilizar a propriedade de estilo conhecida como “prop” para adaptar a apresentação visual de um valor formatado numericamente. Esta propriedade pode ser definida para ser apresentada como um símbolo decimal, de percentagem ou de moeda.

Ao definir a propriedade de estilo como “currency”, o componente FormattedNumber formata o valor numérico utilizando o código estipulado pela propriedade “currency”:

 import React from "react";
import { FormattedNumber } from "react-intl";

function App() {
  return (
    <div>
      <p>
        Price: <FormattedNumber value={123.456} style="currency" currency="USD" />
      </p>
    </div>
  );
}

export default App;
 

O componente FormattedNumber foi concebido para formatar valores numéricos utilizando o estilo e o código de moeda especificados. Neste caso particular, utiliza o sinal de dólar ($) e o código de moeda USD para representar valores financeiros em dólares dos Estados Unidos.

Também pode formatar valores numéricos com um número predefinido de casas decimais, utilizando as propriedades minimumFractionDigits e maximumFractionDigits .

A propriedade minimumFractionDigits determina o número mínimo de fracções que deve ser mostrado, enquanto a propriedade maximumFractionDigits define o número máximo de fracções a mostrar.

Quando um número é apresentado e o seu número de dígitos fraccionários é inferior ao valor mínimo predeterminado de dígitos fraccionários, denotado como minimumFractionDigits , a biblioteca React Intl aumentará o número adicionando zeros após o ponto decimal para atingir a contagem necessária de dígitos fraccionários. Inversamente, se o número possuir mais dígitos fraccionários do que o limite máximo predeterminado, denotado como maximumFractionDigits , a biblioteca arredondará o número para o inteiro mais próximo.

Aqui está uma demonstração de como utilizar essas propriedades:javascriptimport React, { useState } from ‘react’;function MyComponent() { const [count, setCount] = useState(0); return (

Você clicou {count} vezes

setCount(count + 1)}> Clique em mim

);}export default MyComponent;

 import React from "react";
import { FormattedNumber } from "react-intl";

function App() {
  return (
    <div>
      <p>
        <FormattedNumber
          value={123.4567}
          minimumFractionDigits={2}
          maximumFractionDigits={3}
        />
      </p>
    </div>
  );
}

export default App;
 

Formatando datas com o componente FormattedDate

A utilização do React Intl permite a formatação uniforme e legível de datas por meio da implementação de seu componente FormattedDate. Esse componente opera de maneira semelhante a outras bibliotecas de data e hora, como Moment.js, e oferece um método eficiente para a formatação de datas.

O componente FormattedDate é um elemento versátil que requer várias propriedades, incluindo, entre outras, a propriedade ‘value’, que designa a data a ser formatada, e as propriedades ‘day’, ‘month’ e ‘year’, que são utilizadas para configurar a apresentação da referida data.

Por exemplo:

 import React from "react";
import { FormattedDate } from "react-intl";

function App() {
  const today = new Date();

  return (
    <div>
      <p>
        Today's date is
        <FormattedDate
          value={today}
          day="numeric"
          month="long"
          year="numeric"
        />
      </p>
    </div>
  );
}

export default App;
 

A presente instância utiliza a data atual como propriedade de valor e, ao utilizar as propriedades dia, mês e ano, permite ao utilizador optar por apresentar o ano, o mês e o dia num formato longo.

Para além dos elementos de tempo acima mencionados, vários parâmetros adicionais contribuem para a apresentação de uma data. Segue-se uma enumeração destes parâmetros com os respectivos valores aceitáveis:

⭐ ano : “numérico”, “2 dígitos”

O campo do mês é do tipo “numérico”, com um formato que consiste em dois dígitos, e é considerado como “estreito”, “curto” ou “longo”.

⭐ dia : “numérico”, “2 dígitos”

⭐ hora : “numérico”, “2 dígitos”

⭐ minuto : “numérico”, “2 dígitos”

⭐ segundo : “numérico”, “2 dígitos”

⭐ timeZoneName : “short”, “long”

 import React from "react";
import { FormattedDate } from "react-intl";

function App() {
  const today = new Date();

  return (
    <div>
      <p>
        The time is
        <FormattedDate
          value={today}
          hour="numeric"
          minute="numeric"
          second="numeric"
        />
      </p>
    </div>
  );
}

export default App;
 

Internacionalize seus aplicativos React para um público mais amplo

A instalação e a configuração da biblioteca React-Intl em um aplicativo React foram expostas. Esta biblioteca facilita a formatação simples de valores numéricos, de data e monetários dentro da referida aplicação, em relação à localidade especificada, utilizando os componentes FormattedMessage, FormattedNumber e FormattedDate.

O erro na atualização do estado é um problema comummente encontrado entre os programadores React que pode resultar em repercussões significativas se não for resolvido prontamente. Por isso, é imperativo que os profissionais desta área se mantenham informados sobre esses erros típicos e os rectifiquem o mais cedo possível para evitar despesas indevidas.