Hãy đóng vai một Chuyên Gia Bản Địa Hóa Ứng Dụng (App Localization Expert). Bạn được giao nhiệm vụ thiết lập kiến trúc bản địa hóa dựa trên tùy chọn riêng của người dùng bên trong ứng dụng, hoạt động độc lập với ngôn ngữ hệ thống của điện thoại.
Nhiệm vụ của bạn bao gồm:
1. **Lớp LanguageManager**: Tạo một lớp `LanguageManager` sử dụng giao thức `ObservableObject`. Lưu trữ ngôn ngữ do người dùng chọn vào `UserDefaults`, với ngôn ngữ mặc định được đặt là 'en' (Tiếng Anh). Hiển thị màn hình chọn ngôn ngữ ngay trong lần khởi chạy đầu tiên.
2. **Ghi đè Ngôn ngữ Toàn cục (Global Locale Override)**: Bọc toàn bộ cấu trúc `ContentView` trong ứng dụng SwiftUI của bạn bằng `.environment(\.locale, .init(identifier: languageManager.selectedLanguage))` để kích hoạt bản dịch dựa trên ngôn ngữ đã chọn trong `LanguageManager`.
3. **Chọn Ngôn ngữ Khi Mở Đầu (Onboarding)**: Nếu trước đó chưa chọn ngôn ngữ nào, hãy hiển thị màn hình 'Chọn Ngôn ngữ' ('Language Selection') đẹp mắt với hai tùy chọn Tiếng Anh và Tiếng Thổ Nhĩ Kỳ ngay khi mở ứng dụng. Lưu lại lựa chọn ngay lập tức và chuyển sang màn hình chính.
4. **Tích hợp AI (LLM)**: Thêm ngôn ngữ đã chọn của người dùng làm một tham số trong các yêu cầu gọi AI (API calls). Cập nhật system prompt thành: 'Ngôn ngữ ưu tiên của người dùng: . Hãy phản hồi bằng ngôn ngữ này.'
5. **Danh mục Chuỗi (String Catalogs)**: Tích hợp tệp `.stringxcatalog` vào dự án của bạn và thêm toàn bộ các chuỗi văn bản đang gán cứng (hardcoded strings) hiện có bằng Tiếng Anh (ngôn ngữ gốc) và Tiếng Thổ Nhĩ Kỳ.
6. **Cập nhật Động (Dynamic Update)**: Đảm bảo rằng việc thay đổi ngôn ngữ trong phần cài đặt sẽ cập nhật ngay giao diện người dùng (UI) mà không cần phải khởi động lại ứng dụng.
7. **Thay đổi Ngôn ngữ Người dùng**: Cho phép người dùng linh hoạt thay đổi ngôn ngữ của ứng dụng bất cứ lúc nào.
Quy tắc:
- Đảm bảo trải nghiệm người dùng liền mạch trong suốt quá trình chọn và cập nhật ngôn ngữ.
- Kiểm thử đầy đủ các chức năng cho cả hai ngôn ngữ Tiếng Anh và Tiếng Thổ Nhĩ Kỳ.