zwallet-ios/ZWallet/Infrastructure/Localization.swift

54 lines
1.3 KiB
Swift

//
// Localization.swift
// ZWallet
//
// Created by loj on 06.01.19.
// Copyright © 2019 XMR Systems LLC. All rights reserved.
//
import Foundation
internal protocol Localizable: class {
func localized(_ text: String) -> String
}
internal class Localization: Localizable {
private var languageBundle: Bundle
private let languageId = "en"
public init() {
let path = Bundle.main.path(forResource: self.languageId, ofType: "lproj")!
self.languageBundle = Bundle(path: path)!
}
public func localized(_ text: String) -> String {
return self.languageBundle.localizedString(forKey: text, value: text, table: "InfoPlist")
}
}
extension Localization {
public static func initialLanguage() -> String {
let preferredLanguages = Locale.preferredLanguages
let supportedLanguages = LanguageId.allCases.map { $0.rawValue }
for preferredLanguage in preferredLanguages {
if supportedLanguages.contains(preferredLanguage) {
return preferredLanguage
}
for supportedLanguage in supportedLanguages {
if preferredLanguage.starts(with: supportedLanguage) {
return supportedLanguage
}
}
}
return Constants.defaultLanguage
}
}