Xamarin.Forms provides a built-in localization mechanism that allows you to create localized versions of your app for different languages and cultures. By default, Xamarin.Forms uses the device's current language and culture settings to select the appropriate localized resources. However, you can also use localization independent of device language by setting the CultureInfo property of the Thread.CurrentThread object to the desired culture.
Here's how you can use localization independent of device language in Xamarin.Forms:
Create a folder named Resources in your Xamarin.Forms project.
Create a resx file for each language you want to support. For example, create AppResources.resx for the default language and AppResources.fr.resx for French.
Add the localized strings to each resx file. For example, you might add a string named Hello with the value Hello in AppResources.resx, and a string named Hello with the value Bonjour in AppResources.fr.resx.
In your code, set the CultureInfo property of the Thread.CurrentThread object to the desired culture. For example, you might set it to French like this:
using System.Globalization; using System.Threading; Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR"); ResourceManager class. For example, you might access the Hello string like this:using System.Resources; ResourceManager resmgr = new ResourceManager("MyApp.AppResources", typeof(App).Assembly); string helloString = resmgr.GetString("Hello"); Note that you should set the CultureInfo property before loading any UI elements or accessing any localized resources. This ensures that the correct culture is used throughout the app. Additionally, be aware that setting the CultureInfo property affects the entire app, so if you need to support multiple cultures simultaneously, you'll need to use a different approach, such as passing the desired culture as a parameter to your localization methods.
Xamarin.Forms localization independent of device language
// Xamarin.Forms localization independent of device language using System.Globalization; using Xamarin.Forms; namespace YourNamespace { public class LocalizedResourceExtension : IMarkupExtension { public string Text { get; set; } public object ProvideValue(IServiceProvider serviceProvider) { if (Text == null) return null; var ci = DependencyService.Get<ILocalize>().GetCurrentCultureInfo(); var translation = AppResources.ResourceManager.GetString(Text, ci); if (translation == null) { translation = Text; } return translation; } } } Xamarin.Forms localization without device language
// Xamarin.Forms localization without device language using System.Globalization; using Xamarin.Forms; namespace YourNamespace { public class LocalizedResourceExtension : IMarkupExtension { public string Text { get; set; } public object ProvideValue(IServiceProvider serviceProvider) { if (Text == null) return null; var cultureInfo = new CultureInfo("en-US"); // Set desired culture here var translation = AppResources.ResourceManager.GetString(Text, cultureInfo); if (translation == null) { translation = Text; } return translation; } } } Xamarin.Forms localization independent language
// Xamarin.Forms localization independent language using System.Globalization; using Xamarin.Forms; namespace YourNamespace { public class LocalizedResourceExtension : IMarkupExtension { public string Text { get; set; } public string Language { get; set; } = "en-US"; // Set desired language here public object ProvideValue(IServiceProvider serviceProvider) { if (Text == null) return null; var cultureInfo = new CultureInfo(Language); var translation = AppResources.ResourceManager.GetString(Text, cultureInfo); if (translation == null) { translation = Text; } return translation; } } } Xamarin.Forms language-independent localization
// Xamarin.Forms language-independent localization using System.Globalization; using Xamarin.Forms; namespace YourNamespace { public class LocalizedResourceExtension : IMarkupExtension { public string Text { get; set; } public string Language { get; set; } = "en-US"; // Set desired language here public object ProvideValue(IServiceProvider serviceProvider) { if (Text == null) return null; var cultureInfo = new CultureInfo(Language); var translation = AppResources.ResourceManager.GetString(Text, cultureInfo); if (translation == null) { translation = Text; } return translation; } } } Xamarin.Forms localize app independent of device language
// Xamarin.Forms localize app independent of device language using System.Globalization; using Xamarin.Forms; namespace YourNamespace { public class LocalizedResourceExtension : IMarkupExtension { public string Text { get; set; } public string Language { get; set; } = "en-US"; // Set desired language here public object ProvideValue(IServiceProvider serviceProvider) { if (Text == null) return null; var cultureInfo = new CultureInfo(Language); var translation = AppResources.ResourceManager.GetString(Text, cultureInfo); if (translation == null) { translation = Text; } return translation; } } } Xamarin.Forms localization with fixed language
// Xamarin.Forms localization with fixed language using System.Globalization; using Xamarin.Forms; namespace YourNamespace { public class LocalizedResourceExtension : IMarkupExtension { public string Text { get; set; } public string FixedLanguage { get; set; } = "en-US"; // Set desired language here public object ProvideValue(IServiceProvider serviceProvider) { if (Text == null) return null; var cultureInfo = new CultureInfo(FixedLanguage); var translation = AppResources.ResourceManager.GetString(Text, cultureInfo); if (translation == null) { translation = Text; } return translation; } } } Xamarin.Forms localization irrespective of device language
// Xamarin.Forms localization irrespective of device language using System.Globalization; using Xamarin.Forms; namespace YourNamespace { public class LocalizedResourceExtension : IMarkupExtension { public string Text { get; set; } public string Language { get; set; } = "en-US"; // Set desired language here public object ProvideValue(IServiceProvider serviceProvider) { if (Text == null) return null; var cultureInfo = new CultureInfo(Language); var translation = AppResources.ResourceManager.GetString(Text, cultureInfo); if (translation == null) { translation = Text; } return translation; } } } nodemon imagemagick-convert gatt ant internet-options pkix android-date picasso api-design spring-security-ldap