Switch PHP translator implementation.
This commit is contained in:
parent
3e03980811
commit
fb3a8a5fc9
|
@ -11,6 +11,7 @@
|
|||
],
|
||||
"require": {
|
||||
"php": "^8.1",
|
||||
"ext-PDO": "*",
|
||||
"ext-curl": "*",
|
||||
"ext-fileinfo": "*",
|
||||
"ext-gd": "*",
|
||||
|
@ -19,7 +20,6 @@
|
|||
"ext-json": "*",
|
||||
"ext-maxminddb": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-PDO": "*",
|
||||
"ext-redis": "*",
|
||||
"ext-simplexml": "*",
|
||||
"ext-xml": "*",
|
||||
|
@ -43,7 +43,6 @@
|
|||
"dragonmantank/cron-expression": "^3.1",
|
||||
"gettext/gettext": "^5",
|
||||
"gettext/php-scanner": "^1.3",
|
||||
"gettext/translator": "^1.1",
|
||||
"guzzlehttp/guzzle": "^7.0",
|
||||
"guzzlehttp/oauth-subscriber": "^0.6.0",
|
||||
"http-interop/http-factory-guzzle": "^1.0",
|
||||
|
@ -65,6 +64,7 @@
|
|||
"pagerfanta/doctrine-orm-adapter": "^3",
|
||||
"php-di/php-di": "^6.0",
|
||||
"php-di/slim-bridge": "^3.0",
|
||||
"phpmyadmin/motranslator": "^5.3",
|
||||
"psr/http-factory": ">1",
|
||||
"psr/simple-cache": ">1",
|
||||
"ramsey/uuid": "^4.0",
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "14156b3b2d744b3e7d4daab6c35159b4",
|
||||
"content-hash": "0104251d3227b908f4942d08ded6aef4",
|
||||
"packages": [
|
||||
{
|
||||
"name": "aws/aws-crt-php",
|
||||
|
@ -2639,80 +2639,6 @@
|
|||
},
|
||||
"time": "2022-03-18T11:47:55+00:00"
|
||||
},
|
||||
{
|
||||
"name": "gettext/translator",
|
||||
"version": "v1.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-gettext/Translator.git",
|
||||
"reference": "b18ff33e8203de623854561f5e47e992fc5c50bb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-gettext/Translator/zipball/b18ff33e8203de623854561f5e47e992fc5c50bb",
|
||||
"reference": "b18ff33e8203de623854561f5e47e992fc5c50bb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2|^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^2.15",
|
||||
"gettext/gettext": "^5.0.0",
|
||||
"oscarotero/php-cs-fixer-config": "^1.0",
|
||||
"phpunit/phpunit": "^8.0",
|
||||
"squizlabs/php_codesniffer": "^3.0"
|
||||
},
|
||||
"suggest": {
|
||||
"gettext/gettext": "Is necessary to load and generate array files used by the translator"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Gettext\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Oscar Otero",
|
||||
"email": "oom@oscarotero.com",
|
||||
"homepage": "http://oscarotero.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Gettext translator functions",
|
||||
"homepage": "https://github.com/php-gettext/Translator",
|
||||
"keywords": [
|
||||
"gettext",
|
||||
"i18n",
|
||||
"php",
|
||||
"translator"
|
||||
],
|
||||
"support": {
|
||||
"email": "oom@oscarotero.com",
|
||||
"issues": "https://github.com/php-gettext/Translator/issues",
|
||||
"source": "https://github.com/php-gettext/Translator/tree/v1.1.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://paypal.me/oscarotero",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/oscarotero",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://www.patreon.com/misteroom",
|
||||
"type": "patreon"
|
||||
}
|
||||
],
|
||||
"time": "2022-02-23T20:29:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "graham-campbell/guzzle-factory",
|
||||
"version": "v5.0.3",
|
||||
|
@ -5504,6 +5430,63 @@
|
|||
},
|
||||
"time": "2021-09-18T07:57:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpmyadmin/motranslator",
|
||||
"version": "5.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpmyadmin/motranslator.git",
|
||||
"reference": "87baa97809ec556c40e4cba4bdef998a2de2a003"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpmyadmin/motranslator/zipball/87baa97809ec556c40e4cba4bdef998a2de2a003",
|
||||
"reference": "87baa97809ec556c40e4cba4bdef998a2de2a003",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1 || ^8.0",
|
||||
"symfony/expression-language": "^4.0 || ^5.0 || ^6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpmyadmin/coding-standard": "^3.0.0",
|
||||
"phpstan/phpstan": "^1.4.6",
|
||||
"phpunit/phpunit": "^7.4 || ^8 || ^9"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-apcu": "Needed for ACPu-backed translation cache"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"PhpMyAdmin\\MoTranslator\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"GPL-2.0-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "The phpMyAdmin Team",
|
||||
"email": "developers@phpmyadmin.net",
|
||||
"homepage": "https://www.phpmyadmin.net/team/"
|
||||
}
|
||||
],
|
||||
"description": "Translation API for PHP using Gettext MO files",
|
||||
"homepage": "https://github.com/phpmyadmin/motranslator",
|
||||
"keywords": [
|
||||
"gettext",
|
||||
"i18n",
|
||||
"mo",
|
||||
"translator"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/phpmyadmin/motranslator/issues",
|
||||
"source": "https://github.com/phpmyadmin/motranslator"
|
||||
},
|
||||
"time": "2022-04-26T11:24:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpoption/phpoption",
|
||||
"version": "1.8.1",
|
||||
|
@ -7564,6 +7547,69 @@
|
|||
],
|
||||
"time": "2022-01-02T09:55:41+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/expression-language",
|
||||
"version": "v6.0.8",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/expression-language.git",
|
||||
"reference": "7affe5d5e579cd89c664b364f74ce2d01d57cf29"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/expression-language/zipball/7affe5d5e579cd89c664b364f74ce2d01d57cf29",
|
||||
"reference": "7affe5d5e579cd89c664b364f74ce2d01d57cf29",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.0.2",
|
||||
"symfony/cache": "^5.4|^6.0",
|
||||
"symfony/service-contracts": "^1.1|^2|^3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\ExpressionLanguage\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Provides an engine that can compile and evaluate expressions",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/expression-language/tree/v6.0.8"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-04-12T16:11:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v6.0.7",
|
||||
|
@ -14366,6 +14412,7 @@
|
|||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": "^8.1",
|
||||
"ext-pdo": "*",
|
||||
"ext-curl": "*",
|
||||
"ext-fileinfo": "*",
|
||||
"ext-gd": "*",
|
||||
|
@ -14374,7 +14421,6 @@
|
|||
"ext-json": "*",
|
||||
"ext-maxminddb": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-pdo": "*",
|
||||
"ext-redis": "*",
|
||||
"ext-simplexml": "*",
|
||||
"ext-xml": "*",
|
||||
|
|
|
@ -236,7 +236,10 @@ class BackupCommand extends AbstractBackupCommand
|
|||
|
||||
$io->success(
|
||||
[
|
||||
__('Backup complete in %.2f seconds.', $time_diff),
|
||||
sprintf(
|
||||
__('Backup complete in %.2f seconds.'),
|
||||
$time_diff
|
||||
),
|
||||
]
|
||||
);
|
||||
return 0;
|
||||
|
|
|
@ -43,7 +43,12 @@ class RestoreCommand extends AbstractBackupCommand
|
|||
}
|
||||
|
||||
if (!file_exists($path)) {
|
||||
$io->getErrorStyle()->error(__('Backup path %s not found!', $path));
|
||||
$io->getErrorStyle()->error(
|
||||
sprintf(
|
||||
__('Backup path %s not found!'),
|
||||
$path
|
||||
)
|
||||
);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -33,8 +33,14 @@ class InitializeCommand extends CommandAbstract
|
|||
|
||||
$io->listing(
|
||||
[
|
||||
__('Environment: %s', $this->environment->getAppEnvironmentEnum()->getName()),
|
||||
__('Installation Method: %s', $this->environment->isDocker() ? 'Docker' : 'Ansible'),
|
||||
sprintf(
|
||||
__('Environment: %s'),
|
||||
$this->environment->getAppEnvironmentEnum()->getName()
|
||||
),
|
||||
sprintf(
|
||||
__('Installation Method: %s'),
|
||||
$this->environment->isDocker() ? 'Docker' : 'Ansible'
|
||||
),
|
||||
]
|
||||
);
|
||||
|
||||
|
|
|
@ -54,7 +54,10 @@ class ImportCommand extends CommandAbstract
|
|||
$moGenerator->generateFile($translations, $localeDest);
|
||||
|
||||
$io->writeln(
|
||||
__('Imported locale: %s', $supportedLocale->value . ' (' . $supportedLocale->getLocalName() . ')')
|
||||
sprintf(
|
||||
__('Imported locale: %s'),
|
||||
$supportedLocale->value . ' (' . $supportedLocale->getLocalName() . ')'
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,7 +87,10 @@ class SetupCommand extends CommandAbstract
|
|||
$io->success(
|
||||
[
|
||||
__('AzuraCast installation complete!'),
|
||||
__('Visit %s to complete setup.', 'http://' . $public_ip),
|
||||
sprintf(
|
||||
__('Visit %s to complete setup.'),
|
||||
'http://' . $public_ip
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
@ -54,8 +54,8 @@ class SetAdministratorCommand extends CommandAbstract
|
|||
$this->em->flush();
|
||||
|
||||
$io->text(
|
||||
__(
|
||||
'The account associated with e-mail address "%s" has been set as an administrator',
|
||||
sprintf(
|
||||
__('The account associated with e-mail address "%s" has been set as an administrator'),
|
||||
$user->getEmail()
|
||||
)
|
||||
);
|
||||
|
|
|
@ -294,8 +294,8 @@ class ListAction
|
|||
$row->playlists = (array)$foldersInDir[$row->path]['playlists'];
|
||||
}
|
||||
} elseif (isset($unprocessableMedia[$row->path])) {
|
||||
$row->text = __(
|
||||
'File Not Processed: %s',
|
||||
$row->text = sprintf(
|
||||
__('File Not Processed: %s'),
|
||||
Utilities\Strings::truncateText($unprocessableMedia[$row->path])
|
||||
);
|
||||
} else {
|
||||
|
|
|
@ -155,8 +155,8 @@ class ImportAction extends AbstractPlaylistsAction
|
|||
return $response->withJson(
|
||||
new Entity\Api\StationPlaylistImportResult(
|
||||
true,
|
||||
__(
|
||||
'Playlist successfully imported; %d of %d files were successfully matched.',
|
||||
sprintf(
|
||||
__('Playlist successfully imported; %d of %d files were successfully matched.'),
|
||||
$foundPaths,
|
||||
$totalPaths
|
||||
),
|
||||
|
|
|
@ -53,12 +53,12 @@ class ScheduleApiGenerator
|
|||
$row->type = Entity\Api\StationSchedule::TYPE_PLAYLIST;
|
||||
$row->name = $playlist->getName();
|
||||
$row->title = $row->name;
|
||||
$row->description = __('Playlist: %s', $row->name);
|
||||
$row->description = sprintf(__('Playlist: %s'), $row->name);
|
||||
} elseif ($streamer instanceof Entity\StationStreamer) {
|
||||
$row->type = Entity\Api\StationSchedule::TYPE_STREAMER;
|
||||
$row->name = $streamer->getDisplayName();
|
||||
$row->title = $row->name;
|
||||
$row->description = __('Streamer: %s', $row->name);
|
||||
$row->description = sprintf(__('Streamer: %s'), $row->name);
|
||||
}
|
||||
|
||||
return $row;
|
||||
|
|
|
@ -121,9 +121,7 @@ class StationRequestRepository extends Repository
|
|||
|
||||
if (count($recent_requests) > 0) {
|
||||
throw new Exception(
|
||||
__(
|
||||
'You have submitted a request too recently! Please wait before submitting another one.'
|
||||
)
|
||||
__('You have submitted a request too recently! Please wait before submitting another one.')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -247,9 +245,7 @@ class StationRequestRepository extends Repository
|
|||
|
||||
if ($isDuplicate) {
|
||||
throw new Exception(
|
||||
__(
|
||||
'This song or artist has been played too recently. Wait a while before requesting it again.'
|
||||
)
|
||||
__('This song or artist has been played too recently. Wait a while before requesting it again.')
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ use App\Http\ServerRequest;
|
|||
use Gettext\GettextTranslator;
|
||||
use Gettext\TranslatorFunctions;
|
||||
use Gettext\TranslatorInterface;
|
||||
use PhpMyAdmin\MoTranslator\Loader;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
|
||||
enum SupportedLocales: string
|
||||
|
@ -64,22 +65,14 @@ enum SupportedLocales: string
|
|||
return self::stripLocaleEncoding($this);
|
||||
}
|
||||
|
||||
public function createTranslator(Environment $environment): TranslatorInterface
|
||||
{
|
||||
$translator = new GettextTranslator();
|
||||
$translator->setLanguage($this->value);
|
||||
$translator->loadDomain('default', $environment->getBaseDirectory() . '/resources/locale');
|
||||
return $translator;
|
||||
}
|
||||
|
||||
public function register(Environment $environment): void
|
||||
{
|
||||
$translator = $this->createTranslator($environment);
|
||||
$translator = Loader::getInstance();
|
||||
$translator->setlocale($this->value);
|
||||
$translator->textdomain('default');
|
||||
$translator->bindtextdomain('default', $environment->getBaseDirectory() . '/resources/locale');
|
||||
|
||||
TranslatorFunctions::register($translator);
|
||||
|
||||
// Register translation superglobal functions
|
||||
setlocale(LC_ALL, $this->value);
|
||||
Loader::loadFunctions();
|
||||
}
|
||||
|
||||
public static function default(): self
|
||||
|
|
|
@ -198,10 +198,10 @@ class InstallCommand extends Command
|
|||
);
|
||||
$io->listing(
|
||||
[
|
||||
__('HTTP Port: %d', $env['AZURACAST_HTTP_PORT']),
|
||||
__('HTTPS Port: %d', $env['AZURACAST_HTTPS_PORT']),
|
||||
__('SFTP Port: %d', $env['AZURACAST_SFTP_PORT']),
|
||||
__('Radio Ports: %s', $env['AZURACAST_STATION_PORTS']),
|
||||
sprintf(__('HTTP Port: %d'), $env['AZURACAST_HTTP_PORT']),
|
||||
sprintf(__('HTTPS Port: %d'), $env['AZURACAST_HTTPS_PORT']),
|
||||
sprintf(__('SFTP Port: %d'), $env['AZURACAST_SFTP_PORT']),
|
||||
sprintf(__('Radio Ports: %s'), $env['AZURACAST_STATION_PORTS']),
|
||||
],
|
||||
);
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ abstract class AbstractEnvFile implements ArrayAccess
|
|||
$keyInfo['options'],
|
||||
);
|
||||
|
||||
$envFile[] = '# ' . __('Valid options: %s', implode(', ', $options));
|
||||
$envFile[] = '# ' . sprintf(__('Valid options: %s'), implode(', ', $options));
|
||||
}
|
||||
|
||||
if (isset($values[$key])) {
|
||||
|
@ -122,7 +122,7 @@ abstract class AbstractEnvFile implements ArrayAccess
|
|||
|
||||
if (!empty($keyInfo['default'])) {
|
||||
$default = $this->getEnvValue($keyInfo['default']);
|
||||
$envFile[] = '# ' . __('Default: %s', $default);
|
||||
$envFile[] = '# ' . sprintf(__('Default: %s'), $default);
|
||||
} else {
|
||||
$default = '';
|
||||
}
|
||||
|
|
|
@ -32,28 +32,22 @@ class AzuraCastEnvFile extends AbstractEnvFile
|
|||
|
||||
$config = [
|
||||
Environment::LANG => [
|
||||
'name' => __(
|
||||
'The locale to use for CLI commands.',
|
||||
),
|
||||
'options' => $langOptions,
|
||||
'default' => SupportedLocales::default()->getLocaleWithoutEncoding(),
|
||||
'name' => __('The locale to use for CLI commands.'),
|
||||
'options' => $langOptions,
|
||||
'default' => SupportedLocales::default()->getLocaleWithoutEncoding(),
|
||||
'required' => true,
|
||||
],
|
||||
Environment::APP_ENV => [
|
||||
'name' => __(
|
||||
'The application environment.',
|
||||
),
|
||||
'options' => ApplicationEnvironment::toSelect(),
|
||||
'name' => __('The application environment.'),
|
||||
'options' => ApplicationEnvironment::toSelect(),
|
||||
'required' => true,
|
||||
],
|
||||
Environment::LOG_LEVEL => [
|
||||
'name' => __(
|
||||
'Manually modify the logging level.',
|
||||
),
|
||||
'name' => __('Manually modify the logging level.'),
|
||||
'description' => __(
|
||||
'This allows you to log debug-level errors temporarily (for problem-solving) or reduce the volume of logs that are produced by your installation, without needing to modify whether your installation is a production or development instance.'
|
||||
),
|
||||
'options' => [
|
||||
'options' => [
|
||||
LogLevel::DEBUG,
|
||||
LogLevel::INFO,
|
||||
LogLevel::NOTICE,
|
||||
|
@ -73,17 +67,13 @@ class AzuraCastEnvFile extends AbstractEnvFile
|
|||
'default' => false,
|
||||
],
|
||||
Environment::AUTO_ASSIGN_PORT_MIN => [
|
||||
'name' => __(
|
||||
'Minimum Port for Station Port Assignment'
|
||||
),
|
||||
'name' => __('Minimum Port for Station Port Assignment'),
|
||||
'description' => __(
|
||||
'Modify this if your stations are listening on nonstandard ports.',
|
||||
),
|
||||
],
|
||||
Environment::AUTO_ASSIGN_PORT_MAX => [
|
||||
'name' => __(
|
||||
'Maximum Port for Station Port Assignment'
|
||||
),
|
||||
'name' => __('Maximum Port for Station Port Assignment'),
|
||||
'description' => __(
|
||||
'Modify this if your stations are listening on nonstandard ports.',
|
||||
),
|
||||
|
@ -206,9 +196,9 @@ class AzuraCastEnvFile extends AbstractEnvFile
|
|||
'default' => 5,
|
||||
],
|
||||
Environment::PROFILING_EXTENSION_ENABLED => [
|
||||
'name' => __('Enable Performance Profiling Extension'),
|
||||
'description' => __(
|
||||
'Profiling data can be viewed by visiting %s.',
|
||||
'name' => __('Enable Performance Profiling Extension'),
|
||||
'description' => sprintf(
|
||||
__('Profiling data can be viewed by visiting %s.'),
|
||||
'http://your-azuracast-site/?SPX_KEY=dev&SPX_UI_URI=/',
|
||||
),
|
||||
],
|
||||
|
|
|
@ -11,7 +11,6 @@ use App\Environment;
|
|||
use App\Event\GetNotifications;
|
||||
use App\Session\Flash;
|
||||
use App\Utilities\Strings;
|
||||
use App\Version;
|
||||
|
||||
class BaseUrlCheck
|
||||
{
|
||||
|
@ -55,8 +54,8 @@ class BaseUrlCheck
|
|||
// phpcs:enable Generic.Files.LineLength
|
||||
|
||||
$notification = new Notification();
|
||||
$notification->title = __(
|
||||
'Your "Base URL" setting (%s) does not match the URL you are currently using (%s).',
|
||||
$notification->title = sprintf(
|
||||
__('Your "Base URL" setting (%s) does not match the URL you are currently using (%s).'),
|
||||
Strings::truncateUrl((string)$baseUriWithoutRequest),
|
||||
Strings::truncateUrl((string)$baseUriWithRequest)
|
||||
);
|
||||
|
|
|
@ -46,13 +46,13 @@ class UpdateCheck
|
|||
|
||||
if (ReleaseChannel::Stable === $releaseChannel && $updateData['needs_release_update']) {
|
||||
$notificationParts = [
|
||||
'<b>' . __(
|
||||
'AzuraCast <a href="%s" target="_blank">version %s</a> is now available.',
|
||||
'<b>' . sprintf(
|
||||
__('AzuraCast <a href="%s" target="_blank">version %s</a> is now available.'),
|
||||
Version::CHANGELOG_URL,
|
||||
$updateData['latest_release']
|
||||
) . '</b>',
|
||||
__(
|
||||
'You are currently running version %s. Updating is highly recommended.',
|
||||
sprintf(
|
||||
__('You are currently running version %s. Updating is highly recommended.'),
|
||||
$updateData['current_release']
|
||||
),
|
||||
];
|
||||
|
@ -71,8 +71,8 @@ class UpdateCheck
|
|||
if (ReleaseChannel::RollingRelease === $releaseChannel && $updateData['needs_rolling_update']) {
|
||||
$notificationParts = [];
|
||||
|
||||
$notificationParts[] = '<b>' . __(
|
||||
'Your installation is currently %d update(s) behind the latest version.',
|
||||
$notificationParts[] = '<b>' . sprintf(
|
||||
__('Your installation is currently %d update(s) behind the latest version.'),
|
||||
$updateData['rolling_updates_available']
|
||||
) . '</b>';
|
||||
|
||||
|
|
|
@ -245,7 +245,10 @@ abstract class AbstractAdapter
|
|||
$class_name = array_pop($class_parts);
|
||||
|
||||
if ($e instanceof Fault\BadNameException) {
|
||||
$e_headline = __('%s is not recognized as a service.', $class_name);
|
||||
$e_headline = sprintf(
|
||||
__('%s is not recognized as a service.'),
|
||||
$class_name
|
||||
);
|
||||
$e_body = __('It may not be registered with Supervisor yet. Restarting broadcasting may help.');
|
||||
|
||||
$app_e = new BadNameException(
|
||||
|
@ -254,7 +257,10 @@ abstract class AbstractAdapter
|
|||
$e
|
||||
);
|
||||
} elseif ($e instanceof Fault\AlreadyStartedException) {
|
||||
$e_headline = __('%s cannot start', $class_name);
|
||||
$e_headline = sprintf(
|
||||
__('%s cannot start'),
|
||||
$class_name
|
||||
);
|
||||
$e_body = __('It is already running.');
|
||||
|
||||
$app_e = new AlreadyRunningException(
|
||||
|
@ -263,7 +269,10 @@ abstract class AbstractAdapter
|
|||
$e
|
||||
);
|
||||
} elseif ($e instanceof Fault\NotRunningException) {
|
||||
$e_headline = __('%s cannot stop', $class_name);
|
||||
$e_headline = sprintf(
|
||||
__('%s cannot stop'),
|
||||
$class_name
|
||||
);
|
||||
$e_body = __('It is not running.');
|
||||
|
||||
$app_e = new NotRunningException(
|
||||
|
@ -272,7 +281,10 @@ abstract class AbstractAdapter
|
|||
$e
|
||||
);
|
||||
} else {
|
||||
$e_headline = __('%s encountered an error', $class_name);
|
||||
$e_headline = sprintf(
|
||||
__('%s encountered an error'),
|
||||
$class_name
|
||||
);
|
||||
|
||||
// Get more detailed information for more significant errors.
|
||||
$process_log = $this->supervisor->tailProcessStdoutLog($program_name, 0, 500);
|
||||
|
|
|
@ -26,8 +26,8 @@ class GeoLite extends AbstractIpGeolocator
|
|||
|
||||
public static function getAttribution(): string
|
||||
{
|
||||
return __(
|
||||
'This product includes GeoLite2 data created by MaxMind, available from %s.',
|
||||
return sprintf(
|
||||
__('This product includes GeoLite2 data created by MaxMind, available from %s.'),
|
||||
'<a href="https://www.maxmind.com">https://www.maxmind.com</a>'
|
||||
);
|
||||
}
|
||||
|
|
|
@ -39,7 +39,10 @@ class StationPortCheckerValidator extends ConstraintValidator
|
|||
|
||||
$used_ports = $this->configuration->getUsedPorts($value);
|
||||
|
||||
$message = __('The port %s is in use by another station.', '{{ port }}');
|
||||
$message = sprintf(
|
||||
__('The port %s is in use by another station.'),
|
||||
'{{ port }}'
|
||||
);
|
||||
|
||||
foreach ($ports_to_check as $port_path => $port) {
|
||||
if (null === $port) {
|
||||
|
|
|
@ -34,8 +34,8 @@ class StorageLocationValidator extends ConstraintValidator
|
|||
try {
|
||||
$value->validate();
|
||||
} catch (Exception $e) {
|
||||
$message = __(
|
||||
'Storage location %s could not be validated: %s',
|
||||
$message = sprintf(
|
||||
__('Storage location %s could not be validated: %s'),
|
||||
'{{ storageLocation }}',
|
||||
'{{ error }}'
|
||||
);
|
||||
|
@ -65,8 +65,8 @@ class StorageLocationValidator extends ConstraintValidator
|
|||
/** @var Entity\StorageLocation $row */
|
||||
foreach ($qb->getQuery()->toIterable() as $row) {
|
||||
if ($row->getUri() === $storageLocationUri) {
|
||||
$message = __(
|
||||
'Storage location %s already exists.',
|
||||
$message = sprintf(
|
||||
__('Storage location %s already exists.'),
|
||||
'{{ storageLocation }}',
|
||||
);
|
||||
|
||||
|
|
|
@ -117,7 +117,7 @@ $assets
|
|||
foreach ($queue_totals as $queueType => $queueTotal): ?>
|
||||
<div class="col">
|
||||
<h5 class="mb-0"><?= $queueType ?></h5>
|
||||
<p><?= __('%d queued messages', $queueTotal) ?></p>
|
||||
<p><?= sprintf(__('%d queued messages'), $queueTotal) ?></p>
|
||||
|
||||
<div class="buttons">
|
||||
<a class="btn btn-sm btn-primary" role="button" href="<?= $router->named(
|
||||
|
|
|
@ -17,8 +17,12 @@ $this->layout('main', [
|
|||
</div>
|
||||
<div class="card-body">
|
||||
<?php if ($environment->isDocker()): ?>
|
||||
<p><?=__('Because you are running Docker, some system logs can only be accessed from a shell session on the host computer. You can run <code>%s</code> to access container logs from the terminal.',
|
||||
'docker-compose logs -f (nginx|web|stations|...)')?></p>
|
||||
<p><?= sprintf(
|
||||
__(
|
||||
'Because you are running Docker, some system logs can only be accessed from a shell session on the host computer. You can run <code>%s</code> to access container logs from the terminal.'
|
||||
),
|
||||
'docker-compose logs -f (nginx|web|stations|...)'
|
||||
) ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="list-group list-group-flush">
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
<?php
|
||||
/** @var */
|
||||
|
||||
?><?=__('Account Recovery')?>
|
||||
?><?= __('Account Recovery') ?>
|
||||
|
||||
|
||||
<?=__('An account recovery link has been requested for your account on "%s".', $environment->getAppName())?>
|
||||
<?= sprintf(__('An account recovery link has been requested for your account on "%s".'), $environment->getAppName()) ?>
|
||||
|
||||
|
||||
<?=__('Click the link below to log in to your account.')?>
|
||||
<?= __('Click the link below to log in to your account.') ?>
|
||||
|
||||
|
||||
<?=$router->named(
|
||||
<?= $router->named(
|
||||
'account:recover',
|
||||
['token' => $token],
|
||||
[],
|
||||
|
|
|
@ -172,17 +172,16 @@ endif; ?>
|
|||
<footer id="footer" <?php
|
||||
if (empty($sidebar)): ?>class="footer-alt"<?php
|
||||
endif; ?> role="contentinfo">
|
||||
<?=__(
|
||||
'Powered by %s',
|
||||
<?= sprintf(
|
||||
__('Powered by %s'),
|
||||
'<a href="https://www.azuracast.com/" target="_blank">' . $environment->getAppName(
|
||||
) . '</a> • ' . $version->getVersionText() . ' • ' . ($environment->isDocker(
|
||||
) ? 'Docker' : 'Ansible') . ' • PHP ' . \PHP_MAJOR_VERSION . '.' . \PHP_MINOR_VERSION
|
||||
)?>
|
||||
) ?>
|
||||
<br>
|
||||
<?=__(
|
||||
'Like our software? <a href="%s" target="_blank">Donate to support AzuraCast!</a>',
|
||||
'https://docs.azuracast.com/en/contribute/donate'
|
||||
)?>
|
||||
<?= __('Like our software?') ?> <a href="https://docs.azuracast.com/en/contribute/donate"><?= __(
|
||||
'Donate to support AzuraCast!'
|
||||
) ?></a>
|
||||
</footer>
|
||||
|
||||
<div id="radio-player"></div>
|
||||
|
|
|
@ -10,7 +10,7 @@ $autoloader->addClassMap([
|
|||
$GLOBALS['autoloader'] = $autoloader;
|
||||
|
||||
if (!function_exists('__')) {
|
||||
\Gettext\TranslatorFunctions::register(new \Gettext\Translator());
|
||||
\PhpMyAdmin\MoTranslator\Loader::loadFunctions();
|
||||
}
|
||||
|
||||
// Clear output directory
|
||||
|
|
Loading…
Reference in New Issue