Xamarin.Forms Multilingual
Hello, When we develop an application we want it to be a global application. For that we need to support different languages in the application and thanks to that we may have more user. I develop Xamarin.Forms application and to add different languages in Xamarin.Forms application we need to use a plugin. The name of the plugin is Plugin.Multilingual, I found this plugin with research on the web. I show you how to implement this plugin.
Firstly, I added the Plugin.Multilingual via nuget package manager. After that, I create a folder which name is Helper and I create TranslateExtension class. I wrote these codes in the TranslateExtension class.
namespace XamarinLanguage.Helper
{
[ContentProperty("Text")]
public class TranslateExtension : IMarkupExtension
{
const string ResourceId = "XamarinLanguage.AppResources";
static readonly Lazy<ResourceManager> resmgr =
new Lazy<ResourceManager>(() =>new ResourceManager(ResourceId, typeof(TranslateExtension).GetTypeInfo().Assembly));
public string Text { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (Text == null)
return "";
var ci = CrossMultilingual.Current.CurrentCultureInfo;
var translation = resmgr.Value.GetString(Text, ci);
if (translation == null)
{
translation = Text;
}
return translation;
}
}
}
After the helper class, I added a text file but the extension is .resx. It is important to file extension be .resx. I added AppResources.resx, AppResources.es.resx, AppResources.tr.resx. So I support the three different lanuages these are English, Spanish and Turkish. In the AppResources, I translate the every word which i used in the app.
AppResources.resx

AppResources.es.resx

AppResources.tr.resx

Now, I define the helper folder in my page
xmlns:translator="clr-namespace:XamarinLanguage.Helper"
Then using the translator, I translate the words and here is the my design codes;
<StackLayout VerticalOptions="Center"
HorizontalOptions="Center">
<Label Text="{translator:Translate Hello}"
FontSize="Large"
FontAttributes="Bold"
TextColor="Black"/>
<Button Text="{translator:Translate Click}"
BackgroundColor="DarkBlue"
TextColor="Yellow"/>
</StackLayout>
Screen Outputs;



To make this project, I looked this project. For your questions you can reach me via e-mail or comments.