- 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
// βββββββββββββββββββββββββββββββββββββββ
// SWIFTUI DA 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
// βββββββββββββββββββββββββββββββββββββββ
// SwiftUI dan 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.