Language#

NAME#

Kernel::Language - global language interface

DESCRIPTION#

All language functions.

PUBLIC INTERFACE#

new()#

create a language object. Do not use it directly, instead use:

use Kernel::System::ObjectManager;
local $Kernel::OM = Kernel::System::ObjectManager->new(
    'Kernel::Language' => {
        UserLanguage => 'de',
    },
);
my $LanguageObject = $Kernel::OM->Get('Kernel::Language');

Translatable()#

this is a no-op to mark a text as translatable in the Perl code.

Example:

my $Selection = $LayoutObject BuildSelection (
    Data => {
        'and' => Translatable('and'),
        'or'  => Translatable('or'),
        'xor' => Translatable('xor'),
    },
    Name        => "ConditionLinking[_INDEX_]",
    Sort        => 'AlphanumericKey',
    Translation => 1,
    Class       => 'Modernize W50pc',
);

Translate()#

translate a text with placeholders.

my $Text = $LanguageObject->Translate('Hello %s!', 'world');

FormatTimeString()#

formats a timestamp according to the specified date format for the current language (locale).

my $Date = $LanguageObject->FormatTimeString(
    '2009-12-12 12:12:12',  # timestamp
    'DateFormat',           # which date format to use, e. g. DateFormatLong
    0,                      # optional, hides the seconds from the time output
);

Please note that the TimeZone will not be applied in the case of DateFormatShort (date only) to avoid switching to another date.

If you only pass an ISO date (‘2009-12-12’), it will be returned unchanged. Invalid strings will also be returned with an error logged.

GetRecommendedCharset()#

DEPRECATED. Don’t use this function any more, ‘utf-8’ is always the internal charset.

Returns the recommended charset for frontend (based on translation file or utf-8).

my $Charset = $LanguageObject->GetRecommendedCharset();

GetPossibleCharsets()#

Returns an array of possible charsets (based on translation file).

my @Charsets = $LanguageObject->GetPossibleCharsets();

Time()#

Returns a time string in language format (based on translation file).

$Time = $LanguageObject->Time(
    Action => 'GET',
    Format => 'DateFormat',
);

$TimeLong = $LanguageObject->Time(
    Action => 'GET',
    Format => 'DateFormatLong',
);

$TimeLong = $LanguageObject->Time(
    Action => 'RETURN',
    Format => 'DateFormatLong',
    Year   => 1977,
    Month  => 10,
    Day    => 27,
    Hour   => 20,
    Minute => 10,
    Second => 05,
);

These tags are supported: %A=WeekDay;%B=LongMonth;%T=Time;%D=Day;%M=Month;%Y=Year;

Note that %A only works correctly with Action GET, it might be dropped otherwise.

Also note that it is also possible to pass HTML strings for date input:

$TimeLong = $LanguageObject->Time(
    Action => 'RETURN',
    Format => 'DateInputFormatLong',
    Mode   => 'NotNumeric',
    Year   => '<input value="2014"/>',
    Month  => '<input value="1"/>',
    Day    => '<input value="10"/>',
    Hour   => '<input value="11"/>',
    Minute => '<input value="12"/>',
    Second => '<input value="13"/>',
);

Note that %B may not work in NonNumeric mode.

LanguageChecksum()#

This function returns an MD5 sum that is generated from all loaded language files and their modification timestamps. Whenever a file is changed, added or removed, this checksum will change.

GetTTTemplateTranslatableStrings()#

Returns an array of translation strings from tt templates.

my @TranslationStrings = $LanguageObject->GetTTTemplateTranslatableStrings(
    ModuleDirectory => "$Home/...",  # optional, translates the Znuny module in the given directory
);

Returns:

my @TranslationStrings = (
    {
        Location => "TT Template: Kernel/Output/HTML/Templates/Standard/AdminACL.tt",
        Source   => 'Actions',
    }
);

GetJSTemplateTranslatableStrings()#

Returns an array of translation strings from JS templates.

my @TranslationStrings = $LanguageObject->GetJSTemplateTranslatableStrings(
    ModuleDirectory  => "$Home/...",  # optional, translates the Znuny module in the given directory
);

Returns:

my @TranslationStrings = (
    {
        Location => "JS Template: Kernel/Output/JavaScript/Templates/Standard/Agent/TicketZoom/FormDraftDeleteDialog.html.tmpl",
        Source   => 'Cancel',
    }
);

GetPerlModuleTranslatableStrings()#

Returns an array of translation strings from Perl modules mark with Translatable or Translate.

my @TranslationStrings = $LanguageObject->GetPerlModuleTranslatableStrings(
    ModuleDirectory  => "$Home/...",  # optional, translates the Znuny module in the given directory
);

Returns:

my @TranslationStrings = (
    {
        Location => "Perl Module: Kernel/Modules/AdminACL.pm",
        Source   => 'This field is required',
    }
);

GetXMLTranslatableStrings()#

Returns an array of translation strings from JS templates.

my @TranslationStrings = $LanguageObject->GetXMLTranslatableStrings(
    ModuleDirectory  => "$Home/...",  # optional, translates the Znuny module in the given directory
);

Returns:

my @TranslationStrings = (
    {
        Location => "XML Definition:  scripts/database/initial_insert.xml",
        Source   => 'This field is required',
    }
);

GetJSTranslatableStrings()#

Returns an array of translation strings from JS.

my @TranslationStrings = $LanguageObject->GetJSTranslatableStrings(
    ModuleDirectory  => "$Home/...",  # optional, translates the Znuny module in the given directory
);

Returns:

my @TranslationStrings = (
    {
        Location => "JS File: var/httpd/htdocs/js/Core.Agent.Admin.ACL",
        Source   => 'Add all',
    }
);

GetSysConfigTranslatableStrings()#

Returns an array of translation strings from SysConfig.

my @TranslationStrings = $LanguageObject->GetSysConfigTranslatableStrings();

Returns:

my @TranslationStrings = (
    {
        Location => "SysConfig",
        Source   => 'Add all',
    }
);