Introduction
In this tutorial, we will learn how to implement Multilingual in Xamarin.Forms without using external plugins or platform wise implementation with dependency service. The latest Xamarin forms offers .net standard to implement multilingual. So without further delay, we will skip into the coding part of the article.
Steps
I have split the coding part into 4 steps as in the following.
Step 1 - Creating new Xamarin.Forms Projects.
Step 2 - Creating App Resource files for multi-language.
Step 3 - Language Management
Step 4 - Implementation of Multilingual.
Step 1 - Creating new Xamarin.Forms Projects
- Create a new project by selecting New Project. Select Xamarin Cross Platform App and click OK.
- Then Select Android, iOS and UWP Platforms as shown below with Project template as "Blank" and Click OK.
Step 2 - Creating App Resource files for multiple languages
- Add one resource file as base file with the name as your preferred name. In my case, I kept the name of the file as “AppResources.resx” and it will be used as default language file.
- Then add one resource file for each language you want to support. We must follow a specific naming convention for each file as the base resources file followed by a period (.) and then the language code.
- For Example
Language
|
Language Code
|
File Name
|
Tamil
|
ta
|
AppResources.ta.resx
|
French
|
fr
|
AppResources.fr.resx
|
- Then add resources with the same name with language specific values in each resource files as in the below screenshot.
Step 3 - Language Management
In this step, we will see how to handle multilingual for Xamarin.Forms.
Get Device Language
- CultureInfo.InstalledUICulture
Get or Set the actual language
- CultureInfo language = new CultureInfo("ta");
- Thread.CurrentThread.CurrentUICulture = language;
- AppResources.Culture = language;
Step 4 - Implementation of Multi-Lingual
- Open your designer file and add the resources as shown in the below code snippet.
- <?xml version="1.0" encoding="utf-8"?>
- <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
- xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
- xmlns:resource="clr-namespace:MultilingualXFSample.Resources"
- x:Class="MultilingualXFSample.MainPage">
- <Label Text="{x:Static resource:AppResources.WelcomeText}"
- FontSize="Large"/>
- </ContentPage>
- By default, the app will take the base resource file. By passing the language code it will take the language specific resource file and we can set the language as shown in the below code snippet in runtime.
- CultureInfo language = new CultureInfo("ta");
- Thread.CurrentThread.CurrentUICulture = language;
- AppResources.Culture = language;
- Application.Current.MainPage = new NavigationPage(new MainPage());
Output
Default - English
|
Tamil
|
French
|
|
|
|
Download Code
You can download the code from
GitHub. If you have doubts, feel free to post a comment. If you like this article and it is useful to you, do like, share the article & star the repository on
GitHub.