davidortinau/maui-skills/maui-localization

Claude Code and agent skill by davidortinau/maui-skills

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Guidance for localizing .NET MAUI apps: multi-language support via .resx resource files, culture resolution and runtime switching, RTL layout, platform language declarations (iOS/Mac Catalyst Info.plist, Windows Package.appxmanifest), and image localization strategies. USE FOR: "localization", "multi-language", "resx resource", "translate app", "RTL layout", "culture switching", "localize strings", "right-to-left", "language support MAUI", "Info.plist languages". DO NOT USE FOR: theming or visual styles (use maui-theming), accessibility labels (use maui-accessibility), or content from REST APIs (use maui-rest-api).

Install

npx vskill@latest install davidortinau/maui-skills/maui-localization

SKILL.md

.NET MAUI Localization

Common gotchas

IssueFix
ResourceManager returns null for default cultureSet <NeutralLanguage>en-US</NeutralLanguage> in .csproj
iOS ignores culture overridesCFBundleLocalizations missing from Info.plist
Windows doesn't show correct language<Resource Language="..." /> missing from Package.appxmanifest
x:Static bindings don't update on language switchx:Static is one-time — use binding approach with INotifyPropertyChanged
.Designer.cs not regenerating in VS CodeAdd <CoreCompileDependsOn>PrepareResources;$(CoreCompileDependsOn)</CoreCompileDependsOn> and run dotnet build

⚠️ NeutralLanguage is mandatory

xml
<!-- ✅ Always set in .csproj -->
<PropertyGroup>
<NeutralLanguage>en-US</NeutralLanguage>
</PropertyGroup>
<!-- ❌ Missing this causes ResourceManager to return null at runtime -->

Platform declarations — don't forget these

iOS / Mac Catalyst

⚠️ Without this, iOS won't offer your app's languages in system Settings:

xml
<!-- Platforms/iOS/Info.plist AND Platforms/MacCatalyst/Info.plist -->
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>es</string>
<string>fr</string>
</array>
Windows
xml
<!-- Platforms/Windows/Package.appxmanifest -->
<Resources>
<Resource Language="en-US" />
<Resource Language="es" />
<Resource Language="fr-FR" />
</Resources>
Android

Android picks up .resx-based localization automatically. No additional manifest entries required. ✅

Runtime language switching — x:Static trap

xml
<!-- ❌ Won't update when language changes at runtime -->
<Label Text="{x:Static resx:AppResources.WelcomeMessage}" />
<!-- ✅ Updates dynamically via INotifyPropertyChanged -->
<Label Text="{Binding [WelcomeMessage], Source={x:Static local:LocalizationResourceManager.Instance}}" />

When switching culture, set all three properties or formatting is inconsistent:

csharp
// ✅ Complete culture switch
var culture = new CultureInfo("es");
CultureInfo.CurrentUICulture = culture; // resource lookup
CultureInfo.CurrentCulture = culture; // dates/numbers
AppResources.Culture = culture; // ResourceManager
// ❌ Only sets UI culture — dates/numbers stay in old culture
CultureInfo.CurrentUICulture = new CultureInfo("es");

RTL layout — set FlowDirection at page level

xml
<!-- ✅ Page-level — children inherit -->
<ContentPage FlowDirection="RightToLeft">
<StackLayout FlowDirection="MatchParent" />
</ContentPage>
<!-- ❌ Only on child — parent still LTR, layout breaks -->
<ContentPage>
<StackLayout FlowDirection="RightToLeft" />
</ContentPage>

VS Code pitfall

⚠️ .Designer.cs may not regenerate on save. Add to .csproj and run dotnet build after .resx changes:

xml
<CoreCompileDependsOn>PrepareResources;$(CoreCompileDependsOn)</CoreCompileDependsOn>

Decision framework

NeedApproach
Static multilingual strings.resx files with x:Static bindings
Runtime language switchingLocalizationResourceManager with INotifyPropertyChanged bindings
Culture-specific imagesName images banner_{culture}.png or store paths in .resx
RTL supportSet FlowDirection at page level, detect with TextInfo.IsRightToLeft
Date/number formattingSet CultureInfo.CurrentCulture alongside CurrentUICulture

Quick checklist

  • [ ] NeutralLanguage set in .csproj
  • [ ] Default AppResources.resx contains all keys
  • [ ] Each target language has its own AppResources.{culture}.resx
  • [ ] iOS/Mac: CFBundleLocalizations lists all supported languages
  • [ ] Windows: Package.appxmanifest declares <Resource Language="..." />
  • [ ] RTL cultures set FlowDirection at page/app level
  • [ ] Runtime switching sets all three: CurrentUICulture, CurrentCulture, AppResources.Culture
  • [ ] dotnet build regenerates .Designer.cs after .resx changes

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
107
Repository forks
15
7-day trend score
23

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 3 Apr 2026, 7 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/davidortinau/maui-skills/maui-localization/badge)](https://verified-skill.com/skills/davidortinau/maui-skills/maui-localization)

Something wrong with this skill or its page? Tell us.