0001    //
0002    //  Localize.swift
0003    //  Localize
0004    //
0005    //  Created by Roy Marmelstein on 05/08/2015.
0006    //  Copyright © 2015 Roy Marmelstein. All rights reserved.
0007    //
0008    
0009    import Foundation
0010    
0011    /// Internal current language key
0012    let LCLCurrentLanguageKey
Localize.swift:110
        if let currentLanguage = NSUserDefaults.standardUserDefaults().objectForKey(LCLCurrentLanguageKey) as? String {
Localize.swift:123
            NSUserDefaults.standardUserDefaults().setObject(selectedLanguage, forKey: LCLCurrentLanguageKey)
= "LCLCurrentLanguageKey" 0013 0014 /// Default language. English. If English is unavailable defaults to base localization. 0015 let LCLDefaultLanguage
Localize.swift:136
            return LCLDefaultLanguage
Localize.swift:143
            defaultLanguage = LCLDefaultLanguage
= "en" 0016 0017 /// Base bundle as fallback. 0018 let LCLBaseBundle
Localize.swift:65
        else if let path = NSBundle.mainBundle().pathForResource(LCLBaseBundle, ofType: "lproj"), bundle = NSBundle(path: path) {
= "Base" 0019 0020 /// Name for language change notification 0021 public let LCLLanguageChangeNotification
Localize.swift:125
            NSNotificationCenter.defaultCenter().postNotificationName(LCLLanguageChangeNotification, object: nil)
= "LCLLanguageChangeNotification" 0022 0023 // MARK: Localization Syntax 0024 0025 /** 0026 Swift 1.x friendly localization syntax, replaces NSLocalizedString 0027 - Parameter string: Key to be localized. 0028 - Returns: The localized string. 0029 */ 0030 public func Localized(string: String) -> String { 0031 return string.localized() 0032 } 0033 0034 /** 0035 Swift 1.x friendly localization syntax with format arguments, replaces String(format:NSLocalizedString) 0036 - Parameter string: Key to be localized. 0037 - Returns: The formatted localized string with arguments. 0038 */ 0039 public func Localized(string: String, arguments: CVarArgType...) -> String { 0040 return String(format: string.localized(), arguments: arguments) 0041 } 0042 0043 /** 0044 Swift 1.x friendly plural localization syntax with a format argument 0045 0046 - parameter string: String to be formatted 0047 - parameter argument: Argument to determine pluralisation 0048 0049 - returns: Pluralized localized string. 0050 */ 0051 public func LocalizedPlural(string: String, argument: CVarArgType) -> String { 0052 return string.localizedPlural(argument) 0053 } 0054 0055 0056 public extension String { 0057 /** 0058 Swift 2 friendly localization syntax, replaces NSLocalizedString 0059 - Returns: The localized string. 0060 */ 0061 func localized
Localize.swift:31
    return string.localized()
Localize.swift:40
    return String(format: string.localized(), arguments: arguments)
Localize.swift:76
        return String(format: localized(), arguments: arguments)
Localize.swift:87
        return NSString.localizedStringWithFormat(localized(), argument) as String
() -> String { 0062 if let path = NSBundle.mainBundle().pathForResource(Localize.currentLanguage(), ofType: "lproj"), bundle = NSBundle(path: path) { 0063 return bundle.localizedStringForKey(self, value: nil, table: nil) 0064 } 0065 else if let path = NSBundle.mainBundle().pathForResource(LCLBaseBundle, ofType: "lproj"), bundle = NSBundle(path: path) { 0066 return bundle.localizedStringForKey(self, value: nil, table: nil) 0067 } 0068 return self 0069 } 0070 0071 /** 0072 Swift 2 friendly localization syntax with format arguments, replaces String(format:NSLocalizedString) 0073 - Returns: The formatted localized string with arguments. 0074 */ 0075 func localizedFormat(arguments: CVarArgType...) -> String { 0076 return String(format: localized(), arguments: arguments) 0077 } 0078 0079 /** 0080 Swift 2 friendly plural localization syntax with a format argument 0081 0082 - parameter argument: Argument to determine pluralisation 0083 0084 - returns: Pluralized localized string. 0085 */ 0086 func localizedPlural
Localize.swift:52
    return string.localizedPlural(argument)
(argument: CVarArgType) -> String { 0087 return NSString.localizedStringWithFormat(localized(), argument) as String 0088 } 0089 } 0090 0091 0092 0093 // MARK: Language Setting Functions 0094 0095 public class Localize
Localize.swift:62
        if let path = NSBundle.mainBundle().pathForResource(Localize.currentLanguage(), ofType: "lproj"), bundle = NSBundle(path: path) {
: NSObject { 0096 0097 /** 0098 List available languages 0099 - Returns: Array of available languages. 0100 */ 0101 public class func availableLanguages
Localize.swift:121
        let selectedLanguage = availableLanguages().contains(language) ? language : defaultLanguage()
Localize.swift:138
        let availableLanguages: [String] = self.availableLanguages()
() -> [String] { 0102 return NSBundle.mainBundle().localizations 0103 } 0104 0105 /** 0106 Current language 0107 - Returns: The current language. String. 0108 */ 0109 public class func currentLanguage
Localize.swift:62
        if let path = NSBundle.mainBundle().pathForResource(Localize.currentLanguage(), ofType: "lproj"), bundle = NSBundle(path: path) {
Localize.swift:122
        if (selectedLanguage != currentLanguage()){
Localize.swift:161
        let locale : NSLocale = NSLocale(localeIdentifier: currentLanguage())
() -> String { 0110 if let currentLanguage = NSUserDefaults.standardUserDefaults().objectForKey(LCLCurrentLanguageKey) as? String { 0111 return currentLanguage 0112 } 0113 return defaultLanguage() 0114 } 0115 0116 /** 0117 Change the current language 0118 - Parameter language: Desired language. 0119 */ 0120 public class func setCurrentLanguage
Localize.swift:152
        setCurrentLanguage(self.defaultLanguage())
(language: String) { 0121 let selectedLanguage = availableLanguages().contains(language) ? language : defaultLanguage() 0122 if (selectedLanguage != currentLanguage()){ 0123 NSUserDefaults.standardUserDefaults().setObject(selectedLanguage, forKey: LCLCurrentLanguageKey) 0124 NSUserDefaults.standardUserDefaults().synchronize() 0125 NSNotificationCenter.defaultCenter().postNotificationName(LCLLanguageChangeNotification, object: nil) 0126 } 0127 } 0128 0129 /** 0130 Default language 0131 - Returns: The app's default language. String. 0132 */ 0133 public class func defaultLanguage
Localize.swift:113
        return defaultLanguage()
Localize.swift:121
        let selectedLanguage = availableLanguages().contains(language) ? language : defaultLanguage()
Localize.swift:152
        setCurrentLanguage(self.defaultLanguage())
() -> String { 0134 var defaultLanguage: String = String() 0135 guard let preferredLanguage = NSBundle.mainBundle().preferredLocalizations.first else { 0136 return LCLDefaultLanguage 0137 } 0138 let availableLanguages: [String] = self.availableLanguages() 0139 if (availableLanguages.contains(preferredLanguage)) { 0140 defaultLanguage = preferredLanguage 0141 } 0142 else { 0143 defaultLanguage = LCLDefaultLanguage 0144 } 0145 return defaultLanguage 0146 } 0147 0148 /** 0149 Resets the current language to the default 0150 */ 0151 public class func resetCurrentLanguageToDefault() { 0152 setCurrentLanguage(self.defaultLanguage()) 0153 } 0154 0155 /** 0156 Get the current language's display name for a language. 0157 - Parameter language: Desired language. 0158 - Returns: The localized string. 0159 */ 0160 public class func displayNameForLanguage(language: String) -> String { 0161 let locale : NSLocale = NSLocale(localeIdentifier: currentLanguage()) 0162 if let displayName = locale.displayNameForKey(NSLocaleLanguageCode, value: language) { 0163 return displayName 0164 } 0165 return String() 0166 } 0167 } 0168 0169