
iOS ऐप स्थानीयकरण की संपूर्ण गाइड
Localizable.strings से App Store मेटाडेटा तक: Xcode, SwiftUI, Fastlane और स्वचालित AI अनुवाद से अपने iOS ऐप का स्थानीयकरण करें।
Xcode में स्थानीयकरण चालू करें
अपने Xcode प्रोजेक्ट की सेटिंग्स खोलें, Info > Localizations पर जाएँ और वे भाषाएँ जोड़ें जिन्हें आप सपोर्ट करना चाहते हैं। Xcode हर भाषा के लिए अपने-आप .lproj डायरेक्टरी बनाता है।
// In Xcode:
// 1. Select your project in the navigator
// 2. Go to Info tab > Localizations
// 3. Click + to add languages (e.g., German, Japanese)
// 4. Select which files to localize
//
// Xcode creates .lproj directories automatically:
// en.lproj/Localizable.strings
// de.lproj/Localizable.strings
// ja.lproj/Localizable.stringsLocalizable.strings बनाएँ
मानक iOS स्थानीयकरण फ़ाइल में बराबर चिह्नों से अलग किए गए key-value पेयर होते हैं और हर पंक्ति सेमीकोलन पर समाप्त होती है। स्रोत भाषा के लिए इसे अपने Base.lproj फ़ोल्डर में रखें।
// Base.lproj/Localizable.strings
"welcome_title" = "Welcome to MyApp";
"login_button" = "Sign In";
"settings_label" = "Settings";
"greeting" = "Hello, %@!"; // %@ = string placeholder
"item_count" = "%d items"; // %d = integer placeholder// ❌ Common mistakes in .strings files:
// Missing semicolon — file loads but translations are empty
"welcome_title" = "Welcome"
// Unescaped quotes — causes parse error
"message" = "Click "here" to continue";
// ✅ Correct versions:
"welcome_title" = "Welcome";
"message" = "Click \"here\" to continue";String Catalogs पर माइग्रेट करें (Xcode 15+)
String Catalogs (.xcstrings), .strings फ़ाइलों का Apple का आधुनिक विकल्प हैं। इनमें Xcode का विज़ुअल एडिटर, आपके SwiftUI व्यू से स्ट्रिंग्स का स्वचालित एक्सट्रैक्शन और बहुवचन के लिए बिल्ट-इन सपोर्ट मिलता है।
// Xcode 15+ String Catalog (Localizable.xcstrings)
// Xcode automatically extracts strings from your code
// and manages translations in a visual editor.
// In SwiftUI, strings are automatically localizable:
Text("Welcome to MyApp")
Text("Hello, \(userName)!")
// Mark strings explicitly:
let title = String(localized: "welcome_title")SwiftUI और UIKit में स्थानीयकृत स्ट्रिंग्स का उपयोग करें
SwiftUI का Text व्यू स्ट्रिंग लिटरल का अपने-आप स्थानीयकरण करता है। UIKit, NSLocalizedString का उपयोग करता है। iOS 16+ के लिए आधुनिक String(localized:comment:) API बिल्ट-इन कंपाइलर सपोर्ट के साथ अधिक सरल सिंटैक्स प्रदान करता है।
import SwiftUI
struct ContentView: View {
let userName: String
var body: some View {
VStack {
// ✅ SwiftUI auto-localizes string literals
Text("welcome_title")
// ⚠️ This does NOT localize (String interpolation)
// Text("Hello, \(userName)")
// ✅ Use String(localized:) for dynamic strings
Text(String(localized: "greeting \(userName)"))
// ✅ UIKit style (works everywhere)
let title = NSLocalizedString(
"settings_label",
comment: "Settings screen title"
)
// ✅ Modern API (iOS 16+)
let modern = String(
localized: "welcome_title",
comment: "Main screen title"
)
}
}
}बहुवचन संभालें
iOS बहुवचन नियमों के लिए .stringsdict फ़ाइलों का उपयोग करता है और सभी CLDR बहुवचन श्रेणियों को सपोर्ट करता है: zero, one, two, few, many, other। String Catalogs, Xcode के विज़ुअल एडिटर से बहुवचन संभालते हैं—यह stringsdict XML को हाथ से लिखने की तुलना में बहुत आसान है।
<!-- Localizable.stringsdict -->
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>items_count</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count@</string>
<key>count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>No items</string>
<key>one</key>
<string>%d item</string>
<key>other</key>
<string>%d items</string>
</dict>
</dict>
</dict>
</plist>
// Usage in Swift:
String(format: NSLocalizedString("items_count", comment: ""),
itemCount)Fastlane से App Store मेटाडेटा का स्थानीयकरण करें
App Store मेटाडेटा—ऐप का नाम, उपशीर्षक, विवरण, कीवर्ड और रिलीज़ नोट—को लोकेल के अनुसार व्यवस्थित सामान्य टेक्स्ट फ़ाइलों के रूप में अपने रिपॉज़िटरी में वर्ज़न-कंट्रोल के अंतर्गत रखने के लिए Fastlane के deliver टूल का उपयोग करें।
# Install Fastlane
$ gem install fastlane
# Initialize deliver for App Store metadata
$ fastlane deliver init
# Directory structure created:
# fastlane/metadata/
# ├── en-US/
# │ ├── name.txt # App name (30 chars)
# │ ├── subtitle.txt # Subtitle (30 chars)
# │ ├── description.txt # Full description
# │ ├── keywords.txt # Search keywords (100 chars)
# │ ├── release_notes.txt # What's New
# │ └── promotional_text.txt
# ├── de-DE/
# │ └── ...
# └── ja/
# └── ...
# Push metadata to App Store Connect:
$ fastlane deliverअपने स्थानीयकरण की जाँच करें
डिवाइस की भाषा बदले बिना स्थानीयकृत सामग्री की जाँच करें। ऐप को किसी भी भाषा में चलाने के लिए Xcode scheme overrides, locale environment वाले SwiftUI previews और स्वचालित जाँच के लिए launch arguments के साथ XCUITest का उपयोग करें।
// 1. Xcode Scheme Override:
// Edit Scheme > Run > Options > App Language > Choose language
// 2. SwiftUI Preview with locale:
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.environment(\.locale, Locale(identifier: "de"))
ContentView()
.environment(\.locale, Locale(identifier: "ja"))
ContentView()
.environment(\.locale, Locale(identifier: "ar"))
}
}
// 3. XCUITest with language override:
let app = XCUIApplication()
app.launchArguments += ["-AppleLanguages", "(de)"]
app.launchArguments += ["-AppleLocale", "de_DE"]
app.launch()अनुवाद की गुणवत्ता स्वचालित रूप से जाँचें
अनुवाद स्वचालित करें
AI से अपनी .strings, .xcstrings और Fastlane मेटाडेटा फ़ाइलों का अनुवाद करें। पूरी तरह स्थानीयकृत उपस्थिति के लिए ऐप के भीतर की स्ट्रिंग्स और App Store मेटाडेटा, दोनों का अनुवाद स्वचालित करें।
# Translate .strings files
> Translate Base.lproj/Localizable.strings
to Japanese, German, and Spanish
# Translate App Store metadata too
> Translate fastlane/metadata/en-US/
to de-DE, ja, es-MX
✓ 6 files translated in 3.2sबोनस: LocaleChain के साथ स्मार्ट लोकेल फ़ॉलबैक
डिफ़ॉल्ट रूप से, जब यूज़र का सटीक लोकेल उपलब्ध नहीं होता, तो iOS आपकी डेवलपमेंट भाषा पर फ़ॉलबैक करता है। केवल pt-PT अनुवाद उपलब्ध होने पर pt-BR यूज़र को पुर्तगाली के बजाय अंग्रेज़ी दिखाई देती है। LocaleChain कॉन्फ़िगर की जा सकने वाली फ़ॉलबैक शृंखलाओं से इसे ठीक करता है।
LocaleChain एक ओपन-सोर्स Swift पैकेज है। GitHub पर देखें
// Swift Package Manager
// File > Add Package Dependencies >
// https://github.com/i18n-agent/ios-localechain.gitimport LocaleChain
// In your App init or AppDelegate:
LocaleChain.configure() // Activates all default chains
// pt-BR user with only pt-PT translations?
// → Shows Portuguese instead of falling back to English
// Custom overrides for your specific locales:
LocaleChain.configure(
overrides: ["es-MX": ["es-419", "es"]]
)आम समस्याएँ
.strings फ़ाइल की सिंटैक्स त्रुटियाँ
SwiftUI Text इंटरपोलेशन का स्थानीयकरण न होना
Widgets/Extensions में मूल कुंजियाँ दिखाई देना
प्रोडक्शन में अनुपलब्ध अनुवादों की जगह कुंजियाँ दिखाई देना
सुझाई गई फ़ाइल संरचना
MyApp/
├── MyApp.xcodeproj
├── MyApp/
│ ├── Base.lproj/
│ │ ├── Localizable.strings # Source strings
│ │ └── Localizable.stringsdict # Plural rules
│ ├── en.lproj/
│ │ └── Localizable.strings
│ ├── de.lproj/
│ │ └── Localizable.strings
│ ├── ja.lproj/
│ │ └── Localizable.strings
│ ├── Localizable.xcstrings # OR String Catalog
│ └── Info.plist
├── MyAppTests/
├── fastlane/
│ ├── Fastfile
│ └── metadata/
│ ├── en-US/
│ │ ├── name.txt
│ │ ├── description.txt
│ │ └── keywords.txt
│ ├── de-DE/
│ └── ja/
└── Package.swiftइनका भी अनुवाद करें:
i18n Agent अभी आज़माएँ
अपनी अनुवाद फ़ाइल यहाँ छोड़ें
JSON, YAML, PO, XML, CSV, Markdown, Properties
या ब्राउज़ करने के लिए क्लिक करें
लक्षित भाषाएँ
ios-localechain के साथ लोकेल फ़ॉलबैक
जब de-AT जैसे क्षेत्रीय लोकेल में कोई अनुवाद कुंजी अनुपलब्ध होती है, तो iOS पहले पैरेंट लोकेल de की जाँच करने के बजाय सीधे डेवलपमेंट भाषा पर चला जाता है।
// Swift Package Manager
// https://github.com/i18n-agent/ios-localechainimport LocaleChain
LocaleChain.configure(overrides: [
"de": ["en-GB", "en"],
"pt-BR": ["pt", "en"],
"zh-Hant-HK": ["zh-Hant", "zh", "en"],
])समर्थित फ़्रेमवर्क की पूरी सूची और 75 बिल्ट-इन शृंखलाओं के लिए हमारी लोकेल फ़ॉलबैक गाइड देखें। Learn more →