XLIFF coding guidelines
Changed in version 14.0
With TYPO3 14.0 the TYPO3 Core supports the XLIFF formats 1.2 and 2.0.
Language files are typically stored in XLIFF files. XLIFF is based on XML.
Table of contents
See also
Directory and file names
- Files have the ending
.xlf. - Language files are located in the directory
EXT:.my_ extension/ Resources/ Private/ Language/ - Historically language files where named
locallang.or with axlf locallang_prefix. This is not recommended anymore. For a standard translation namemessages.is suggested.xlf
Indentation in XLIFF files
Changed in version 14.0
With TYPO3 14.0 the TYPO3 Core switched from indentation with tabs to spaces.
- Use 2 spaces for indentation.
Tip
Have a look into the .editorconfig file, which allows you to enforce file formatting.
Language keys
TYPO3 is designed to be fully localizable. Hard-coded strings should thus be avoided unless there are some technical limitations (for example, some very early or low-level stuff where a $GLOBALS['LANG'] object is not yet available).
Defining localized strings
Here are some rules to respect when working with labels in locallang.
files:
- Always check the existing
locallang.files to see, if a given localized string already exists, in particular EXT:core/Resources/Private/Language/locallang_common.xlf (GitHub) and EXT:core/Resources/Private/Language/locallang_core.xlf (GitHub).xlf - Localized strings should never be all uppercase. If uppercase is needed, then appropriate methods should be used to transform them to uppercase.
- Localized strings must not be split into several parts to include
stuff in their middle. Rather use a single string with
sprintf()
markers (
%s,%d, etc.). - When a localized string contains several
sprintfmarkers, it must use numbered arguments (for example,() %1$d). - Localized strings should never contain configuration options (for example,
index_, which would display a link orconfig: timer_ frequency EXT:, which would show an image). Configuration like this does not belong in language labels, but in TypoScript.wizard_ crpages/ cshimages/ wizards_ 1. png - Localized strings are not supposed to contain HTML tags. They should be avoided whenever possible.
- Punctuation marks must be included in the localized string – including trailing marks – as different punctuation marks (for example, "?" and "¿") may be used in various languages. Also some languages include blanks before some punctuation marks.
Once a localized string appears in a released version of TYPO3, it cannot be changed (unless it needs grammar or spelling fixes).
A localization string can be deprecated in one major TYPO3 version and be removed with the next one
If the label of a localized string has to be changed, a new one should be introduced instead.