How to Translate the Game

The game is in English, but it supports community translations. If you want to play in your own language — or share a translation with others — this page explains everything you need to know. No programming knowledge required.

Getting Started

Translations are managed directly through the game server. Do not manually create files in your lang/ folder, as the server will overwrite them. To contribute a translation, follow these steps in-game:

  1. Open the Game Menu and select Language.
  2. Choose Create Language and enter the name of your language (e.g., french).
  3. Once created, go to Manage Languages, select your language, and choose Update Data (Paste).
  4. Prepare your translation in a text editor (like Notepad++), copy the entire text, and paste it into the game's input box.

The server will automatically save your work and send the .lng file to any player who switches to your language.

Preparing your translation in a local text editor is recommended so you don't lose work. When you are ready, simply use the "Update Data" feature to sync it with the server.

Basic Format

Each line in the file is one translation entry. The format is:

English text [=] Your translation

The left side is the original English text, exactly as it appears in the game. The right side is your translation. The [=] separator must have a space on each side.

Here are some simple examples:

You are hungry. [=] Acıktınız.
Connected to server. [=] Sunucuya bağlandı.
Game over. [=] Oyun bitti.
Inventory [=] Envanter
Settings [=] Ayarlar

The lookup is case-insensitive, so "hello", "Hello" and "HELLO" all match the same entry. You only need to write it once.

Parameters (%1, %2 ...)

Many game messages contain values that change at runtime — a player's name, a number, an item name. These are marked with %1, %2, up to %9.

When you translate a line that has parameters, keep the same %1, %2 markers in your translation. You can change their order if your language needs it — that is perfectly fine.

English (original)Turkish translation
You have %1 health.%1 canınız var.
You found %1 coins.%1 altın buldunuz.
%1 has joined the game.%1 oyuna katıldı.
Round %1 of %2.%2 turdan %1. tur.
You dealt %1 damage to %2.%2 adlı düşmana %1 hasar verdiniz.

Notice how in "Round %1 of %2" the Turkish translation swapped the order to "%2 turdan %1. tur" — that is completely allowed.

In the file it looks like this:

You have %1 health. [=] %1 canınız var.
Round %1 of %2. [=] %2 turdan %1. tur.
You dealt %1 damage to %2. [=] %2 adlı düşmana %1 hasar verdiniz.
Never remove a %1 or %2 from your translation. The game will insert the real value in its place at runtime. If you drop it, the player will not see that value.

Translated Parameters (%t1, %t2 ...)

Some entries use %t1, %t2 instead of plain %1. The "t" stands for translate.

It works exactly like a regular parameter, with one difference: the game will also look up that value in your translation file before inserting it. So if the value is a word you already translated (like a direction or a status), it gets translated automatically — you do not have to handle it separately.

The %t marker only goes on the left (English) side. On the right (translated) side, always write plain %1, %2, etc.

Example — the game has these entries:

; Single word entries
north [=] kuzey
south [=] güney
open  [=] açık
locked [=] kilitli

; Template entries that use those words
You are moving %t1. [=] %1 yönüne ilerliyorsunuz.
The door is %t1. [=] Kapı %1.
%t1 Button [=] %1 Düğmesi

At runtime:

Game sendsPlayer hears
You are moving north.kuzey yönüne ilerliyorsunuz.
The door is locked.Kapı kilitli.
Settings ButtonAyarlar Düğmesi (if "Settings [=] Ayarlar" exists)
If the %t value is not in your translation file, it stays in English. No error is thrown — the untranslated word just passes through as-is.

Comments

Lines starting with ; are comments. They are ignored by the game. Use them to organize your file into sections so it is easier to maintain.

; -----------------------------------------------
; COMBAT MESSAGES
; -----------------------------------------------
You hit the enemy. [=] Düşmana vurdunuz.
The enemy missed. [=] Düşman ıskaladı.

; -----------------------------------------------
; STATUS MESSAGES
; -----------------------------------------------
You are hungry. [=] Acıktınız.
You are thirsty. [=] Susadınız.

Full Example — Turkish

; -----------------------------------------------
; SINGLE WORDS
; -----------------------------------------------
yes [=] evet
no [=] hayır
ok [=] tamam
cancel [=] iptal
north [=] kuzey
south [=] güney
east [=] doğu
west [=] batı
open [=] açık
closed [=] kapalı
locked [=] kilitli

