Support

Documentation

5.Translating to your language

5.Translating to your language

Kickstart ships with the English language included. However, it can be translated to your language. To translate Kickstart you just need to get its language file (in INI format) and have a plain text editor at hand (Notepad++, Smultron, Kate, gEdit, etc).

Getting the language file

There are three ways to extract Kickstart's language INI file.

1. Using the web interface. You can append ?task=dumpLang to Kickstart's URL in your browser. For example, if you access Kickstart as https://www.example.com/example.php visit the URL https://www.example.com/example.php?task=dumpLang. Assuming no other language file had been loaded, it will create the file en-GB.kickstart.ini in the same directory as your Kickstart PHP file. Your browser will display something similar to the following:

###{"filePath":"\/home\/example\/public_html\/en-GB.kickstart.ini","filename":"en-GB.kickstart.ini","success":true}###

Please note that if this message contains "success":false it means that creating the file failed. Make sure that Kickstart can create files on your site, or use a different server.

2. Using the CLI. You can use the --dump-language option in the command line to do the same thing as described above from the CLI. For example, if you run Kickstart as php /home/myuser/example.php from the CLI, run the following: php /home/myuser/example.php --dump-language

Assuming no other language file had been loaded, it will create the file en-GB.kickstart.ini in the same directory as your Kickstart PHP file. You get exit code 0 on success, 255 on failure. The message on your terminal will also tell you if this operation was successful.

3. Using PHP directly. Kickstart is a PHAR archive. You can use standard PHP to extract files from it. The language file is placed in the language/en-GB.ini path inside the PHAR archive.

Naming your translation

Your file should follow the format languageCode.kickstart.ini. The languageCode is the ISO 639-1 code of the language in lowercase, followed by a dash, followed by the ISO 3166-1 alpha-2 country code in UPPERCASE. This scheme allows for country-specific variations of the same language which is especially important for some languages, such as French and Spanish, which are spoken in different countries with differences big enough to warrant a country-specific variation. For example, French as spoken in France has the language code fr-FR whereas French as spoken in Canada has the language code fr-CA.

If you are translating for a language which does not have a corresponding country-specific dialect (e.g. Esperanto, Klingon, Sindarin, …) you can use the country code XX.

Note

Kickstart will fall back to the closest language it can find based on your browser's language preference order. If you prefer German as spoken in Austria (de-AT) with a higher priority than International English but you only have the German as spoken in Germany translation file (de-DE.kickstart.ini), Kickstart will load the German as spoken in Germany language file. This means that if you are unsure you can always use the country code XX naming your language files and Kickstart will most likely be able to pick up the correct language file.

Examples:

  • Greek (Greece): el-GR.kickstart.ini

  • German (Germany): de-DE.kickstart.ini

  • English (USA): en-US.kickstart.ini

  • English (United Kingdom): en-GB.kickstart.ini

Translation tips

Kickstart uses a simplified version of Joomla's INI language file scheme using a pure PHP file parser. Unlike Joomla, Kickstart does not rely on PHP's INI parsing functions being available. Unlike WordPress' GNU GetText (.pot/.po/.mo) files, you do NOT need the gettext PHP extension to be installed and enabled. The downside is that you need to be careful when translating Kickstart to make sure that your translations are valid INI files and only use the subset of features Kickstart's language engine is designed to support.

Language files use LF (UNIX-style) for line termination. If you are on Windows please use Notepad++ which is free and supports UNIX-style line termination. Do note that this is just so you can read the file; the built-in Notepad in Windows versions released after mid-2025 will also work, but earlier versions will display the entire file as one really long line which neither makes sense, nor saving it would result in a valid language file. It does not matter if you save the file with LF or CRLF line endings; Kickstart can do that conversion automatically when loading a language file.

Language files are encoded in UTF-8 (Unicode). Do not use legacy encodings such as Windows-1253, ISO-8859-7, KOI-8R etc; they will result in garbled text. Again, if you are on Windows please do use Notepad++ as it will make it very clear which encoding you are using and not mess up your translation file.

Lines which begin with ; are comments. These comment lines, as well as blank lines, are ignored by Kickstart's language engine. If you have untranslated strings you can comment them out by prefixing them with ;. Kickstart always uses its built-in English language as the fallback for any missing language strings.

Each line consists of a key, the equals sign, and the translated text. Example: EXAMPLE="This is an example". While you can put spaces between the key and the translated text we do not recommend it. Some text editors may put tab characters instead of spaces which may result in the translation being treated as broken.

The keys are always in UPPERCASE. The always consist of uppercase letters A to Z without accents and diacritics, and underscores.

The translated text is always enclosed in double quotes. The double quotes are not output to the browser. They act as a marker which tells the language file parser where the translation begins and ends.

If your translated text includes double quotes (") you need to quote them like this: \". For example, if your translated text is This is "quoted" text your language file should present it as MYKEY="This is \"quoted\" text".

Every translation (key, equals sign, translated text) MUST be contained in a single line. Make sure to disable hard wrapping (automatic newlines) in your text editor. If your translated text needs to include a line break escape it as \n.