#!/usr/bin/env retro

Overview

Toki Pona is a very small constructed language. This is a quick and dirty tool to provide a (very) rough translation to English.

A couple of resources:

• http://tokipona.org
• http://tokipona.net/tp/janpije/index.php

The Code

~~~:translate     'a       [ '[emphasis]  ] s:case   'akesi   [ 'lizard      ] s:case   'ala     [ 'no          ] s:case   'alasa   [ 'hunt        ] s:case   'ale     [ 'all         ] s:case   'anpa    [ 'low         ] s:case   'ante    [ 'different   ] s:case   'anu     [ 'or          ] s:case   'awen    [ 'keep        ] s:case   'e       [ '[object]    ] s:case   'en      [ 'and         ] s:case   'esun    [ 'shop        ] s:case   'ijo     [ 'thing       ] s:case   'ike     [ 'bad         ] s:case   'ilo     [ 'tool        ] s:case   'insa    [ 'inside      ] s:case   'jaki    [ 'dirty       ] s:case   'jan     [ 'person      ] s:case   'jelo    [ 'yellow      ] s:case   'jo      [ 'have        ] s:case   'kala    [ 'fish        ] s:case   'kalama  [ 'sound       ] s:case   'kama    [ 'come        ] s:case   'kasi    [ 'plant       ] s:case   'ken     [ 'can         ] s:case   'kepeken [ 'use         ] s:case   'kili    [ 'fruit       ] s:case   'kiwen   [ 'rock        ] s:case   'ko      [ 'paste       ] s:case   'kon     [ 'air         ] s:case   'kule    [ 'color       ] s:case   'kulupu  [ 'group       ] s:case   'kute    [ 'hear        ] s:case   'la      [ '[context]   ] s:case   'lape    [ 'sleep       ] s:case   'laso    [ 'green       ] s:case   'lawa    [ 'head        ] s:case   'len     [ 'cloth       ] s:case   'lete    [ 'cold        ] s:case   'li      [ '[predicate] ] s:case   'lili    [ 'small       ] s:case   'linja   [ 'line        ] s:case   'lipu    [ 'paper       ] s:case   'loje    [ 'red         ] s:case   'lon     [ 'at          ] s:case   'luka    [ 'hand        ] s:case   'lukin   [ 'see         ] s:case   'lupa    [ 'hole        ] s:case   'ma      [ 'land        ] s:case   'mama    [ 'parent      ] s:case   'mani    [ 'money       ] s:case   'meli    [ 'woman       ] s:case   'mi      [ 'me          ] s:case   'mije    [ 'man         ] s:case   'moku    [ 'eat         ] s:case   'moli    [ 'dead        ] s:case   'monsi   [ 'back        ] s:case   'mu      [ '[meow]      ] s:case   'mun     [ 'moon        ] s:case   'musi    [ 'play        ] s:case   'mute    [ 'many        ] s:case   'nanpa   [ 'number      ] s:case   'nasa    [ 'strange     ] s:case   'nasin   [ 'way         ] s:case   'nena    [ 'mountain    ] s:case   'ni      [ 'this        ] s:case   'nimi    [ 'name        ] s:case   'noka    [ 'foot        ] s:case   'o       [ '[command]   ] s:case   'olin    [ 'love        ] s:case   'ona     [ 'it          ] s:case   'open    [ 'open        ] s:case   'pakala  [ 'break       ] s:case   'pali    [ 'do          ] s:case   'palisa  [ 'stick       ] s:case   'pan     [ 'food        ] s:case   'pana    [ 'give        ] s:case   'pi      [ 'of          ] s:case   'pilin   [ 'feel        ] s:case   'pimeja  [ 'black       ] s:case   'pini    [ 'end         ] s:case   'pipi    [ 'bug         ] s:case   'poka    [ 'near        ] s:case   'poki    [ 'container   ] s:case   'pona    [ 'good        ] s:case   'pu      [ 'book        ] s:case   'sama    [ 'same        ] s:case   'seli    [ 'fire        ] s:case   'selo    [ 'skin        ] s:case   'seme    [ 'what        ] s:case   'sewi    [ 'high        ] s:case   'sijelo  [ 'form        ] s:case   'sike    [ 'circle      ] s:case   'sin     [ 'new         ] s:case   'sina    [ 'you         ] s:case   'sinpin  [ 'face        ] s:case   'sitelen [ 'picture     ] s:case   'sona    [ 'know        ] s:case   'soweli  [ 'animal      ] s:case   'suli    [ 'big         ] s:case   'suno    [ 'sun         ] s:case   'supa    [ 'table       ] s:case   'suwi    [ 'sweet       ] s:case   'tan     [ 'from        ] s:case   'taso    [ 'but         ] s:case   'tawa    [ 'to          ] s:case   'telo    [ 'water       ] s:case   'tenpo   [ 'time        ] s:case   'toki    [ 'talk        ] s:case   'tomo    [ 'house       ] s:case   'tu      [ 'two         ] s:case   'unpa    [ 'sex         ] s:case   'uta     [ 'mouth       ] s:case   'utala   [ 'fight       ] s:case   'walo    [ 'while       ] s:case   'wan     [ 'one         ] s:case   'waso    [ 'bird        ] s:case   'wawa    [ 'strong      ] s:case   'weka    [ 'away        ] s:case   'wile    [ 'want        ] s:case ; ~~~

~~~{{   'Fenced var   :toggle-fence @Fenced not !Fenced ;   :fenced? (-f) @Fenced ;   :handle-line (s-)     fenced? [ over call ] [ drop ] choose ; ---reveal---   :unu (sq-)     swap [ dup   '~~~ s:eq?            [ drop toggle-fence ]            [ handle-line       ] choose          ] file:for-each-line drop ; }} ~~~

~~~:clean    [ [ c:letter? ] [ c:whitespace? ] bi or ] s:filter ; :original dup s:put nl tab ; :tokens   ASCII:SPACE s:tokenize ; :convert  [ translate s:put sp ] a:for-each nl ; #0 script:get-argument [ s:to-lower clean original tokens convert ] unu ~~~