NSLocalizedString with swift variable

后端 未结 6 881
清歌不尽
清歌不尽 2020-11-29 02:50

I\'m trying to localize my app using NSLocalizedString. When i import the XLIFF file, most works like a charm but something do not and some string is not localized. I have n

相关标签:
6条回答
  • 2020-11-29 03:02

    In Session #412 of the WWDC2014 "Localizing with Xcode 6" the proper way to this in Swift is the following:

    String.localizedStringWithFormat(
        NSLocalizedString(" - %d Notifica",
        comment: "sottotitolo prescrizione per le notifiche al singolare"),
        count)
    
    0 讨论(0)
  • 2020-11-29 03:03

    You can use the sprintf format parameters within NSLocalizedString, so your example can look like this:

    let myString = String(format: NSLocalizedString(" - %d Notifica", comment: "sottotitolo prescrizione per le notifiche al singolare"), count)
    
    0 讨论(0)
  • 2020-11-29 03:05

    I created an extension to String since I had many strings to be localized.

    extension String {
        var localized: String {
            return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
        }
    }
    

    For example:

    let myValue = 10
    let anotherValue = "another value"
    
    let localizedStr = "This string is localized: \(myValue) \(anotherValue)".localized
    print(localizedStr)
    
    0 讨论(0)
  • I tried the above solutions however the code below worked for me

    SWIFT 4

    extension String {
    
        /// Fetches a localized String
        ///
        /// - Returns: return value(String) for key
        public func localized() -> String {
            let path = Bundle.main.path(forResource: "en", ofType: "lproj")
            let bundle = Bundle(path: path!)
            return (bundle?.localizedString(forKey: self, value: nil, table: nil))!
        }
    
    
        /// Fetches a localised String Arguments
        ///
        /// - Parameter arguments: parameters to be added in a string
        /// - Returns: localized string
        public func localized(with arguments: [CVarArg]) -> String {
            return String(format: self.localized(), locale: nil, arguments: arguments)
        }
    
    }
    
    // variable in a class
     let tcAndPPMessage = "By_signing_up_or_logging_in,_you_agree_to_our"
                                         .localized(with: [tAndc, pp, signin])
    
    // Localization File String
    "By_signing_up_or_logging_in,_you_agree_to_our" = "By signing up or logging in, you agree to our \"%@\" and \"%@\" \nAlready have an Account? \"%@\"";
    
    0 讨论(0)
  • 2020-11-29 03:15

    Here is an extension I use in String, it adds a localizeWithFormat function with variable arguments,

    extension String:{
    
         func localizeWithFormat(arguments: CVarArg...) -> String{
            return String(format: self.localized, arguments: arguments)        
         }
    
         var localized: String{
             return Bundle.main.localizedString(forKey: self, value: nil, table: "StandardLocalizations")
         }
    }
    

    Usage:

    let siriCalendarText = "AnyCalendar"
    let localizedText = "LTo use Siri with my app, please set %@ as the default list on your device reminders settings".localizeWithFormat(arguments: siriCalendarTitle)
    

    Just be careful not to use the same function and property names that String has. I normally use a 3 letter prefix for all my framework functions.

    0 讨论(0)
  • 2020-11-29 03:22

    I have followed the approach of creating extension to String as i have many strings to localize.

    extension String {
        var localized: String {
            return NSLocalizedString(self, comment:"")
        }
    }
    

    To use it for localization in code do:

    self.descriptionView.text = "Description".localized
    

    For strings with dynamic variables follow :

    self.entryTimeLabel.text = "\("Doors-open-at".localized) \(event.eventStartTime)"
    

    Declare the strings in String files for different languages (example : Arabic and English)

    Hope will be helping!

    0 讨论(0)
提交回复
热议问题