Skip to content

Instantly share code, notes, and snippets.

@brdloush
Last active March 22, 2022 11:25
Show Gist options
  • Save brdloush/15432eeb261460a6a6fd0e6817a3ca50 to your computer and use it in GitHub Desktop.
Save brdloush/15432eeb261460a6a6fd0e6817a3ca50 to your computer and use it in GitHub Desktop.
babashka script for translating from english to multiple languages
#!/usr/bin/env bb
(ns translate
(:require [clojure.java.shell :refer [sh]]
[clojure.string :as str]))
(def langs ["en" "cs" "de" "it" "ro" "hu" "ru"])
(defn translate [s langs]
(let [langs-arg (str ":" (str/join "+" langs))
cli-command ["trans" "--brief" langs-arg s]
{:keys [out]} (apply sh cli-command)
translations (str/split-lines out)]
(->> (interleave (map keyword langs) translations)
(partition 2)
(map vec)
(into {}))))
(if-let [[message] *command-line-args*]
(let [translations (translate message langs)]
(println "Hello, please could I ask you to check following translations? Thanks :polite:\n")
(->> translations
(run! (fn [[lang translated]]
(println (format "%s: \"%s\"" (-> lang name str/upper-case) translated))))))
(println "usage: translate.clj \"Dobrý den\""))
@brdloush
Copy link
Author

~ time ./translate.clj "Russian warship, go fuck yourself"
Hello, please could I ask you to check following translations? Thanks :polite:

EN: "Russian warship, go fuck yourself"
CS: "Ruská válečná loď, běž se do prdele"
DE: "Russisches Kriegsschiff, fick dich selbst"
IT: "Nave da guerra russa, vai a farti fottere"
RO: "Nava de război rusească, du-te la naiba"
HU: "Orosz hadihajó, baszd meg magad"
RU: "Русский военный корабль, иди на хуй"
./translate.clj "Russian warship, go fuck yourself"  0,38s user 0,16s system 37% cpu 1,429 total

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment