কীভাবে সুইফট সহ বর্তমান ভাষার কোড পাবেন?


131

আমি সুইফটে লেখা আমার অ্যাপটিতে ডিভাইসের ভাষা কোড (এন, এস ...) পেতে চাই। এটি কীভাবে পাওয়া যায়?

আমি এটি চেষ্টা করছি:

var preferredLanguages : NSLocale!
let pre = preferredLanguages.displayNameForKey(NSLocaleIdentifier, value: preferredLanguages)

কিন্তু এই শূন্য ফিরে।

উত্তর:


185

সুইফ্ট 3 এ

let langStr = Locale.current.languageCode

13
হওয়া উচিত: লোকাল কোডার.আর.এফটিফায়ার তবে লোকাল কোডার.আর.গ্র্যাজকোড চাইনিজদের জন্য, এটি সর্বদা 'জেডএইচ' ফেরত আসে তবে এটি
— জেডএইচ

2
@ ব্যবহারকারী 9527 আপনার কারণে সম্ভবত আপনার প্রকল্প সেটিংসে সেই ভাষার জন্য স্থানীয়করণ সক্ষম করা হয়নি।
— কিরিল কুদায়েভ

'লোকালে' টাইপ করতে স্ট্রিংয়ের ধরণের মান নির্ধারণ করা যায় না?
— পূজি ওয়াহানো

1
যতদূর আমি লক্ষ্য করেছি, সেটিংস -> সাধারণ -> ভাষা ও অঞ্চল -> আইফোন ভাষা কেবলমাত্র যদি আপনার প্রকল্পে প্রকল্প -> স্থানীয়করণের অধীনে আপনার ভাষাতে সক্ষম করা হয় তবে ভাষার জন্য স্থানীয় ভাষা সেট করা যায় language অন্যথায় এটি উন্নয়নের ভাষা।
— হুরালঙ্ক

85

অ্যাপ্লিকেশন ভাষা এবং ডিভাইস লোকাল ভাষার মধ্যে পার্থক্য করা গুরুত্বপূর্ণ (নীচের কোডটি সুইফট 3 এ রয়েছে )

ডিভাইসের ভাষা ফিরিয়ে দেবে :

let locale = NSLocale.current.languageCode

অ্যাপ্লিকেশন ভাষা ফিরে আসবে :

let pre = Locale.preferredLanguages[0]

4
আমি ডিভাইস ভাষা বা অ্যাপ্লিকেশন ভাষার মধ্যে পার্থক্য বুঝতে পারি না। পার্থক্য সম্পর্কে আপনার কোনও ডকুমেন্টেশন আছে?
— যিরমিয়

1
@ জেরেমিয়া লোকালে ডিভাইসের ভাষা থাকবে, উদাহরণস্বরূপ আপনার ডিভাইসের ভাষা ফ্রেঞ্চ ভাষায় কনফিগার করা হয়েছে। প্রাক ব্যবহারকারীর (বা অ্যাপ) পছন্দসই ভাষা ধারণ করবে, উদাহরণস্বরূপ: আপনার অ্যাপ্লিকেশনটি কেবল চাইনিজকে সমর্থন করে, তাই আপনি একটি ফরাসী ডিভাইসে একটি চীনা অ্যাপ্লিকেশন ইনস্টল করতে পারেন। আশা করি আমি এই 4 টি ইউ
— রেডকে

আপনি যখন বলছেন যে ডিভাইসটি ফরাসিতে কনফিগার করা হয়েছে তখন আপনার অর্থ কী? দেখে মনে হয় যে আমি যদি ভাষাটি সেটিং-এ ইংরেজী ব্যতীত অন্য কোনও কিছুতে পরিবর্তন করি তবে এটি পছন্দসই ভাষাগুলিতে উপস্থাপন করা হয় তবে ভাষা কোডে নয়। ল্যাঙ্গুয়েজ কোডটি কীভাবে পরিবর্তিত হয়?
— যিরমিয়

আপনি অন্যান্য এমন কিছু বিষয় যা ইংরেজি আপনি NSLocale.current.languageCode তার মান পেতে হবে সেটিংসে পরিবর্তন করেন তাহলে
— raed

9
এটি কি অন্য পথে নয়? যখন আমার অ্যাপ্লিকেশন উন্নয়ন ভাষা টীকা এবং আমি ডি কনফিগার ডিভাইস, যার জন্য আমি অ্যাপ্লিকেশন ফল আঞ্চলিক চালানো: Locale.current.languageCode: de Locale.current.identifier: de_DE Locale.preferredLanguages[0]: de যখন আমার অ্যাপ্লিকেশন উন্নয়ন ভাষা টীকা এবং আমি একটি এফ আর কনফিগার ডিভাইসে চালানোর জন্য, যার জন্য আমি আছে না স্থানীয় অ্যাপটির ফলাফলটি হ'ল: Locale.current.languageCode: en Locale.current.identifier: en_FR Locale.preferredLanguages[0]: fr
— আরজেন হিমস্ট্র্রা

55

সুইফ্ট 4 এবং 5:

Locale.current.languageCode

'লোকালে' টাইপ করতে স্ট্রিংয়ের ধরণের মান নির্ধারণ করা যায় না?
— পুজি ওয়াহানো

2
চেষ্টা করুন Locale(identifier: Locale.current.identifier);
— koen

Locale.autoupdatingCurrent.languageCodeএছাড়াও উপলব্ধ
— সি বেস


35

আপনার অ্যাপ্লিকেশনে বর্তমান ভাষা ব্যবহার করতে (পছন্দের ভাষার চেয়ে আলাদা)

NSLocale.currentLocale().objectForKey(NSLocaleLanguageCode)!

29

3 এবং 4 এবং 4.2 এবং 5 এ স্যুইফ্ট করুন

