Language Translations
TazLang — TazUO Translations Guide
Section titled “TazLang — TazUO Translations Guide”TazUO’s interface text is powered by TazLang, a simple localization system.
All UI strings live in plain-text .ini files in the client’s Data/ folder,
so you can translate TazUO into any language by copying and editing one file.
NOTE: This is an ongoing process, many strings are not present here yet.
Where the files live
Section titled “Where the files live”Language files are stored in the Data/ folder next to the TazUO executable
and are named:
language.{CODE}.iniWhere {CODE} is a short language code, for example:
Data/language.EN.ini -> EnglishData/language.DE.ini -> GermanData/language.FR.ini -> FrenchThe English file (language.EN.ini) is created automatically the first time you
run TazUO. It is the master list of every translatable string, so it’s the best
starting point for a new translation.
Creating a translation
Section titled “Creating a translation”- Go to the
Data/folder and copylanguage.EN.ini. - Rename the copy to
language.{CODE}.iniusing your language’s code (e.g.language.DE.ini). - Open it in any text editor (save it as UTF-8 so accented characters work).
- Translate the text on the right side of each
=. Leave the keys (left side) and any placeholders unchanged. - Save the file.
Selecting your language
Section titled “Selecting your language”- Launch TazUO and open the Edit settings window (from the login screen).
- Find the UI Language dropdown — any
language.*.inifile inData/shows up here automatically. - Pick your language.
- Restart TazUO — language changes take effect on the next start.
The file format
Section titled “The file format”Each line is a key=value pair. You only ever translate the value.
; Lines starting with a semicolon are comments and are ignored.accountname=Account Namemusic=Musicoptions=Optionsuoversion=UO Version {0}.Important rules
Section titled “Important rules”- Don’t change the keys.
accountname,music, etc. must stay exactly as-is. Only translate the text after the=. - Keep placeholders. Things like
{0}and{1}are filled in by the game (for example a version number). Keep them in your translated text — you may move them to wherever they read naturally in your language.uoversion=Version UO {0}. - Newlines: use
\nto insert a line break inside a string.autostatlock_desc=Adjusts stat locks automatically.\nNote: Equipment bonuses may also trigger this. - Literal backslash: write
\\if you need an actual backslash character. - Blank lines and comments (
; ...) are fine — use them to keep things organized. - Save as UTF-8 to preserve accents and special characters.
Keeping your translation up to date
Section titled “Keeping your translation up to date”Your translation file is checked for correctness on every launch (there is no
longer a _version= number to track): any new strings are added with their English
defaults, and any keys that no longer exist upstream are removed — all without
overwriting the text you’ve already translated for keys that still exist.
So after an update, just reopen your language.{CODE}.ini and translate any new
English lines that appeared.
Server-provided (cliloc) text
Section titled “Server-provided (cliloc) text”Not everything is translatable through language.ini. Spell names, reagent names, and
magic circle names now come from the server’s cliloc strings whenever the server
provides them, falling back to the built-in English strings otherwise — so those names
match what the server itself displays and are not controlled by language.ini.
Previously separate resources were also folded into the TazLang system: the old
ResGump, ResGeneral, and ResErrorMessages string sets now live in
language.ini alongside everything else, so they are translated in the same file.
Quick checklist
Section titled “Quick checklist”- Copied
language.EN.iniand renamed itlanguage.{CODE}.ini - Translated values only, left keys untouched
- Kept all
{0}/{1}placeholders - Saved as UTF-8
- Selected the language in UI Language and restarted