Developing Multi-Language Apps with Flutter

Page 1

Developing Multi-LanguageApps with Flutter

In the rapidly expanding field of mobile app development, it's crucial to cater to a variety of users.The need for multilingual support in mobile apps has increased dramatically with the expansion of international business For that reason, mobile and web app developers are continually looking for fresh and effective approaches to creating multilingual applications

Let's talk about the well-known open-source mobile app development framework - Flutter

For startups looking to create feature-rich mobile apps without spending a fortune, Flutter may be the ideal framework. Here are the reasons that prove Flutter as the ideal choice for mobile app development

Flutter is a UI toolkit that enables developers to create high-performing, high-fidelity apps from a single codebase for iOS,Android, and the web. It is well known for its quick development cycle and stunning, expressive user interface But Flutter's multi-language support is what makes it stand out from the other app development frameworks

This article will cover various aspects that revolve around the development of a multi-language app using Flutter app development services It will include the approach, procedure, and a few tips to make the more effortless

Approach to multi-language app development

Developing multi-language

apps

is no easy task, but with Flutter, the process is a lot simpler

In this article, we’ll take a look at how you can use Flutter to create multi-language apps that are easy to use and maintain.

InternationalizingYourApp

Firstly, internationalizing the code is crucial if you're creating a multilingual app This involves separating all of your app's hardcoded text into a separate file and assuring that it is simple to translate With the use of the Dart intl library, this procedure known as "localization" in Flutter is made simple.

To format and parse dates, times, and numbers as well as to create and display strings in many languages, use the Dart intl package This package enables you to define messages in a single location, retrieve the right message for each locale, and display it.

Supporting Multiple Languages

The next stage is to add support for multiple languages after your app has been internationalized For each language you want to support in Flutter, you may accomplish this by making a new localization There are a number of messages that have been translated into each localization's chosen language.

The program loads the proper localization after determining the device's locale upon startup Text is then shown in the app using the messages from the localization As a result, the app will automatically show the right text in each language, and you only need to maintain one set of code

Maintaining and Updating Localizations

You might need to add new messages, change old messages, or add support for new languages as you add new features to your app It's simple to update and manage localizations in Flutter. Without having to modify the code, add new messages to the localizations, update those that already exist, and add support for additional languages

You may easily update the localizations with the most recent messages and translations when you're prepared to release a new version of your app.As your company expands, this makes it simple to maintain and upgrade that multilingual app

Check out the most recent uses cases of Flutter as a framework forApp development

Steps to develop a multi-language app with Flutter

Let’s cover the steps to develop a multi-language app with Flutter, including installation, asset setup, initial setup, basic translation, and advanced translation extension methods.

Installation

To get started with developing multi-language apps with Flutter, you first need to install Flutter on your system You can download the latest version of Flutter from the official

website Once you have downloaded the installation package, follow the installation instructions for your platform.

After installing Flutter, you need to set up your development environment You can use any code editor of your choice, such as Visual Studio Code orAndroid Studio Make sure to install the Flutter and Dart plugins in your code editor.

Asset Setup

To add multi-language support to your app, you need to create a separate file for each language you want to support These files are called localization files, and they contain the translations of your app’s text in each language

To create the localization files, you need to create a folder named ‘i18n’(short for internationalization) in the root directory of your project Inside the ‘i18n’folder, create a separate folder for each language you want to support For example, if you want to support English and Spanish, create two folders named ‘en’and ‘es’.

Inside each language folder, create a file named ‘strings json’ This file will contain the translations for your app’s text in that language The structure of the ‘strings json’file should be as follows:

"key1": "value1", "key2": "value2", "key3": "value3"

Where key1, key2, and key3 are the keys for the translations, and value1, value2, and value3 are the translated strings

Initial Setup

Once you are done setting up the the locatlzation files, you need to initialize the Flutter app to use those files In order to do this, you need to add the ‘flutter localizations’package to your app’s dependencies in the ‘pubspec.yaml’file. It can be done by adding the following lines:

dependencies:

flutter: sdk: flutter

flutter localizations: sdk: flutter

After adding the package, you need to import it in your main.dart file:

import 'package:flutter localizations/flutter localizations dart';

{
}

You also need to add the ‘LocalizationsDelegate’and ‘GlobalMaterialLocalizations’classes to your app’s ‘localizationsDelegates’property in the ‘MaterialApp’widget.The ‘LocalizationsDelegate’class is responsible for loading the translations from the localization files, and the ‘GlobalMaterialLocalizations’class provides translations for common material design widgets.

