بومی سازی (Localization)
«بومی سازی (Localization)» یعنی نمایش متن و محتوا براساس زبان کاربر. کلیدها ثابت می مانند، اما مقدارها ترجمه می شوند. مثل برچسب های کلاس که برای هر زبان متن خودش را دارد.
رشته ها در Localizable.strings
برای هر زبان یک فایل Localizable.strings بساز. سپس با کلیدها متن ها را بخوان.
"hello" = "Hello";
"welcome_name" = "Welcome, %@";
"hello" = "Hola";
"welcome_name" = "Bienvenido, %@";
import SwiftUI;
struct ContentView: View {
var body: some View {
VStack {
Text("hello");
Text(String(format: NSLocalizedString("welcome_name", comment: ""), "Swift"));
}
}
}
جمع های متغیر (.stringsdict)
برای جمع بستن درست در زبان های مختلف از .stringsdict استفاده کن.
{
"apples_count" : {
"NSStringLocalizedFormatKey" : "%#@apples@",
"apples" : {
"NSStringFormatSpecTypeKey" : "NSStringPluralRuleType",
"NSStringFormatValueTypeKey" : "d",
"one" : "%d apple",
"other" : "%d apples"
}
}
}
import SwiftUI;
struct CounterView: View {
let count: Int;
var body: some View {
Text(String.localizedStringWithFormat(NSLocalizedString("apples_count", comment: ""), count));
}
}
نکته های SwiftUI در بومی سازی
برای کلیدهای ثابت از Text("key") استفاده کن. سپس برای مقادیر پویا از فرمت ها کمک بگیر.
import SwiftUI;
struct PricesView: View {
let price: Double = 12.5;
let date = Date();
var body: some View {
VStack(alignment: .leading) {
Text(price, format: .currency(code: Locale.current.currency?.identifier ?? "USD"));
Text(date, style: .date);
}
}
}
گام های عملی
- 1) فایل های
Localizable.stringsرا برای هر زبان بساز. - 2) کلیدها را با
TextیاNSLocalizedStringبخوان. - 3) جمع بندی ها را با
.stringsdictپوشش بده. - 4) خروجی پول و تاریخ را با فرمت کننده ها نشان بده.
آزمون بومی سازی
زبان برنامه را در Scheme تنظیم کن. سپس شبه زبان راست به چپ را امتحان کن.
- رشته سخت کد ممنوع است.
- همه متن های کاربری باید کلید داشته باشند.
- برای مدیریت انبوه، از String Catalogs استفاده کن.
متادیتای اپ
نام، توضیح و اسکرین شات های اپ استور را برای هر زبان ترجمه کن.
نکته: در پروژه های بزرگ، String Catalogs مدیریت را ساده می کند.
جمع بندی سریع
- کلید ثابت، مقدار ترجمه ای.
- .stringsdict برای قوانین جمع.
- Formatter ها خروجی بومی می دهند.
- شبه زبان RTL را حتماً تست کن.
مطالب مرتبط: بومی سازی، MapKit، URLSession پس زمینه.