The OTRS framework allows for different languages to be used in the frontend. The translations are contributed and maintained mainly by OTRS users, so your help is needed.
Starting with OTRS 4, all translations of the OTRS GUI and the public extension modules are managed via transifex. The OTRS project on transifex can be found at https://www.transifex.com/projects/p/OTRS/.
To contribute to a translation of the OTRS GUI, an extension module or a manual, please sign up for a free translators account on transifex. Then you can join your language team and start updating your translation. No additional software or files required. The OTRS developers will download the translations from time to time into the OTRS source code repositories, you don't have to submit them anywhere.
To coordinate translation efforts you can use the i18n mailing list of OTRS.
If you want to translate the OTRS framework into a new language, you have can propose a new language translation on the transifex OTRS project page. After it is approved, you can just start translating.
The script otrs.CreateTranslationFile.pl
is used to extract all translatable strings from the template files (everything marked with [% Translate(...) %]
) and the SysConfig (all elements with
Translatable="1"
). These will be collected and written into the translation files.
For the OTRS framework and all extension modules that also use transifex for managing the translations, .pot and .po files are written (please specify the -p
argument to otrs.CreateTranslationFile.pl
). These files are used to push the translatable strings to transifex and pull the translations from there.
But OTRS requires the translations to be in Perl files for speed reasons. These files will also be generated by
otrs.CreateTranslationFile.pl
.
There are three different translation cache file types which are used in the following
order. If a word/sentence is redefined in a translation file, the last definition will
be used.
Default Framework Translation File
Kernel/Language/$Language.pm
Custom Translation File
Kernel/Language/$Language_Custom.pm
The Default Framework Translation File includes the basic translations. The following is an example of a Default Framework Translation File.
Format:
package Kernel::Language::de; use strict; use warnings; use vars qw(@ISA $VERSION); sub Data { my $Self = shift; # $$START$$ # possible charsets $Self->{Charset} = ['iso-8859-1', 'iso-8859-15', ]; # date formats (%A=WeekDay;%B=LongMonth;%T=Time;%D=Day;%M=Month;%Y=Jear;) $Self->{DateFormat} = '%D.%M.%Y %T'; $Self->{DateFormatLong} = '%A %D %B %T %Y'; $Self->{DateFormatShort} = '%D.%M.%Y'; $Self->{DateInputFormat} = '%D.%M.%Y'; $Self->{DateInputFormatLong} = '%D.%M.%Y - %T'; $Self->{Translation} = { # Template: AAABase 'Yes' => 'Ja', 'No' => 'Nein', 'yes' => 'ja', 'no' => 'kein', 'Off' => 'Aus', 'off' => 'aus', }; # $$STOP$$ return 1; } 1;
The Custom Translation File is read out last and so its translation which will be used. If you want to add your own wording to your installation, create this file for your language.
Format:
package Kernel::Language::xx_Custom; use strict; use warnings; use vars qw(@ISA $VERSION); sub Data { my $Self = shift; # $$START$$ # own translations $Self->{Translation}->{'Lock'} = 'Lala'; $Self->{Translation}->{'Unlock'} = 'Lulu'; # $$STOP$$ return 1; } 1;