maui-localization

Localize .NET MAUI apps with .resx resources and runtime culture switching.

Updated Nov 27, 2025
One-click install
npx skills add https://github.com/seydakaratekeli/KamPay3 --skill maui-localization-seydakaratekeli
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: maui-localization
Source: https://github.com/seydakaratekeli/KamPay3/tree/main/KamPay/.github/skills/maui-localization%20-%20Kopyala
Command: npx skills add https://github.com/seydakaratekeli/KamPay3 --skill maui-localization-seydakaratekeli

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Helps developers implement robust multi-language support in .NET MAUI apps by providing guidance on .resx resource usage, culture resolution and runtime switching, RTL layout handling, and necessary platform-level declarations so apps display the correct language, formatting, and assets across iOS, Android, Mac Catalyst, and Windows.

Core Features & Use Cases

  • Resource-based localization: Use AppResources.resx and culture-specific AppResources.{culture}.resx files to provide translated strings with a proper NeutralLanguage fallback.
  • Runtime language switching: Use a LocalizationResourceManager pattern with INotifyPropertyChanged and set CultureInfo.CurrentUICulture and CurrentCulture so UI strings and date/number formatting update without restarting.
  • Platform manifest and RTL handling: Ensure CFBundleLocalizations is set for iOS/Mac Catalyst and <Resource Language="..."/> entries are in Package.appxmanifest for Windows, and set FlowDirection per page when supporting right-to-left languages.
  • Use Case: Switch an app from English to Spanish at runtime, load culture-specific images, and ensure Arabic displays with correct right-to-left layout and platform language visibility in system settings.

Quick Start

Set NeutralLanguage in the .csproj, add AppResources.resx and AppResources.{culture}.resx files, declare CFBundleLocalizations and Windows Resources, and use a LocalizationResourceManager to change CultureInfo values at runtime.

Frequently Asked Questions about maui-localization

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I localize a .NET MAUI app using .resx files?

To localize a .NET MAUI app, add AppResources.resx for the neutral language and culture-specific AppResources.{culture}.resx files, set the NeutralLanguage in your .csproj, and use a LocalizationResourceManager to handle UI string translations.

How do I switch language culture at runtime in .NET MAUI without restarting?

Runtime culture switching in .NET MAUI requires a LocalizationResourceManager pattern implementing INotifyPropertyChanged to update CultureInfo.CurrentUICulture and CurrentCulture dynamically, refreshing UI strings and date or number formatting without restarting the app.

What platform manifest declarations are required for .NET MAUI localization?

Platform manifest declarations for .NET MAUI localization require setting CFBundleLocalizations for iOS and Mac Catalyst, and adding Resource Language entries in the Package.appxmanifest for Windows to ensure system-level language visibility.

How do I handle right-to-left layout for Arabic in a .NET MAUI application?

To handle right-to-left layout in .NET MAUI, set the FlowDirection property per page according to the current culture, ensuring RTL languages like Arabic display correctly across iOS, Android, Mac Catalyst, and Windows.

Why are my .NET MAUI localized strings not displaying correctly on iOS?

iOS localized strings may not display if the NeutralLanguage is missing in the .csproj or CFBundleLocalizations is not declared in the platform manifest, preventing the system from recognizing available app languages.

Do I need a NeutralLanguage setting for .NET MAUI resource files?

Yes, setting a NeutralLanguage in the .csproj is required for .NET MAUI resource files to establish a proper fallback culture when specific AppResources.{culture}.resx translations are unavailable.