स्विफ्ट यूआई में स्थानीयकरण कैसे लागू करें


10

कोई भी मेरी मदद कर सकता हैं? मैं स्विफ्ट यूआई में स्थानीयकरण का कोई विवरण नहीं पा सकता हूं। क्या कोई कृपया सलाह या बेहतर उदाहरण दे सकता है कि उदाहरण के लिए स्थानीयकरण कैसे करें Text()?

जवाबों:


15

जब आप पाठ के लिए दस्तावेज देखते हैं तो आप देख सकते हैं कि यह LocalizedStringKey लेता है न कि इसके प्रारंभिक में एक स्ट्रिंग:

init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)

यह स्थानीयकरण को बहुत सीधा बनाता है। तुमको बस यह करना है:

  • स्ट्रिंग्स फ़ाइल की एक नई फ़ाइल बनाएँ, इसे स्थानीयकरण कहें
  • नई फ़ाइल का चयन करें और दाहिने हाथ की ओर पैनल में फ़ाइल इंस्पेक्टर को चुनें और स्थानीय करें पर क्लिक करें ...
  • स्थानीयकरण अनुभाग में अपनी परियोजना फ़ाइल पर जाएं और सूची में एक और भाषा जोड़ें - Xcode आपके लिए स्थानीयकरण फ़ाइलें बनाएगा

जब आप आपको Localizable.strings चुनते हैं तो आप देखेंगे कि इसमें मूल भाषा और आपके द्वारा जोड़ी गई भाषा की फाइलें हैं। यहीं पर आप अपने अनुवाद, कुंजी - स्थानीय पाठ जोड़े जोड़ते हैं।

यदि आपके पास एक पाठ है जैसे कि यह आपका ऐप है:

Text("Hello World!")

अब आपको अपने अनुवादों में अपने Localizable.strings को जोड़ना होगा:

आपकी आधार भाषा के लिए:

"Hello World!" = "Hello World!";

और आपकी दूसरी भाषा के लिए (इस मामले में जर्मन):

"Hello World!" = "Hallo Welt!";

स्थानीयकृत अपने पूर्वावलोकन देखने के लिए आप उन्हें इस तरह परिभाषित कर सकते हैं:

struct ContentViewView_Previews: PreviewProvider {

    static var previews: some View {
        ForEach(["en", "de"], id: \.self) { id in
            ContentView()
                .environment(\.locale, .init(identifier: id))
        }
    }
}

धन्यवाद, यह मददगार था! लेकिन मेरे पास कुछ मुद्दे थे क्योंकि यह कई भाषाओं में पहले से ही जोड़ा गया था।
ओलेह एच

मैंने पत्र को इन निर्देशों का पालन किया और यह काम नहीं किया। मैं iOS 10.15.1 बीटा और Xcode 11.1 चला रहा हूं। किसी भी सलाह को सहर्ष स्वीकार कर लिया गया। अभी के लिए मैं बीटा सॉफ्टवेयर में एक गड़बड़ मान जा रहा हूं और इस पर और समय नहीं गंवा रहा हूं
जोसेफ बेयूस की मम

वास्तव में समस्या क्या थी?
LuLuGaGa

1
मुझे समस्या @LuLuGaGa मिली। यह ट्रांसपायर करता है कि मैं पत्र के निर्देशों का पालन नहीं कर रहा था, जैसा कि मैंने कहा था कि मेरे पास था। मेरी स्थानीयकरण स्ट्रिंग फ़ाइल एक सबफ़ोल्डर में थी। इसे परियोजना स्तर पर रखें और यह ठीक काम करता है
जोसेफ बेयस की मम

1
यह भी पता चला है (मेरे विचार) है कि है बुला तार फ़ाइल के अलावा और कुछ स्थानीय बनाने का मतलब यह होगा काम नहीं
जोसेफ ब्ूयस 'माँ

3

स्विफ्ट UI फ़ाइल के लिए, आपको बस स्थानीयकरण .strings फ़ाइल से स्ट्रिंग कुंजी सम्मिलित करने की आवश्यकता है

आयात SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("selectLanguage")
            Text("languagesList")
        }



    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
            .environment(\.locale, .init(identifier: "en"))
    }
}

और यह .strings फ़ाइल से एक उदाहरण है

"selectLanguage" = "Select language";
"languagesList" = "Languages list";

परिणाम यहाँ है


0

अपनी ऐप को स्थानीय बनाने के लिए:

  1. SwiftUI तत्वों का उपयोग करें जैसे: पाठ ("अच्छा") । Local Local.strings में नीस प्रमुख है।
  2. उन मामलों में जहां पाठ स्विफ्टयूआई तत्व में नहीं है, उन्हें NSLocalizedString का उपयोग करने की आवश्यकता है
  3. आप एप्लिकेशन लक्ष्य का चयन करें।
  4. निर्यात स्थानीयकरण: संपादित करें -> स्थानीयकरण के लिए निर्यात ...
  5. अनुवादक को निर्यात की गई फ़ाइलें दें।
  6. आयात अनुवाद: संपादित करें -> स्थानीयकरण आयात करें ...

0

SwiftUI में Localazable का उपयोग करने के लिए, आप इस तरह से प्रदर्शन कर सकते हैं:

अपनी फ़ाइलों में स्थानीयकृतStringKey का उपयोग करने के लिए SwiftUI आयात करें

//MARK: - File where you enum your keys to your Localized file
enum ButtonName: LocalizedStringKey {
case submit
case cancel
}

//MARK: - Your Localized file where are your translation
"submit" = "Submit is pressed";
"cancel" = "Cancel";

//MARK: - In your code
let submitButtonName = ButtonName.submit.rawValue
let cancelButtonName = ButtonName.cancel.rawValue

VStack {
Text(submitButtonName)
Text(cancelButtonName)
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.