TUIRoomKitLocalized.swift 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // RoomKitLocalized.swift
  3. // TUIRoomKit
  4. //
  5. // Created by WesleyLei on 2022/9/13.
  6. // Copyright © 2022 Tencent. All rights reserved.
  7. //
  8. import UIKit
  9. import TUICore
  10. func localized(_ key: String) -> String {
  11. if let bundlePath = tuiRoomKitBundle().path(forResource: TUIGlobalization.tk_localizableLanguageKey() ?? "", ofType: "lproj"),
  12. let bundle = Bundle(path: bundlePath) {
  13. return bundle.localizedString(forKey: key, value: "", table: "TUIRoomKitLocalized")
  14. }
  15. return TUIRoomKitLocalized.sharedBundle.localizedString(forKey: key, value: "", table: "TUIRoomKitLocalized")
  16. }
  17. func localizedReplace(_ origin: String, replace: String) -> String {
  18. return origin.replacingOccurrences(of: "xx", with: replace)
  19. }
  20. func tuiRoomKitBundle() -> Bundle {
  21. return TUIRoomKitLocalized.sharedBundle
  22. }
  23. private class TUIRoomKitLocalized {
  24. class var sharedBundle: Bundle {
  25. struct Static {
  26. static let bundle: Bundle? = tuiRoomKitBundle()
  27. }
  28. guard let bundle = Static.bundle else {
  29. return Bundle()
  30. }
  31. return bundle
  32. }
  33. }
  34. private func tuiRoomKitBundle() -> Bundle? {
  35. var url: NSURL? = Bundle.main.url(forResource: "TUIRoomKitBundle", withExtension: "bundle") as NSURL?
  36. if let associateBundleURL = url {
  37. return Bundle(url: associateBundleURL as URL)
  38. }
  39. url = Bundle.main.url(forResource: "Frameworks", withExtension: nil) as NSURL?
  40. url = url?.appendingPathComponent("TUIRoomKit") as NSURL?
  41. url = url?.appendingPathComponent("framework") as NSURL?
  42. if let associateBundleURL = url {
  43. let bundle = Bundle(url: associateBundleURL as URL)
  44. url = bundle?.url(forResource: "TUIRoomKitBundle", withExtension: "bundle") as NSURL?
  45. if let associateBundleURL = url {
  46. return Bundle(url: associateBundleURL as URL)
  47. }
  48. }
  49. return nil
  50. }