Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // BundleExt.swift
- // LocalizeTest3
- //
- // Created by Mor on 16/12/2019.
- // Copyright © 2019 Mor. All rights reserved.
- //
- import Foundation
- import UIKit
- private var kBundleKey: UInt8 = 0
- class BundleEx: Bundle {
- override func localizedString(forKey key: String, value: String?, table tableName: String?) -> String {
- if let bundle = objc_getAssociatedObject(self, &kBundleKey) {
- return (bundle as! Bundle).localizedString(forKey: key, value: value, table: tableName)
- }
- return super.localizedString(forKey: key, value: value, table: tableName)
- }
- }
- extension Bundle {
- static let once: Void = {
- object_setClass(Bundle.main, type(of: BundleEx()))
- }()
- class func setLanguage(_ language: String?) {
- Bundle.once
- let isLanguageRTL = Bundle.isLanguageRTL(language)
- if (isLanguageRTL) {
- UIView.appearance().semanticContentAttribute = .forceRightToLeft
- } else {
- UIView.appearance().semanticContentAttribute = .forceLeftToRight
- }
- UserDefaults.standard.set(isLanguageRTL, forKey: "AppleTextDirection")
- UserDefaults.standard.set(isLanguageRTL, forKey: "NSForceRightToLeftWritingDirection")
- UserDefaults.standard.synchronize()
- let value = (language != nil ? Bundle.init(path: (Bundle.main.path(forResource: language, ofType: "lproj"))!) : nil)
- objc_setAssociatedObject(Bundle.main, &kBundleKey, value, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC);
- }
- class func isLanguageRTL(_ languageCode: String?) -> Bool {
- return (languageCode != nil && Locale.characterDirection(forLanguage: languageCode!) == .rightToLeft)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement