Advertisement
Guest User

bundleExt

a guest
Dec 16th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. //
  2. // BundleExt.swift
  3. // LocalizeTest3
  4. //
  5. // Created by Mor on 16/12/2019.
  6. // Copyright © 2019 Mor. All rights reserved.
  7. //
  8.  
  9. import Foundation
  10. import UIKit
  11.  
  12. private var kBundleKey: UInt8 = 0
  13.  
  14. class BundleEx: Bundle {
  15.  
  16. override func localizedString(forKey key: String, value: String?, table tableName: String?) -> String {
  17. if let bundle = objc_getAssociatedObject(self, &kBundleKey) {
  18. return (bundle as! Bundle).localizedString(forKey: key, value: value, table: tableName)
  19. }
  20. return super.localizedString(forKey: key, value: value, table: tableName)
  21. }
  22.  
  23. }
  24.  
  25. extension Bundle {
  26.  
  27. static let once: Void = {
  28. object_setClass(Bundle.main, type(of: BundleEx()))
  29. }()
  30.  
  31. class func setLanguage(_ language: String?) {
  32. Bundle.once
  33. let isLanguageRTL = Bundle.isLanguageRTL(language)
  34. if (isLanguageRTL) {
  35. UIView.appearance().semanticContentAttribute = .forceRightToLeft
  36. } else {
  37. UIView.appearance().semanticContentAttribute = .forceLeftToRight
  38. }
  39. UserDefaults.standard.set(isLanguageRTL, forKey: "AppleTextDirection")
  40. UserDefaults.standard.set(isLanguageRTL, forKey: "NSForceRightToLeftWritingDirection")
  41. UserDefaults.standard.synchronize()
  42.  
  43. let value = (language != nil ? Bundle.init(path: (Bundle.main.path(forResource: language, ofType: "lproj"))!) : nil)
  44. objc_setAssociatedObject(Bundle.main, &kBundleKey, value, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  45. }
  46.  
  47. class func isLanguageRTL(_ languageCode: String?) -> Bool {
  48. return (languageCode != nil && Locale.characterDirection(forLanguage: languageCode!) == .rightToLeft)
  49. }
  50.  
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement