10.8. Internacionalização e localização em Flutter: Suporte a múltiplos idiomas

Ouça em áudio

Internacionalização e localização são aspectos críticos ao desenvolver um aplicativo em Flutter. Isso porque, para alcançar um público global, é vital que seu aplicativo possa ser usado em vários idiomas e formatos de data, hora e número. Este é o ponto em que a internacionalização e a localização entram em jogo. A internacionalização (i18n) é o processo de projetar e preparar seu aplicativo para ser usado em diferentes idiomas e regiões. A localização (l10n), por sua vez, é o processo de traduzir o aplicativo internacionalizado e adaptá-lo a uma região específica.

Para começar a internacionalizar seu aplicativo Flutter, você precisa adicionar as dependências `flutter_localizations` e `intl` em seu arquivo `pubspec.yaml`. A primeira é a biblioteca de localização do Flutter, enquanto a segunda é uma biblioteca Dart para internacionalização e localização.

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  intl: ^0.17.0

Depois de adicionar as dependências, você precisa importá-las em seu arquivo principal e definir as localidades que seu aplicativo suportará. Isso pode ser feito no widget `MaterialApp` ou `CupertinoApp`.

import 'package:flutter_localizations/flutter_localizations.dart';

MaterialApp(
  localizationsDelegates: [
    GlobalMaterialLocalizations.delegate,
    GlobalWidgetsLocalizations.delegate,
    GlobalCupertinoLocalizations.delegate,
  ],
  supportedLocales: [
    const Locale('en', ''), // English
    const Locale('es', ''), // Spanish
    // Other locales...
  ],
);

A propriedade `localizationsDelegates` lista os delegados que fornecerão localizações para o aplicativo. Os delegados de localização `GlobalMaterialLocalizations` e `GlobalWidgetsLocalizations` fornecem localizações padrão para o Material Design e os widgets do Flutter, respectivamente. O `GlobalCupertinoLocalizations` fornece localizações para widgets no estilo iOS.

A propriedade `supportedLocales` define as localidades que o aplicativo suporta. Cada localidade é representada por um objeto `Locale`, que tem um código de idioma (`en` para inglês, `es` para espanhol, etc.) e, opcionalmente, um código de país (para especificar variantes regionais do idioma).

Depois de definir as localidades suportadas, você pode usar o widget `Localizations` para acessar as localizações em seus widgets. Por exemplo, para exibir uma data formatada de acordo com a localidade atual, você pode fazer o seguinte:

Text(
  DateFormat.yMMMd().format(DateTime.now()),
);

A classe `DateFormat` vem da biblioteca `intl` e fornece métodos para formatar datas de acordo com a localidade atual.

Para traduzir strings, você pode definir um delegado de localização personalizado que fornece uma classe de localização. A classe de localização contém métodos que retornam as strings traduzidas. Você pode gerar arquivos de localização a partir de arquivos de modelo usando a ferramenta `intl_translation`.

Em resumo, a internacionalização e a localização em Flutter são processos importantes para tornar seu aplicativo acessível a um público global. Embora possa parecer complexo no início, o Flutter fornece várias ferramentas e bibliotecas para facilitar a i18n e l10n.

Agora responda o exercício sobre o conteúdo:

Qual é a diferença entre internacionalização e localização no desenvolvimento de um aplicativo Flutter?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Internacionalização e localização em Flutter: Detecção automática de idioma do dispositivo

Próxima página do Ebook Gratuito:

142Internacionalização e localização em Flutter: Detecção automática de idioma do dispositivo

3 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto