mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-16 10:30:08 +00:00

Added support for "contact joined" service messages Updated password recovery API Updated Localization APIs Added limited contact presence polling after getDifference
85 lines
3.8 KiB
Swift
85 lines
3.8 KiB
Swift
import Foundation
|
|
#if os(macOS)
|
|
import PostboxMac
|
|
#else
|
|
import Postbox
|
|
#endif
|
|
|
|
public struct LocalizationInfo: PostboxCoding, Equatable {
|
|
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 let platformUrl: String
|
|
|
|
public init(languageCode: String, baseLanguageCode: String?, customPluralizationCode: String?, title: String, localizedTitle: String, isOfficial: Bool, totalStringCount: Int32, translatedStringCount: Int32, platformUrl: String) {
|
|
self.languageCode = languageCode
|
|
self.baseLanguageCode = baseLanguageCode
|
|
self.customPluralizationCode = customPluralizationCode
|
|
self.title = title
|
|
self.localizedTitle = localizedTitle
|
|
self.isOfficial = isOfficial
|
|
self.totalStringCount = totalStringCount
|
|
self.translatedStringCount = translatedStringCount
|
|
self.platformUrl = platformUrl
|
|
}
|
|
|
|
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)
|
|
self.platformUrl = decoder.decodeStringForKey("platformUrl", orElse: "")
|
|
}
|
|
|
|
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")
|
|
encoder.encodeString(self.platformUrl, forKey: "platformUrl")
|
|
}
|
|
}
|
|
|
|
extension LocalizationInfo {
|
|
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, platformUrl: language.translationsUrl)
|
|
}
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|