Seen's keywords are defined in external TOML files, enabling programming in 6 languages with no compiler changes.
Each language has a directory under languages/ containing TOML files for keywords, operators, and standard library names. The lexer reads these at compile time to tokenize source in the specified language.
seen build hello.seen --language ar # Compile Arabic source
seen build hello.seen --language es # Compile Spanish source
seen build hello.seen -l zh # Compile Chinese source
The language field in Seen.toml sets the default:
[project]
name = "my_project"
language = "ar"
fun main() {
println("Hello, World!")
}
دالة main() {
println("!مرحبا بالعالم")
}
función main() {
println("Hola, Mundo!")
}
функция main() {
println("Привет, мир!")
}
函数 main() {
println("你好,世界!")
}
関数 main() {
println("こんにちは、世界!")
}
| English | Arabic | Spanish | Russian | Chinese | Japanese |
|---|---|---|---|---|---|
fun |
دالة |
función |
функция |
函数 |
関数 |
if |
إذا |
si |
если |
如果 |
もし |
else |
وإلا |
sino |
иначе |
否则 |
そうでなければ |
while |
بينما |
mientras |
пока |
当 |
間 |
for |
لكل |
para |
для |
对于 |
のために |
in |
في |
en |
в |
在 |
で |
match |
طابق |
coincidir |
совпадение |
匹配 |
一致 |
break |
اكسر |
romper |
прервать |
中断 |
中止 |
continue |
استمر |
continuar |
продолжить |
继续 |
継続 |
return |
رجع |
retornar |
вернуть |
返回 |
戻る |
when |
عندما |
cuando |
когда |
当时 |
場合 |
try |
جرب |
intentar |
попробовать |
尝试 |
試行 |
catch |
امسك |
capturar |
поймать |
捕获 |
捕捉 |
finally |
أخيرا |
finalmente |
наконец |
最终 |
最後に |
throw |
ارم |
lanzar_error |
бросить |
抛出 |
投げる |
loop |
حلقة |
bucle |
цикл |
循环 |
繰返 |
defer |
أجل |
diferir |
отложить |
延迟 |
延期 |
assert |
أكد |
afirmar |
утверждать |
断言 |
表明 |
unsafe |
غير_آمن |
inseguro |
небезопасный |
不安全 |
安全でない |
errdefer |
أجل_خطأ |
diferir_error |
отложить_ошибку |
错误延迟 |
エラー延期 |
| English | Arabic | Spanish | Russian | Chinese | Japanese |
|---|---|---|---|---|---|
class |
فئة |
clase |
класс |
类 |
クラス |
struct |
هيكل |
estructura |
структура |
结构 |
構造体 |
enum |
تعداد |
enumeración |
перечисление |
枚举 |
列挙 |
data |
بيانات |
datos |
данные |
数据 |
データ |
trait |
سمة |
rasgo_tipo |
трейт |
特征 |
トレイト |
impl |
تطبيق |
implementar |
реализовать |
实现 |
実装 |
type |
نوع |
tipo |
тип |
类型 |
型 |
interface |
واجهة |
interfaz |
интерфейс |
接口 |
インターフェース |
extends |
يمتد |
extiende |
расширяет |
继承 |
継承 |
sealed |
مختوم |
sellado |
запечатанный |
密封 |
封印 |
object |
كائن |
objeto |
объект |
对象 |
オブジェクト |
abstract |
مجرد |
abstracto |
абстрактный |
抽象 |
抽象 |
final |
نهائي |
final |
финальный |
最终的 |
最終 |
override |
تجاوز |
anular |
переопределить |
重写 |
上書き |
open |
مفتوح |
abierto |
открытый |
开放 |
開放 |
extension |
امتداد |
extensión |
расширение |
扩展 |
拡張 |
companion |
رفيق |
compañero |
компаньон |
伴生 |
同伴 |
spec |
صفة |
rasgo |
черта |
规范 |
仕様 |
distinct |
مميز |
distinto |
различный |
独特 |
独自 |
union |
اتحاد |
unión |
объединение |
联合 |
共用体 |
lateinit |
متأخر_البدء |
init_tardío |
поздняя_инициализация |
延迟初始化 |
遅延初期化 |
| English | Arabic | Spanish | Russian | Chinese | Japanese |
|---|---|---|---|---|---|
let |
اجعل |
sea |
пусть |
让 |
定数 |
var |
متغير |
variable |
переменная |
变量 |
変数 |
val |
ثابت |
valor |
значение |
值 |
値 |
mut |
قابل_للتغيير |
mutable |
изменяемый |
可变 |
可変 |
const |
ثابت_عام |
constante |
константа |
常量 |
定義 |
static |
ساكن |
estático |
статический |
静态 |
静的 |
| English | Arabic | Spanish | Russian | Chinese | Japanese |
|---|---|---|---|---|---|
module |
وحدة |
módulo |
модуль |
模块 |
モジュール |
import |
استورد |
importar |
импортировать |
导入 |
インポート |
use |
استخدم |
usar |
использовать |
使用 |
使用 |
external |
خارجي |
externo |
внешний |
外部 |
外部 |
| English | Arabic | Spanish | Russian | Chinese | Japanese |
|---|---|---|---|---|---|
true |
صحيح |
verdadero |
истина |
真 |
真 |
false |
خطأ |
falso |
ложь |
假 |
偽 |
null |
عدم |
nulo |
ноль |
空 |
空 |
| English | Arabic | Spanish | Russian | Chinese | Japanese |
|---|---|---|---|---|---|
async |
غير_متزامن |
asíncrono |
асинхронный |
异步 |
非同期 |
await |
انتظر |
esperar |
ждать |
等待 |
待機 |
spawn |
ولد |
generar |
породить |
生成 |
生成 |
select |
اختر |
seleccionar |
выбрать |
选择 |
選択 |
actor |
ممثل |
actor |
актёр |
角色 |
アクター |
receive |
استقبل |
recibir |
получить |
接收 |
受信 |
send |
أرسل |
enviar |
отправить |
发送 |
送信 |
parallel_for |
parallel_for |
parallel_for |
parallel_for |
并行遍历 |
並列反復 |
scope |
نطاق |
ambito |
scope |
域 |
スコープ |
cancel |
الغاء |
cancelar |
cancel |
取消 |
キャンセル |
detached |
منفصل |
desvinculado |
detached |
分离 |
切離 |
suspend |
علق |
suspender |
приостановить |
挂起 |
中断 |
launch |
شغل |
lanzar |
запустить |
启动 |
起動 |
flow |
تدفق |
flujo |
поток |
流 |
フロー |
emit |
اصدر |
emitir |
излучить |
发射 |
放出 |
delay |
أخر |
retrasar |
задержать |
延时 |
遅延 |
request |
طلب |
solicitar |
запросить |
请求 |
リクエスト |
reply |
رد |
responder |
ответить |
回复 |
返信 |
observable |
قابل_المراقبة |
observable |
наблюдаемый |
可观察 |
観察可能 |
| English | Arabic | Spanish | Russian | Chinese | Japanese |
|---|---|---|---|---|---|
move |
انقل |
mover |
переместить |
移动 |
移動 |
borrow |
استعر |
prestar |
заимствовать |
借用 |
借用 |
ref |
مرجع |
referencia |
ссылка |
引用 |
参照 |
own |
ملك |
propio |
владение |
拥有 |
所有 |
inout |
في_المكان |
en_lugar |
на_месте |
输入输出 |
入出力 |
region |
منطقة |
región |
регион |
区域 |
領域 |
arena |
حلبة |
arena |
арена |
竞技场 |
アリーナ |
transmute |
تحويل |
transmutar |
трансмутировать |
变换 |
変換 |
gpu |
معالج_رسومات |
gpu |
гпу |
图形处理 |
グラフィック |
| English | Arabic | Spanish | Russian | Chinese | Japanese |
|---|---|---|---|---|---|
comptime |
وقت_التجميع |
tiempo_compilación |
время_компиляции |
编译时 |
コンパイル時 |
macro |
ماكرو |
macro |
макрос |
宏 |
マクロ |
| English | Arabic | Spanish | Russian | Chinese | Japanese |
|---|---|---|---|---|---|
is |
هو |
es |
является |
是 |
である |
as |
ك |
como |
как |
作为 |
として |
and |
و |
y |
и |
和 |
且つ |
or |
أو |
o |
или |
或 |
又は |
not |
ليس |
no |
не |
不 |
非 |
by |
بواسطة |
por |
через |
由 |
により |
to |
إلى |
a |
к |
到 |
まで |
from |
من |
de |
от |
从 |
から |
effect |
تأثير |
efecto |
эффект |
效果 |
効果 |
The return type label r: has an Arabic alternative:
| Language | Syntax |
|---|---|
| All languages | r: |
| Arabic (alternative) | ن: |
Example:
// English
fun add(a: Int, b: Int) r: Int { return a + b }
// Arabic
دالة add(a: Int, b: Int) ن: Int { رجع a + b }
All operators use universal symbols across all languages:
+ - * / % = == != < <= > >=
+= -= *= /= %= & | ^ ~ << >>
-> => ? . .. ... ..< :: ?. ?: !! _ @
languages/xx/ (where xx is the ISO language code)cp -r languages/en/ languages/xx/
No compiler rebuild required.
Each language directory contains:
xx-keywords-control.toml -- control flow keywordsxx-keywords-types.toml -- type definition keywordsxx-keywords-vars.toml -- variable declaration keywordsxx-keywords-module.toml -- module system keywordsxx-keywords-literals.toml -- literal keywordsxx-keywords-async.toml -- async/concurrency keywordsxx-keywords-modifiers.toml -- modifier keywordsxx-keywords-memory.toml -- memory management keywordsxx-keywords-meta.toml -- metaprogramming keywordsxx-keywords-misc.toml -- miscellaneous keywordsxx-operators.toml -- operator definitionsTOML format:
[keywords]
fun = "KeywordFun"
if = "KeywordIf"
else = "KeywordElse"
# ... etc
languages/
├── en/ # English (default)
├── ar/ # Arabic
├── es/ # Spanish
├── ru/ # Russian
├── zh/ # Chinese
└── ja/ # Japanese
Total: 11 files per language, 66 files across 6 languages.
