TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* This file is part of the TYPO3 CMS project.
|
||||
*
|
||||
* It is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, either version 2
|
||||
* of the License, or any later version.
|
||||
*
|
||||
* For the full copyright and license information, please read the
|
||||
* LICENSE.txt file that was distributed with this source code.
|
||||
*
|
||||
* The TYPO3 project - inspiring people to share!
|
||||
*/
|
||||
|
||||
namespace TYPO3\CMS\Core\Localization;
|
||||
|
||||
/**
|
||||
* Interface for translation services.
|
||||
*
|
||||
* This interface provides a clean abstraction for translating labels in TYPO3.
|
||||
* It uses ICU MessageFormat style where pluralization and other complex formatting
|
||||
* logic is embedded in the message string itself, not in the API signature.
|
||||
*
|
||||
* Example usage:
|
||||
*
|
||||
* // Simple translation
|
||||
* $translator->translate('button.save', 'backend.messages');
|
||||
*
|
||||
* // Translation with arguments (sprintf-style placeholders)
|
||||
* $translator->translate('record.count', 'backend.messages', [5]);
|
||||
*
|
||||
* // ICU MessageFormat style for plurals (message: "{count, plural, one {# item} other {# items}}")
|
||||
* $translator->translate('items.count', 'backend.messages+intl-icu', ['count' => 5]);
|
||||
*
|
||||
* @see https://unicode-org.github.io/icu/userguide/format_parse/messages/ ICU MessageFormat
|
||||
*/
|
||||
interface TranslatorInterface
|
||||
{
|
||||
/**
|
||||
* Translate a label by its identifier and domain.
|
||||
*
|
||||
* @param string $id The label identifier/key
|
||||
* @param string $domain The translation domain (file reference like 'EXT:core/Resources/Private/Language/locallang.xlf'
|
||||
* or semantic domain like 'core.messages'). For ICU MessageFormat, suffix with '+intl-icu'.
|
||||
* @param array $arguments Optional arguments for placeholder replacement. For sprintf-style messages,
|
||||
* pass indexed values. For ICU messages, pass named values (e.g., ['count' => 5]).
|
||||
* @param string|null $default Optional default value
|
||||
* @param Locale|string|null $locale Optional locale override. If null, uses the service's configured locale.
|
||||
* @return string|\Stringable|null The translated string, or null if the label was not found
|
||||
*/
|
||||
public function translate(string $id, string $domain, array $arguments = [], ?string $default = null, Locale|string|null $locale = null): string|\Stringable|null;
|
||||
|
||||
/**
|
||||
* Translate a label by its full reference string.
|
||||
*
|
||||
* Resolves TYPO3 label reference strings in the formats:
|
||||
*
|
||||
* 'core.messages:labels.depth_0'
|
||||
* 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_0'
|
||||
* 'EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_0'
|
||||
*
|
||||
* The LLL: prefix is optional and stripped before resolution.
|
||||
*
|
||||
* Example usage:
|
||||
*
|
||||
* // Simple reference
|
||||
* $translator->label('myext.messages:button.save');
|
||||
*
|
||||
* // Simple reference (discouraged with file reference)
|
||||
* $translator->label('LLL:EXT:my_ext/Resources/Private/Language/locallang.xlf:button.save');
|
||||
*
|
||||
* // With arguments
|
||||
* $translator->label('core.messages:record.count', [5]);
|
||||
*
|
||||
* // With default value
|
||||
* $translator->label('core.messages:missing.key', [], 'Fallback text');
|
||||
*
|
||||
* @param string $reference The label reference string (with or without LLL: prefix)
|
||||
* @param array $arguments Optional arguments for placeholder replacement
|
||||
* @param string|null $default Optional default value returned when the label is not found
|
||||
* @param Locale|string|null $locale Optional locale override. If null, uses the service's configured locale.
|
||||
* @return string|\Stringable|null The translated string, the default value, or null if the label was not found
|
||||
*/
|
||||
public function label(string $reference, array $arguments = [], ?string $default = null, Locale|string|null $locale = null): string|\Stringable|null;
|
||||
}
|
||||
Reference in New Issue
Block a user