Локализация приложения с пользовательским выбором и AI
Экспертный набор инструкций для создания гибкой системы локализации, где язык выбирает пользователь, а также интеграция выбранного языка в запросы к ИИ.
Значения подставятся в промпт ниже.
Представьте, что вы — специалист по локализации мобильных приложений. Вам нужно построить архитектуру, позволяющую пользователю выбирать язык независимо от системных настроек телефона.
1. Реализуйте класс LanguageManager, соответствующий ObservableObject. Сохраняйте выбранный пользователем язык в UserDefaults, по умолчанию — "en". При первом запуске показывайте экран выбора языка.
2. Оберните корневой ContentView модификатором .environment(\.locale, .init(identifier: languageManager.selectedLanguage)) для автоматического переключения локали.
3. Если язык ещё не выбран, отобразите стильный экран с вариантами English и Turkish, сохраните выбор и перейдите к основному интерфейсу.
4. При формировании запросов к LLM добавляйте параметр с выбранным языком и меняйте системный промпт на: "User's preferred language: ${selected_language}. Respond in this language."
5. Перенесите все строковые ресурсы в .stringxcatalog, добавив английскую (базовую) и турецкую версии.
6. Обеспечьте мгновенное обновление UI при смене языка в настройках без перезапуска.
7. Позвольте пользователю менять язык в любой момент из настроек.
💡 Как выжать максимум
- Сохраняйте язык в UserDefaults сразу после выбора, чтобы он был доступен при следующем запуске.
- Используйте @Published в LanguageManager, чтобы SwiftUI автоматически реагировал на изменения.
- Для плавного перехода после выбора языка применяйте анимацию и переходы между экранами.
- При работе с AI‑сервисами передавайте язык в заголовке или теле запроса, чтобы модель отвечала на нужном языке.
При первом открытии приложения пользователь видит экран с кнопками «English» и «Türkçe». Выбрав «Türkçe», язык сохраняется, UI мгновенно переходит на турецкий, а запрос к ChatGPT содержит параметр language=tr, получая ответ на турецком.
- Реализовать LanguageManager как Singleton вместо ObservableObject.
- Использовать Combine для публикации изменений языка вместо @Published.
- Добавить поддержку RTL‑языков (например, арабского) и соответствующие UI‑правки.
Кураторская подборка fizoni.com · структура, примеры использования и рабочие сценарии
Похожие промпты
Comprehensive Repository Analysis and Bug Fixing Framework
Framework for systematic repository analysis, bug prioritization, fixing, and documentatio…
💻 PROGRAMMINGCode Review Agent
Code Review Agent evaluating readability, performance, security, and style guideline adher…
💻 PROGRAMMINGAnalyze PDF and Create MATLAB Code
Assistant that analyzes PDF sections, explains the theory simply, writes clear MATLAB code…
💻 PROGRAMMINGVacuum Arc Modeling under Transverse Magnetic Fields
Expert prompt for modeling vacuum arcs under transverse magnetic fields using Fluent UDFs …
💻 PROGRAMMINGMeeting Room Booking Web App Development
Step-by-step prompt to build a PHP and MySQL meeting room booking app with roles and Tailw…
💻 PROGRAMMINGXiaomi Company Self-Service Management System Frontend Development
Frontend developer role to design and build a user-friendly interface for Xiaomi's self-se…
📦 Prompts for Programmers — 411 промптов
Вместо одного промпта — целый набор по теме. Готовые процессы, структура, быстрый старт. Код, рефакторинг, дебаг, архитектура, ревью, SQL и API.…
Забрать набор — $2.99 🎁 6 бесплатных промптов
🎁 Забери 6 лучших промптов бесплатно
Понравился этот промпт? Мы собрали ещё 6 отборных — для бизнеса, кода и продуктивности. Плюс доступ к полной библиотеке 2000+ промптов.