Install
$ agentstack add skill-davidortinau-maui-skills-maui-localization ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
.NET MAUI Localization
Common gotchas
| Issue | Fix | |---|---| | ResourceManager returns null for default culture | Set en-US in .csproj | | iOS ignores culture overrides | CFBundleLocalizations missing from Info.plist | | Windows doesn't show correct language | ` missing from Package.appxmanifest | | x:Static bindings don't update on language switch | x:Static is one-time — use binding approach with INotifyPropertyChanged | | .Designer.cs not regenerating in VS Code | Add PrepareResources;$(CoreCompileDependsOn) and run dotnet build` |
⚠️ NeutralLanguage is mandatory
en-US
Platform declarations — don't forget these
iOS / Mac Catalyst
⚠️ Without this, iOS won't offer your app's languages in system Settings:
CFBundleLocalizations
en
es
fr
Windows
Android
Android picks up .resx-based localization automatically. No additional manifest entries required. ✅
Runtime language switching — x:Static trap
When switching culture, set all three properties or formatting is inconsistent:
// ✅ 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
VS Code pitfall
⚠️ .Designer.cs may not regenerate on save. Add to .csproj and run dotnet build after .resx changes:
PrepareResources;$(CoreCompileDependsOn)
Decision framework
| Need | Approach | |---|---| | Static multilingual strings | .resx files with x:Static bindings | | Runtime language switching | LocalizationResourceManager with INotifyPropertyChanged bindings | | Culture-specific images | Name images banner_{culture}.png or store paths in .resx | | RTL support | Set FlowDirection at page level, detect with TextInfo.IsRightToLeft | | Date/number formatting | Set CultureInfo.CurrentCulture alongside CurrentUICulture |
Quick checklist
- [ ]
NeutralLanguageset in.csproj - [ ] Default
AppResources.resxcontains all keys - [ ] Each target language has its own
AppResources.{culture}.resx - [ ] iOS/Mac:
CFBundleLocalizationslists all supported languages - [ ] Windows:
Package.appxmanifestdeclares `` - [ ] RTL cultures set
FlowDirectionat page/app level - [ ] Runtime switching sets all three:
CurrentUICulture,CurrentCulture,AppResources.Culture - [ ]
dotnet buildregenerates.Designer.csafter.resxchanges
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: davidortinau
- Source: davidortinau/maui-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.