Extrator de tradução
May 18, 2024 · View on GitHub
O extrator pode fazer com que mensagens sejam traduzidas de um conjunto de arquivos PHP.
Requisitos
- Extensão PHP
tokenizer.
Uso geral
O uso é o seguinte:
$path = '/path/to/your/project';
$extractor = new \Yiisoft\Translator\Extractor\TranslationExtractor($path);
$defaultCategory = 'defaultCategoryName';
$translatorCall = '->translate';
$messages = $extractor->extract($defaultCategory, $translatorCall);
// Result is same as from `extract` function of ContentParser (see below).
Adicionando arquivos com extensão diferente de .php ou ignorando alguns diretórios
$path = '/path/to/your/project';
$only = ['**.php', '**.php7'];
$except = ['**/brokenSamples/*'];
$extractor = new \Yiisoft\Translator\Extractor\TranslationExtractor($path, $only, $except);
Para obter mais informações sobre os parâmetros only e except veja yiisoft/files.
Obtendo uma lista de problemas ao extrair mensagens
Caso você tenha parâmetros complicados, como retornos de chamada, constantes etc, o extrator pode pular algumas linhas:
/** @var \Yiisoft\Translator\Extractor\TranslationExtractor $extractor */
$defaultCategory = 'defaultCategoryName';
$messages = $extractor->extract($defaultCategory);
if ($extractor->hasSkippedLines()) {
$skippedLines = $extractor->getSkippedLines();
/**
* Will be returned array looks like:
* [
* '/path/to/fileName' => [
* [
* int $numberOfLine,
* string $incorrectLine,
* ],
* ];
*/
}
Analisando conteúdo diretamente
O extrator usa ContentParser internamente, que é aplicado a cada arquivo. Você pode querer aplicá-lo a um único arquivo
também:
/**
* Default category for messages without translator call category set.
* For example, $translator->translate('SimpleText');
* Optional. By default this value equals empty string.
*/
$defaultCategory = 'defaultCategoryName';
/**
*
* Translator method call signature.
* Optional. By default using default call signature `->translate`.
*/
$translatorCall = '::translate';
$parser = new \Yiisoft\Translator\Extractor\ContentParser($defaultCategory, $translatorCall);
$fileContent = file_get_contents('some_file.php');
$messages = $parser->extract($fileContent);
$messages conterá o seguinte array:
[
'defaultCategoryName' => [
'messageId1',
'messageId2',
],
'categoryName' => [
'messageId3',
'messageId4',
],
]