diff --git a/formwork/config/site.yaml b/formwork/config/site.yaml index afbed22af..2ecd7e89e 100644 --- a/formwork/config/site.yaml +++ b/formwork/config/site.yaml @@ -1,5 +1,9 @@ author: '' +languages: + available: [] + httpPreferred: false + defaultTemplate: page description: '' diff --git a/formwork/config/system.yaml b/formwork/config/system.yaml index 37f7623e5..c579dc61c 100644 --- a/formwork/config/system.yaml +++ b/formwork/config/system.yaml @@ -62,10 +62,6 @@ images: preserveExifData: true clearCacheByDefault: false -languages: - available: { } - httpPreferred: false - metadata: setGenerator: true diff --git a/formwork/routes.php b/formwork/routes.php index bd5e52d61..cce8d657e 100644 --- a/formwork/routes.php +++ b/formwork/routes.php @@ -1,11 +1,11 @@ [ - 'action' => function (Config $config, Request $request, Router $router, Languages $languages) { - if (($requested = $languages->requested()) !== null) { + 'action' => function (Config $config, Request $request, Router $router, Site $site) { + if (!$site->languages()->hasMultiple()) { + return; + } + if (($requested = $site->languages()->requested()) !== null) { $router->setRequest(Str::removeStart($router->request(), '/' . $requested)); - } elseif (($preferred = $languages->preferred()) !== null) { + } elseif (($preferred = $site->languages()->preferred()) !== null) { // Don't redirect if we are in Panel if ($config->get('system.panel.enabled') && $router->requestHasPrefix($config->get('system.panel.root'))) { return; diff --git a/formwork/schemes/config/system.yaml b/formwork/schemes/config/system.yaml index a6218e946..783652519 100644 --- a/formwork/schemes/config/system.yaml +++ b/formwork/schemes/config/system.yaml @@ -13,11 +13,6 @@ layout: label: '{{panel.options.system.content}}' fields: [pages.content.safeMode] - languages: - collapsible: true - label: '{{panel.options.system.languages}}' - fields: [languages.available, languages.httpPreferred] - files: collapsible: true label: '{{panel.options.system.files}}' @@ -81,22 +76,6 @@ fields: 1: '{{panel.options.system.content.safeMode.enabled}}' 0: '{{panel.options.system.content.safeMode.disabled}}' - languages.available: - type: tags - label: '{{panel.options.system.languages.availableLanguages}}' - icon: translate - placeholder: '{{panel.options.system.languages.availableLanguages.noLanguages}}' - pattern: '^[a-z]{2,3}$' - translate: [label, placeholder] - options@: languages.names - - languages.httpPreferred: - type: togglegroup - label: '{{panel.options.system.languages.preferredLanguage}}' - options: - 1: '{{panel.options.system.languages.preferredLanguage.enabled}}' - 0: '{{panel.options.system.languages.preferredLanguage.disabled}}' - files.allowedExtensions: type: tags label: '{{panel.options.system.files.allowedExtensions}}' diff --git a/formwork/src/Cms/App.php b/formwork/src/Cms/App.php index e56f537d7..b8bcff033 100644 --- a/formwork/src/Cms/App.php +++ b/formwork/src/Cms/App.php @@ -15,7 +15,7 @@ use Formwork\Http\Request; use Formwork\Http\Response; use Formwork\Images\ImageFactory; -use Formwork\Languages\Languages; +use Formwork\Languages\LanguagesFactory; use Formwork\Pages\PageCollectionFactory; use Formwork\Pages\PageFactory; use Formwork\Pages\PaginationFactory; @@ -25,7 +25,6 @@ use Formwork\Security\CsrfToken; use Formwork\Services\Container; use Formwork\Services\Loaders\ConfigServiceLoader; -use Formwork\Services\Loaders\LanguagesServiceLoader; use Formwork\Services\Loaders\PanelServiceLoader; use Formwork\Services\Loaders\SchemesServiceLoader; use Formwork\Services\Loaders\SiteServiceLoader; @@ -204,10 +203,6 @@ private function loadServices(Container $container): void $container->define(Router::class) ->alias('router'); - $container->define(Languages::class) - ->loader(LanguagesServiceLoader::class) - ->alias('languages'); - $container->define(Translations::class) ->loader(TranslationsServiceLoader::class) ->alias('translations'); @@ -222,6 +217,8 @@ private function loadServices(Container $container): void $container->define(PageCollectionFactory::class); + $container->define(LanguagesFactory::class); + $container->define(Site::class) ->loader(SiteServiceLoader::class) ->alias('site'); diff --git a/formwork/src/Cms/Site.php b/formwork/src/Cms/Site.php index 31da5fa23..6384f680c 100644 --- a/formwork/src/Cms/Site.php +++ b/formwork/src/Cms/Site.php @@ -6,6 +6,7 @@ use Formwork\Files\FileCollection; use Formwork\Files\FileFactory; use Formwork\Languages\Languages; +use Formwork\Languages\LanguagesFactory; use Formwork\Metadata\MetadataCollection; use Formwork\Model\Model; use Formwork\Pages\ContentFile; @@ -119,6 +120,7 @@ public function __construct( array $data, protected App $app, protected Config $config, + protected LanguagesFactory $languagesFactory, protected PageFactory $pageFactory, protected PageCollectionFactory $pageCollectionFactory, ) { @@ -463,7 +465,6 @@ public function schemes(): Schemes public function load(): void { $this->scheme = $this->app->schemes()->get('config.site'); - $this->languages = $this->app->getService(Languages::class); $this->templates = $this->app->getService(Templates::class); $this->users = $this->app->getService(Users::class); @@ -502,6 +503,21 @@ public function files(): FileCollection return $this->files = new FileCollection($files); } + /** + * Set languages + * + * @param array{available: list, httpPreferred: bool, default?: string} $config + */ + protected function setLanguages(array $config): void + { + $this->data['languages'] = $config; + $this->languages = $this->languagesFactory->make($config); + + if (($currentTranslation = $this->languages->current() ?? $this->languages->default()) !== null) { + $this->app->translations()->setCurrent($currentTranslation->code()); + } + } + /** * @param array $metadata */ diff --git a/formwork/src/Languages/Languages.php b/formwork/src/Languages/Languages.php index 376d89a92..85b205a94 100644 --- a/formwork/src/Languages/Languages.php +++ b/formwork/src/Languages/Languages.php @@ -93,6 +93,14 @@ public function isDefault(): bool return $this->current === $this->default; } + /** + * Return if there are multiple languages available + */ + public function hasMultiple(): bool + { + return count($this->available) > 1; + } + /** * Get the proper `Language` instance */ diff --git a/formwork/src/Services/Loaders/LanguagesServiceLoader.php b/formwork/src/Languages/LanguagesFactory.php similarity index 53% rename from formwork/src/Services/Loaders/LanguagesServiceLoader.php rename to formwork/src/Languages/LanguagesFactory.php index 6dd7babd3..4ba0b7d41 100644 --- a/formwork/src/Services/Loaders/LanguagesServiceLoader.php +++ b/formwork/src/Languages/LanguagesFactory.php @@ -1,32 +1,31 @@ , httpPreferred: bool, default?: string} $config + */ + public function make(array $config): Languages { - /** - * @var array $available - */ - $available = (array) $this->config->get('system.languages.available'); + ['available' => $available, 'httpPreferred' => $httpPreferred] = $config; if (preg_match('~^/(' . implode('|', $available) . ')/~i', $this->request->uri(), $matches)) { $requested = $current = $matches[1]; } - if ($this->config->get('system.languages.httpPreferred')) { + if ($httpPreferred) { $languages = $this->request->languages(); foreach (array_keys($languages) as $code) { if (in_array($code, $available, true)) { @@ -36,9 +35,9 @@ public function load(Container $container): Languages } } - return $container->build(Languages::class, ['options' => [ + return $this->container->build(Languages::class, ['options' => [ 'available' => $available, - 'default' => $this->config->get('system.languages.default', $available[0] ?? null), + 'default' => $config['default'] ?? $available[0] ?? null, 'current' => $current ?? null, 'requested' => $requested ?? null, 'preferred' => $preferred ?? null, diff --git a/formwork/src/Panel/Controllers/PagesController.php b/formwork/src/Panel/Controllers/PagesController.php index d5260314a..0d7fd92ad 100644 --- a/formwork/src/Panel/Controllers/PagesController.php +++ b/formwork/src/Panel/Controllers/PagesController.php @@ -110,7 +110,7 @@ public function edit(RouteParams $routeParams): Response } if ($routeParams->has('language')) { - if (empty($this->config->get('system.languages.available'))) { + if (!$this->site->languages()->hasMultiple()) { if ($page->route() === null) { throw new UnexpectedValueException('Unexpected missing page route'); } @@ -119,7 +119,7 @@ public function edit(RouteParams $routeParams): Response $language = $routeParams->get('language'); - if (!in_array($language, $this->config->get('system.languages.available'), true)) { + if (!$this->site->languages()->available()->has($language)) { $this->panel->notify($this->translate('panel.pages.page.cannotEdit.invalidLanguage', $language), 'error'); if ($page->route() === null) { throw new UnexpectedValueException('Unexpected missing page route'); diff --git a/formwork/src/Services/Loaders/TranslationsServiceLoader.php b/formwork/src/Services/Loaders/TranslationsServiceLoader.php index 2a849682d..1e36bde3b 100644 --- a/formwork/src/Services/Loaders/TranslationsServiceLoader.php +++ b/formwork/src/Services/Loaders/TranslationsServiceLoader.php @@ -3,7 +3,6 @@ namespace Formwork\Services\Loaders; use Formwork\Config\Config; -use Formwork\Languages\Languages; use Formwork\Services\Container; use Formwork\Services\ResolutionAwareServiceLoaderInterface; use Formwork\Translations\Translations; @@ -12,7 +11,6 @@ final class TranslationsServiceLoader implements ResolutionAwareServiceLoaderInt { public function __construct( private Config $config, - private Languages $languages, ) {} public function load(Container $container): object @@ -27,6 +25,5 @@ public function onResolved(object $service, Container $container): void { $service->loadFromPath($this->config->get('system.translations.paths.system')); $service->loadFromPath($this->config->get('system.translations.paths.site')); - $service->setCurrent($this->languages->current() ?? $this->config->get('system.translations.fallback')); } } diff --git a/panel/translations/de.yaml b/panel/translations/de.yaml index 254e71d93..5d9d3516a 100644 --- a/panel/translations/de.yaml +++ b/panel/translations/de.yaml @@ -184,12 +184,6 @@ panel.options.system.images.jpegSaveProgressive.disabled: Deaktiviert panel.options.system.images.jpegSaveProgressive.enabled: Aktiviert panel.options.system.images.pngCompressionLevel: PNG-Kompressionsniveau panel.options.system.images.webpQuality: WebP-Qualität -panel.options.system.languages: Sprachen -panel.options.system.languages.availableLanguages: Verfügbare Sprachen -panel.options.system.languages.availableLanguages.noLanguages: Keine Sprachen -panel.options.system.languages.preferredLanguage: Bevorzugte Browsersprache verwenden -panel.options.system.languages.preferredLanguage.disabled: Deaktiviert -panel.options.system.languages.preferredLanguage.enabled: Aktiviert panel.options.system.uploads.processImages: Hochgeladene Bilder verarbeiten (optimieren) panel.options.system.uploads.processImages.disabled: Deaktiviert panel.options.system.uploads.processImages.enabled: Aktiviert @@ -263,6 +257,12 @@ panel.register.createUser: Formwork ist installiert, aber es wurden keine Benutz panel.register.register: Neuen Benutzer registrieren panel.request.error.postMaxSize: Die HTTP-POST-Anfrage überschreitet die maximal zulässige Größe panel.sections.toggle: Abschnitt umschalten +panel.site.languages: Sprachen +panel.site.languages.availableLanguages: Verfügbare Sprachen +panel.site.languages.availableLanguages.noLanguages: Keine Sprachen +panel.site.languages.preferredLanguage: Bevorzugte Browsersprache verwenden +panel.site.languages.preferredLanguage.disabled: Deaktiviert +panel.site.languages.preferredLanguage.enabled: Aktiviert panel.statistics.devices: Geräte panel.statistics.devices.type: Typ panel.statistics.devices.type.desktop: Desktop diff --git a/panel/translations/en.yaml b/panel/translations/en.yaml index 47af4b6a7..7ee50ec0e 100644 --- a/panel/translations/en.yaml +++ b/panel/translations/en.yaml @@ -184,12 +184,6 @@ panel.options.system.images.jpegSaveProgressive.disabled: Disabled panel.options.system.images.jpegSaveProgressive.enabled: Enabled panel.options.system.images.pngCompressionLevel: PNG compression level panel.options.system.images.webpQuality: WebP quality -panel.options.system.languages: Languages -panel.options.system.languages.availableLanguages: Available languages -panel.options.system.languages.availableLanguages.noLanguages: No languages -panel.options.system.languages.preferredLanguage: Use browser prefered language -panel.options.system.languages.preferredLanguage.disabled: Disabled -panel.options.system.languages.preferredLanguage.enabled: Enabled panel.options.system.uploads.processImages: Process (optimize) uploaded images panel.options.system.uploads.processImages.disabled: Disabled panel.options.system.uploads.processImages.enabled: Enabled @@ -263,6 +257,12 @@ panel.register.createUser: Formwork is installed but no users were found. Please panel.register.register: Register new user panel.request.error.postMaxSize: The HTTP POST request exceeds the maximum allowed size panel.sections.toggle: Toggle section +panel.site.languages: Languages +panel.site.languages.availableLanguages: Available languages +panel.site.languages.availableLanguages.noLanguages: No languages +panel.site.languages.preferredLanguage: Use browser preferred language +panel.site.languages.preferredLanguage.disabled: Disabled +panel.site.languages.preferredLanguage.enabled: Enabled panel.statistics.devices: Devices panel.statistics.devices.type: Type panel.statistics.devices.type.desktop: Desktop diff --git a/panel/translations/es.yaml b/panel/translations/es.yaml index 1ac58fb60..2bc6aaefb 100644 --- a/panel/translations/es.yaml +++ b/panel/translations/es.yaml @@ -184,12 +184,6 @@ panel.options.system.images.jpegSaveProgressive.disabled: Desactivado panel.options.system.images.jpegSaveProgressive.enabled: Activado panel.options.system.images.pngCompressionLevel: Nivel de compresión PNG panel.options.system.images.webpQuality: Calidad WebP -panel.options.system.languages: Idiomas -panel.options.system.languages.availableLanguages: Idiomas disponibles -panel.options.system.languages.availableLanguages.noLanguages: Sin idiomas -panel.options.system.languages.preferredLanguage: Usar idioma preferido del navegador -panel.options.system.languages.preferredLanguage.disabled: Desactivado -panel.options.system.languages.preferredLanguage.enabled: Activado panel.options.system.uploads.processImages: Procesar (optimizar) imágenes cargadas panel.options.system.uploads.processImages.disabled: Desactivado panel.options.system.uploads.processImages.enabled: Activado @@ -263,6 +257,12 @@ panel.register.createUser: Formwork está instalado pero no se encontraron usuar panel.register.register: Registrar nuevo usuario panel.request.error.postMaxSize: La solicitud POST excede el tamaño máximo permitido panel.sections.toggle: Alternar sección +panel.site.languages: Idiomas +panel.site.languages.availableLanguages: Idiomas disponibles +panel.site.languages.availableLanguages.noLanguages: Sin idiomas +panel.site.languages.preferredLanguage: Usar idioma preferido del navegador +panel.site.languages.preferredLanguage.disabled: Desactivado +panel.site.languages.preferredLanguage.enabled: Activado panel.statistics.devices: Dispositivos panel.statistics.devices.type: Tipo panel.statistics.devices.type.desktop: Ordenador diff --git a/panel/translations/fr.yaml b/panel/translations/fr.yaml index febb011f9..01ac6fd0a 100644 --- a/panel/translations/fr.yaml +++ b/panel/translations/fr.yaml @@ -184,12 +184,6 @@ panel.options.system.images.jpegSaveProgressive.disabled: Désactivé panel.options.system.images.jpegSaveProgressive.enabled: Activé panel.options.system.images.pngCompressionLevel: Niveau de compression PNG panel.options.system.images.webpQuality: Qualité WebP -panel.options.system.languages: Langues -panel.options.system.languages.availableLanguages: Langues disponibles -panel.options.system.languages.availableLanguages.noLanguages: Aucune langue -panel.options.system.languages.preferredLanguage: Utiliser la langue préférée du navigateur -panel.options.system.languages.preferredLanguage.disabled: Désactivé -panel.options.system.languages.preferredLanguage.enabled: Activé panel.options.system.uploads.processImages: Traitement (optimisé) des images envoyées panel.options.system.uploads.processImages.disabled: Désactivé panel.options.system.uploads.processImages.enabled: Activé @@ -263,6 +257,12 @@ panel.register.createUser: Le compte panel est installé mais aucun utilisateur panel.register.register: Enregistrer un nouvel utilisateur panel.request.error.postMaxSize: La demande HTTP POST dépasse la taille maximale autorisée panel.sections.toggle: Afficher/Masquer la section +panel.site.languages: Langues +panel.site.languages.availableLanguages: Langues disponibles +panel.site.languages.availableLanguages.noLanguages: Aucune langue +panel.site.languages.preferredLanguage: Utiliser la langue préférée du navigateur +panel.site.languages.preferredLanguage.disabled: Désactivé +panel.site.languages.preferredLanguage.enabled: Activé panel.statistics.devices: Appareils panel.statistics.devices.type: Type panel.statistics.devices.type.desktop: Ordinateur diff --git a/panel/translations/it.yaml b/panel/translations/it.yaml index 2add14741..e1412044d 100644 --- a/panel/translations/it.yaml +++ b/panel/translations/it.yaml @@ -184,12 +184,6 @@ panel.options.system.images.jpegSaveProgressive.disabled: Disabilitato panel.options.system.images.jpegSaveProgressive.enabled: Abilitato panel.options.system.images.pngCompressionLevel: Livello di compressione PNG panel.options.system.images.webpQuality: Qualità WebP -panel.options.system.languages: Lingue -panel.options.system.languages.availableLanguages: Lingue disponibili -panel.options.system.languages.availableLanguages.noLanguages: Nessuna lingua -panel.options.system.languages.preferredLanguage: Usa lingua preferita dal browser -panel.options.system.languages.preferredLanguage.disabled: Disabilitato -panel.options.system.languages.preferredLanguage.enabled: Abilitato panel.options.system.uploads.processImages: Elabora (ottimizza) le immagini caricate panel.options.system.uploads.processImages.disabled: Disabilitato panel.options.system.uploads.processImages.enabled: Abilitato @@ -263,6 +257,12 @@ panel.register.createUser: Formwork è installato ma non è stato trovato alcun panel.register.register: Registra nuovo utente panel.request.error.postMaxSize: La richiesta HTTP con metodo POST supera la dimensione massima consentita panel.sections.toggle: Mostra/nascondi sezione +panel.site.languages: Lingue +panel.site.languages.availableLanguages: Lingue disponibili +panel.site.languages.availableLanguages.noLanguages: Nessuna lingua +panel.site.languages.preferredLanguage: Usa lingua preferita dal browser +panel.site.languages.preferredLanguage.disabled: Disabilitato +panel.site.languages.preferredLanguage.enabled: Abilitato panel.statistics.devices: Dispositivi panel.statistics.devices.type: Tipo panel.statistics.devices.type.desktop: Desktop diff --git a/panel/translations/pl.yaml b/panel/translations/pl.yaml index 171800649..02e5b3c31 100644 --- a/panel/translations/pl.yaml +++ b/panel/translations/pl.yaml @@ -184,12 +184,6 @@ panel.options.system.images.jpegSaveProgressive.disabled: Wyłączone panel.options.system.images.jpegSaveProgressive.enabled: Włączone panel.options.system.images.pngCompressionLevel: Poziom kompresji PNG panel.options.system.images.webpQuality: Jakość WebP -panel.options.system.languages: Języki -panel.options.system.languages.availableLanguages: Dostępne języki -panel.options.system.languages.availableLanguages.noLanguages: Brak języków -panel.options.system.languages.preferredLanguage: Użyj preferowanego języka przeglądarki -panel.options.system.languages.preferredLanguage.disabled: Wyłączone -panel.options.system.languages.preferredLanguage.enabled: Włączone panel.options.system.uploads.processImages: Przetwarzaj (optymalizuj) przesyłane obrazy panel.options.system.uploads.processImages.disabled: Wyłączone panel.options.system.uploads.processImages.enabled: Włączone @@ -263,6 +257,12 @@ panel.register.createUser: Formwork jest zainstalowany, ale nie znaleziono żadn panel.register.register: Zarejestruj nowego użytkownika panel.request.error.postMaxSize: Żądanie HTTP POST przekracza maksymalny dozwolony rozmiar panel.sections.toggle: Przełącz sekcję +panel.site.languages: Języki +panel.site.languages.availableLanguages: Dostępne języki +panel.site.languages.availableLanguages.noLanguages: Brak języków +panel.site.languages.preferredLanguage: Użyj preferowanego języka przeglądarki +panel.site.languages.preferredLanguage.disabled: Wyłączone +panel.site.languages.preferredLanguage.enabled: Włączone panel.statistics.devices: Urządzenia panel.statistics.devices.type: Typ panel.statistics.devices.type.desktop: Komputer diff --git a/panel/translations/pt.yaml b/panel/translations/pt.yaml index ea4290950..cabdb66b1 100644 --- a/panel/translations/pt.yaml +++ b/panel/translations/pt.yaml @@ -184,12 +184,6 @@ panel.options.system.images.jpegSaveProgressive.disabled: Desactivado panel.options.system.images.jpegSaveProgressive.enabled: Activado panel.options.system.images.pngCompressionLevel: Nível de compressão PNG panel.options.system.images.webpQuality: Qualidade WebP -panel.options.system.languages: Idiomas -panel.options.system.languages.availableLanguages: Idiomas disponiveis -panel.options.system.languages.availableLanguages.noLanguages: Sem idiomas -panel.options.system.languages.preferredLanguage: Use o idioma preferido do browser -panel.options.system.languages.preferredLanguage.disabled: Desactivado -panel.options.system.languages.preferredLanguage.enabled: Activado panel.options.system.uploads.processImages: Processar (optimizar) imagens enviadas panel.options.system.uploads.processImages.disabled: Desactivado panel.options.system.uploads.processImages.enabled: Activado @@ -263,6 +257,12 @@ panel.register.createUser: O Formwork está instalado, mas nenhum utilizador foi panel.register.register: Registrar novo utilizador panel.request.error.postMaxSize: O pedido HTTP POST excede o tamanho máximo permitido panel.sections.toggle: Alternar seção +panel.site.languages: Idiomas +panel.site.languages.availableLanguages: Idiomas disponiveis +panel.site.languages.availableLanguages.noLanguages: Sem idiomas +panel.site.languages.preferredLanguage: Use o idioma preferido do browser +panel.site.languages.preferredLanguage.disabled: Desactivado +panel.site.languages.preferredLanguage.enabled: Activado panel.statistics.devices: Dispositivos panel.statistics.devices.type: Tipo panel.statistics.devices.type.desktop: Computador diff --git a/panel/translations/ru.yaml b/panel/translations/ru.yaml index 4c44c220f..5a4a099a7 100644 --- a/panel/translations/ru.yaml +++ b/panel/translations/ru.yaml @@ -184,12 +184,6 @@ panel.options.system.images.jpegSaveProgressive.disabled: Отключено panel.options.system.images.jpegSaveProgressive.enabled: Включено panel.options.system.images.pngCompressionLevel: PNG Уровень сжатия panel.options.system.images.webpQuality: Качество WebP -panel.options.system.languages: Языки -panel.options.system.languages.availableLanguages: Доступные Языки -panel.options.system.languages.availableLanguages.noLanguages: Нет Языков -panel.options.system.languages.preferredLanguage: Использовать предпочитаемый язык браузера -panel.options.system.languages.preferredLanguage.disabled: Выключить -panel.options.system.languages.preferredLanguage.enabled: Включить panel.options.system.uploads.processImages: Обрабатывать (оптимизировать) загруженные изображения panel.options.system.uploads.processImages.disabled: Отключено panel.options.system.uploads.processImages.enabled: Включено @@ -263,6 +257,12 @@ panel.register.createUser: Formwork Администратор установл panel.register.register: Регистрация нового пользователя panel.request.error.postMaxSize: Запрос HTTP POST превышает максимально допустимый размер panel.sections.toggle: Переключить раздел +panel.site.languages: Языки +panel.site.languages.availableLanguages: Доступные Языки +panel.site.languages.availableLanguages.noLanguages: Нет Языков +panel.site.languages.preferredLanguage: Использовать предпочитаемый язык браузера +panel.site.languages.preferredLanguage.disabled: Выключить +panel.site.languages.preferredLanguage.enabled: Включить panel.statistics.devices: Устройства panel.statistics.devices.type: Тип panel.statistics.devices.type.desktop: Компьютер diff --git a/panel/translations/uk.yaml b/panel/translations/uk.yaml index ac5c5230e..ef66d1603 100644 --- a/panel/translations/uk.yaml +++ b/panel/translations/uk.yaml @@ -184,12 +184,6 @@ panel.options.system.images.jpegSaveProgressive.disabled: Вимкнено panel.options.system.images.jpegSaveProgressive.enabled: Увімкнено panel.options.system.images.pngCompressionLevel: Рівень стиснення PNG panel.options.system.images.webpQuality: Якість WebP -panel.options.system.languages: Мови -panel.options.system.languages.availableLanguages: Доступні мови -panel.options.system.languages.availableLanguages.noLanguages: Мови не доступні -panel.options.system.languages.preferredLanguage: Використовувати мову браузера за замовчуванням -panel.options.system.languages.preferredLanguage.disabled: Вимкнено -panel.options.system.languages.preferredLanguage.enabled: Увімкнено panel.options.system.uploads.processImages: Обробляти (оптимізувати) завантажені зображення panel.options.system.uploads.processImages.disabled: Вимкнено panel.options.system.uploads.processImages.enabled: Увімкнено @@ -263,6 +257,12 @@ panel.register.createUser: Formwork встановлено, але корист panel.register.register: Зареєструвати нового користувача panel.request.error.postMaxSize: HTTP POST запит перевищує максимальний дозволений розмір panel.sections.toggle: Перемкнути розділ +panel.site.languages: Мови +panel.site.languages.availableLanguages: Доступні мови +panel.site.languages.availableLanguages.noLanguages: Мови не доступні +panel.site.languages.preferredLanguage: Використовувати мову браузера за замовчуванням +panel.site.languages.preferredLanguage.disabled: Вимкнено +panel.site.languages.preferredLanguage.enabled: Увімкнено panel.statistics.devices: Пристрої panel.statistics.devices.type: Тип panel.statistics.devices.type.desktop: Комп’ютер diff --git a/panel/views/pages/editor.php b/panel/views/pages/editor.php index 48b2af76b..f6d0c7f52 100644 --- a/panel/views/pages/editor.php +++ b/panel/views/pages/editor.php @@ -30,7 +30,7 @@ user()->permissions()->has('pages.delete')) : ?> - languages()->available()->isEmpty()) : ?> + languages()->hasMultiple()) : ?>