View on GitHub

Stagyrite

🏡 Pagina domestica 🏡

Languages

My language proficiency

🔢 🎌 Language CEFR
1️⃣ 🇬🇧 English B1
2️⃣ 🇩🇪 German A2
3️⃣ 🇵🇱 Polish N

Speaking Streem

./streem languageVersions.strm
get = {
    case [], _ -> nil
    case [x, *y], 0 -> x
    case [x, *y], n -> get(y, n - 1)
}

getName = (x, language) -> {

        if (language == "en") {
                index = 0
        } else if (language == "pl") {
                index = 1
        } else if (language == "fr") {
                index = 2
        } else if (language == "de") {
                index = 3
        } else {
                ""
        }

        get(x, index)
}

hasName = (x, english) -> { getName(x, "en") == english }
translationsCsv = csv()
["string,string,string,string"] | translationsCsv
stream = fread("translations.csv") | translationsCsv

translate = (english, language) -> {
        thisFilter = filter{ x -> hasName(x, english) }
        translateThis = map { x -> getName(x, language) }
        translationsCsv | thisFilter | translateThis
}

translations = kvs()
product = kvs()

translateProduct = (name) -> {
        translations.put(name + "_pl", translate(name, "pl"))
        translations.put(name + "_fr", translate(name, "fr"))
        translations.put(name + "_de", translate(name, "de"))
        product.put("name", name)
        product.put("name_pl", name)
        product.put("name_fr", name)
        product.put("name_de", name)
        product.update("name_pl") { x -> translations.get(x + "_pl") }
        product.update("name_fr") { x -> translations.get(x + "_fr") }
        product.update("name_de") { x -> translations.get(x + "_de") }
}

translateProduct("lawn rake")
product.get("name_fr") | map { x -> "🇫🇷 " + x } | stdout

# Output: 🇫🇷 Râteau à gazon

🔵⚪️⛵️🧿