damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

TranslationService.swift (2105B)


      1 //
      2 //  TranslationService.swift
      3 //  damus
      4 //
      5 //  Created by Terry Yiu on 2/3/23.
      6 //
      7 
      8 import Foundation
      9 
     10 enum TranslationService: String, CaseIterable, Identifiable, StringCodable {
     11     init?(from string: String) {
     12         guard let ts = TranslationService(rawValue: string) else {
     13             return nil
     14         }
     15         
     16         self = ts
     17     }
     18     
     19     func to_string() -> String {
     20         return self.rawValue
     21     }
     22     
     23     var id: String { self.rawValue }
     24 
     25     struct Model: Identifiable, Hashable {
     26         var id: String { self.tag }
     27         var tag: String
     28         var displayName: String
     29     }
     30 
     31     case none
     32     case purple
     33     case libretranslate
     34     case deepl
     35     case nokyctranslate
     36     case winetranslate
     37 
     38     var model: Model {
     39         switch self {
     40         case .none:
     41             return .init(tag: self.rawValue, displayName: NSLocalizedString("none_translation_service", value: "None", comment: "Dropdown option for selecting no translation service."))
     42         case .purple:
     43             return .init(tag: self.rawValue, displayName: NSLocalizedString("Damus Purple", comment: "Dropdown option for selecting Damus Purple as a translation service."))
     44         case .libretranslate:
     45             return .init(tag: self.rawValue, displayName: NSLocalizedString("LibreTranslate (Open Source)", comment: "Dropdown option for selecting LibreTranslate as the translation service."))
     46         case .deepl:
     47             return .init(tag: self.rawValue, displayName: NSLocalizedString("DeepL (Proprietary, Higher Accuracy)", comment: "Dropdown option for selecting DeepL as the translation service."))
     48         case .nokyctranslate:
     49             return .init(tag: self.rawValue, displayName: NSLocalizedString("NoKYCTranslate.com (Prepay with BTC)", comment: "Dropdown option for selecting NoKYCTranslate.com as the translation service."))
     50          case .winetranslate:
     51             return .init(tag: self.rawValue, displayName: NSLocalizedString("translate.nostr.wine (DeepL, Pay with BTC)", comment: "Dropdown option for selecting translate.nostr.wine as the translation service."))
     52         }
     53     }
     54 }