XLIFF coding guidelines
Language files are typically stored in XLIFF files. XLIFF is based on XML.
See also
Directory and file names
- Files have the ending
.xlf
. - Language files are located in the directory
EXT:
.my_ extension/ Resources/ Private/ Language/
Format
- Use TABs, not spaces.
- TAB size is 4.
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
sprintf
markers, 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). Nor can it be removed. If the label of a localized string has to be changed, a new one should be introduced instead.