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= "LCLCurrentLanguageKey" 0013 0014 /// Default language. English. If English is unavailable defaults to base localization. 0015 let LCLDefaultLanguage
Localize.swift:110 if let currentLanguage = NSUserDefaults.standardUserDefaults().objectForKey(LCLCurrentLanguageKey) as? String {Localize.swift:123 NSUserDefaults.standardUserDefaults().setObject(selectedLanguage, forKey: LCLCurrentLanguageKey)= "en" 0016 0017 /// Base bundle as fallback. 0018 let LCLBaseBundle
Localize.swift:136 return LCLDefaultLanguageLocalize.swift:143 defaultLanguage = LCLDefaultLanguage= "Base" 0019 0020 /// Name for language change notification 0021 public let LCLLanguageChangeNotification
Localize.swift:65 else if let path = NSBundle.mainBundle().pathForResource(LCLBaseBundle, ofType: "lproj"), bundle = NSBundle(path: path) {= "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:125 NSNotificationCenter.defaultCenter().postNotificationName(LCLLanguageChangeNotification, object: nil)() -> 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: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(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:52 return string.localizedPlural(argument): NSObject { 0096 0097 /** 0098 List available languages 0099 - Returns: Array of available languages. 0100 */ 0101 public class func availableLanguages
Localize.swift:62 if let path = NSBundle.mainBundle().pathForResource(Localize.currentLanguage(), ofType: "lproj"), bundle = NSBundle(path: path) {() -> [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:121 let selectedLanguage = availableLanguages().contains(language) ? language : defaultLanguage()Localize.swift:138 let availableLanguages: [String] = self.availableLanguages()() -> 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: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())(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: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
Localize.swift:113 return defaultLanguage()Localize.swift:121 let selectedLanguage = availableLanguages().contains(language) ? language : defaultLanguage()Localize.swift:152 setCurrentLanguage(self.defaultLanguage())