- Published on
Localization va string catalog
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Ilovangiz butun dunyoda ishlatilishi uchun ko'p tilni qo'llab-quvvatlash kerak. Xcode 15 dan boshlab String Catalog bilan bu juda oson.
String Catalog yaratish
Xcode da qadamlar:
1. File → New → File
2. "String Catalog" ni tanlang
3. Localizable.xcstrings nomli fayl yaratiladi
4. Project → Info → Localizations → + til qo'shing
// ═══════════════════════════════════════
// SWIFTUIDA AVTOMATIK LOKALIZATSIYA
// ═══════════════════════════════════════
// Text() — avtomatik lokalizatsiya qidiradi
Text("Welcome")
// String Catalog da:
// "Welcome" → uz: "Xush kelibsiz"
// "Welcome" → ru: "Добро пожаловать"
// Interpolation bilan
Text("Hello, \(ism)!")
// String Catalog da:
// "Hello, %@!" → uz: "Salom, %@!"
// Maxsus izoh (Comment) bilan
Text("Save", comment: "Saqlash tugmasi matni")
// ═══════════════════════════════════════
// KOD ICHIDA LOKALIZATSIYA
// ═══════════════════════════════════════
// SwiftUIdan tashqarida — String(localized:)
let xabar = String(localized: "File saved successfully")
// String Catalog dan tarjima oladi
// Eski usul — NSLocalizedString
let eskiUsul = NSLocalizedString("Cancel", comment: "Bekor qilish")
Pluralization — son ga qarab
// ═══════════════════════════════════════
// PLURALIZATION
// Tilga qarab grammatik qoida boshqacha
// ═══════════════════════════════════════
// Kod da
Text("^[\(xabarSoni) message](inflect: true)")
// Ingliz: "1 message", "2 messages", "5 messages"
// O'zbek: "1 ta xabar", "2 ta xabar", "5 ta xabar"
// String Catalog da maxsus plural qoidalar
// Key: "%lld items"
// Plural variants:
// one: "%lld ta element"
// other: "%lld ta element"
Sana, valyuta va raqamlar
// ═══════════════════════════════════════
// SANA FORMATLASH — locale ga qarab
// ═══════════════════════════════════════
let sana = Date()
// Avtomatik lokalizatsiya
Text(sana, style: .date)
// uz: "21-iyun, 2024-y."
// en: "June 21, 2024"
// ru: "21 июня 2024 г."
Text(sana, format: .dateTime.day().month(.wide).year())
// Har til o'z formatida ko'rsatadi
// ═══════════════════════════════════════
// VALYUTA VA RAQAM
// ═══════════════════════════════════════
let narx = 1499.99
Text(narx, format: .currency(code: "UZS"))
// "1 499,99 so'm"
Text(narx, format: .currency(code: "USD"))
// "$1,499.99"
// Raqam formatlash
let kattaRaqam = 1_500_000
Text(kattaRaqam, format: .number)
// uz: "1 500 000"
// en: "1,500,000"
Preview da turli tillarni sinash
// ═══════════════════════════════════════
// PREVIEW DA LOKALIZATSIYA
// ═══════════════════════════════════════
struct AsosiyKorinish: View {
var body: some View {
VStack {
Text("Welcome")
Text("Settings")
Text("Save")
}
}
}
#Preview("O'zbek") {
AsosiyKorinish()
.environment(\.locale, Locale(identifier: "uz"))
}
#Preview("English") {
AsosiyKorinish()
.environment(\.locale, Locale(identifier: "en"))
}
#Preview("Russian") {
AsosiyKorinish()
.environment(\.locale, Locale(identifier: "ru"))
}
Lokalizatsiya checklisti
✅ Barcha matnlar String Catalog da
✅ Rasm va ikonkalar madaniyatga mos
✅ Sana/raqam formatlari Locale ishlatadi
✅ RTL (o'ngdan chapga) tillar uchun layout sinagan
✅ Uzun tarjimalar uchun layout buzilmasligini tekshirgan
✅ Pluralization to'g'ri ishlashini sinagan
🎯 Topshiriq
3 tilli ilova yarating (O'zbek, English, Russian): String Catalog da 5 ta asosiy matnni tarjima qiling. Sana va valyutani Locale ga qarab ko'rsating. Preview da har uchala tilni tekshiring.