developer coding user risk: low
SwiftUI User-Preference Localization Architecture
Act as an App Localization Expert to implement a user-preference-based localization architecture in a SwiftUI app, including a LanguageManager class with UserDefaults storage, glob…
PROMPT
Act as an App Localization Expert. You are tasked with setting up a user-preference-based localization architecture in an application independent of the phone's system language.
Your task includes:
1. **LanguageManager Class**: Create a `LanguageManager` class using the `ObservableObject` protocol. Store the user's selected language in `UserDefaults`, with the default language set to 'en' (English). Display a selection screen on the first launch.
2. **Global Locale Override**: Wrap the entire `ContentView` structure in your SwiftUI app with `.environment(\.locale, .init(identifier: languageManager.selectedLanguage))` to trigger translations based on the selected language in `LanguageManager`.
3. **Onboarding Language Selection**: If no language has been selected previously, show a stylish 'Language Selection' screen with English and Turkish options on app launch. Save the selection immediately and transition to the main screen.
4. **AI (LLM) Integration**: Add the user's selected language as a parameter in AI requests (API calls). Update the system prompt to: 'User's preferred language: ${selected_language}. Respond in this language.'
5. **String Catalogs**: Integrate `.stringxcatalog` into your project and add all existing hardcoded strings in English (base) and Turkish.
6. **Dynamic Update**: Ensure that changing the language in settings updates the UI without restarting the app.
7. **User Language Change**: Allow users to change the app's language dynamically at any time.
Rules:
- Ensure seamless user experience during language selection and updates.
- Test functionality for both English and Turkish languages. ROLES & RULES
Role assignments
- Act as an App Localization Expert.
- Ensure seamless user experience during language selection and updates.
- Test functionality for both English and Turkish languages.
EXPECTED OUTPUT
- Format
- markdown
- Constraints
-
- include Swift code
- cover all listed tasks
SUCCESS CRITERIA
- Create LanguageManager class using ObservableObject.
- Wrap ContentView with locale environment modifier.
- Implement onboarding language selection screen.
- Add selected language to AI requests.
- Integrate String Catalogs for English and Turkish.
- Ensure dynamic UI updates on language change.
- Allow runtime language changes.
FAILURE MODES
- May not persist language in UserDefaults correctly.
- Could fail to show selection on first launch.
- Might not override system locale properly.
- Risk of incomplete string catalog translations.
- UI may not update without app restart.
- AI prompts may not include language parameter.
CAVEATS
- Missing context
-
- Existing app codebase or ContentView structure.
- List of hardcoded strings to localize.
- Example of current AI API call for integration.
- iOS/SwiftUI version requirements.
- Details on main app screens beyond ContentView.
- Ambiguities
-
- 'Stylish Language Selection screen' is subjective and lacks design specifics.
- 'Add all existing hardcoded strings' assumes knowledge of which strings exist without listing them.
- Unclear how onboarding integrates with existing ContentView (e.g., conditional view?).
- Location of settings screen for language change not specified.
- AI requests assumed to exist but no example provided.
QUALITY
- OVERALL
- 0.70
- CLARITY
- 0.85
- SPECIFICITY
- 0.80
- REUSABILITY
- 0.25
- COMPLETENESS
- 0.75
IMPROVEMENT SUGGESTIONS
- Provide a minimal SwiftUI app template with placeholder ContentView.
- List specific strings to add to String Catalogs for English and Turkish.
- Include an example AI API call snippet showing where to insert the language parameter.
- Specify exact onboarding flow, e.g., 'Use a root view that checks UserDefaults and shows selector or main content.'
- Add requirements for iOS version and SwiftUI features used (e.g., .environment locale).
USAGE
Copy the prompt above and paste it into your AI of choice — Claude, ChatGPT, Gemini, or anywhere else you're working. Replace any placeholder sections with your own context, then ask for the output.
MORE FOR DEVELOPER
- Context7 Library Documentation Expertdevelopercoding
- Structured Python Production Code Generatordevelopercoding
- Angular Standalone Directive Generatordevelopercoding
- Pytest Unit Test Suite Generatordevelopercoding
- Unity Architecture Specialistdevelopercoding
- Web Typography CSS Generatordevelopercoding
- VSCode CodeTour File Expertdevelopercoding
- Senior Python Code Reviewerdevelopercoding
- Structured Cross-Language Code Translatordevelopercoding
- Multi-DB SQL Query Optimizer and Builderdevelopercoding