Locale.current.languageCodeনিয়মিত সংকলন করে না কারণ আপনি আপনার প্রকল্পের জন্য স্থানীয়করণ প্রয়োগ করেন নি।

আপনার দুটি সম্ভাব্য সমাধান রয়েছে

1) String(Locale.preferredLanguages[0].prefix(2)) এটি সঠিকভাবে ফোন ল্যাং ফেরত।

আপনি যদি টাইপটি পেতে চান তবে আপনি এটি en-Enব্যবহার করতে পারেনLocale.preferredLanguages[0]

2) নির্বাচন করুন Project(MyApp)-> Project (not Target)-> এ + বোতাম টিপুন Localizations, তারপরে আপনার পছন্দসই ভাষা যুক্ত করুন।


এটি সত্যিই আকর্ষণীয়! আপনি কোথায় সমাধান সমাধান পড়েছেন? অ্যাপল ডকুমেন্টেশনে এই তথ্যটি খুঁজে পাওয়া যায় না
— কুজডু

16

দ্রুত 3

let preferredLanguage = Locale.preferredLanguages[0] as String
print (preferredLanguage) //en-US

let arr = preferredLanguage.components(separatedBy: "-")
let deviceLanguage = arr.first
print (deviceLanguage) //en

1
"-" দ্বারা আলাদা ভাষা কোড এবং দেশের কোড বগি। আপনার কোডটি 'zh-Hans-US' এর মতো কিছু ক্ষেত্রে ভঙ্গ হবে।
— এভিলিসন জিয়াং

let langStr = Locale.preferredLanguages.first!এটিই আমি এই পোস্টটি পর্যালোচনা করেছি। এটি কাজ করছে এবং langStr.lowercased().contains("es")উদাহরণস্বরূপ আমি সমস্ত স্প্যানিশ ভাষার প্রকরণের সাথে আমার ভাষার সাথে তুলনা করি ।
— আয়ান ওরতেগা


7

আমি যখনই ব্যবহারকারী আমার অ্যাপ্লিকেশনটি চালু করি প্রতিবার সেটিংস অ্যাপে ব্যবহারকারীদের দ্বারা নির্বাচিত ভাষাটি আমি ট্র্যাক করতে চাই - এটি এখনও স্থানীয়করণ হয়নি (আমার অ্যাপটি কেবল ইংরেজিতে রয়েছে)। আমি এই যুক্তি গ্রহণ করেছি:

  1. অ্যারেতে ভাষাগুলি পরিচালনা করা আরও সহজ করার জন্য একটি এনাম তৈরি করুন

    enum Language: String {
    
    case none = ""
    case en = "English"
    case fr = "French"
    case it = "Italian"
    
    } // add as many languages you want
  2. একটি দম্পতি তৈরি এক্সটেনশন করার লোকেল

    extension Locale {
    
        static var enLocale: Locale {
    
            return Locale(identifier: "en-EN")
        } // to use in **currentLanguage** to get the localizedString in English
    
        static var currentLanguage: Language? {
    
            guard let code = preferredLanguages.first?.components(separatedBy: "-").last else {
    
                print("could not detect language code")
    
                return nil
            }
    
            guard let rawValue = enLocale.localizedString(forLanguageCode: code) else {
    
                print("could not localize language code")
    
                return nil
            }
    
            guard let language = Language(rawValue: rawValue) else {
    
                print("could not init language from raw value")
    
                return nil
            }
            print("language: \(code)-\(rawValue)")
    
            return language
        }
    }
  3. আপনার যখন প্রয়োজন হবে, আপনি কেবল এক্সটেনশনটি ব্যবহার করতে পারেন

    if let currentLanguage = Locale.currentLanguage {
        print(currentLanguage.rawValue)
        // Your code here.
    }

ধন্যবাদ @ সিস্কেল :)
— মিনিয়াপ্পস

এক্সটেনশনটি ভালোবাসি :)। এটি কোনওভাবে পড়তে না পারলে আর ফিরে না আসা আরও অর্থবোধ করে না। কারণ সেই মানটি কিছু মান তৈরি করতে ব্যবহৃত হতে পারে।
— অ্যালিক্স

5

সুইফটে, আপনি লোকেলটি ব্যবহার করে পেতে পারেন।

let locale = Locale.current.identifier

2

Locale.current.languageCode আমাকে ভুল কোড দেয়, তাই আমি এই এক্সটেনশনগুলি ব্যবহার করি:

extension Locale {
    static var preferredLanguageCode: String {
        let defaultLanguage = "en"
        let preferredLanguage = preferredLanguages.first ?? defaultLanguage
        return Locale(identifier: preferredLanguage).languageCode ?? defaultLanguage
    }

    static var preferredLanguageCodes: [String] {
        return Locale.preferredLanguages.compactMap({Locale(identifier: $0).languageCode})
    }
}

0

এটি আমি সুইফ্ট 5 এক্সকোড 11 এ ব্যবহার করি:

শ্রেণীর ভেরিয়েবলের ভিতরে:

let languagePrefix = Bundle.main.preferredLocalizations.first?.prefix(2)

এটি একটি স্ট্রিং হিসাবে আসে। এটি 2 টি অক্ষর, যেমন "এন", "এস", "ডি" প্রদান করে ...

এ থেকে আমি কোন ভাষাটি প্রদর্শিত হবে তা সহজেই নির্ধারণ করতে পারি:

 if languagePrefix == "es" { self.flipCard.setTitle("última carta", for: .normal) }
 if languagePrefix == "en" { self.flipCard.setTitle("Last Card", for: .normal) }

আপনি যদি ভাষাটির সম্পূর্ণ তথ্য চান, তবে? .প্রিফেক্স (2) সরান

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.