Skip to content

Commit

Permalink
Implement Reverso Context #19
Browse files Browse the repository at this point in the history
-  Support languages in GTranslator
  • Loading branch information
filimo committed Oct 12, 2019
1 parent 97bb099 commit 6bd9db8
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 20 deletions.
37 changes: 21 additions & 16 deletions ReaderTranslator/Components/GTranslator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ struct GTranslator : ViewRepresentable, WKScriptsSetup {
static var pageView: WKPageView?

@ObservedObject private var store = Store.shared
private let defaultUrl = "https://translate.google.com?sl=auto&tl=ru"
private let defaultUrl = "https://translate.google.com?op=translate&sl=auto&tl=ru"

class Coordinator: WKCoordinator {
@Published var selectedText = TranslateAction.translator(text: "")
Expand Down Expand Up @@ -57,29 +57,19 @@ struct GTranslator : ViewRepresentable, WKScriptsSetup {

func updateView(_ view: WKPageView, context: Context) {
print("Translator_updateView")
let lastUrl = view.url?.absoluteString.replacingOccurrences(of: "#view=home", with: "")
let url = lastUrl ?? defaultUrl

guard var urlComponent = URLComponents(string: url) else { return }
guard let queryItems = urlComponent.queryItems else { return }

let oldText = queryItems.first(where: { $0.name == "text" })?.value ?? ""

if case let .translator(text, noReversoContext) = selectedText,
text != "",
text != oldText {

let sl = queryItems.first(where: { $0.name == "sl" })?.value
let tl = queryItems.first(where: { $0.name == "tl" })?.value

text != "" {
let (sl, tl) = getParams(url: view.url)
guard var urlComponent = URLComponents(string: defaultUrl) else { return }
urlComponent.queryItems = [
.init(name: "op", value: "translate"),
.init(name: "sl", value: sl),
.init(name: "tl", value: tl),
.init(name: "text", value: text)
]

if let url = urlComponent.url {
print("Translator_updateView_reload")
print("Translator_updateView_reload", url)
view.load(URLRequest(url: url))
}

Expand All @@ -88,6 +78,21 @@ struct GTranslator : ViewRepresentable, WKScriptsSetup {
}
}
}

private func getParams(url: URL?) -> (String?, String?) {
let lastUrl = url?.absoluteString.replacingOccurrences(of: "#view=home", with: "")
let url = lastUrl ?? defaultUrl

guard let urlComponent = URLComponents(string: url) else { return (nil, nil) }
let queryItems = urlComponent.queryItems

selectedText = .none

let sl = queryItems?.last(where: { $0.name == "sl" })?.value
let tl = queryItems?.last(where: { $0.name == "tl" })?.value

return (sl, tl)
}
}

extension GTranslator.Coordinator: WKScriptMessageHandler {
Expand Down
2 changes: 2 additions & 0 deletions ReaderTranslator/Components/ReversoContext.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ struct ReversoContext : ViewRepresentable, WKScriptsSetup {

guard case let .reversoContext(text) = selectedText else { return }

selectedText = .none

let search = text.replacingOccurrences(of: " ", with: "+")
let urlString = "\(host)\(search)"

Expand Down
8 changes: 4 additions & 4 deletions ReaderTranslator/Stores/Store.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ enum ViewMode: String, Codable {
}

enum TranslateAction: Equatable {
case none
case reversoContext(text: String)
case translator(text: String, noReversoContext: Bool = false)

func getText() -> String {
switch self {
case .reversoContext(let text):
return text
case .translator(let text, _):
return text
case .none: return ""
case .reversoContext(let text): return text
case .translator(let text, _): return text
}
}
}
Expand Down

0 comments on commit 6bd9db8

Please sign in to comment.