mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-17 19:09:56 +00:00
81 lines
3.5 KiB
Swift
81 lines
3.5 KiB
Swift
import Foundation
|
|
#if os(macOS)
|
|
import PostboxMac
|
|
#else
|
|
import Postbox
|
|
#endif
|
|
|
|
public final class LocalizationInfo: PostboxCoding {
|
|
public let languageCode: String
|
|
public let baseLanguageCode: String?
|
|
public let customPluralizationCode: String?
|
|
public let title: String
|
|
public let localizedTitle: String
|
|
public let isOfficial: Bool
|
|
public let totalStringCount: Int32
|
|
public let translatedStringCount: Int32
|
|
|
|
public init(languageCode: String, baseLanguageCode: String?, customPluralizationCode: String?, title: String, localizedTitle: String, isOfficial: Bool, totalStringCount: Int32, translatedStringCount: Int32) {
|
|
self.languageCode = languageCode
|
|
self.baseLanguageCode = baseLanguageCode
|
|
self.customPluralizationCode = customPluralizationCode
|
|
self.title = title
|
|
self.localizedTitle = localizedTitle
|
|
self.isOfficial = isOfficial
|
|
self.totalStringCount = totalStringCount
|
|
self.translatedStringCount = translatedStringCount
|
|
}
|
|
|
|
public init(decoder: PostboxDecoder) {
|
|
self.languageCode = decoder.decodeStringForKey("lc", orElse: "")
|
|
self.baseLanguageCode = decoder.decodeOptionalStringForKey("nlc")
|
|
self.customPluralizationCode = decoder.decodeOptionalStringForKey("cpc")
|
|
self.title = decoder.decodeStringForKey("t", orElse: "")
|
|
self.localizedTitle = decoder.decodeStringForKey("lt", orElse: "")
|
|
self.isOfficial = decoder.decodeInt32ForKey("of", orElse: 0) != 0
|
|
self.totalStringCount = decoder.decodeInt32ForKey("tsc", orElse: 0)
|
|
self.translatedStringCount = decoder.decodeInt32ForKey("lsc", orElse: 0)
|
|
}
|
|
|
|
public func encode(_ encoder: PostboxEncoder) {
|
|
encoder.encodeString(self.languageCode, forKey: "lc")
|
|
if let baseLanguageCode = self.baseLanguageCode {
|
|
encoder.encodeString(baseLanguageCode, forKey: "nlc")
|
|
} else {
|
|
encoder.encodeNil(forKey: "nlc")
|
|
}
|
|
if let customPluralizationCode = self.customPluralizationCode {
|
|
encoder.encodeString(customPluralizationCode, forKey: "cpc")
|
|
} else {
|
|
encoder.encodeNil(forKey: "cpc")
|
|
}
|
|
encoder.encodeString(self.title, forKey: "t")
|
|
encoder.encodeString(self.localizedTitle, forKey: "lt")
|
|
encoder.encodeInt32(self.isOfficial ? 1 : 0, forKey: "of")
|
|
encoder.encodeInt32(self.totalStringCount, forKey: "tsc")
|
|
encoder.encodeInt32(self.translatedStringCount, forKey: "lsc")
|
|
}
|
|
}
|
|
|
|
extension LocalizationInfo {
|
|
convenience init(apiLanguage: Api.LangPackLanguage) {
|
|
switch apiLanguage {
|
|
case let .langPackLanguage(language):
|
|
self.init(languageCode: language.langCode, baseLanguageCode: language.baseLangCode, customPluralizationCode: language.pluralCode, title: language.name, localizedTitle: language.nativeName, isOfficial: (language.flags & (1 << 0)) != 0, totalStringCount: language.stringsCount, translatedStringCount: language.translatedCount)
|
|
}
|
|
}
|
|
}
|
|
|
|
public final class SuggestedLocalizationInfo {
|
|
public let languageCode: String
|
|
public let extractedEntries: [LocalizationEntry]
|
|
|
|
public let availableLocalizations: [LocalizationInfo]
|
|
|
|
init(languageCode: String, extractedEntries: [LocalizationEntry], availableLocalizations: [LocalizationInfo]) {
|
|
self.languageCode = languageCode
|
|
self.extractedEntries = extractedEntries
|
|
self.availableLocalizations = availableLocalizations
|
|
}
|
|
}
|