Projects / Localizing your project


Whether you want to localize an existing project or are starting a new project, we provide a few nice mechanisms to make things easier on everyone, from developers to translators.

To start off, you're going to want to set up the localization on your project. Go to your project's detail page, and under actions, you'll see "Setup localization" (your project URL will now be something like or

Clicking it will bring you to the screen where you initially setup your localization options. The first option is to choose which coding language you want your localization to be in. At this time, only Lua 5.1 is supported (This is the language used in World of Warcraft and Warhammer Online). The second option specifies if you would like your translations to be open or not. Open translations allow anyone with an account to edit translations. Don't worry, there's an activity log showing what was edited and by whom. An open system allows more people to contribute, whereas a closed system requires you to set the user up as a translator in order to contribute to your project.

Once you have chosen your options, click setup localization and you're on your way.


A language with some extra information. For example, esES (Spanish) is distinct from esMX (Latin American Spanish), despite it being the same language, some words might be different.
An entry into the localization app. This represents the key your phrase is, what namespace it belongs to, any context attached to it. This will always have an English translation attached.
A single translation of a phrase into a specific language by a certain submitter. There is only one definitive translation per-phrase per-locale.
A user who submits translations to a project. If the project has a closed localization, they have to be explicitly defined by the manager of the project. If the project has an open localization (default), any user (who has not had translation privileges revoked) of the site may enter non-English translations.
A member of the project that (for our purposes) has the privilege to edit, create, and delete English translations.
A namespace acts as a section for a group of phrases. All projects have a base namespace (or root namespace). This is particularly useful if you have a modular project where you want the individual modules to have a separate namespace from the core.

Why should I localize my project?

You may ask "Why should I localize my project?", caring only about English-speaking people and the like. It's a good idea to localize because although many foreigners speak English, a lot don't, and the ones that do might rather use your project in their native tongue. After all, we're coding addons for games, games should be fun, games shouldn't make you translate in your head constantly. Also, if you do everything through the localization app, it's mostly a fire-and-forget system, where once all your phrases are in, you don't have to worry about it, and the translators will take care of things themselves.

Importing existing translations

If you have localized your project without our system, you should be able to import your phrases and translations quite easily.

Just click the Import button in the navigation bar at the top, fill in your details and copy-paste your translations into the text box. Note: you should be just copy-pasting the translations and not any AceLocale headers or such.

You do this once per language.


Making new phrases

If you're either starting from scratch or want to add new phrases, you'll probably want to create a new phrase through the website, since extra details can be supplied that can't be on import. In the navigation bar, you'll see "Phrases", if you hover over it, it will pop up a menu containing "Create phrase". Use this form to create a new phrase.

There is a section for Context that you can supply. This can be a description of the phrase or where to find or some other indicator that will give translators proper context on how to translate the phrase properly.

Editing existing phrases

In the event that you need to change a phrase, first find the phrase through the phrase index (Phrases button in the navigation bar), click on it, then click Edit phrase in the navigation bar.


First, realize that for the majority of projects, namespaces are unnecessary. Sticking to the base namespace is perfectly acceptable.

Making new namespaces

In the navigation bar, you'll see "Namespaces", hover over it, and a menu will pop up containing "Create namespace". You can now create a namespace.

Editing an existing namespace

Find the namespace you want through the namespace index (Namespaces button in the navigation bar), click on it, then click Edit namespace in the navigation bar.

Exporting your translations

Once you're satisfied with the translations in the system, you can, at any time, export your translations.

Through the website

Click the Export button in the navigation bar. Fill in the details on how you want it to export, then click the Export button on the form. You'll have a text box full of your translations which you can copy-paste into your code.

You'll have to do this once per locale.

Through the repository

Since exporting manually can be a pain, we supply a way to have the repository packager (if you use it) automatically inject translations to your specification. You can see the full details on the Repository Keyword Substitutions knowledge base page.

This will cause your translations to be injected every time a new package is made. This means every commit (if you package alphas) or every tag (if you package betas/releases).

A new package will not create automatically when new translations are added or changed.

Directing translators to localize your project

You should point them to the localization index (found by clicking "Localization" in your project's navigation bar), which shows the status of all the locales. It is recommended you put a nice message in your project's description, or you can advertise on the forums of your choice. The "Localization" tab will appear to regular users whenever you have phrases in your localization system, nonetheless.