class MyApp extends StatelessWidget { @override

Widget build(BuildContext context) { return MaterialApp(

localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations delegate, AppLocalizations delegate, ],

supportedLocales: [ const Locale('en'), const Locale('es'), ],

title: 'MyApp', home: MyHomePage(),

The "AppLocalizations delegate" has been added to the "localizationsDelegates" property in the code above.This class is in charge of loading the translations from the earlier generated localization files

To provide the list of languages that are required to support, 'supportedLocales' parameter is included. In this case, additional support is offered for both English and Spanish.

BasicTranslation

Now that localization files have been set up and initialized the Flutter app to use them, you can start translating the text in the app

To translate the text, you need to create a class that extends the ‘Translations’class from the ‘flutter localizations’package This class will provide the translations for your app’s text in each language

import 'dart:async' show Future; import 'package:flutter/material dart'; import 'package:flutter/services dart' show rootBundle; import 'dart:convert';

classAppLocalizations {

); } }

staticAppLocalizations instance; Map<String, String> localizedStrings;

static Future<AppLocalizations> load(Locale locale) async { finalAppLocalizations instance =AppLocalizations(); final String jsonString = await rootBundle loadString('i18n/${locale languageCode}/strings json'); final Map<String, dynamic> jsonMap = json decode(jsonString); instance localizedStrings = jsonMap map((key, value) { return MapEntry(key, value.toString()); });

return instance;

staticAppLocalizations of(BuildContext context) { return Localizations of<AppLocalizations>(context,AppLocalizations);

String translate(String key) { return localizedStrings[key];

In the above code, a class named ‘AppLocalizations’is created that extends the ‘Translations’class The ‘load’method is responsible for loading the translations from the ‘strings json’file in the appropriate language folder The ‘translate’method is responsible for returning the translated string for a given key

To use the ‘AppLocalizations’class, you need to wrap your app in a ‘Localizations’widget and specify the ‘AppLocalizations delegate’in the ‘delegates’property You can then use the ‘translate’method to translate the text in your app.

class MyHomePage extends StatelessWidget { @override

Widget build(BuildContext context) { return Scaffold( appBar:AppBar( title:Text(AppLocalizations of(context) translate('app title')), ), body: Center( child:Text(AppLocalizations of(context) translate('hello world')), ), );

In the above code, the ‘translate’method is used in order to translate the title of the app and the ‘hello world’text

}
}
} }
} }

AdvancedTranslation Extension Methods

In addition to the basic translation methods that are covered earlier, Flutter also provides some advanced translation extension methods that make it easier to translate text in certain scenarios.

trPlural: String trPlural(String key, int value) => tr(key, args: [value])

trFormatted: String trFormatted(String key, List<dynamic> args) => tr(key, args: args)

trOptional: String trOptional(String key) => tr(key, ifNotFound: key)

trFallback: String trFallback(String key, String fallbackKey) => tr(key, fallbackKey: fallbackKey)

trNested: String trNested(String key, Map<String, dynamic> values) => tr(key, namedArgs: values)

trWithDefault: String trWithDefault(String key, String defaultValue) => tr(key, ifNotFound: defaultValue)

trPluralWithNamedArgs: String trPluralWithNamedArgs(String key, int value, Map<String, dynamic> values) => tr(key, namedArgs: {'value': value, values})

trUpper: String get trUpper => tr(this) toUpperCase()

trLower: String get trLower => tr(this).toLowerCase()

trTitleCase: String get trTitleCase => tr(this) titleCase()

Take into consideration that some of these extensions have extra requirements, such as the “intl” package for “trTitleCase”

Conclusion

As it turns out that developing multi-language apps with Flutter is relatively easy thanks to its built-in localization support. In this article, we covered the basics of setting up localization in Flutter, including installation, asset setup, and initial setup Lastly, some extension methods are discussed to make translation-related tasks a little easier

Summing up, it was a quick sneak peek into the process of incorporating multiple languages into the Flutter application By following the steps outlined in this article, mobile app development company can now easily develop multi-language apps that will appeal to a wider audience.This will ensure that the app reaches in the global market.There are countless additional advantages that can be attained; this is merely the tip of the iceberg.

So, If you're ready to take your app to the next level, reach out to DianApps today Being one of the reputed mobile app development company, they have a pool of resources and expertise to render best flutter app development services The expert flutter app developers are ready to help make your vision a reality, and together, you can turn your app idea into a success story

Article Source:

https://medium.com/@DianApps/developing-multi-language-apps-with-flutter-4c44dbee7f41

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.