PHP code example of forrest79 / simple-translator
1. Go to this page and download the library: Download forrest79/simple-translator library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
forrest79 / simple-translator example snippets
$translator->translate('web.error.message', ['max_length' => Validator::MAX_LENGTH]);
$translator->translate('web.error.message', ['max_length' => Validator::MAX_LENGTH, 'entered_length' => number_format(strlen($text))], strlen($text));
[
'web.error.message' => [
'Text must be %max_length% long. You enter %entered_length% character.',
'Text must be %max_length% long. You enter %entered_length% characters.',
],
]
$translator->translate('web.error.message', count: strlen($text));
[
'web.error.message' => [
'Only one characted was entered.',
'Too many characters was entered.',
],
]
#!/usr/bin/env php
declare(strict_types=1);
les = ['en', 'cs'];
$sourceDirectories = [
__DIR__ . '/../app',
];
$latteEngine = new Latte\Engine();
$latteEngine->addExtension(new Nette\Bridges\ApplicationLatte\UIExtension(NULL));
$latteEngine->addExtension(new Nette\Bridges\FormsLatte\FormsExtension());
$messageExtractors = [
new Forrest79\Translation\MessageExtractors\Php(),
new Forrest79\Translation\MessageExtractors\Latte($latteEngine),
];
(new Forrest79\Translation\CatalogueExtractors\Neon($localesDir, $locales, $sourceDirectories, $messageExtractors))
->extract();
$locales = ['en', 'cs'];
$sourceDirectories = [
__DIR__ . '/../app',
];
$messageExtractors = [
new Forrest79\Translation\MessageExtractors\Php(),
];
(new class($dbConnection, $locales, $sourceDirectories, $messageExtractors) extends Forrest79\Translation\CatalogueExtractor {
private DbConnection $dbConnection;
public function __construct(
DbConnection $dbConnection,
array $locales,
array $sourceDirectories,
array $messageExtractors,
)
{
parent::__construct($locales, $sourceDirectories, $messageExtractors);
$this->dbConnection = $dbConnection;
}
protected function loadExistingMessages(string $locale): array
{
return $this->dbConnection->query('
SELECT ti.identifier
FROM public.translation_identifiers AS ti
LEFT JOIN public.translations AS t ON t.identifier_id = ti.id AND t.lang = ?
', $locale)->fetchPairs(NULL, 'identifier');
}
protected function processMessagesToInsert(string $locale, array $messages): void
{
foreach ($messages as $message) {
$this->log(sprintf('SELECT public.translation_insert(constant.lang_%s(), \'%s\', ARRAY[\'\']);', $locale, $message));
}
}
protected function processMessagesToRemove(string $locale, array $messages): void
{
foreach ($messages as $message) {
$this->log(sprintf('DELETE FROM public.translation_identifiers WHERE identifier = \'%s\';', $message));
}
}
protected function log(string $message): void
{
echo $message . PHP_EOL;
}
})
->extract();
$template->addFilter('translate', function (string $message, array|int $parameters = [], int|NULL $count = NULL): string {
if (is_int($parameters)) {
$count = $parameters;
$parameters = [];
}
return $this->translator->translate($message, $parameters, $count);
});
yml
plural: '($i === 1) ? 0 : 1'