Zum Inhalt springen
Developer Preview — APIs and language features may change before 1.0

Localized Keywords

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

You can write mashinTalk in your language. Every keyword, type name, and modifier has a native translation, and for head-final languages (Japanese, Korean) the natural word order parses too. Seven locales ship today, with more coming.

The dictionaries below are machine-checked, which is not the same as reviewed by a speaker. None of the six non-English dictionaries has had native-speaker review yet, so treat the spellings as provisional and what they MEAN as settled. What has been checked, and what has not sets out exactly where each locale stands.

Locale Directive Example
English (default, no directive needed) machine greeter
Français ecrit en francais machine greeter
Español escrito en español máquina greeter
日本語 日本語で記述 マシン greeter
中文 编写于 中文 机器 greeter
Deutsch geschrieben in deutsch Maschine greeter
한국어 한국어로 작성됨 기계 greeter

Place the written in directive on the first line of your .mashin file. All keywords after that line are resolved from that locale’s dictionary.

Localization covers word order, not just word choice. Japanese and Korean are head-final: role markers are postpositional particles that bind the phrase before them, and predicates come last. mashinTalk accepts the natural head-final surface and normalizes it to the same canonical machine:

English: compute check when input.score > 80
日本語: check を 計算 入力.score > 80 の場合
한국어: check 를 계산 입력.score > 80 의때

Comparisons read naturally too: input.x is greater than 3 is 入力.xは3より大きい in Japanese and 입력.x는3보다 크다 in Korean. The parsed machine is identical in every locale.

Canonical EN FR ES JA ZH DE KO
machine machine machine máquina マシン 机器 Maschine 기계
accepts accepts accepte acepta 受け取る 接受 akzeptiert 받는다
responds with responds with répond avec responde con で応答する 回应 antwortet mit 로 응답한다
behaves behaves se comporte se comporta 振る舞い 行为 verhält sich 동작
ensures ensures assure asegura 保証 确保 gewährleistet 보장
achieves achieves atteint logra 達成 达成 erreicht 달성
verifies verifies vérifie verifica 検証 验证 überprüft 검증
expresses expresses expose expresa 表現 表达 stellt dar 표현
stores stores stocke almacena 格納 存储 speichert 저장
has has a tiene 持つ 具有 hat 가진다
Canonical EN FR ES JA ZH DE KO
compute compute calcule calcula 計算 算 berechnet 계산
ask ask demande pregunta 聞く 问 fragt 묻다
decide decide décide decide 判断 判断 entscheidet 결정
recall recall rappelle recuerda 思い出す 回忆 erinnert 회상
remember remember retient memoriza 記憶 记住 merkt 기억
launch launch lance lanza 起動 启动 startet 시작
wait for wait for suspend aguarda 待つ 等待 wartet auf 기다리다
for each for each pour chaque para cada それぞれ 每个 für jedes 각각
Canonical EN FR ES JA ZH DE KO
if if si si もし 如果 wenn 만약
else else sinon sino でなければ 否则 sonst 아니면
on failure on failure en cas d’échec en caso de fallo 失敗時 失败时 bei Fehler 실패 시
Canonical EN FR ES JA ZH DE KO
permissions permissions autorisations permisos 権限設定 权限 Berechtigungen 권한
allowed to allowed to autorisé à autorizado a 許可 允许 darf 허용
not allowed to not allowed to interdit de prohibido 禁止されている 禁止 darf nicht 금지됨
goal goal objectif objetivo 目標 目标 Ziel 목표
never never jamais nunca 決して 绝不 niemals 금지
Canonical EN FR ES JA ZH DE KO
test test test prueba テスト 测试 Test 테스트
given given étant donné dado 前提 给定 angenommen 주어진
expect expect attend espera 期待 期望 erwartet 기대
assuming assuming supposant asumiendo 仮定 假设 vorausgesetzt 가정

Field declarations use locale-specific connectors and type names:

Component EN FR ES JA ZH DE KO
field as as en tant que como として 为 als 로
required required requis requerido 必須 必填 erforderlich 필수
text type text texte texto テキスト 文本 Text 텍스트
number type number nombre numero 数値 数字 Zahl 숫자
boolean type boolean booleen booleano 真偽 布尔 Wahrheitswert 불리언
English: name as text, required
Français: nom en tant que texte, requis
Español: nombre como texto, requerido
日本語: 名前は テキストとして、必須
中文: 名字 为 文本, 必填
Deutsch: name als Text, erforderlich
한국어: 이름은 텍스트로서, 필수

Note the head-final forms: in Japanese the topic marker は attaches to the name and として follows the type; in Korean 은/는 attaches to the name and 로서 follows the type. Marking the name with a different particle is a teaching error (the compiler names the correct marker) rather than a guess.

A reusable library machine can leave one flow for the machine that includes it to supply, marked at the call site. The marker is a modifier like required, so it is spelled in your language too:

Component EN FR ES JA ZH DE KO
open flow is open est ouvert es abierto 開放 开放 ist offen 개방
English: run think, is open
Français: exécute think, est ouvert
Español: ejecuta think, es abierto
日本語: think, 開放 を 実行
中文: 运行 think, 开放
Deutsch: führt aus think, ist offen
한국어: think, 개방 을 실행

Every locale also accepts the English is open, so a machine written before your language had a spelling keeps working. What changes is what the formatter writes back.

A mashinTalk locale is data, not code. A head-initial language is a keyword dictionary plus content patterns (type names, modifiers, connectors); a head-final language adds a particle table and a small grammar descriptor. The compiler, runtime, governance, and all tooling work unchanged, and untranslated keywords fall back to English, so a locale can start partial and grow.

To contribute a locale, open a PR with:

  1. Keyword mappings (structural vocabulary; the first spelling is canonical, extra spellings are accepted aliases)
  2. Content patterns (type names, modifiers, connectors)
  3. For head-final languages: particle definitions and the grammar descriptor (word order, comparison words, field and loop forms)
  4. Localized machines added to the equivalence and execution gates, which prove every feature parses and executes identically to English

Every contribution is held by the same conformance gates that protect the shipped locales. Those gates prove a dictionary means what English means; they cannot tell you whether the words are the right words, which is why a locale’s spellings stay provisional until a speaker has read them.