; -----------------------------------------------
; MENU AND UI
; -----------------------------------------------
Settings [=] Ayarlar
Inventory [=] Envanter
Save [=] Kaydet
Load [=] Yükle
Quit [=] Çıkış

; -----------------------------------------------
; FIXED SENTENCES
; -----------------------------------------------
You are hungry. [=] Acıktınız.
You are thirsty. [=] Susadınız.
Connection lost. [=] Bağlantı kesildi.
Game saved. [=] Oyun kaydedildi.

; -----------------------------------------------
; MESSAGES WITH VALUES (%1, %2)
; -----------------------------------------------
You have %1 health. [=] %1 canınız var.
You found %1 coins. [=] %1 altın buldunuz.
%1 has joined the game. [=] %1 oyuna katıldı.
%1 has left the game. [=] %1 oyundan ayrıldı.
Round %1 of %2. [=] %2 turdan %1. tur.
You dealt %1 damage to %2. [=] %2 adlı düşmana %1 hasar verdiniz.
%1 says: %2 [=] %1 şunu söylüyor: %2

; -----------------------------------------------
; MESSAGES WITH TRANSLATED VALUES (%t1, %t2)
; -----------------------------------------------
You are moving %t1. [=] %1 yönüne ilerliyorsunuz.
The door is %t1. [=] Kapı %1.
The door to the %t1 is %t2. [=] %1 kapısı %2.
%t1 Button [=] %1 Düğmesi
Pick up %t1? [=] %1 alınsın mı?

Full Example — Spanish

; -----------------------------------------------
; SINGLE WORDS
; -----------------------------------------------
yes [=] 
no [=] no
ok [=] aceptar
cancel [=] cancelar
north [=] norte
south [=] sur
east [=] este
west [=] oeste
open [=] abierta
closed [=] cerrada
locked [=] bloqueada

; -----------------------------------------------
; MENU AND UI
; -----------------------------------------------
Settings [=] Configuración
Inventory [=] Inventario
Save [=] Guardar
Load [=] Cargar
Quit [=] Salir

; -----------------------------------------------
; FIXED SENTENCES
; -----------------------------------------------
You are hungry. [=] Tienes hambre.
You are thirsty. [=] Tienes sed.
Connection lost. [=] Conexión perdida.
Game saved. [=] Partida guardada.

; -----------------------------------------------
; MESSAGES WITH VALUES (%1, %2)
; -----------------------------------------------
You have %1 health. [=] Tienes %1 puntos de vida.
You found %1 coins. [=] Encontraste %1 monedas.
%1 has joined the game. [=] %1 se unió al juego.
%1 has left the game. [=] %1 abandonó el juego.
Round %1 of %2. [=] Ronda %1 de %2.
You dealt %1 damage to %2. [=] Causaste %1 de daño a %2.
%1 says: %2 [=] %1 dice: %2

; -----------------------------------------------
; MESSAGES WITH TRANSLATED VALUES (%t1, %t2)
; -----------------------------------------------
You are moving %t1. [=] Te estás moviendo hacia el %1.
The door is %t1. [=] La puerta está %1.
The door to the %t1 is %t2. [=] La puerta del %1 está %2.
%t1 Button [=] Botón %1
Pick up %t1? [=] ¿Recoger %1?

Tips and Common Mistakes

Always keep %1, %2 in your translation

If the English line has %1, your translation must have it too. The game replaces it with a real value at runtime. Dropping it means the player will not see that number or name.

%t on the left side only

In the key (left side) you write %t1. In your translation (right side) you always write plain %1. Writing %t1 on the right side does nothing extra.

WrongCorrect
You are moving %t1. [=] %t1 yönüne ilerliyorsunuz.You are moving %t1. [=] %1 yönüne ilerliyorsunuz.

For %tN to work, translate the word too

If the key says %t1 Button, the game will try to translate the word that ends up in %t1. If you have not added that word to your file, it stays in English. So for "Settings Button" to become "Ayarlar Düğmesi", you need both entries:

Settings [=] Ayarlar
%t1 Button [=] %1 Düğmesi

You do not have to translate everything

Any line that is not in your file simply stays in English. You can start with the most important messages and add more over time.

Use ; to leave notes for yourself

The ; character at the start of a line makes it a comment. Great for labeling sections or leaving notes about tricky translations.

Watch your encoding

When preparing your text in an external editor, ensure it is saved as UTF-8. This ensures that special characters (ş, ğ, ñ, etc.) are correctly preserved when you paste them into the game's "Update Data" server box.