From 38595c122d120020691006f0d6e66ef6d23202d6 Mon Sep 17 00:00:00 2001 From: ildyria Date: Sat, 20 Jul 2024 17:30:54 +0200 Subject: [PATCH 001/343] squash --- .github/workflows/.env.legacy.mariadb | 2 +- .github/workflows/.env.legacy.postgresql | 2 +- .github/workflows/.env.legacy.sqlite | 2 +- .github/workflows/.env.mariadb | 21 + .github/workflows/.env.postgresql | 18 + .github/workflows/.env.sqlite | 14 + .github/workflows/CICD.yml | 12 +- .github/workflows/php_dist.yml | 7 +- .gitignore | 1 + .phpstorm.meta.php | 1498 +---------- Makefile | 5 +- .../Pipes/Infos/InstallTypeInfo.php | 2 +- app/Assets/Features.php | 8 + .../Commands/Laravel/LangFilesToJson.php | 96 + app/DTO/AlbumProtectionPolicy.php | 2 + app/DTO/AlbumSortingCriterion.php | 2 + app/DTO/PhotoSortingCriterion.php | 2 + app/DTO/SortingCriterion.php | 2 + app/Enum/AspectRatioCSSType.php | 18 + app/Enum/AspectRatioType.php | 16 +- app/Enum/DateOrderingType.php | 14 + .../Controllers/Admin/UsersController.php | 18 + app/Http/Controllers/AuthController.php | 85 + app/Http/Controllers/ConfigController.php | 21 + .../Controllers/Gallery/AlbumController.php | 89 + .../Controllers/Gallery/AlbumsController.php | 22 + .../Controllers/Gallery/ConfigController.php | 27 + .../Controllers/Gallery/PhotoController.php | 25 + .../Controllers/LandingPageController.php | 18 + app/Http/Controllers/VersionController.php | 20 + app/Http/Kernel.php | 1 + app/Http/Middleware/DisableCSP.php | 5 +- app/Http/Middleware/LoginRequired.php | 34 +- app/Http/Requests/Album/GetAlbumRequest.php | 57 + .../Album/SetAlbumProtectionPolicyRequest.php | 72 + .../Requests/Album/UpdateAlbumRequest.php | 110 + .../Requests/Album/UpdateTagAlbumRequest.php | 88 + app/Http/Requests/Photo/GetPhotoRequest.php | 45 + app/Http/Requests/Users/CountUserRequest.php | 32 + .../Collections/FullRootAlbumResource.php | 70 + .../Collections/RootAlbumResource.php | 68 + app/Http/Resources/ConfigurationResource.php | 127 + .../Editable/EditableBaseAlbumResource.php | 62 + .../Resources/GalleryConfigs/AlbumConfig.php | 67 + .../GalleryConfigs/MapProviderData.php | 22 + .../GalleryConfigs/PhotoLayoutConfig.php | 29 + .../Resources/GalleryConfigs/RootConfig.php | 36 + app/Http/Resources/LandingPageResource.php | 48 + .../Models/AbstractAlbumResource.php | 20 + app/Http/Resources/Models/AlbumResource.php | 95 + app/Http/Resources/Models/PhotoResource.php | 94 + .../Resources/Models/SizeVariantResource.php | 27 + .../Resources/Models/SizeVariantsResouce.php | 46 + .../Resources/Models/SmartAlbumResource.php | 51 + .../Resources/Models/TagAlbumResource.php | 78 + .../Resources/Models/ThumbAlbumResource.php | 105 + app/Http/Resources/Models/ThumbResource.php | 23 + .../Models/UserManagementResource.php | 42 + app/Http/Resources/Models/UserResource.php | 24 + .../Models/Utils/PreComputedPhotoData.php | 49 + .../Models/Utils/PreFormattedAlbumData.php | 68 + .../Models/Utils/PreformattedPhotoData.php | 60 + app/Http/Resources/OauthData.php | 17 + .../Resources/Rights/AlbumRightsResource.php | 38 + .../Resources/Rights/GlobalRightsResource.php | 23 + .../Resources/Rights/PhotoRightsResource.php | 31 + .../Rights/RootAlbumRightsResource.php | 24 + .../Rights/SettingsRightsResource.php | 28 + .../Rights/UserManagementRightsResource.php | 26 + .../Resources/Rights/UserRightsResource.php | 20 + app/Http/Resources/Root/AuthConfig.php | 30 + app/Http/Resources/Root/VersionResource.php | 38 + app/Http/Resources/Traits/HasHeaderUrl.php | 72 + .../Traits/HasPrepPhotoCollection.php | 34 + .../RuleSets/Album/ArchiveAlbumRuleSet.php | 23 - .../Album/SetAlbumDescriptionRuleSet.php | 25 - .../RuleSets/Album/SetAlbumLicenseRuleSet.php | 26 - .../RuleSets/Album/SetAlbumNSFWRuleSet.php | 24 - .../Album/SetAlbumSortingRuleSetLegacy.php | 28 - .../RuleSets/Album/SetPhotoSortingRuleSet.php | 28 - .../Requests/HasAlbumSortingCriterion.php | 13 + .../Http/Requests/HasAspectRatio.php | 13 + .../Requests/HasPhotoSortingCriterion.php | 13 + app/Legacy/V1/Controllers/AlbumController.php | 2 +- .../Components/Forms/Album/Properties.php | 20 +- .../Components/Pages/Gallery/Album.php | 2 +- app/Livewire/DTO/AlbumFlags.php | 2 +- app/Livewire/DTO/AlbumsFlags.php | 2 +- app/Models/AccessPermission.php | 3 + app/Models/Album.php | 1 + .../ForwardsToParentImplementation.php | 10 +- .../HasRandomIDAndLegacyTimeBasedID.php | 2 +- app/Models/Extensions/Thumb.php | 26 +- app/Models/Photo.php | 1 + app/Models/SizeVariant.php | 7 + app/Models/SymLink.php | 2 +- app/Models/User.php | 1 + app/Providers/RouteServiceProvider.php | 23 +- app/Relations/HasManyBidirectionally.php | 2 +- app/Relations/HasManyChildAlbums.php | 3 +- app/Relations/HasManyChildPhotos.php | 2 +- app/Relations/HasManyPhotosByTag.php | 3 +- app/Relations/HasManyPhotosRecursively.php | 3 +- app/Relations/HasManySizeVariants.php | 4 +- app/Services/Auth/SessionOrTokenGuard.php | 1 + composer.json | 5 +- composer.lock | 2330 ++++++++++++++--- config/data.php | 201 ++ config/features.php | 15 +- config/scramble.php | 45 +- config/typescript-transformer.php | 86 + .../factories/AccessPermissionFactory.php | 132 + database/factories/AlbumFactory.php | 12 + ...6_214241_thumb_min_max_take_date_order.php | 29 + ...2024_07_12_183751_add_auto_play_config.php | 21 + lang/cz.json | 654 +++++ lang/de.json | 654 +++++ lang/el.json | 654 +++++ lang/en.json | 665 +++++ lang/en/lychee.php | 2 +- lang/es.json | 654 +++++ lang/fr.json | 654 +++++ lang/hu.json | 654 +++++ lang/it.json | 654 +++++ lang/nl.json | 654 +++++ lang/no.json | 654 +++++ lang/pl.json | 654 +++++ lang/pt.json | 654 +++++ lang/ru.json | 654 +++++ lang/sk.json | 654 +++++ lang/sv.json | 654 +++++ lang/vi.json | 654 +++++ lang/zh_CN.json | 654 +++++ lang/zh_TW.json | 654 +++++ package-lock.json | 1547 +++++++++-- package.json | 29 +- phpstan.neon | 19 +- phpunit.xml | 7 +- resources/css/app.css | 145 - resources/js/app.ts | 99 +- resources/js/components/drawers/AlbumEdit.vue | 85 + .../js/components/drawers/PhotoDetails.vue | 134 + .../js/components/footers/GalleryFooter.vue | 41 + .../js/components/footers/LandingFooter.vue | 85 + .../forms/album/AlbumProperties.vue | 271 ++ .../forms/album/AlbumVisibility.vue | 135 + .../components/forms/basic/InputPassword.vue | 35 + .../js/components/forms/basic/InputText.vue | 35 + .../js/components/forms/basic/Textarea.vue | 38 + resources/js/components/gallery/AlbumHero.vue | 71 + .../js/components/gallery/AlbumThumbPanel.vue | 25 + .../js/components/gallery/PhotoThumbPanel.vue | 95 + .../components/gallery/photo/DockButton.vue | 13 + .../components/gallery/photo/NextPrevious.vue | 33 + .../components/gallery/thumbs/AlbumThumb.vue | 95 + .../gallery/thumbs/AlbumThumbImage.vue | 56 + .../components/gallery/thumbs/PhotoThumb.vue | 73 + .../components/gallery/thumbs/ThumbBadge.vue | 16 + .../js/components/headers/HeaderBack.vue | 6 + resources/js/components/headers/HeaderBar.vue | 15 + .../js/components/headers/HeaderButton.vue | 13 + .../js/components/headers/HeaderTitle.vue | 8 + resources/js/components/icons/MiniIcon.vue | 18 + .../js/components/modals/AboutLychee.vue | 90 + resources/js/components/modals/LoginModal.vue | 87 + resources/js/components/modals/ShareAlbum.vue | 95 + resources/js/config/axios-config.ts | 63 + resources/js/config/constants.ts | 71 + resources/js/config/csrf-getter.ts | 66 + resources/js/global.d.ts | 1 + .../js/{lycheeOrg => }/layouts/PhotoLayout.ts | 5 +- .../js/{lycheeOrg => }/layouts/types.d.ts | 0 .../js/{lycheeOrg => }/layouts/useGrid.ts | 0 .../js/{lycheeOrg => }/layouts/useJustify.ts | 0 .../js/{lycheeOrg => }/layouts/useMasonry.ts | 0 .../js/{lycheeOrg => }/layouts/useSquare.ts | 0 resources/js/lychee.d.ts | 418 +++ resources/js/lycheeOrg/backend.d.ts | 458 ---- resources/js/menus/LeftMenu.vue | 199 ++ resources/js/router/routes.ts | 77 + resources/js/services/album-service.ts | 67 + resources/js/services/auth-service.ts | 25 + resources/js/services/constants.ts | 5 + resources/js/services/init-service.ts | 22 + resources/js/services/photo-service.ts | 10 + resources/js/services/sidebar-map.ts | 49 + resources/js/services/users-service.ts | 10 + resources/js/stores/Auth.ts | 30 + resources/js/stores/LycheeState.ts | 22 + resources/js/style/preset.ts | 310 +++ resources/js/views/AllSettings.vue | 2 + resources/js/views/App.vue | 14 + resources/js/views/Diagnostics.vue | 2 + resources/js/views/Error.vue | 69 + resources/js/views/Jobs.vue | 2 + resources/js/views/Landing.vue | 87 + resources/js/views/Maintenance.vue | 2 + resources/js/views/Profile.vue | 2 + resources/js/views/Settings.vue | 2 + resources/js/views/Sharing.vue | 2 + resources/js/views/Users.vue | 2 + resources/js/views/gallery-panels/Album.vue | 156 ++ resources/js/views/gallery-panels/Albums.vue | 110 + resources/js/views/gallery-panels/Map.vue | 0 resources/js/views/gallery-panels/Photo.vue | 315 +++ resources/js/views/gallery-panels/Search.vue | 2 + resources/livewireJs/app.livewire.ts | 20 + .../{js => livewireJs}/data/panel/index.ts | 0 .../data/panel/photoFormPanel.ts | 0 .../data/panel/photoListingPanel.ts | 2 +- .../data/panel/photoSidebarPanel.ts | 2 +- .../data/panel/searchPanel.ts | 2 +- .../data/qrcode/qrBuilder.ts | 0 .../data/views/albumView.ts | 14 +- .../data/views/dropboxView.ts | 0 .../{js => livewireJs}/data/views/index.ts | 0 .../data/views/map.types.d.ts | 0 .../{js => livewireJs}/data/views/mapView.ts | 0 .../data/views/photoView.ts | 4 +- .../{js => livewireJs}/data/views/types.d.ts | 10 +- .../data/views/uploadView.ts | 0 .../{js => livewireJs}/data/webauthn/index.ts | 0 .../data/webauthn/loginWebAuthn.ts | 0 .../data/webauthn/registerWebAuthn.ts | 0 .../lycheeOrg/actions/albumActions.ts | 0 .../lycheeOrg/actions/keybindings.ts | 0 .../lycheeOrg/actions/selection.ts | 0 .../lycheeOrg/actions/sidebarMap.ts | 0 .../lycheeOrg/actions/swipeActions.ts | 0 resources/livewireJs/lycheeOrg/backend.d.ts | 473 ++++ .../lycheeOrg/flags/albumFlags.ts | 0 .../lycheeOrg/flags/photoFlags.ts | 0 resources/sass/app.scss | 156 ++ resources/{css => sass}/fonts.css | 0 resources/views/vueapp.blade.php | 22 + routes/{api.php => api_v1.php} | 10 +- routes/api_v2.php | 208 ++ routes/web-livewire.php | 64 - routes/{web.php => web_v1.php} | 2 +- routes/web_v2.php | 52 + tailwind.config.js => tailwind.config.ts | 92 +- tests/Feature_v1/RedirectTest.php | 6 +- tests/Feature_v2/AlbumTest.php | 32 + tests/Feature_v2/AlbumsTest.php | 52 + tests/Feature_v2/Base/BaseApiV2Test.php | 92 + .../Base/BaseV2Test.php} | 56 +- tests/Feature_v2/PagesTest.php | 42 + tests/Livewire/Forms/Album/CreateTagTest.php | 49 - tests/Livewire/Forms/Album/CreateTest.php | 113 - .../Livewire/Forms/Album/DeletePanelTest.php | 52 - tests/Livewire/Forms/Album/DeleteTest.php | 58 - tests/Livewire/Forms/Album/MergeMoveTest.php | 132 - tests/Livewire/Forms/Album/MovePanelTest.php | 66 - tests/Livewire/Forms/Album/PropertiesTest.php | 71 - tests/Livewire/Forms/Album/RenameTest.php | 61 - .../Livewire/Forms/Album/SearchAlbumTest.php | 138 - tests/Livewire/Forms/Album/ShareWithTest.php | 105 - tests/Livewire/Forms/Album/TransferTest.php | 70 - tests/Livewire/Forms/Album/VisibilityTest.php | 127 - tests/Livewire/Forms/ConfirmTest.php | 42 - tests/Livewire/Forms/FormsProfileTest.php | 198 -- .../Livewire/Forms/ImportFromDropBoxTest.php | 63 - tests/Livewire/Forms/ImportFromServerTest.php | 47 - tests/Livewire/Forms/ImportFromUrlTest.php | 57 - tests/Livewire/Forms/Photo/CopyToTest.php | 68 - tests/Livewire/Forms/Photo/DeleteTest.php | 58 - tests/Livewire/Forms/Photo/DownloadTest.php | 53 - tests/Livewire/Forms/Photo/MoveTest.php | 68 - tests/Livewire/Forms/Photo/RenameTest.php | 61 - tests/Livewire/Forms/Photo/TagTest.php | 70 - tests/Livewire/Forms/Profile/OauthTest.php | 81 - tests/Livewire/Forms/SettingsTest.php | 89 - tests/Livewire/Forms/UploadTest.php | 90 - tests/Livewire/Menus/AlbumAddTest.php | 67 - tests/Livewire/Menus/AlbumDropdownTest.php | 85 - tests/Livewire/Menus/AlbumsDropdownTest.php | 86 - tests/Livewire/Menus/ContextMenuTest.php | 43 - tests/Livewire/Menus/LeftMenuTest.php | 37 - tests/Livewire/Menus/PhotoDropdownTest.php | 153 -- tests/Livewire/Menus/PhotosDropdownTest.php | 119 - tests/Livewire/Modals/AboutTest.php | 30 - tests/Livewire/Modals/LoginTest.php | 39 - tests/Livewire/Modals/ModalTest.php | 46 - tests/Livewire/Modules/ErrorsTest.php | 47 - tests/Livewire/Modules/JobFeedbackTest.php | 48 - tests/Livewire/Modules/SpaceTest.php | 50 - tests/Livewire/Modules/UserLineTest.php | 69 - tests/Livewire/Pages/AlbumTest.php | 134 - tests/Livewire/Pages/AllSettingsTest.php | 59 - tests/Livewire/Pages/DiagnosticsTest.php | 57 - tests/Livewire/Pages/FrameTest.php | 104 - tests/Livewire/Pages/GalleryTest.php | 34 - tests/Livewire/Pages/IndexTest.php | 69 - tests/Livewire/Pages/JobsTest.php | 39 - tests/Livewire/Pages/LandingTest.php | 48 - tests/Livewire/Pages/LoginTest.php | 85 - tests/Livewire/Pages/MaintenanceTest.php | 49 - tests/Livewire/Pages/MapTest.php | 85 - tests/Livewire/Pages/ProfileTest.php | 45 - tests/Livewire/Pages/SearchTest.php | 99 - tests/Livewire/Pages/SettingsTest.php | 48 - tests/Livewire/Pages/SharingTest.php | 56 - tests/Livewire/Pages/UsersTest.php | 94 - tests/Livewire/WireableTest.php | 47 - tsconfig.json | 2 +- vite.config.js | 29 - vite.config.ts | 62 + 307 files changed, 23813 insertions(+), 7223 deletions(-) create mode 100644 .github/workflows/.env.mariadb create mode 100644 .github/workflows/.env.postgresql create mode 100644 .github/workflows/.env.sqlite create mode 100644 app/Console/Commands/Laravel/LangFilesToJson.php create mode 100644 app/Enum/AspectRatioCSSType.php create mode 100644 app/Enum/DateOrderingType.php create mode 100644 app/Http/Controllers/Admin/UsersController.php create mode 100644 app/Http/Controllers/AuthController.php create mode 100644 app/Http/Controllers/ConfigController.php create mode 100644 app/Http/Controllers/Gallery/AlbumController.php create mode 100644 app/Http/Controllers/Gallery/AlbumsController.php create mode 100644 app/Http/Controllers/Gallery/ConfigController.php create mode 100644 app/Http/Controllers/Gallery/PhotoController.php create mode 100644 app/Http/Controllers/LandingPageController.php create mode 100644 app/Http/Controllers/VersionController.php create mode 100644 app/Http/Requests/Album/GetAlbumRequest.php create mode 100644 app/Http/Requests/Album/SetAlbumProtectionPolicyRequest.php create mode 100644 app/Http/Requests/Album/UpdateAlbumRequest.php create mode 100644 app/Http/Requests/Album/UpdateTagAlbumRequest.php create mode 100644 app/Http/Requests/Photo/GetPhotoRequest.php create mode 100644 app/Http/Requests/Users/CountUserRequest.php create mode 100644 app/Http/Resources/Collections/FullRootAlbumResource.php create mode 100644 app/Http/Resources/Collections/RootAlbumResource.php create mode 100644 app/Http/Resources/ConfigurationResource.php create mode 100644 app/Http/Resources/Editable/EditableBaseAlbumResource.php create mode 100644 app/Http/Resources/GalleryConfigs/AlbumConfig.php create mode 100644 app/Http/Resources/GalleryConfigs/MapProviderData.php create mode 100644 app/Http/Resources/GalleryConfigs/PhotoLayoutConfig.php create mode 100644 app/Http/Resources/GalleryConfigs/RootConfig.php create mode 100644 app/Http/Resources/LandingPageResource.php create mode 100644 app/Http/Resources/Models/AbstractAlbumResource.php create mode 100644 app/Http/Resources/Models/AlbumResource.php create mode 100644 app/Http/Resources/Models/PhotoResource.php create mode 100644 app/Http/Resources/Models/SizeVariantResource.php create mode 100644 app/Http/Resources/Models/SizeVariantsResouce.php create mode 100644 app/Http/Resources/Models/SmartAlbumResource.php create mode 100644 app/Http/Resources/Models/TagAlbumResource.php create mode 100644 app/Http/Resources/Models/ThumbAlbumResource.php create mode 100644 app/Http/Resources/Models/ThumbResource.php create mode 100644 app/Http/Resources/Models/UserManagementResource.php create mode 100644 app/Http/Resources/Models/UserResource.php create mode 100644 app/Http/Resources/Models/Utils/PreComputedPhotoData.php create mode 100644 app/Http/Resources/Models/Utils/PreFormattedAlbumData.php create mode 100644 app/Http/Resources/Models/Utils/PreformattedPhotoData.php create mode 100644 app/Http/Resources/OauthData.php create mode 100644 app/Http/Resources/Rights/AlbumRightsResource.php create mode 100644 app/Http/Resources/Rights/GlobalRightsResource.php create mode 100644 app/Http/Resources/Rights/PhotoRightsResource.php create mode 100644 app/Http/Resources/Rights/RootAlbumRightsResource.php create mode 100644 app/Http/Resources/Rights/SettingsRightsResource.php create mode 100644 app/Http/Resources/Rights/UserManagementRightsResource.php create mode 100644 app/Http/Resources/Rights/UserRightsResource.php create mode 100644 app/Http/Resources/Root/AuthConfig.php create mode 100644 app/Http/Resources/Root/VersionResource.php create mode 100644 app/Http/Resources/Traits/HasHeaderUrl.php create mode 100644 app/Http/Resources/Traits/HasPrepPhotoCollection.php delete mode 100644 app/Http/RuleSets/Album/ArchiveAlbumRuleSet.php delete mode 100644 app/Http/RuleSets/Album/SetAlbumDescriptionRuleSet.php delete mode 100644 app/Http/RuleSets/Album/SetAlbumLicenseRuleSet.php delete mode 100644 app/Http/RuleSets/Album/SetAlbumNSFWRuleSet.php delete mode 100644 app/Http/RuleSets/Album/SetAlbumSortingRuleSetLegacy.php delete mode 100644 app/Http/RuleSets/Album/SetPhotoSortingRuleSet.php create mode 100644 app/Legacy/V1/Contracts/Http/Requests/HasAlbumSortingCriterion.php create mode 100644 app/Legacy/V1/Contracts/Http/Requests/HasAspectRatio.php create mode 100644 app/Legacy/V1/Contracts/Http/Requests/HasPhotoSortingCriterion.php create mode 100644 config/data.php create mode 100644 config/typescript-transformer.php create mode 100644 database/factories/AccessPermissionFactory.php create mode 100644 database/migrations/2024_07_06_214241_thumb_min_max_take_date_order.php create mode 100644 database/migrations/2024_07_12_183751_add_auto_play_config.php create mode 100644 lang/cz.json create mode 100644 lang/de.json create mode 100644 lang/el.json create mode 100644 lang/en.json create mode 100644 lang/es.json create mode 100644 lang/fr.json create mode 100644 lang/hu.json create mode 100644 lang/it.json create mode 100644 lang/nl.json create mode 100644 lang/no.json create mode 100644 lang/pl.json create mode 100644 lang/pt.json create mode 100644 lang/ru.json create mode 100644 lang/sk.json create mode 100644 lang/sv.json create mode 100644 lang/vi.json create mode 100644 lang/zh_CN.json create mode 100644 lang/zh_TW.json delete mode 100644 resources/css/app.css create mode 100644 resources/js/components/drawers/AlbumEdit.vue create mode 100644 resources/js/components/drawers/PhotoDetails.vue create mode 100644 resources/js/components/footers/GalleryFooter.vue create mode 100644 resources/js/components/footers/LandingFooter.vue create mode 100644 resources/js/components/forms/album/AlbumProperties.vue create mode 100644 resources/js/components/forms/album/AlbumVisibility.vue create mode 100644 resources/js/components/forms/basic/InputPassword.vue create mode 100644 resources/js/components/forms/basic/InputText.vue create mode 100644 resources/js/components/forms/basic/Textarea.vue create mode 100644 resources/js/components/gallery/AlbumHero.vue create mode 100644 resources/js/components/gallery/AlbumThumbPanel.vue create mode 100644 resources/js/components/gallery/PhotoThumbPanel.vue create mode 100644 resources/js/components/gallery/photo/DockButton.vue create mode 100644 resources/js/components/gallery/photo/NextPrevious.vue create mode 100644 resources/js/components/gallery/thumbs/AlbumThumb.vue create mode 100644 resources/js/components/gallery/thumbs/AlbumThumbImage.vue create mode 100644 resources/js/components/gallery/thumbs/PhotoThumb.vue create mode 100644 resources/js/components/gallery/thumbs/ThumbBadge.vue create mode 100644 resources/js/components/headers/HeaderBack.vue create mode 100644 resources/js/components/headers/HeaderBar.vue create mode 100644 resources/js/components/headers/HeaderButton.vue create mode 100644 resources/js/components/headers/HeaderTitle.vue create mode 100644 resources/js/components/icons/MiniIcon.vue create mode 100644 resources/js/components/modals/AboutLychee.vue create mode 100644 resources/js/components/modals/LoginModal.vue create mode 100644 resources/js/components/modals/ShareAlbum.vue create mode 100644 resources/js/config/axios-config.ts create mode 100644 resources/js/config/constants.ts create mode 100644 resources/js/config/csrf-getter.ts rename resources/js/{lycheeOrg => }/layouts/PhotoLayout.ts (91%) rename resources/js/{lycheeOrg => }/layouts/types.d.ts (100%) rename resources/js/{lycheeOrg => }/layouts/useGrid.ts (100%) rename resources/js/{lycheeOrg => }/layouts/useJustify.ts (100%) rename resources/js/{lycheeOrg => }/layouts/useMasonry.ts (100%) rename resources/js/{lycheeOrg => }/layouts/useSquare.ts (100%) create mode 100644 resources/js/lychee.d.ts delete mode 100644 resources/js/lycheeOrg/backend.d.ts create mode 100644 resources/js/menus/LeftMenu.vue create mode 100644 resources/js/router/routes.ts create mode 100644 resources/js/services/album-service.ts create mode 100644 resources/js/services/auth-service.ts create mode 100644 resources/js/services/constants.ts create mode 100644 resources/js/services/init-service.ts create mode 100644 resources/js/services/photo-service.ts create mode 100644 resources/js/services/sidebar-map.ts create mode 100644 resources/js/services/users-service.ts create mode 100644 resources/js/stores/Auth.ts create mode 100644 resources/js/stores/LycheeState.ts create mode 100644 resources/js/style/preset.ts create mode 100644 resources/js/views/AllSettings.vue create mode 100644 resources/js/views/App.vue create mode 100644 resources/js/views/Diagnostics.vue create mode 100644 resources/js/views/Error.vue create mode 100644 resources/js/views/Jobs.vue create mode 100644 resources/js/views/Landing.vue create mode 100644 resources/js/views/Maintenance.vue create mode 100644 resources/js/views/Profile.vue create mode 100644 resources/js/views/Settings.vue create mode 100644 resources/js/views/Sharing.vue create mode 100644 resources/js/views/Users.vue create mode 100644 resources/js/views/gallery-panels/Album.vue create mode 100644 resources/js/views/gallery-panels/Albums.vue create mode 100644 resources/js/views/gallery-panels/Map.vue create mode 100644 resources/js/views/gallery-panels/Photo.vue create mode 100644 resources/js/views/gallery-panels/Search.vue create mode 100644 resources/livewireJs/app.livewire.ts rename resources/{js => livewireJs}/data/panel/index.ts (100%) rename resources/{js => livewireJs}/data/panel/photoFormPanel.ts (100%) rename resources/{js => livewireJs}/data/panel/photoListingPanel.ts (91%) rename resources/{js => livewireJs}/data/panel/photoSidebarPanel.ts (95%) rename resources/{js => livewireJs}/data/panel/searchPanel.ts (94%) rename resources/{js => livewireJs}/data/qrcode/qrBuilder.ts (100%) rename resources/{js => livewireJs}/data/views/albumView.ts (95%) rename resources/{js => livewireJs}/data/views/dropboxView.ts (100%) rename resources/{js => livewireJs}/data/views/index.ts (100%) rename resources/{js => livewireJs}/data/views/map.types.d.ts (100%) rename resources/{js => livewireJs}/data/views/mapView.ts (100%) rename resources/{js => livewireJs}/data/views/photoView.ts (96%) rename resources/{js => livewireJs}/data/views/types.d.ts (93%) rename resources/{js => livewireJs}/data/views/uploadView.ts (100%) rename resources/{js => livewireJs}/data/webauthn/index.ts (100%) rename resources/{js => livewireJs}/data/webauthn/loginWebAuthn.ts (100%) rename resources/{js => livewireJs}/data/webauthn/registerWebAuthn.ts (100%) rename resources/{js => livewireJs}/lycheeOrg/actions/albumActions.ts (100%) rename resources/{js => livewireJs}/lycheeOrg/actions/keybindings.ts (100%) rename resources/{js => livewireJs}/lycheeOrg/actions/selection.ts (100%) rename resources/{js => livewireJs}/lycheeOrg/actions/sidebarMap.ts (100%) rename resources/{js => livewireJs}/lycheeOrg/actions/swipeActions.ts (100%) create mode 100644 resources/livewireJs/lycheeOrg/backend.d.ts rename resources/{js => livewireJs}/lycheeOrg/flags/albumFlags.ts (100%) rename resources/{js => livewireJs}/lycheeOrg/flags/photoFlags.ts (100%) create mode 100644 resources/sass/app.scss rename resources/{css => sass}/fonts.css (100%) create mode 100644 resources/views/vueapp.blade.php rename routes/{api.php => api_v1.php} (97%) create mode 100644 routes/api_v2.php delete mode 100644 routes/web-livewire.php rename routes/{web.php => web_v1.php} (97%) create mode 100644 routes/web_v2.php rename tailwind.config.js => tailwind.config.ts (68%) create mode 100644 tests/Feature_v2/AlbumTest.php create mode 100644 tests/Feature_v2/AlbumsTest.php create mode 100644 tests/Feature_v2/Base/BaseApiV2Test.php rename tests/{Livewire/Base/BaseLivewireTest.php => Feature_v2/Base/BaseV2Test.php} (65%) create mode 100644 tests/Feature_v2/PagesTest.php delete mode 100644 tests/Livewire/Forms/Album/CreateTagTest.php delete mode 100644 tests/Livewire/Forms/Album/CreateTest.php delete mode 100644 tests/Livewire/Forms/Album/DeletePanelTest.php delete mode 100644 tests/Livewire/Forms/Album/DeleteTest.php delete mode 100644 tests/Livewire/Forms/Album/MergeMoveTest.php delete mode 100644 tests/Livewire/Forms/Album/MovePanelTest.php delete mode 100644 tests/Livewire/Forms/Album/PropertiesTest.php delete mode 100644 tests/Livewire/Forms/Album/RenameTest.php delete mode 100644 tests/Livewire/Forms/Album/SearchAlbumTest.php delete mode 100644 tests/Livewire/Forms/Album/ShareWithTest.php delete mode 100644 tests/Livewire/Forms/Album/TransferTest.php delete mode 100644 tests/Livewire/Forms/Album/VisibilityTest.php delete mode 100644 tests/Livewire/Forms/ConfirmTest.php delete mode 100644 tests/Livewire/Forms/FormsProfileTest.php delete mode 100644 tests/Livewire/Forms/ImportFromDropBoxTest.php delete mode 100644 tests/Livewire/Forms/ImportFromServerTest.php delete mode 100644 tests/Livewire/Forms/ImportFromUrlTest.php delete mode 100644 tests/Livewire/Forms/Photo/CopyToTest.php delete mode 100644 tests/Livewire/Forms/Photo/DeleteTest.php delete mode 100644 tests/Livewire/Forms/Photo/DownloadTest.php delete mode 100644 tests/Livewire/Forms/Photo/MoveTest.php delete mode 100644 tests/Livewire/Forms/Photo/RenameTest.php delete mode 100644 tests/Livewire/Forms/Photo/TagTest.php delete mode 100644 tests/Livewire/Forms/Profile/OauthTest.php delete mode 100644 tests/Livewire/Forms/SettingsTest.php delete mode 100644 tests/Livewire/Forms/UploadTest.php delete mode 100644 tests/Livewire/Menus/AlbumAddTest.php delete mode 100644 tests/Livewire/Menus/AlbumDropdownTest.php delete mode 100644 tests/Livewire/Menus/AlbumsDropdownTest.php delete mode 100644 tests/Livewire/Menus/ContextMenuTest.php delete mode 100644 tests/Livewire/Menus/LeftMenuTest.php delete mode 100644 tests/Livewire/Menus/PhotoDropdownTest.php delete mode 100644 tests/Livewire/Menus/PhotosDropdownTest.php delete mode 100644 tests/Livewire/Modals/AboutTest.php delete mode 100644 tests/Livewire/Modals/LoginTest.php delete mode 100644 tests/Livewire/Modals/ModalTest.php delete mode 100644 tests/Livewire/Modules/ErrorsTest.php delete mode 100644 tests/Livewire/Modules/JobFeedbackTest.php delete mode 100644 tests/Livewire/Modules/SpaceTest.php delete mode 100644 tests/Livewire/Modules/UserLineTest.php delete mode 100644 tests/Livewire/Pages/AlbumTest.php delete mode 100644 tests/Livewire/Pages/AllSettingsTest.php delete mode 100644 tests/Livewire/Pages/DiagnosticsTest.php delete mode 100644 tests/Livewire/Pages/FrameTest.php delete mode 100644 tests/Livewire/Pages/GalleryTest.php delete mode 100644 tests/Livewire/Pages/IndexTest.php delete mode 100644 tests/Livewire/Pages/JobsTest.php delete mode 100644 tests/Livewire/Pages/LandingTest.php delete mode 100644 tests/Livewire/Pages/LoginTest.php delete mode 100644 tests/Livewire/Pages/MaintenanceTest.php delete mode 100644 tests/Livewire/Pages/MapTest.php delete mode 100644 tests/Livewire/Pages/ProfileTest.php delete mode 100644 tests/Livewire/Pages/SearchTest.php delete mode 100644 tests/Livewire/Pages/SettingsTest.php delete mode 100644 tests/Livewire/Pages/SharingTest.php delete mode 100644 tests/Livewire/Pages/UsersTest.php delete mode 100644 tests/Livewire/WireableTest.php delete mode 100644 vite.config.js create mode 100644 vite.config.ts diff --git a/.github/workflows/.env.legacy.mariadb b/.github/workflows/.env.legacy.mariadb index d0f5caa9912..d5a1c3812fe 100644 --- a/.github/workflows/.env.legacy.mariadb +++ b/.github/workflows/.env.legacy.mariadb @@ -3,7 +3,7 @@ APP_URL=https://localhost APP_ENV=dev APP_KEY=SomeRandomString APP_DEBUG=true -LIVEWIRE_ENABLED=false +VUEJS_ENABLED=false LEGACY_API_ENABLED=true DB_CONNECTION=mysql diff --git a/.github/workflows/.env.legacy.postgresql b/.github/workflows/.env.legacy.postgresql index 3fd71d2c2bd..2b83015fc72 100644 --- a/.github/workflows/.env.legacy.postgresql +++ b/.github/workflows/.env.legacy.postgresql @@ -3,7 +3,7 @@ APP_URL=https://localhost APP_ENV=dev APP_KEY=SomeRandomString APP_DEBUG=true -LIVEWIRE_ENABLED=false +VUEJS_ENABLED=false LEGACY_API_ENABLED=true DB_CONNECTION=pgsql diff --git a/.github/workflows/.env.legacy.sqlite b/.github/workflows/.env.legacy.sqlite index d2cb2964594..ad87fb4867b 100644 --- a/.github/workflows/.env.legacy.sqlite +++ b/.github/workflows/.env.legacy.sqlite @@ -3,7 +3,7 @@ APP_URL=https://localhost APP_ENV=dev APP_KEY=SomeRandomString APP_DEBUG=true -LIVEWIRE_ENABLED=false +VUEJS_ENABLED=false LEGACY_API_ENABLED=true DB_CONNECTION=sqlite diff --git a/.github/workflows/.env.mariadb b/.github/workflows/.env.mariadb new file mode 100644 index 00000000000..bdff1d00018 --- /dev/null +++ b/.github/workflows/.env.mariadb @@ -0,0 +1,21 @@ +APP_NAME=Lychee +APP_URL=https://localhost +APP_ENV=dev +APP_KEY=SomeRandomString +APP_DEBUG=true +VUEJS_ENABLED=true +LEGACY_API_ENABLED=false + +DB_CONNECTION=mysql +DB_HOST=localhost +DB_PORT=3306 +DB_DATABASE=homestead_test +DB_USERNAME=root +DB_PASSWORD=root +DB_LIST_FOREIGN_KEYS=true + +CACHE_DRIVER=array +SESSION_DRIVER=array +QUEUE_CONNECTION=sync + +PHOTO_PIPES=true diff --git a/.github/workflows/.env.postgresql b/.github/workflows/.env.postgresql new file mode 100644 index 00000000000..2d6e00da19d --- /dev/null +++ b/.github/workflows/.env.postgresql @@ -0,0 +1,18 @@ +APP_NAME=Lychee +APP_URL=https://localhost +APP_ENV=dev +APP_KEY=SomeRandomString +APP_DEBUG=true +VUEJS_ENABLED=true +LEGACY_API_ENABLED=false + +DB_CONNECTION=pgsql +DB_HOST=localhost +DB_PORT=5432 +DB_DATABASE=postgres +DB_USERNAME=postgres +DB_PASSWORD=postgres + +CACHE_DRIVER=array +SESSION_DRIVER=array +QUEUE_CONNECTION=sync diff --git a/.github/workflows/.env.sqlite b/.github/workflows/.env.sqlite new file mode 100644 index 00000000000..d199e593699 --- /dev/null +++ b/.github/workflows/.env.sqlite @@ -0,0 +1,14 @@ +APP_NAME=Lychee +APP_URL=https://localhost +APP_ENV=dev +APP_KEY=SomeRandomString +APP_DEBUG=true +VUEJS_ENABLED=true +LEGACY_API_ENABLED=false + +DB_CONNECTION=sqlite +DB_LIST_FOREIGN_KEYS=true + +CACHE_DRIVER=array +SESSION_DRIVER=array +QUEUE_CONNECTION=sync diff --git a/.github/workflows/CICD.yml b/.github/workflows/CICD.yml index 42fd14fd4d1..4442907284b 100644 --- a/.github/workflows/CICD.yml +++ b/.github/workflows/CICD.yml @@ -108,13 +108,20 @@ jobs: test-suite: 'Feature_v1' env-file: '.env.legacy' + tests: + name: 2️⃣ PHP tests + needs: + - php_syntax_errors + uses: ./.github/workflows/php_tests.yml + with: + test-suite: 'Feature_v2' + env-file: '.env' + dist: name: 3️⃣ PHP dist needs: - code_style_errors uses: ./.github/workflows/php_dist.yml - with: - env-file: '.env.legacy' createArtifact: name: 4️⃣ Build Artifact @@ -122,6 +129,7 @@ jobs: needs: - phpstan - dist + - tests - tests_legacy - check_js runs-on: ubuntu-latest diff --git a/.github/workflows/php_dist.yml b/.github/workflows/php_dist.yml index 4d4367e902c..fd6ea77243b 100644 --- a/.github/workflows/php_dist.yml +++ b/.github/workflows/php_dist.yml @@ -2,11 +2,6 @@ name: PHP Dist on: workflow_call: - inputs: - env-file: - required: true - type: string - description: 'The env files to use' jobs: php_dist: @@ -75,7 +70,7 @@ jobs: - name: copy Env run: | - cp .github/workflows/${{ inputs.env-file }}.${{ matrix.sql-versions }} Lychee/.env + cp .github/workflows/.env.${{ matrix.sql-versions }} Lychee/.env - name: setup MySQL Database with v3 run: | diff --git a/.gitignore b/.gitignore index 2db2a099c05..31e5434d999 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ storage/image-jobs/* # used by Vite public/hot +lang/php_*.json sync/* diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index f0dbabea643..ede375a8f8a 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -1,6 +1,8 @@ '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\Illuminate\Container\Container::makeWith(0), map([ '' => '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\Illuminate\Contracts\Container\Container::get(0), map([ '' => '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\Illuminate\Contracts\Container\Container::make(0), map([ '' => '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\Illuminate\Contracts\Container\Container::makeWith(0), map([ '' => '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\App::get(0), map([ '' => '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\App::make(0), map([ '' => '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\App::makeWith(0), map([ '' => '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\app(0), map([ '' => '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\resolve(0), map([ '' => '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\Psr\Container\ContainerInterface::get(0), map([ '' => '@', - 'App\Actions\InstallUpdate\CheckUpdate' => \App\Actions\InstallUpdate\CheckUpdate::class, 'App\Assets\Helpers' => \App\Assets\Helpers::class, 'App\Contracts\Models\AbstractSizeVariantNamingStrategy' => \App\Assets\SizeVariantGroupedWithRandomSuffixNamingStrategy::class, 'App\Contracts\Models\SizeVariantFactory' => \App\Image\SizeVariantDefaultFactory::class, 'App\Factories\AlbumFactory' => \App\Factories\AlbumFactory::class, - 'App\Metadata\Json\CommitsRequest' => \App\Metadata\Json\CommitsRequest::class, - 'App\Metadata\Json\UpdateRequest' => \App\Metadata\Json\UpdateRequest::class, - 'App\Metadata\Versions\FileVersion' => \App\Metadata\Versions\FileVersion::class, 'App\Metadata\Versions\GitHubVersion' => \App\Metadata\Versions\GitHubVersion::class, - 'App\Metadata\Versions\InstalledVersion' => \App\Metadata\Versions\InstalledVersion::class, 'App\Metadata\Versions\Remote\GitCommits' => \App\Metadata\Versions\Remote\GitCommits::class, 'App\Metadata\Versions\Remote\GitTags' => \App\Metadata\Versions\Remote\GitTags::class, 'App\ModelFunctions\SymLinkFunctions' => \App\ModelFunctions\SymLinkFunctions::class, 'App\Policies\AlbumQueryPolicy' => \App\Policies\AlbumQueryPolicy::class, 'App\Policies\PhotoQueryPolicy' => \App\Policies\PhotoQueryPolicy::class, 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Dedoc\Scramble\Support\Generator\TypeTransformer' => \Dedoc\Scramble\Support\Generator\TypeTransformer::class, + 'Dedoc\Scramble\Infer' => \Dedoc\Scramble\Infer::class, + 'Dedoc\Scramble\Infer\Scope\Index' => \Dedoc\Scramble\Infer\Scope\Index::class, + 'Dedoc\Scramble\Infer\Services\FileParser' => \Dedoc\Scramble\Infer\Services\FileParser::class, 'Dedoc\Scramble\Support\ServerFactory' => \Dedoc\Scramble\Support\ServerFactory::class, 'Helpers' => \App\Assets\Helpers::class, 'Illuminate\Auth\Console\ClearResetsCommand' => \Illuminate\Auth\Console\ClearResetsCommand::class, - 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, - 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Cache\Console\CacheTableCommand' => \Illuminate\Cache\Console\CacheTableCommand::class, - 'Illuminate\Cache\Console\ClearCommand' => \Illuminate\Cache\Console\ClearCommand::class, - 'Illuminate\Cache\Console\ForgetCommand' => \Illuminate\Cache\Console\ForgetCommand::class, 'Illuminate\Cache\Console\PruneStaleTagsCommand' => \Illuminate\Cache\Console\PruneStaleTagsCommand::class, 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, - 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\NullBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, - 'Illuminate\Contracts\Debug\ExceptionHandler' => \App\Exceptions\Handler::class, - 'Illuminate\Contracts\Foundation\MaintenanceMode' => \Illuminate\Foundation\FileBasedMaintenanceMode::class, 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, - 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, - 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, - 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, 'Illuminate\Database\Console\DumpCommand' => \Illuminate\Database\Console\DumpCommand::class, - 'Illuminate\Database\Console\Factories\FactoryMakeCommand' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, - 'Illuminate\Database\Console\Migrations\FreshCommand' => \Illuminate\Database\Console\Migrations\FreshCommand::class, 'Illuminate\Database\Console\Migrations\InstallCommand' => \Illuminate\Database\Console\Migrations\InstallCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateCommand' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, - 'Illuminate\Database\Console\Migrations\MigrateMakeCommand' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, 'Illuminate\Database\Console\Migrations\RefreshCommand' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, - 'Illuminate\Database\Console\Migrations\ResetCommand' => \Illuminate\Database\Console\Migrations\ResetCommand::class, - 'Illuminate\Database\Console\Migrations\RollbackCommand' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, - 'Illuminate\Database\Console\Migrations\StatusCommand' => \Illuminate\Database\Console\Migrations\StatusCommand::class, - 'Illuminate\Database\Console\MonitorCommand' => \Illuminate\Database\Console\MonitorCommand::class, 'Illuminate\Database\Console\PruneCommand' => \Illuminate\Database\Console\PruneCommand::class, - 'Illuminate\Database\Console\Seeds\SeedCommand' => \Illuminate\Database\Console\Seeds\SeedCommand::class, - 'Illuminate\Database\Console\Seeds\SeederMakeCommand' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, 'Illuminate\Database\Console\ShowCommand' => \Illuminate\Database\Console\ShowCommand::class, 'Illuminate\Database\Console\ShowModelCommand' => \Illuminate\Database\Console\ShowModelCommand::class, 'Illuminate\Database\Console\TableCommand' => \Illuminate\Database\Console\TableCommand::class, 'Illuminate\Database\Console\WipeCommand' => \Illuminate\Database\Console\WipeCommand::class, - 'Illuminate\Foundation\Console\AboutCommand' => \Illuminate\Foundation\Console\AboutCommand::class, - 'Illuminate\Foundation\Console\CastMakeCommand' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'Illuminate\Foundation\Console\ApiInstallCommand' => \Illuminate\Foundation\Console\ApiInstallCommand::class, + 'Illuminate\Foundation\Console\BroadcastingInstallCommand' => \Illuminate\Foundation\Console\BroadcastingInstallCommand::class, 'Illuminate\Foundation\Console\ChannelListCommand' => \Illuminate\Foundation\Console\ChannelListCommand::class, - 'Illuminate\Foundation\Console\ChannelMakeCommand' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, 'Illuminate\Foundation\Console\ClearCompiledCommand' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, - 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, - 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, - 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigPublishCommand' => \Illuminate\Foundation\Console\ConfigPublishCommand::class, 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, - 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, 'Illuminate\Foundation\Console\EnvironmentCommand' => \Illuminate\Foundation\Console\EnvironmentCommand::class, - 'Illuminate\Foundation\Console\EnvironmentDecryptCommand' => \Illuminate\Foundation\Console\EnvironmentDecryptCommand::class, - 'Illuminate\Foundation\Console\EnvironmentEncryptCommand' => \Illuminate\Foundation\Console\EnvironmentEncryptCommand::class, 'Illuminate\Foundation\Console\EventCacheCommand' => \Illuminate\Foundation\Console\EventCacheCommand::class, - 'Illuminate\Foundation\Console\EventClearCommand' => \Illuminate\Foundation\Console\EventClearCommand::class, 'Illuminate\Foundation\Console\EventGenerateCommand' => \Illuminate\Foundation\Console\EventGenerateCommand::class, 'Illuminate\Foundation\Console\EventListCommand' => \Illuminate\Foundation\Console\EventListCommand::class, - 'Illuminate\Foundation\Console\EventMakeCommand' => \Illuminate\Foundation\Console\EventMakeCommand::class, - 'Illuminate\Foundation\Console\ExceptionMakeCommand' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, - 'Illuminate\Foundation\Console\JobMakeCommand' => \Illuminate\Foundation\Console\JobMakeCommand::class, 'Illuminate\Foundation\Console\KeyGenerateCommand' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, 'Illuminate\Foundation\Console\LangPublishCommand' => \Illuminate\Foundation\Console\LangPublishCommand::class, - 'Illuminate\Foundation\Console\ListenerMakeCommand' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, - 'Illuminate\Foundation\Console\MailMakeCommand' => \Illuminate\Foundation\Console\MailMakeCommand::class, - 'Illuminate\Foundation\Console\ModelMakeCommand' => \Illuminate\Foundation\Console\ModelMakeCommand::class, - 'Illuminate\Foundation\Console\NotificationMakeCommand' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, - 'Illuminate\Foundation\Console\ObserverMakeCommand' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, 'Illuminate\Foundation\Console\OptimizeClearCommand' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, 'Illuminate\Foundation\Console\OptimizeCommand' => \Illuminate\Foundation\Console\OptimizeCommand::class, 'Illuminate\Foundation\Console\PackageDiscoverCommand' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, - 'Illuminate\Foundation\Console\PolicyMakeCommand' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, - 'Illuminate\Foundation\Console\ProviderMakeCommand' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, - 'Illuminate\Foundation\Console\RequestMakeCommand' => \Illuminate\Foundation\Console\RequestMakeCommand::class, - 'Illuminate\Foundation\Console\ResourceMakeCommand' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, - 'Illuminate\Foundation\Console\RouteCacheCommand' => \Illuminate\Foundation\Console\RouteCacheCommand::class, - 'Illuminate\Foundation\Console\RouteClearCommand' => \Illuminate\Foundation\Console\RouteClearCommand::class, - 'Illuminate\Foundation\Console\RouteListCommand' => \Illuminate\Foundation\Console\RouteListCommand::class, - 'Illuminate\Foundation\Console\RuleMakeCommand' => \Illuminate\Foundation\Console\RuleMakeCommand::class, - 'Illuminate\Foundation\Console\ScopeMakeCommand' => \Illuminate\Foundation\Console\ScopeMakeCommand::class, 'Illuminate\Foundation\Console\ServeCommand' => \Illuminate\Foundation\Console\ServeCommand::class, 'Illuminate\Foundation\Console\StorageLinkCommand' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'Illuminate\Foundation\Console\StorageUnlinkCommand' => \Illuminate\Foundation\Console\StorageUnlinkCommand::class, 'Illuminate\Foundation\Console\StubPublishCommand' => \Illuminate\Foundation\Console\StubPublishCommand::class, - 'Illuminate\Foundation\Console\TestMakeCommand' => \Illuminate\Foundation\Console\TestMakeCommand::class, 'Illuminate\Foundation\Console\UpCommand' => \Illuminate\Foundation\Console\UpCommand::class, - 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, - 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, - 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, - 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, + 'Illuminate\Foundation\Exceptions\Renderer\Listener' => \Illuminate\Foundation\Exceptions\Renderer\Listener::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, - 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, - 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, - 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, - 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, - 'Illuminate\Queue\Console\BatchesTableCommand' => \Illuminate\Queue\Console\BatchesTableCommand::class, 'Illuminate\Queue\Console\ClearCommand' => \Illuminate\Queue\Console\ClearCommand::class, - 'Illuminate\Queue\Console\FailedTableCommand' => \Illuminate\Queue\Console\FailedTableCommand::class, 'Illuminate\Queue\Console\FlushFailedCommand' => \Illuminate\Queue\Console\FlushFailedCommand::class, 'Illuminate\Queue\Console\ForgetFailedCommand' => \Illuminate\Queue\Console\ForgetFailedCommand::class, 'Illuminate\Queue\Console\ListFailedCommand' => \Illuminate\Queue\Console\ListFailedCommand::class, 'Illuminate\Queue\Console\ListenCommand' => \Illuminate\Queue\Console\ListenCommand::class, - 'Illuminate\Queue\Console\MonitorCommand' => \Illuminate\Queue\Console\MonitorCommand::class, 'Illuminate\Queue\Console\PruneBatchesCommand' => \Illuminate\Queue\Console\PruneBatchesCommand::class, 'Illuminate\Queue\Console\PruneFailedJobsCommand' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, - 'Illuminate\Queue\Console\RestartCommand' => \Illuminate\Queue\Console\RestartCommand::class, 'Illuminate\Queue\Console\RetryBatchCommand' => \Illuminate\Queue\Console\RetryBatchCommand::class, 'Illuminate\Queue\Console\RetryCommand' => \Illuminate\Queue\Console\RetryCommand::class, - 'Illuminate\Queue\Console\TableCommand' => \Illuminate\Queue\Console\TableCommand::class, - 'Illuminate\Queue\Console\WorkCommand' => \Illuminate\Queue\Console\WorkCommand::class, - 'Illuminate\Routing\Console\ControllerMakeCommand' => \Illuminate\Routing\Console\ControllerMakeCommand::class, - 'Illuminate\Routing\Console\MiddlewareMakeCommand' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, 'Illuminate\Routing\Contracts\CallableDispatcher' => \Illuminate\Routing\CallableDispatcher::class, 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, - 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, - 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys' => \Livewire\Mechanisms\ExtendBlade\DeterministicBladeKeys::class, 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, - 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'auth' => \Illuminate\Auth\AuthManager::class, - 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, + 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, - 'cache' => \Illuminate\Cache\CacheManager::class, - 'cache.psr6' => \Symfony\Component\Cache\Adapter\Psr16Adapter::class, - 'cache.store' => \Illuminate\Cache\Repository::class, - 'clockwork' => \Clockwork\Clockwork::class, 'clockwork.authenticator' => \Clockwork\Authentication\NullAuthenticator::class, - 'clockwork.cache' => \Clockwork\DataSource\LaravelCacheDataSource::class, - 'clockwork.eloquent' => \Clockwork\DataSource\EloquentDataSource::class, - 'clockwork.events' => \Clockwork\DataSource\LaravelEventsDataSource::class, - 'clockwork.laravel' => \Clockwork\DataSource\LaravelDataSource::class, - 'clockwork.notifications' => \Clockwork\DataSource\LaravelNotificationsDataSource::class, - 'clockwork.queue' => \Clockwork\DataSource\LaravelQueueDataSource::class, - 'clockwork.redis' => \Clockwork\DataSource\LaravelRedisDataSource::class, 'clockwork.request' => \Clockwork\Request\Request::class, 'clockwork.storage' => \Clockwork\Storage\FileStorage::class, 'clockwork.support' => \Clockwork\Support\Laravel\ClockworkSupport::class, - 'clockwork.views' => \Clockwork\DataSource\LaravelViewsDataSource::class, 'clockwork.xdebug' => \Clockwork\DataSource\XdebugDataSource::class, 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::class, 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, - 'composer' => \Illuminate\Support\Composer::class, - 'cookie' => \Illuminate\Cookie\CookieJar::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'db.schema' => \Illuminate\Database\Schema\MySqlBuilder::class, 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, - 'encrypter' => \Illuminate\Encryption\Encrypter::class, - 'events' => \Illuminate\Events\Dispatcher::class, - 'files' => \Illuminate\Filesystem\Filesystem::class, - 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, - 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, - 'log' => \Illuminate\Log\LogManager::class, 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, - 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, - 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, - 'migrator' => \Illuminate\Database\Migrations\Migrator::class, - 'pipeline' => \Illuminate\Pipeline\Pipeline::class, - 'queue' => \Illuminate\Queue\QueueManager::class, - 'queue.connection' => \Illuminate\Queue\SyncQueue::class, - 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, 'translation.loader' => \Illuminate\Translation\FileLoader::class, - 'translator' => \Illuminate\Translation\Translator::class, - 'url' => \Illuminate\Routing\UrlGenerator::class, - 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, - 'view' => \Illuminate\View\Factory::class, 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, - 'view.finder' => \Illuminate\View\FileViewFinder::class, ])); override(\Illuminate\Foundation\Testing\Concerns\InteractsWithContainer::mock(0), map(['' => "@&\Mockery\MockInterface"])); diff --git a/Makefile b/Makefile index 503560bce34..32a0d75002c 100644 --- a/Makefile +++ b/Makefile @@ -138,4 +138,7 @@ build/%UnitTest.done: build/%.done: tests/Feature_v1/%.php build vendor/bin/phpunit --no-coverage --filter $* && touch build/$*.done -all_tests: $(TEST_DONE) \ No newline at end of file +all_tests: $(TEST_DONE) + +test_v2: + vendor/bin/phpunit --testsuite Feature_v2 --stop-on-failure --stop-on-error diff --git a/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php b/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php index 0323d947ba3..974b7c4fc38 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php @@ -31,7 +31,7 @@ public function handle(array &$data, \Closure $next): array $data[] = Diagnostics::line('APP_URL:', config('app.url') !== 'http://localhost' ? 'set' : 'default'); // Some people leave that value by default... It is now breaking their visual. $data[] = Diagnostics::line('APP_DIR:', config('app.dir_url') !== '' ? 'set' : 'default'); // Some people leave that value by default... It is now breaking their visual. $data[] = Diagnostics::line('LOG_VIEWER_ENABLED:', Features::when('log-viewer', 'true', 'false')); - $data[] = Diagnostics::line('LIVEWIRE_ENABLED:', Features::when('livewire', 'true', 'false')); + $data[] = Diagnostics::line('VUEJS_ENABLED:', Features::when('vuejs', 'true', 'false')); $data[] = ''; return $next($data); diff --git a/app/Assets/Features.php b/app/Assets/Features.php index 71e7409ace4..db0cbc617b9 100644 --- a/app/Assets/Features.php +++ b/app/Assets/Features.php @@ -18,6 +18,10 @@ final class Features */ public static function active(string $featureName): bool { + if ($featureName === 'livewire') { + return false; + } + self::exists($featureName); return config('features.' . $featureName) === true; @@ -32,6 +36,10 @@ public static function active(string $featureName): bool */ public static function inactive(string $featureName): bool { + if ($featureName === 'livewire') { + return true; + } + self::exists($featureName); return config('features.' . $featureName) === false; diff --git a/app/Console/Commands/Laravel/LangFilesToJson.php b/app/Console/Commands/Laravel/LangFilesToJson.php new file mode 100644 index 00000000000..45d4087ea97 --- /dev/null +++ b/app/Console/Commands/Laravel/LangFilesToJson.php @@ -0,0 +1,96 @@ + $data + * + * @return array + * + * @throws PcreException + */ + public function convert(array $data): array + { + $result = []; + + foreach ($data as $key => $value) { + if (is_array($value)) { + $result[$key] = $this->convert($value); + } else { + if (strpos($value, ':') !== false) { + $value = preg_replace('/:(\w+)/', '{$1}', $value); + } + $result[$key] = $value; + } + } + + return $result; + } + + /** + * Execute the console command. + */ + public function handle(): void + { + $sourceDir = base_path('lang/'); + $targetDir = base_path('lang/'); + + $languages = array_diff(scandir($sourceDir), ['.', '..']); + + foreach ($languages as $language) { + $languageDir = $sourceDir . $language . '/'; + /** @var string[] */ + $files = array_diff(scandir($languageDir), ['.', '..']); + + $translations = []; + + foreach ($files as $file) { + $filePath = $languageDir . $file; + $translation = require $filePath; + + $translation = $this->convert($translation); + + $translations[str_replace('.php', '', $file)] = $translation; + } + + $targetPath = $targetDir . $language . '.json'; + + file_put_contents($targetPath, json_encode($translations, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); + } + + $this->info('Language files compiled to JSON successfully!'); + } +} \ No newline at end of file diff --git a/app/DTO/AlbumProtectionPolicy.php b/app/DTO/AlbumProtectionPolicy.php index 5faee05ea8c..66d8e31bf81 100644 --- a/app/DTO/AlbumProtectionPolicy.php +++ b/app/DTO/AlbumProtectionPolicy.php @@ -4,6 +4,7 @@ use App\Models\Extensions\BaseAlbum; use App\SmartAlbums\BaseSmartAlbum; +use Spatie\TypeScriptTransformer\Attributes\TypeScript; /** * This represents the Album Protection Policy. @@ -19,6 +20,7 @@ * - allows for an easy interface between the validated request {@link \App\Http\Requests\Album\SetAlbumProtectionPolicyRequest} * and the applied action {@link \App\Actions\Album\SetProtectionPolicy}. */ +#[TypeScript()] class AlbumProtectionPolicy extends ArrayableDTO { public function __construct( diff --git a/app/DTO/AlbumSortingCriterion.php b/app/DTO/AlbumSortingCriterion.php index faccb7ca852..e73b23aefdb 100644 --- a/app/DTO/AlbumSortingCriterion.php +++ b/app/DTO/AlbumSortingCriterion.php @@ -6,7 +6,9 @@ use App\Enum\ColumnSortingType; use App\Enum\OrderSortingType; use App\Models\Configs; +use Spatie\TypeScriptTransformer\Attributes\TypeScript; +#[TypeScript()] class AlbumSortingCriterion extends SortingCriterion { /** diff --git a/app/DTO/PhotoSortingCriterion.php b/app/DTO/PhotoSortingCriterion.php index 0d80853eb7e..2546e0c723e 100644 --- a/app/DTO/PhotoSortingCriterion.php +++ b/app/DTO/PhotoSortingCriterion.php @@ -6,7 +6,9 @@ use App\Enum\ColumnSortingType; use App\Enum\OrderSortingType; use App\Models\Configs; +use Spatie\TypeScriptTransformer\Attributes\TypeScript; +#[TypeScript()] class PhotoSortingCriterion extends SortingCriterion { /** diff --git a/app/DTO/SortingCriterion.php b/app/DTO/SortingCriterion.php index fe2b9b3a33c..9d9f767d6f9 100644 --- a/app/DTO/SortingCriterion.php +++ b/app/DTO/SortingCriterion.php @@ -4,7 +4,9 @@ use App\Enum\ColumnSortingType; use App\Enum\OrderSortingType; +use Spatie\TypeScriptTransformer\Attributes\TypeScript; +#[TypeScript()] class SortingCriterion extends ArrayableDTO { /** diff --git a/app/Enum/AspectRatioCSSType.php b/app/Enum/AspectRatioCSSType.php new file mode 100644 index 00000000000..2f99716b1fa --- /dev/null +++ b/app/Enum/AspectRatioCSSType.php @@ -0,0 +1,18 @@ + 'aspect-5/4', - self::aspect4by5 => 'aspect-4/5', - self::aspect3by2 => 'aspect-3/2', - self::aspect1by1 => 'aspect-square', - self::aspect2by3 => 'aspect-2/3', - self::aspect1byx9 => 'aspect-video', + self::aspect5by4 => AspectRatioCSSType::aspect5by4, + self::aspect4by5 => AspectRatioCSSType::aspect4by5, + self::aspect3by2 => AspectRatioCSSType::aspect3by2, + self::aspect1by1 => AspectRatioCSSType::aspect1by1, + self::aspect2by3 => AspectRatioCSSType::aspect2by3, + self::aspect1byx9 => AspectRatioCSSType::aspect1byx9, }; } diff --git a/app/Enum/DateOrderingType.php b/app/Enum/DateOrderingType.php new file mode 100644 index 00000000000..74392175785 --- /dev/null +++ b/app/Enum/DateOrderingType.php @@ -0,0 +1,14 @@ + $request->username(), + 'password' => $request->password(), + ])) { + Log::channel('login')->notice(__METHOD__ . ':' . __LINE__ . ' -- User (' . $request->username() . ') has logged in from ' . $request->ip()); + + return; + } + + Log::channel('login')->error(__METHOD__ . ':' . __LINE__ . ' -- User (' . $request->username() . ') has tried to log in from ' . $request->ip()); + throw new UnauthenticatedException('Unknown user or invalid password'); + } + + /** + * Unsets the session values. + * + * @return void + */ + public function logout(): void + { + Auth::logout(); + Session::flush(); + } + + /** + * Get the global rights of the current user. + */ + public function getGlobalRights(): Data + { + return new GlobalRightsResource(); + } + + /** + * First function being called via AJAX. + * + * @return Data + */ + public function getCurrentUser(): Data + { + return new UserResource(Auth::user()); + } + + /** + * Return the configuration for the authentication. + * + * @return Data + */ + public function getConfig(): Data + { + return new AuthConfig(); + } +} diff --git a/app/Http/Controllers/ConfigController.php b/app/Http/Controllers/ConfigController.php new file mode 100644 index 00000000000..08b2d157478 --- /dev/null +++ b/app/Http/Controllers/ConfigController.php @@ -0,0 +1,21 @@ +album()); + $albumResource = null; + + if ($config->is_accessible) { + $albumResource = match (true) { + $request->album() instanceof BaseSmartAlbum => new SmartAlbumResource($request->album()), + $request->album() instanceof TagAlbum => new TagAlbumResource($request->album()), + $request->album() instanceof Album => new AlbumResource($request->album()), + default => throw new LycheeLogicException('This should not happen') + }; + } + + return new AbstractAlbumResource($config, $albumResource); + } + + public function updateAlbum(UpdateAlbumRequest $request): void + { + $album = $request->album(); + if ($album === null) { + throw new LycheeLogicException('album is null'); + } + $album->title = $request->title(); + $album->description = $request->description(); + $album->license = $request->license(); + $album->album_thumb_aspect_ratio = $request->aspectRatio(); + $album->copyright = $request->copyright(); + $album->photo_sorting = $request->photoSortingCriterion(); + $album->album_sorting = $request->albumSortingCriterion(); + $album->save(); + } + + public function updateTagAlbum(UpdateTagAlbumRequest $request): void + { + $album = $request->album(); + if ($album === null) { + throw new LycheeLogicException('album is null'); + } + $album->title = $request->title(); + $album->description = $request->description(); + $album->show_tags = $request->tags(); + $album->copyright = $request->copyright(); + $album->photo_sorting = $request->photoSortingCriterion(); + $album->save(); + } + + public function updateProtectionPolicy(SetAlbumProtectionPolicyRequest $request, SetProtectionPolicy $setProtectionPolicy): void + { + $setProtectionPolicy->do( + $request->album(), + $request->albumProtectionPolicy(), + $request->isPasswordProvided(), + $request->password() + ); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Gallery/AlbumsController.php b/app/Http/Controllers/Gallery/AlbumsController.php new file mode 100644 index 00000000000..3120124848b --- /dev/null +++ b/app/Http/Controllers/Gallery/AlbumsController.php @@ -0,0 +1,22 @@ +get(), new RootConfig()); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Gallery/ConfigController.php b/app/Http/Controllers/Gallery/ConfigController.php new file mode 100644 index 00000000000..0ba96b1e98f --- /dev/null +++ b/app/Http/Controllers/Gallery/ConfigController.php @@ -0,0 +1,27 @@ +photo()); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/LandingPageController.php b/app/Http/Controllers/LandingPageController.php new file mode 100644 index 00000000000..54e3b42b6cf --- /dev/null +++ b/app/Http/Controllers/LandingPageController.php @@ -0,0 +1,18 @@ + \App\Http\Middleware\ContentType::class, 'accept_content_type' => \App\Http\Middleware\AcceptContentType::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'login_required_v1' => \App\Legacy\V1\Middleware\LoginRequiredV1::class, 'login_required' => \App\Http\Middleware\LoginRequired::class, ]; } diff --git a/app/Http/Middleware/DisableCSP.php b/app/Http/Middleware/DisableCSP.php index 57201390160..4146d513063 100644 --- a/app/Http/Middleware/DisableCSP.php +++ b/app/Http/Middleware/DisableCSP.php @@ -34,7 +34,8 @@ public function handle(Request $request, \Closure $next): mixed $dir_url = config('app.dir_url'); if ( config('debugbar.enabled', false) === true || - $request->getRequestUri() === $dir_url . '/docs/api' + $request->getRequestUri() === $dir_url . '/docs/api' || + $request->getRequestUri() === $dir_url . '/request-docs' ) { config(['secure-headers.csp.enable' => false]); } @@ -50,7 +51,7 @@ public function handle(Request $request, \Closure $next): mixed } // disable unsafe-eval if we are on a Livewire page - if (Features::active('livewire') || Str::startsWith($request->getRequestUri(), $dir_url . '/livewire/')) { + if (Features::active('vuejs') || Features::active('livewire') || Str::startsWith($request->getRequestUri(), $dir_url . '/livewire/')) { $this->handleLivewire(); } diff --git a/app/Http/Middleware/LoginRequired.php b/app/Http/Middleware/LoginRequired.php index 83a72f7b51c..ca972d9e1f4 100644 --- a/app/Http/Middleware/LoginRequired.php +++ b/app/Http/Middleware/LoginRequired.php @@ -2,16 +2,13 @@ namespace App\Http\Middleware; -use App\Assets\Features; use App\Exceptions\ConfigurationException; -use App\Exceptions\ConfigurationKeyMissingException; use App\Exceptions\Internal\FrameworkException; use App\Exceptions\Internal\LycheeLogicException; +use App\Exceptions\UnauthenticatedException; use App\Models\Configs; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Log; -use Illuminate\Support\Str; /** * Class LoginRequired. @@ -38,35 +35,24 @@ class LoginRequired */ public function handle(Request $request, \Closure $next, string $requiredStatus): mixed { + if (in_array($requiredStatus, [self::ALBUM, self::ROOT], true) === false) { + throw new LycheeLogicException($requiredStatus . ' is not a valid login requirement.'); + } + // We are logged in. Proceed. if (Auth::user() !== null) { return $next($request); } - $dir_url = config('app.dir_url'); - if (Features::inactive('livewire') && !Str::startsWith($request->getRequestUri(), $dir_url . '/livewire/')) { + if (!Configs::getValueAsBool('login_required')) { + // Login is not required. Proceed. return $next($request); } - if ($requiredStatus !== self::ALBUM && $requiredStatus !== self::ROOT) { - throw new LycheeLogicException($requiredStatus . ' is not a valid login requirement.'); - } - - try { - if (!Configs::getValueAsBool('login_required')) { - // Login is not required. Proceed. - return $next($request); - } - - if ($requiredStatus === self::ALBUM && Configs::getValueAsBool('login_required_root_only')) { - return $next($request); - } - - return redirect()->route('login'); - } catch (ConfigurationKeyMissingException $e) { - Log::warning(__METHOD__ . ':' . __LINE__ . ' ' . $e->getMessage()); - + if ($requiredStatus === self::ALBUM && Configs::getValueAsBool('login_required_root_only')) { return $next($request); } + + throw new UnauthenticatedException('Login required.'); } } diff --git a/app/Http/Requests/Album/GetAlbumRequest.php b/app/Http/Requests/Album/GetAlbumRequest.php new file mode 100644 index 00000000000..a9226d76728 --- /dev/null +++ b/app/Http/Requests/Album/GetAlbumRequest.php @@ -0,0 +1,57 @@ +album]); + + // In case of a password protected album, we must throw an exception + // with a special error message ("Password required") such that the + // front-end shows the password dialog if a password is set, but + // does not show the dialog otherwise. + if ( + !$result && + $this->album instanceof BaseAlbum && + $this->album->public_permissions()?->password !== null + ) { + throw new PasswordRequiredException(); + } + + return $result; + } + + /** + * {@inheritDoc} + */ + public function rules(): array + { + return BasicAlbumIdRuleSet::rules(); + } + + /** + * {@inheritDoc} + */ + protected function processValidatedValues(array $values, array $files): void + { + $this->album = $this->albumFactory->findAbstractAlbumOrFail($values[RequestAttribute::ALBUM_ID_ATTRIBUTE]); + } +} diff --git a/app/Http/Requests/Album/SetAlbumProtectionPolicyRequest.php b/app/Http/Requests/Album/SetAlbumProtectionPolicyRequest.php new file mode 100644 index 00000000000..a8f67a87302 --- /dev/null +++ b/app/Http/Requests/Album/SetAlbumProtectionPolicyRequest.php @@ -0,0 +1,72 @@ + ['required', new RandomIDRule(false)], + RequestAttribute::PASSWORD_ATTRIBUTE => ['sometimes', new PasswordRule(true)], + RequestAttribute::IS_PUBLIC_ATTRIBUTE => 'required|boolean', + RequestAttribute::IS_LINK_REQUIRED_ATTRIBUTE => 'required|boolean', + RequestAttribute::IS_NSFW_ATTRIBUTE => 'required|boolean', + RequestAttribute::GRANTS_DOWNLOAD_ATTRIBUTE => 'required|boolean', + RequestAttribute::GRANTS_FULL_PHOTO_ACCESS_ATTRIBUTE => 'required|boolean', + ]; + } + + /** + * {@inheritDoc} + */ + protected function processValidatedValues(array $values, array $files): void + { + $this->album = $this->albumFactory->findBaseAlbumOrFail( + $values[RequestAttribute::ALBUM_ID_ATTRIBUTE] + ); + $this->albumProtectionPolicy = new AlbumProtectionPolicy( + is_public: static::toBoolean($values[RequestAttribute::IS_PUBLIC_ATTRIBUTE]), + is_link_required: static::toBoolean($values[RequestAttribute::IS_LINK_REQUIRED_ATTRIBUTE]), + is_nsfw: static::toBoolean($values[RequestAttribute::IS_NSFW_ATTRIBUTE]), + grants_full_photo_access: static::toBoolean($values[RequestAttribute::GRANTS_FULL_PHOTO_ACCESS_ATTRIBUTE]), + grants_download: static::toBoolean($values[RequestAttribute::GRANTS_DOWNLOAD_ATTRIBUTE]), + ); + $this->isPasswordProvided = array_key_exists(RequestAttribute::PASSWORD_ATTRIBUTE, $values); + $this->password = $this->isPasswordProvided ? $values[RequestAttribute::PASSWORD_ATTRIBUTE] : null; + } + + /** + * @return AlbumProtectionPolicy + */ + public function albumProtectionPolicy(): AlbumProtectionPolicy + { + return $this->albumProtectionPolicy; + } + + public function isPasswordProvided(): bool + { + return $this->isPasswordProvided; + } +} diff --git a/app/Http/Requests/Album/UpdateAlbumRequest.php b/app/Http/Requests/Album/UpdateAlbumRequest.php new file mode 100644 index 00000000000..9d59e6812bf --- /dev/null +++ b/app/Http/Requests/Album/UpdateAlbumRequest.php @@ -0,0 +1,110 @@ + ['required', new RandomIDRule(false)], + RequestAttribute::TITLE_ATTRIBUTE => ['required', new TitleRule()], + RequestAttribute::LICENSE_ATTRIBUTE => ['required', new Enum(LicenseType::class)], + RequestAttribute::DESCRIPTION_ATTRIBUTE => ['present', new DescriptionRule()], + RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingPhotoType::class)], + RequestAttribute::PHOTO_SORTING_ORDER_ATTRIBUTE => [ + 'required_with:' . RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE, + 'nullable', new Enum(OrderSortingType::class), + ], + RequestAttribute::ALBUM_SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingAlbumType::class)], + RequestAttribute::ALBUM_SORTING_ORDER_ATTRIBUTE => [ + 'required_with:' . RequestAttribute::ALBUM_SORTING_COLUMN_ATTRIBUTE, + 'nullable', new Enum(OrderSortingType::class), + ], + RequestAttribute::ALBUM_ASPECT_RATIO_ATTRIBUTE => ['present', 'nullable', new Enum(AspectRatioType::class)], + RequestAttribute::COPYRIGHT_ATTRIBUTE => ['present', 'nullable', new CopyrightRule()], + ]; + } + + /** + * {@inheritDoc} + */ + protected function processValidatedValues(array $values, array $files): void + { + $album = $this->albumFactory->findBaseAlbumOrFail( + $values[RequestAttribute::ALBUM_ID_ATTRIBUTE] + ); + + if (!$album instanceof Album) { + throw ValidationException::withMessages([RequestAttribute::ALBUM_ID_ATTRIBUTE => 'album type not supported.']); + } + + $this->album = $album; + $this->title = $values[RequestAttribute::TITLE_ATTRIBUTE]; + $this->description = $values[RequestAttribute::DESCRIPTION_ATTRIBUTE]; + $this->license = LicenseType::tryFrom($values[RequestAttribute::LICENSE_ATTRIBUTE]); + + $photoColumn = ColumnSortingPhotoType::tryFrom($values[RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE]); + $photoOrder = OrderSortingType::tryFrom($values[RequestAttribute::PHOTO_SORTING_ORDER_ATTRIBUTE]); + + $this->photoSortingCriterion = $photoColumn === null ? + null : + new PhotoSortingCriterion($photoColumn->toColumnSortingType(), $photoOrder); + + $albumColumn = ColumnSortingPhotoType::tryFrom($values[RequestAttribute::ALBUM_SORTING_COLUMN_ATTRIBUTE]); + $albumOrder = OrderSortingType::tryFrom($values[RequestAttribute::ALBUM_SORTING_ORDER_ATTRIBUTE]); + + $this->albumSortingCriterion = $albumColumn === null ? + null : + new AlbumSortingCriterion($albumColumn->toColumnSortingType(), $albumOrder); + + $this->aspectRatio = AspectRatioType::tryFrom($values[RequestAttribute::ALBUM_ASPECT_RATIO_ATTRIBUTE]); + $this->copyright = $values[RequestAttribute::COPYRIGHT_ATTRIBUTE]; + } +} diff --git a/app/Http/Requests/Album/UpdateTagAlbumRequest.php b/app/Http/Requests/Album/UpdateTagAlbumRequest.php new file mode 100644 index 00000000000..4e06460b568 --- /dev/null +++ b/app/Http/Requests/Album/UpdateTagAlbumRequest.php @@ -0,0 +1,88 @@ + ['required', new RandomIDRule(false)], + RequestAttribute::TITLE_ATTRIBUTE => ['required', new TitleRule()], + RequestAttribute::DESCRIPTION_ATTRIBUTE => ['present', new DescriptionRule()], + RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingPhotoType::class)], + RequestAttribute::PHOTO_SORTING_ORDER_ATTRIBUTE => [ + 'required_with:' . RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE, + 'nullable', new Enum(OrderSortingType::class), + ], + RequestAttribute::TAGS_ATTRIBUTE => 'required|array|min:1', + RequestAttribute::TAGS_ATTRIBUTE . '.*' => 'required|string|min:1', + RequestAttribute::COPYRIGHT_ATTRIBUTE => ['present', 'nullable', new CopyrightRule()], + ]; + } + + /** + * {@inheritDoc} + */ + protected function processValidatedValues(array $values, array $files): void + { + $album = $this->albumFactory->findBaseAlbumOrFail( + $values[RequestAttribute::ALBUM_ID_ATTRIBUTE] + ); + + if (!$album instanceof TagAlbum) { + throw ValidationException::withMessages([RequestAttribute::ALBUM_ID_ATTRIBUTE => 'album type not supported.']); + } + + $this->album = $album; + $this->title = $values[RequestAttribute::TITLE_ATTRIBUTE]; + $this->description = $values[RequestAttribute::DESCRIPTION_ATTRIBUTE]; + + $photoColumn = ColumnSortingPhotoType::tryFrom($values[RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE]); + $photoOrder = OrderSortingType::tryFrom($values[RequestAttribute::PHOTO_SORTING_ORDER_ATTRIBUTE]); + + $this->photoSortingCriterion = $photoColumn === null ? + null : + new PhotoSortingCriterion($photoColumn->toColumnSortingType(), $photoOrder); + + $this->copyright = $values[RequestAttribute::COPYRIGHT_ATTRIBUTE]; + $this->tags = $values[RequestAttribute::TAGS_ATTRIBUTE]; + } +} diff --git a/app/Http/Requests/Photo/GetPhotoRequest.php b/app/Http/Requests/Photo/GetPhotoRequest.php new file mode 100644 index 00000000000..aeaa009394e --- /dev/null +++ b/app/Http/Requests/Photo/GetPhotoRequest.php @@ -0,0 +1,45 @@ +photo); + } + + /** + * {@inheritDoc} + */ + public function rules(): array + { + return GetPhotoRuleSet::rules(); + } + + /** + * {@inheritDoc} + */ + protected function processValidatedValues(array $values, array $files): void + { + /** @var ?string $photoID */ + $photoID = $values[RequestAttribute::PHOTO_ID_ATTRIBUTE]; + $this->photo = Photo::query() + ->with(['size_variants', 'size_variants.sym_links']) + ->findOrFail($photoID); + } +} diff --git a/app/Http/Requests/Users/CountUserRequest.php b/app/Http/Requests/Users/CountUserRequest.php new file mode 100644 index 00000000000..de445d34e81 --- /dev/null +++ b/app/Http/Requests/Users/CountUserRequest.php @@ -0,0 +1,32 @@ + */ + public Collection $smart_albums; + /** @var Collection */ + public Collection $tag_albums; + /** @var Collection */ + public Collection $albums; + /** @var Collection */ + public ?Collection $shared_albums = null; + + /** + * @param Collection $smart_albums + * @param Collection $tag_albums + * @param Collection $albums + * @param Collection|null $shared_albums + * + * @return void + */ + public function __construct( + Collection $smart_albums, + Collection $tag_albums, + Collection $albums, + ?Collection $shared_albums = null + ) { + $this->smart_albums = $smart_albums; + $this->tag_albums = $tag_albums; + $this->albums = $albums; + $this->shared_albums = $shared_albums; + } + + public static function fromDTO(TopAlbumDTO $dto): self + { + return new self( + smart_albums: SmartAlbumResource::collect($dto->smart_albums), + tag_albums: TagAlbumResource::collect($dto->tag_albums), + albums: AlbumResource::collect($dto->albums), + shared_albums: $dto->shared_albums !== null ? AlbumResource::collect($dto->shared_albums) : null, + ); + } +} \ No newline at end of file diff --git a/app/Http/Resources/Collections/RootAlbumResource.php b/app/Http/Resources/Collections/RootAlbumResource.php new file mode 100644 index 00000000000..9c81cfa2009 --- /dev/null +++ b/app/Http/Resources/Collections/RootAlbumResource.php @@ -0,0 +1,68 @@ + */ + public Collection $smart_albums; + /** @var Collection */ + public Collection $tag_albums; + /** @var Collection */ + public Collection $albums; + /** @var Collection */ + public Collection $shared_albums; + public RootConfig $config; + + /** + * @param Collection $smart_albums + * @param Collection $tag_albums + * @param Collection $albums + * @param Collection $shared_albums + * @param RootConfig $config + * + * @return void + */ + public function __construct( + Collection $smart_albums, + Collection $tag_albums, + Collection $albums, + Collection $shared_albums, + RootConfig $config, + ) { + $this->smart_albums = $smart_albums; + $this->tag_albums = $tag_albums; + $this->albums = $albums; + $this->shared_albums = $shared_albums; + $this->config = $config; + } + + public static function fromDTO(TopAlbumDTO $dto, RootConfig $config): self + { + return new self( + smart_albums: ThumbAlbumResource::collect($dto->smart_albums->values()), + tag_albums: ThumbAlbumResource::collect($dto->tag_albums), + albums: ThumbAlbumResource::collect($dto->albums), + shared_albums: $dto->shared_albums !== null ? ThumbAlbumResource::collect($dto->shared_albums) : collect([]), + config: $config, + ); + } +} \ No newline at end of file diff --git a/app/Http/Resources/ConfigurationResource.php b/app/Http/Resources/ConfigurationResource.php new file mode 100644 index 00000000000..77a6c99ca77 --- /dev/null +++ b/app/Http/Resources/ConfigurationResource.php @@ -0,0 +1,127 @@ + + */ + public function toArray($request): array + { + $lycheeVersion = resolve(InstalledVersion::class); + $rss_feeds = []; + + if (Configs::getValueAsBool('rss_enable')) { + try { + /** @var array $feeds */ + $feeds = resolve(Repository::class)->get('feed.feeds', []); + foreach ($feeds as $name => $feed) { + $rss_feeds[] = [ + 'url' => route("feeds.{$name}"), + 'mimetype' => FeedContentType::forLink($feed['format'] ?? 'atom'), + 'title' => $feed['title'] ?? '', + ]; + } + } catch (\Throwable $e) { + // do nothing, but report the exception, if the + // configuration for the RSS feed cannot be loaded or + // if the route to any RSS feed or the mime type of any + // feed cannot be resolved + Handler::reportSafely($e); + $rss_feeds = []; + } + } + + return [ + 'version' => $this->when(Auth::check() || !Configs::getValueAsBool('hide_version_number'), $lycheeVersion->getVersion()), + 'rss_feeds' => $rss_feeds, + 'album_decoration' => Configs::getValueAsEnum('album_decoration', AlbumDecorationType::class), + 'album_decoration_orientation' => Configs::getValueAsEnum('album_decoration_orientation', AlbumDecorationOrientation::class), + 'album_subtitle_type' => Configs::getValueAsEnum('album_subtitle_type', ThumbAlbumSubtitleType::class), + 'check_for_updates' => Configs::getValueAsBool('check_for_updates'), + 'default_album_protection' => Configs::getValueAsEnum('default_album_protection', DefaultAlbumProtectionType::class), + 'feeds' => [], + 'footer_additional_text' => Configs::getValueAsString('footer_additional_text'), + 'footer_show_copyright' => Configs::getValueAsBool('footer_show_copyright'), + 'footer_show_social_media' => Configs::getValueAsBool('footer_show_social_media'), + 'grants_download' => Configs::getValueAsBool('grants_download'), + 'grants_full_photo_access' => Configs::getValueAsBool('grants_full_photo_access'), + 'image_overlay_type' => Configs::getValueAsEnum('image_overlay_type', ImageOverlayType::class), + 'landing_page_enable' => Configs::getValueAsBool('landing_page_enable'), + 'landing_background' => Configs::getValueAsString('landing_background'), + 'landing_subtitle' => Configs::getValueAsString('landing_subtitle'), + 'landing_title' => Configs::getValueAsString('landing_title'), + 'lang' => Configs::getValueAsString('lang'), + 'layout' => Configs::getValueAsEnum('layout', PhotoLayoutType::class), + 'legacy_id_redirection' => Configs::getValueAsBool('legacy_id_redirection'), + 'location_decoding' => Configs::getValueAsBool('location_decoding'), + 'location_decoding_timeout' => Configs::getValueAsInt('location_decoding_timeout'), + 'location_show' => Configs::getValueAsBool('location_show'), + 'location_show_public' => Configs::getValueAsBool('location_show_public'), + 'map_display' => Configs::getValueAsBool('map_display'), + 'map_display_direction' => Configs::getValueAsString('map_display_direction'), + 'map_display_public' => Configs::getValueAsBool('map_display_public'), + 'map_include_subalbums' => Configs::getValueAsBool('map_include_subalbums'), + 'map_provider' => Configs::getValueAsEnum('map_provider', MapProviders::class), + 'mod_frame_enabled' => Configs::getValueAsBool('mod_frame_enabled'), + 'mod_frame_refresh' => Configs::getValueAsInt('mod_frame_refresh'), + 'new_photos_notification' => Configs::getValueAsBool('new_photos_notification'), + 'nsfw_banner_override' => Configs::getValueAsString('nsfw_banner_override'), + 'nsfw_blur' => Configs::getValueAsBool('nsfw_blur'), + 'nsfw_visible' => Configs::getValueAsBool('nsfw_visible'), + 'nsfw_warning' => Configs::getValueAsBool('nsfw_warning'), + 'nsfw_warning_admin' => Configs::getValueAsBool('nsfw_warning_admin'), + 'photos_wraparound' => Configs::getValueAsBool('photos_wraparound'), + 'public_search' => Configs::getValueAsBool('search_public'), // legacy + 'rss_enable' => Configs::getValueAsBool('rss_enable'), + 'rss_max_items' => Configs::getValueAsInt('rss_max_items'), + 'rss_recent_days' => Configs::getValueAsInt('rss_recent_days'), + 'share_button_visible' => Configs::getValueAsBool('share_button_visible'), + 'site_copyright_begin' => Configs::getValueAsInt('site_copyright_begin'), + 'site_copyright_end' => Configs::getValueAsInt('site_copyright_end'), + 'site_owner' => Configs::getValueAsString('site_owner'), + 'site_title' => Configs::getValueAsString('site_title'), + 'sm_facebook_url' => Configs::getValueAsString('sm_facebook_url'), + 'sm_flickr_url' => Configs::getValueAsString('sm_flickr_url'), + 'sm_instagram_url' => Configs::getValueAsString('sm_instagram_url'), + 'sm_twitter_url' => Configs::getValueAsString('sm_twitter_url'), + 'sm_youtube_url' => Configs::getValueAsString('sm_youtube_url'), + 'sorting_albums' => AlbumSortingCriterion::createDefault(), + 'sorting_photos' => PhotoSortingCriterion::createDefault(), + 'swipe_tolerance_x' => Configs::getValueAsInt('swipe_tolerance_x'), + 'swipe_tolerance_y' => Configs::getValueAsInt('swipe_tolerance_y'), + 'update_check_every_days' => Configs::getValueAsInt('update_check_every_days'), + 'upload_processing_limit' => Configs::getValueAsInt('upload_processing_limit'), + 'zip64' => Configs::getValueAsBool('zip64'), + 'zip_deflate_level' => Configs::getValueAsInt('zip_deflate_level'), + ]; + } +} diff --git a/app/Http/Resources/Editable/EditableBaseAlbumResource.php b/app/Http/Resources/Editable/EditableBaseAlbumResource.php new file mode 100644 index 00000000000..753b928d13f --- /dev/null +++ b/app/Http/Resources/Editable/EditableBaseAlbumResource.php @@ -0,0 +1,62 @@ +id = $album->id; + $this->title = $album->title; + $this->description = $album->description; + $this->copyright = $album->copyright; + $this->photo_sorting = $album->photo_sorting; + $this->is_model_album = false; + $this->license = null; + $this->album_sorting = null; + $this->header_id = null; + $this->cover_id = null; + + if ($album instanceof Album) { + $this->is_model_album = true; + $this->license = $album->license; + $this->album_sorting = $album->album_sorting; + $this->header_id = $album->header_id; + $this->cover_id = $album->cover_id; + $this->aspect_ratio = $album->album_thumb_aspect_ratio; + } + + if ($album instanceof TagAlbum) { + $this->tags = $album->show_tags; + } + } + + public static function fromModel(Album|TagAlbum $album): EditableBaseAlbumResource + { + return new self($album); + } +} diff --git a/app/Http/Resources/GalleryConfigs/AlbumConfig.php b/app/Http/Resources/GalleryConfigs/AlbumConfig.php new file mode 100644 index 00000000000..b1164b05370 --- /dev/null +++ b/app/Http/Resources/GalleryConfigs/AlbumConfig.php @@ -0,0 +1,67 @@ +public_permissions(); + + $this->is_accessible = $is_accessible; + $this->is_base_album = $album instanceof BaseAlbum; + $this->is_model_album = $album instanceof Album; + $this->is_password_protected = !$is_accessible && $public_perm?->password !== null; + $this->setIsMapAccessible(false); + $this->setIsSearchAccessible($this->is_base_album); + $this->is_mod_frame_enabled = Configs::getValueAsBool('mod_frame_enabled'); + if ($album instanceof Album && $album->album_thumb_aspect_ratio !== null) { + $this->album_thumb_css_aspect_ratio = $album->album_thumb_aspect_ratio->css(); + } else { + $this->album_thumb_css_aspect_ratio = Configs::getValueAsEnum('default_album_thumb_aspect_ratio', AspectRatioType::class)->css(); + } + Configs::getValueAsEnum('default_album_thumb_aspect_ratio', AspectRatioType::class)->css(); + $this->album_subtitle_type = Configs::getValueAsEnum('album_subtitle_type', ThumbAlbumSubtitleType::class); + $this->can_rotate = Configs::getValueAsBool('editor_enabled'); + $this->can_autoplay = Configs::getValueAsBool('autoplay_enabled'); + } + + public function setIsMapAccessible(bool $is_map_accessible): void + { + $map_display = Configs::getValueAsBool('map_display'); + $public_display = Auth::check() || Configs::getValueAsBool('map_display_public'); + $this->is_map_accessible = $is_map_accessible && $map_display && $public_display; + } + + public function setIsSearchAccessible(bool $is_base_album): void + { + $this->is_search_accessible = (Auth::check() || Configs::getValueAsBool('search_public')) && $is_base_album; + } +} \ No newline at end of file diff --git a/app/Http/Resources/GalleryConfigs/MapProviderData.php b/app/Http/Resources/GalleryConfigs/MapProviderData.php new file mode 100644 index 00000000000..66ea04404b6 --- /dev/null +++ b/app/Http/Resources/GalleryConfigs/MapProviderData.php @@ -0,0 +1,22 @@ +attribution = $map_providers->getAtributionHtml(); + $this->layer = $map_providers->getLayer(); + } +} \ No newline at end of file diff --git a/app/Http/Resources/GalleryConfigs/PhotoLayoutConfig.php b/app/Http/Resources/GalleryConfigs/PhotoLayoutConfig.php new file mode 100644 index 00000000000..baa69156426 --- /dev/null +++ b/app/Http/Resources/GalleryConfigs/PhotoLayoutConfig.php @@ -0,0 +1,29 @@ +photo_layout_justified_row_height = Configs::getValueAsInt('photo_layout_justified_row_height'); + $this->photo_layout_masonry_column_width = Configs::getValueAsInt('photo_layout_masonry_column_width'); + $this->photo_layout_grid_column_width = Configs::getValueAsInt('photo_layout_grid_column_width'); + $this->photo_layout_square_column_width = Configs::getValueAsInt('photo_layout_square_column_width'); + $this->photo_layout_gap = Configs::getValueAsInt('photo_layout_gap'); + $this->photos_layout = Configs::getValueAsEnum('layout', PhotoLayoutType::class); + } +} diff --git a/app/Http/Resources/GalleryConfigs/RootConfig.php b/app/Http/Resources/GalleryConfigs/RootConfig.php new file mode 100644 index 00000000000..5fd766cf05b --- /dev/null +++ b/app/Http/Resources/GalleryConfigs/RootConfig.php @@ -0,0 +1,36 @@ +whereNotNull('longitude')->count() > 0; + $map_display = Configs::getValueAsBool('map_display'); + $public_display = Auth::check() || Configs::getValueAsBool('map_display_public'); + $this->is_map_accessible = $count_locations && $map_display && $public_display; + $this->is_mod_frame_enabled = Configs::getValueAsBool('mod_frame_enabled'); + $this->is_search_accessible = Auth::check() || Configs::getValueAsBool('search_public'); + $this->album_thumb_css_aspect_ratio = Configs::getValueAsEnum('default_album_thumb_aspect_ratio', AspectRatioType::class)->css(); + $this->album_subtitle_type = Configs::getValueAsEnum('album_subtitle_type', ThumbAlbumSubtitleType::class); + } +} diff --git a/app/Http/Resources/LandingPageResource.php b/app/Http/Resources/LandingPageResource.php new file mode 100644 index 00000000000..6509c59d19a --- /dev/null +++ b/app/Http/Resources/LandingPageResource.php @@ -0,0 +1,48 @@ +footer_additional_text = Configs::getValueAsString('footer_additional_text'); + $this->footer_show_copyright = Configs::getValueAsBool('footer_show_copyright'); + $this->footer_show_social_media = Configs::getValueAsBool('footer_show_social_media'); + $this->landing_page_enable = Configs::getValueAsBool('landing_page_enable'); + $this->landing_background = Configs::getValueAsString('landing_background'); + $this->landing_subtitle = Configs::getValueAsString('landing_subtitle'); + $this->landing_title = Configs::getValueAsString('landing_title'); + $this->site_copyright_begin = Configs::getValueAsInt('site_copyright_begin'); + $this->site_copyright_end = Configs::getValueAsInt('site_copyright_end'); + $this->site_owner = Configs::getValueAsString('site_owner'); + $this->site_title = Configs::getValueAsString('site_title'); + $this->sm_facebook_url = Configs::getValueAsString('sm_facebook_url'); + $this->sm_flickr_url = Configs::getValueAsString('sm_flickr_url'); + $this->sm_instagram_url = Configs::getValueAsString('sm_instagram_url'); + $this->sm_twitter_url = Configs::getValueAsString('sm_twitter_url'); + $this->sm_youtube_url = Configs::getValueAsString('sm_youtube_url'); + } +} diff --git a/app/Http/Resources/Models/AbstractAlbumResource.php b/app/Http/Resources/Models/AbstractAlbumResource.php new file mode 100644 index 00000000000..e62cd5ebc81 --- /dev/null +++ b/app/Http/Resources/Models/AbstractAlbumResource.php @@ -0,0 +1,20 @@ +config = $config; + $this->resource = $resource; + } +} diff --git a/app/Http/Resources/Models/AlbumResource.php b/app/Http/Resources/Models/AlbumResource.php new file mode 100644 index 00000000000..60e5f3d2ff4 --- /dev/null +++ b/app/Http/Resources/Models/AlbumResource.php @@ -0,0 +1,95 @@ + */ + #[LiteralTypeScriptType('App.Http.Resources.Models.ThumbAlbumResource[]')] + public ?Collection $albums; + /** @var ?Collection */ + #[LiteralTypeScriptType('App.Http.Resources.Models.PhotoResource[]')] + public ?Collection $photos; + + // thumb + public ?string $cover_id; + public ?ThumbResource $thumb; + + // security + public AlbumProtectionPolicy $policy; + public AlbumRightsResource $rights; + public PreFormattedAlbumData $preFormattedData; + public ?EditableBaseAlbumResource $editable; + + public function __construct(Album $album) + { + $this->id = $album->id; + $this->title = $album->title; + $this->description = $album->description; + $this->owner_name = Auth::check() ? $album->owner->name : null; + $this->copyright = $album->copyright; + + // attributes + // $this->description = $album->description; + $this->track_url = $album->track_url; + $this->license = $album->license->localization(); + $this->header_id = $album->header_id; + + // children + $this->parent_id = $album->parent_id; + $this->has_albums = !$album->isLeaf(); + $this->albums = $album->relationLoaded('children') ? ThumbAlbumResource::collect($album->children) : null; + $this->photos = $album->relationLoaded('photos') ? PhotoResource::collect($album->photos) : null; + $this->prepPhotosCollection(); + + // thumb + $this->cover_id = $album->cover_id; + $this->thumb = new ThumbResource($album->thumb->id, $album->thumb->type, $album->thumb->thumbUrl, $album->thumb->thumb2xUrl); + + // security + $this->policy = AlbumProtectionPolicy::ofBaseAlbum($album); + $this->rights = new AlbumRightsResource($album); + $url = $this->getHeaderUrl($album); + $this->preFormattedData = new PreFormattedAlbumData($album, $url); + + if ($this->rights->can_edit) { + $this->editable = EditableBaseAlbumResource::fromModel($album); + } + } + + public static function fromModel(Album $album): AlbumResource + { + return new self($album); + } +} diff --git a/app/Http/Resources/Models/PhotoResource.php b/app/Http/Resources/Models/PhotoResource.php new file mode 100644 index 00000000000..6fff29276d8 --- /dev/null +++ b/app/Http/Resources/Models/PhotoResource.php @@ -0,0 +1,94 @@ +id = $photo->id; + $this->album_id = $photo->album_id; + $this->altitude = $photo->altitude; + $this->aperture = $photo->aperture; + $this->checksum = $photo->checksum; + $this->created_at = $photo->created_at->toIso8601String(); + $this->description = $photo->description ?? ''; + $this->focal = $photo->focal; + $this->is_starred = $photo->is_starred; + $this->iso = $photo->iso; + $this->latitude = $photo->latitude; + $this->lens = $photo->lens; + $this->license = $photo->license; + $this->live_photo_checksum = $photo->live_photo_checksum; + $this->live_photo_content_id = $photo->live_photo_content_id; + $this->live_photo_url = $photo->live_photo_url; + $this->location = $photo->location; + $this->longitude = $photo->longitude; + $this->make = $photo->make; + $this->model = $photo->model; + $this->original_checksum = $photo->original_checksum; + $this->shutter = $photo->shutter; + $this->size_variants = new SizeVariantsResouce($photo); + $this->tags = $photo->tags; + $this->taken_at = $photo->taken_at?->toIso8601String(); + $this->taken_at_orig_tz = $photo->taken_at_orig_tz; + $this->title = $photo->title; + $this->type = $photo->type; + $this->updated_at = $photo->updated_at->toIso8601String(); + $this->rights = new PhotoRightsResource($photo); + $this->next_photo_id = null; + $this->previous_photo_id = null; + $this->preformatted = new PreformattedPhotoData($photo, $this->size_variants->original); + $this->precomputed = new PreComputedPhotoData($photo); + } + + public static function fromModel(Photo $photo): PhotoResource + { + return new self($photo); + } +} diff --git a/app/Http/Resources/Models/SizeVariantResource.php b/app/Http/Resources/Models/SizeVariantResource.php new file mode 100644 index 00000000000..93539b133cf --- /dev/null +++ b/app/Http/Resources/Models/SizeVariantResource.php @@ -0,0 +1,27 @@ +type = $sizeVariant->type; + $this->filesize = $sizeVariant->filesize; + $this->height = $sizeVariant->height; + $this->width = $sizeVariant->width; + $this->url = !$noUrl ? $sizeVariant->url : null; + } +} diff --git a/app/Http/Resources/Models/SizeVariantsResouce.php b/app/Http/Resources/Models/SizeVariantsResouce.php new file mode 100644 index 00000000000..a0f3247cdb4 --- /dev/null +++ b/app/Http/Resources/Models/SizeVariantsResouce.php @@ -0,0 +1,46 @@ +relationLoaded('size_variants') ? $photo->size_variants : null; + $downgrade = !Gate::check(PhotoPolicy::CAN_ACCESS_FULL_PHOTO, [Photo::class, $photo]) && + !$photo->isVideo() && + $size_variants?->hasMedium() === true; + + $original = $size_variants?->getSizeVariant(SizeVariantType::ORIGINAL); + $medium = $size_variants?->getSizeVariant(SizeVariantType::MEDIUM); + $medium2x = $size_variants?->getSizeVariant(SizeVariantType::MEDIUM2X); + $small = $size_variants?->getSizeVariant(SizeVariantType::SMALL); + $small2x = $size_variants?->getSizeVariant(SizeVariantType::SMALL2X); + $thumb = $size_variants?->getSizeVariant(SizeVariantType::THUMB); + $thumb2x = $size_variants?->getSizeVariant(SizeVariantType::THUMB2X); + + $this->medium = $medium?->toResource(); + $this->medium2x = $medium2x?->toResource(); + $this->original = $original?->toResource($downgrade); + $this->small = $small?->toResource(); + $this->small2x = $small2x?->toResource(); + $this->thumb = $thumb?->toResource(); + $this->thumb2x = $thumb2x?->toResource(); + } +} diff --git a/app/Http/Resources/Models/SmartAlbumResource.php b/app/Http/Resources/Models/SmartAlbumResource.php new file mode 100644 index 00000000000..93183379bbb --- /dev/null +++ b/app/Http/Resources/Models/SmartAlbumResource.php @@ -0,0 +1,51 @@ + */ + #[LiteralTypeScriptType('App.Http.Resources.Models.PhotoResource[]')] + public ?Collection $photos; + public ?ThumbResource $thumb; + public AlbumProtectionPolicy $policy; + public AlbumRightsResource $rights; + public PreFormattedAlbumData $preFormattedData; + + public function __construct(BaseSmartAlbum $smartAlbum) + { + $this->id = $smartAlbum->id; + $this->title = $smartAlbum->title; + /** @phpstan-ignore-next-line */ + $this->photos = $smartAlbum->relationLoaded('photos') ? PhotoResource::collect($smartAlbum->getPhotos()) : null; + $this->prepPhotosCollection(); + + $this->thumb = new ThumbResource($smartAlbum->thumb->id, $smartAlbum->thumb->type, $smartAlbum->thumb->thumbUrl, $smartAlbum->thumb->thumb2xUrl); + $this->policy = AlbumProtectionPolicy::ofSmartAlbum($smartAlbum); + $this->rights = new AlbumRightsResource($smartAlbum); + $url = $this->getHeaderUrl($smartAlbum); + $this->preFormattedData = new PreFormattedAlbumData($smartAlbum, $url); + } + + public static function fromModel(BaseSmartAlbum $smartAlbum): SmartAlbumResource + { + return new self($smartAlbum); + } +} diff --git a/app/Http/Resources/Models/TagAlbumResource.php b/app/Http/Resources/Models/TagAlbumResource.php new file mode 100644 index 00000000000..4e983f068a1 --- /dev/null +++ b/app/Http/Resources/Models/TagAlbumResource.php @@ -0,0 +1,78 @@ + */ + #[LiteralTypeScriptType('App.Http.Resources.Models.PhotoResource[]')] + public ?Collection $photos; + + // thumb + public ThumbResource|null $thumb; + + // security + public AlbumProtectionPolicy $policy; + public AlbumRightsResource $rights; + public PreFormattedAlbumData $preFormattedData; + public ?EditableBaseAlbumResource $editable; + + public function __construct(TagAlbum $tagAlbum) + { + // basic + $this->id = $tagAlbum->id; + $this->title = $tagAlbum->title; + $this->owner_name = Auth::check() ? $tagAlbum->owner->name : null; + $this->is_tag_album = true; + $this->show_tags = $tagAlbum->show_tags; + $this->copyright = $tagAlbum->copyright; + + // children + $this->photos = $tagAlbum->relationLoaded('photos') ? PhotoResource::collect($tagAlbum->photos) : null; + $this->prepPhotosCollection(); + + // thumb + $this->thumb = new ThumbResource($tagAlbum->thumb->id, $tagAlbum->thumb->type, $tagAlbum->thumb->thumbUrl, $tagAlbum->thumb->thumb2xUrl); + + // security + $this->policy = AlbumProtectionPolicy::ofBaseAlbum($tagAlbum); + $this->rights = new AlbumRightsResource($tagAlbum); + $url = $this->getHeaderUrl($tagAlbum); + $this->preFormattedData = new PreFormattedAlbumData($tagAlbum, $url); + + if ($this->rights->can_edit) { + $this->editable = EditableBaseAlbumResource::fromModel($tagAlbum); + } + } + + public static function fromModel(TagAlbum $tagAlbum): TagAlbumResource + { + return new self($tagAlbum); + } +} diff --git a/app/Http/Resources/Models/ThumbAlbumResource.php b/app/Http/Resources/Models/ThumbAlbumResource.php new file mode 100644 index 00000000000..7f51687df3f --- /dev/null +++ b/app/Http/Resources/Models/ThumbAlbumResource.php @@ -0,0 +1,105 @@ +id = $data->id; + $this->thumb = $data->thumb === null ? null : new ThumbResource($data->thumb->id, $data->thumb->type, $data->thumb->thumbUrl, $data->thumb->thumb2xUrl); + $this->title = $data->title; + + if ($data instanceof BaseSmartAlbum) { + $policy = AlbumProtectionPolicy::ofSmartAlbum($data); + } else { + /** @var BaseAlbum $data */ + $this->max_taken_at = $data->max_taken_at?->format($date_format); + $this->min_taken_at = $data->min_taken_at?->format($date_format); + + $this->formatMinMaxDate(); + + $this->created_at = $data->created_at->format($date_format); + $policy = AlbumProtectionPolicy::ofBaseAlbum($data); + $this->description = Str::limit($data->description, 100); + } + + $this->css_overlay = match ($displayOverlay) { + ThumbOverlayVisibilityType::NEVER => 'hidden', + ThumbOverlayVisibilityType::HOVER => 'opacity-0 group-hover:opacity-100 transition-all ease-out', + default => '', + }; + + $this->is_nsfw = $policy->is_nsfw; + $this->is_nsfw_blurred = $this->is_nsfw && Configs::getValueAsBool('nsfw_blur'); + $this->is_public = $policy->is_public; + $this->is_link_required = $policy->is_link_required; + $this->is_password_required = $policy->is_password_required; + + $this->is_tag_album = $data instanceof TagAlbum; + // This aims to indicate whether the current thumb is used to determine the parent. + $this->has_subalbum = $data instanceof Album && !$data->isLeaf(); + } + + public static function fromModel(AbstractAlbum $album): ThumbAlbumResource + { + return new self($album); + } + + private function formatMinMaxDate(): void + { + if ($this->max_taken_at === null || $this->min_taken_at === null) { + return; + } + if ($this->max_taken_at === $this->min_taken_at) { + $this->formatted_min_max = $this->max_taken_at; + + return; + } + + if (Configs::getValueAsEnum('thumb_min_max_order', DateOrderingType::class) === DateOrderingType::YOUNGER_OLDER) { + $this->formatted_min_max = $this->max_taken_at . ' - ' . $this->min_taken_at; + } else { + $this->formatted_min_max = $this->min_taken_at . ' - ' . $this->max_taken_at; + } + } +} diff --git a/app/Http/Resources/Models/ThumbResource.php b/app/Http/Resources/Models/ThumbResource.php new file mode 100644 index 00000000000..80fe7be9cc2 --- /dev/null +++ b/app/Http/Resources/Models/ThumbResource.php @@ -0,0 +1,23 @@ +id = $id; + $this->type = $type; + $this->thumb = $thumbUrl; + $this->thumb2x = $thumb2xUrl; + } +} diff --git a/app/Http/Resources/Models/UserManagementResource.php b/app/Http/Resources/Models/UserManagementResource.php new file mode 100644 index 00000000000..94c57241148 --- /dev/null +++ b/app/Http/Resources/Models/UserManagementResource.php @@ -0,0 +1,42 @@ +|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable + */ + public function toArray($request) + { + if ($this->resource === null) { + throw new LycheeLogicException('Trying to convert a null user into an array.'); + } + + return [ + 'id' => $this->resource->id, + 'username' => $this->resource->username, + 'may_administrate' => $this->resource->may_administrate, + 'may_upload' => $this->resource->may_upload, + 'may_edit_own_settings' => $this->resource->may_edit_own_settings, + ]; + } +} diff --git a/app/Http/Resources/Models/UserResource.php b/app/Http/Resources/Models/UserResource.php new file mode 100644 index 00000000000..88b81782e11 --- /dev/null +++ b/app/Http/Resources/Models/UserResource.php @@ -0,0 +1,24 @@ +id = $user?->id; + $this->has_token = $user?->token !== null; + $this->username = $user?->username; + $this->email = $user?->email; + } +} diff --git a/app/Http/Resources/Models/Utils/PreComputedPhotoData.php b/app/Http/Resources/Models/Utils/PreComputedPhotoData.php new file mode 100644 index 00000000000..802a670a73e --- /dev/null +++ b/app/Http/Resources/Models/Utils/PreComputedPhotoData.php @@ -0,0 +1,49 @@ +is_video = $photo->isVideo(); + $this->is_raw = $photo->isRaw(); + $this->is_livephoto = $photo->live_photo_url !== null; + $this->is_camera_date = $photo->taken_at !== null; + $this->has_exif = $this->genExifHash($photo) !== ''; + $this->has_location = $this->has_location($photo); + } + + private function has_location(Photo $photo): bool + { + return $photo->longitude !== null && + $photo->latitude !== null && + $photo->altitude !== null; + } + + private function genExifHash(Photo $photo): string + { + $exifHash = $photo->make; + $exifHash .= $photo->model; + $exifHash .= $photo->shutter; + if (!$photo->isVideo()) { + $exifHash .= $photo->aperture; + $exifHash .= $photo->focal; + } + $exifHash .= $photo->iso; + + return $exifHash; + } +} diff --git a/app/Http/Resources/Models/Utils/PreFormattedAlbumData.php b/app/Http/Resources/Models/Utils/PreFormattedAlbumData.php new file mode 100644 index 00000000000..2d3f6e51f50 --- /dev/null +++ b/app/Http/Resources/Models/Utils/PreFormattedAlbumData.php @@ -0,0 +1,68 @@ +url = $url; + $this->title = $album->title; + if ($album instanceof BaseAlbum) { + $this->min_taken_at = $album->min_taken_at?->format($min_max_date_format); + $this->max_taken_at = $album->max_taken_at?->format($min_max_date_format); + $this->formatMinMaxDate(); + $this->created_at = $album->created_at->format($create_date_format); + $this->description = trim($album->description ?? ''); + $this->copyright = $album->copyright; + } + if ($album instanceof Album) { + $this->num_children = $album->num_children; + $this->num_photos = $album->num_photos; + $this->license = $album->license === LicenseType::NONE ? '' : $album->license->localization(); + } + } + + private function formatMinMaxDate(): void + { + if ($this->max_taken_at === null || $this->min_taken_at === null) { + return; + } + if ($this->max_taken_at === $this->min_taken_at) { + $this->min_max_text = $this->max_taken_at; + + return; + } + + if (Configs::getValueAsEnum('header_min_max_order', DateOrderingType::class) === DateOrderingType::YOUNGER_OLDER) { + $this->min_max_text = $this->max_taken_at . ' - ' . $this->min_taken_at; + } else { + $this->min_max_text = $this->min_taken_at . ' - ' . $this->max_taken_at; + } + } +} diff --git a/app/Http/Resources/Models/Utils/PreformattedPhotoData.php b/app/Http/Resources/Models/Utils/PreformattedPhotoData.php new file mode 100644 index 00000000000..19af1f28cad --- /dev/null +++ b/app/Http/Resources/Models/Utils/PreformattedPhotoData.php @@ -0,0 +1,60 @@ +created_at = $photo->created_at->format($date_format_uploaded); + $this->taken_at = $photo->taken_at?->format($date_format_taken_at); + $this->date_overlay = ($photo->taken_at ?? $photo->created_at)->format($overlay_date_format) ?? ''; + + $this->shutter = str_replace('s', 'sec', $photo->shutter ?? ''); + $this->aperture = str_replace('f/', '', $photo->aperture ?? ''); + $this->iso = sprintf(__('lychee.PHOTO_ISO'), $photo->iso); + $this->lens = ($photo->lens === '' || $photo->lens === null) ? '' : sprintf('(%s)', $photo->lens); + + $this->duration = Helpers::secondsToHMS(intval($photo->aperture)); + $this->fps = $photo->focal === null ? $photo->focal . ' fps' : ''; + + $this->filesize = Helpers::getSymbolByQuantity($original?->filesize ?? 0); + $this->resolution = $original?->width . ' x ' . $original?->height; + $this->latitude = Helpers::decimalToDegreeMinutesSeconds($photo->latitude, true); + $this->longitude = Helpers::decimalToDegreeMinutesSeconds($photo->longitude, false); + $this->altitude = $photo->altitude !== null ? round($photo->altitude, 1) . 'm' : null; + $this->license = $photo->license !== LicenseType::NONE ? $photo->license->localization() : ''; + $this->description = ($photo->description ?? '') === '' ? '' : Markdown::convert($photo->description)->getContent(); + } +} diff --git a/app/Http/Resources/OauthData.php b/app/Http/Resources/OauthData.php new file mode 100644 index 00000000000..488dea49531 --- /dev/null +++ b/app/Http/Resources/OauthData.php @@ -0,0 +1,17 @@ +can_edit = Gate::check(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, $abstractAlbum]); + $this->can_share = Gate::check(AlbumPolicy::CAN_SHARE, [AbstractAlbum::class, $abstractAlbum]); + $this->can_share_with_users = Gate::check(AlbumPolicy::CAN_SHARE_WITH_USERS, [AbstractAlbum::class, $abstractAlbum]); + $this->can_download = Gate::check(AlbumPolicy::CAN_DOWNLOAD, [AbstractAlbum::class, $abstractAlbum]); + $this->can_upload = Gate::check(AlbumPolicy::CAN_UPLOAD, [AbstractAlbum::class, $abstractAlbum]); + $this->can_move = Gate::check(AlbumPolicy::CAN_DELETE, [AbstractAlbum::class, $abstractAlbum]) && $abstractAlbum instanceof Album; + $this->can_delete = Gate::check(AlbumPolicy::CAN_DELETE, [AbstractAlbum::class, $abstractAlbum]); + $this->can_access_original = Gate::check(AlbumPolicy::CAN_ACCESS_FULL_PHOTO, [AbstractAlbum::class, $abstractAlbum]); + } +} diff --git a/app/Http/Resources/Rights/GlobalRightsResource.php b/app/Http/Resources/Rights/GlobalRightsResource.php new file mode 100644 index 00000000000..d821deab51d --- /dev/null +++ b/app/Http/Resources/Rights/GlobalRightsResource.php @@ -0,0 +1,23 @@ +root_album = new RootAlbumRightsResource(); + $this->settings = new SettingsRightsResource(); + $this->user_management = new UserManagementRightsResource(); + $this->user = new UserRightsResource(); + } +} diff --git a/app/Http/Resources/Rights/PhotoRightsResource.php b/app/Http/Resources/Rights/PhotoRightsResource.php new file mode 100644 index 00000000000..d209c7ae2a2 --- /dev/null +++ b/app/Http/Resources/Rights/PhotoRightsResource.php @@ -0,0 +1,31 @@ +can_edit = Gate::check(PhotoPolicy::CAN_EDIT, [Photo::class, $photo]); + $this->can_download = Gate::check(PhotoPolicy::CAN_DOWNLOAD, [Photo::class, $photo]); + $this->can_access_full_photo = Gate::check(PhotoPolicy::CAN_ACCESS_FULL_PHOTO, [Photo::class, $photo]); + } +} \ No newline at end of file diff --git a/app/Http/Resources/Rights/RootAlbumRightsResource.php b/app/Http/Resources/Rights/RootAlbumRightsResource.php new file mode 100644 index 00000000000..611e193d3b9 --- /dev/null +++ b/app/Http/Resources/Rights/RootAlbumRightsResource.php @@ -0,0 +1,24 @@ +can_edit = Gate::check(AlbumPolicy::CAN_UPLOAD, [AbstractAlbum::class, null]); + $this->can_upload = Gate::check(AlbumPolicy::CAN_UPLOAD, [AbstractAlbum::class, null]); + $this->can_import_from_server = Gate::check(AlbumPolicy::CAN_IMPORT_FROM_SERVER, [AbstractAlbum::class]); + } +} diff --git a/app/Http/Resources/Rights/SettingsRightsResource.php b/app/Http/Resources/Rights/SettingsRightsResource.php new file mode 100644 index 00000000000..0b97c529928 --- /dev/null +++ b/app/Http/Resources/Rights/SettingsRightsResource.php @@ -0,0 +1,28 @@ +can_edit = Gate::check(SettingsPolicy::CAN_EDIT, [Configs::class]); + $this->can_see_logs = Gate::check(SettingsPolicy::CAN_SEE_LOGS, [Configs::class]); + $this->can_clear_logs = Gate::check(SettingsPolicy::CAN_CLEAR_LOGS, [Configs::class]); + $this->can_see_diagnostics = Gate::check(SettingsPolicy::CAN_SEE_DIAGNOSTICS, [Configs::class]); + $this->can_update = Gate::check(SettingsPolicy::CAN_UPDATE, [Configs::class]); + } +} diff --git a/app/Http/Resources/Rights/UserManagementRightsResource.php b/app/Http/Resources/Rights/UserManagementRightsResource.php new file mode 100644 index 00000000000..941c1e920c7 --- /dev/null +++ b/app/Http/Resources/Rights/UserManagementRightsResource.php @@ -0,0 +1,26 @@ +can_create = Gate::check(UserPolicy::CAN_CREATE_OR_EDIT_OR_DELETE, [User::class]); + $this->can_list = Gate::check(UserPolicy::CAN_LIST, [User::class]); + $this->can_edit = Gate::check(UserPolicy::CAN_CREATE_OR_EDIT_OR_DELETE, [User::class]); + $this->can_delete = Gate::check(UserPolicy::CAN_CREATE_OR_EDIT_OR_DELETE, [User::class]); + } +} diff --git a/app/Http/Resources/Rights/UserRightsResource.php b/app/Http/Resources/Rights/UserRightsResource.php new file mode 100644 index 00000000000..d94505b7201 --- /dev/null +++ b/app/Http/Resources/Rights/UserRightsResource.php @@ -0,0 +1,20 @@ +can_edit = Gate::check(UserPolicy::CAN_EDIT, [User::class]); + } +} diff --git a/app/Http/Resources/Root/AuthConfig.php b/app/Http/Resources/Root/AuthConfig.php new file mode 100644 index 00000000000..ddbcea4ae59 --- /dev/null +++ b/app/Http/Resources/Root/AuthConfig.php @@ -0,0 +1,30 @@ + */ + public readonly array $oathProviders; + public readonly bool $u2f_enabled; + + public function __construct() + { + $providers = []; + foreach (OauthProvidersType::cases() as $oauth) { + $client_id = config('services.' . $oauth->value . '.client_id'); + if ($client_id === null || $client_id === '') { + continue; + } + $providers[] = $oauth; + } + $this->oathProviders = $providers; + $this->u2f_enabled = WebAuthnCredential::query()->whereNull('disabled_at')->count() > 0; + } +} \ No newline at end of file diff --git a/app/Http/Resources/Root/VersionResource.php b/app/Http/Resources/Root/VersionResource.php new file mode 100644 index 00000000000..48437452ff9 --- /dev/null +++ b/app/Http/Resources/Root/VersionResource.php @@ -0,0 +1,38 @@ +version = resolve(InstalledVersion::class)->getVersion()->toString(); + } + + $fileVersion = resolve(FileVersion::class); + $gitHubVersion = resolve(GitHubVersion::class); + + if (Configs::getValueAsBool('check_for_updates')) { + // @codeCoverageIgnoreStart + $fileVersion->hydrate(); + $gitHubVersion->hydrate(); + // @codeCoverageIgnoreEnd + } + + $this->is_new_release_available = !$fileVersion->isUpToDate(); + $this->is_git_update_available = !$gitHubVersion->isUpToDate(); + } +} diff --git a/app/Http/Resources/Traits/HasHeaderUrl.php b/app/Http/Resources/Traits/HasHeaderUrl.php new file mode 100644 index 00000000000..be9810315c6 --- /dev/null +++ b/app/Http/Resources/Traits/HasHeaderUrl.php @@ -0,0 +1,72 @@ +header_id === SetHeader::COMPACT_HEADER) { + return null; + } + + if ($album->photos->isEmpty()) { + return null; + } + + // TODO : already use the prefetched data for photos instead of 2 extra queries? + + return $this->getByQuery($album); + } + + private function getByQuery(AbstractAlbum $album): ?string + { + $headerSizeVariant = null; + + if ($album instanceof Album && $album->header_id !== null) { + $headerSizeVariant = SizeVariant::query() + ->where('photo_id', '=', $album->header_id) + ->whereIn('type', [SizeVariantType::MEDIUM, SizeVariantType::SMALL2X, SizeVariantType::SMALL]) + ->orderBy('type', 'asc') + ->first(); + } + + if ($headerSizeVariant !== null) { + return $headerSizeVariant->url; + } + + $query_ratio = SizeVariant::query() + ->select('photo_id') + ->whereBelongsTo($album->photos) + ->where('ratio', '>', 1) // ! we prefer landscape first. + ->whereIn('type', [SizeVariantType::MEDIUM, SizeVariantType::SMALL2X, SizeVariantType::SMALL]); + $num = $query_ratio->count() - 1; + $photo = $query_ratio->skip(rand(0, $num))->first(); + + if ($photo === null) { + $query = SizeVariant::query() + ->select('photo_id') + ->whereBelongsTo($album->photos) + ->whereIn('type', [SizeVariantType::MEDIUM, SizeVariantType::SMALL2X, SizeVariantType::SMALL]); + $num = $query->count() - 1; + $photo = $query->skip(rand(0, $num))->first(); + } + + return $photo === null ? null : SizeVariant::query() + ->where('photo_id', '=', $photo->photo_id) + ->where('type', '>', 1) + ->orderBy('type', 'asc') + ->first()?->url; + } +} \ No newline at end of file diff --git a/app/Http/Resources/Traits/HasPrepPhotoCollection.php b/app/Http/Resources/Traits/HasPrepPhotoCollection.php new file mode 100644 index 00000000000..376aab4c7f6 --- /dev/null +++ b/app/Http/Resources/Traits/HasPrepPhotoCollection.php @@ -0,0 +1,34 @@ + $photos + */ +trait HasPrepPhotoCollection +{ + private function prepPhotosCollection(): void + { + if ($this->photos === null) { + return; + } + + $previous_photo = null; + $this->photos->each(function (PhotoResource &$photo) use (&$previous_photo) { + if ($previous_photo !== null) { + $previous_photo->next_photo_id = $photo->id; + } + $photo->previous_photo_id = $previous_photo?->id; + $previous_photo = $photo; + }); + + if ($this->photos->count() > 1 && Configs::getValueAsBool('photos_wraparound')) { + $this->photos->first()->previous_photo_id = $this->photos->last()->id; + $this->photos->last()->next_photo_id = $this->photos->first()->id; + } + } +} \ No newline at end of file diff --git a/app/Http/RuleSets/Album/ArchiveAlbumRuleSet.php b/app/Http/RuleSets/Album/ArchiveAlbumRuleSet.php deleted file mode 100644 index d5cba9f530b..00000000000 --- a/app/Http/RuleSets/Album/ArchiveAlbumRuleSet.php +++ /dev/null @@ -1,23 +0,0 @@ - ['required', new AlbumIDListRule()], - ]; - } -} diff --git a/app/Http/RuleSets/Album/SetAlbumDescriptionRuleSet.php b/app/Http/RuleSets/Album/SetAlbumDescriptionRuleSet.php deleted file mode 100644 index 48e55b2a9c0..00000000000 --- a/app/Http/RuleSets/Album/SetAlbumDescriptionRuleSet.php +++ /dev/null @@ -1,25 +0,0 @@ - ['required', new RandomIDRule(false)], - RequestAttribute::DESCRIPTION_ATTRIBUTE => ['present', new DescriptionRule()], - ]; - } -} diff --git a/app/Http/RuleSets/Album/SetAlbumLicenseRuleSet.php b/app/Http/RuleSets/Album/SetAlbumLicenseRuleSet.php deleted file mode 100644 index c8f92b16100..00000000000 --- a/app/Http/RuleSets/Album/SetAlbumLicenseRuleSet.php +++ /dev/null @@ -1,26 +0,0 @@ - ['required', new RandomIDRule(false)], - RequestAttribute::LICENSE_ATTRIBUTE => ['required', new Enum(LicenseType::class)], - ]; - } -} diff --git a/app/Http/RuleSets/Album/SetAlbumNSFWRuleSet.php b/app/Http/RuleSets/Album/SetAlbumNSFWRuleSet.php deleted file mode 100644 index 8b8e875c7fc..00000000000 --- a/app/Http/RuleSets/Album/SetAlbumNSFWRuleSet.php +++ /dev/null @@ -1,24 +0,0 @@ - ['required', new RandomIDRule(false)], - RequestAttribute::IS_NSFW_ATTRIBUTE => 'required|boolean', - ]; - } -} diff --git a/app/Http/RuleSets/Album/SetAlbumSortingRuleSetLegacy.php b/app/Http/RuleSets/Album/SetAlbumSortingRuleSetLegacy.php deleted file mode 100644 index 3e897c611cb..00000000000 --- a/app/Http/RuleSets/Album/SetAlbumSortingRuleSetLegacy.php +++ /dev/null @@ -1,28 +0,0 @@ - ['required', new RandomIDRule(false)], - RequestAttribute::SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingPhotoType::class)], - RequestAttribute::SORTING_ORDER_ATTRIBUTE => [ - 'required_with:' . RequestAttribute::SORTING_COLUMN_ATTRIBUTE, - 'nullable', new Enum(OrderSortingType::class), - ], - ]; - } -} diff --git a/app/Http/RuleSets/Album/SetPhotoSortingRuleSet.php b/app/Http/RuleSets/Album/SetPhotoSortingRuleSet.php deleted file mode 100644 index e9fb885c26f..00000000000 --- a/app/Http/RuleSets/Album/SetPhotoSortingRuleSet.php +++ /dev/null @@ -1,28 +0,0 @@ - ['required', new RandomIDRule(false)], - RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingPhotoType::class)], - RequestAttribute::PHOTO_SORTING_ORDER_ATTRIBUTE => [ - 'required_with:' . RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE, - 'nullable', new Enum(OrderSortingType::class), - ], - ]; - } -} diff --git a/app/Legacy/V1/Contracts/Http/Requests/HasAlbumSortingCriterion.php b/app/Legacy/V1/Contracts/Http/Requests/HasAlbumSortingCriterion.php new file mode 100644 index 00000000000..62c23122aa7 --- /dev/null +++ b/app/Legacy/V1/Contracts/Http/Requests/HasAlbumSortingCriterion.php @@ -0,0 +1,13 @@ + ['required', new RandomIDRule(false)], RequestAttribute::TITLE_ATTRIBUTE => ['required', new TitleRule()], RequestAttribute::LICENSE_ATTRIBUTE => ['required', new Enum(LicenseType::class)], - ...SetAlbumDescriptionRuleSet::rules(), - ...SetPhotoSortingRuleSet::rules(), - ...SetAlbumSortingRuleSet::rules(), + RequestAttribute::DESCRIPTION_ATTRIBUTE => ['present', new DescriptionRule()], + RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingPhotoType::class)], + RequestAttribute::PHOTO_SORTING_ORDER_ATTRIBUTE => [ + 'required_with:' . RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE, + 'nullable', new Enum(OrderSortingType::class), + ], + RequestAttribute::ALBUM_SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingAlbumType::class)], + RequestAttribute::ALBUM_SORTING_ORDER_ATTRIBUTE => [ + 'required_with:' . RequestAttribute::ALBUM_SORTING_COLUMN_ATTRIBUTE, + 'nullable', new Enum(OrderSortingType::class), + ], RequestAttribute::ALBUM_ASPECT_RATIO_ATTRIBUTE => ['present', 'nullable', new Enum(AspectRatioType::class)], RequestAttribute::COPYRIGHT_ATTRIBUTE => ['present', 'nullable', new CopyrightRule()], ]; diff --git a/app/Livewire/Components/Pages/Gallery/Album.php b/app/Livewire/Components/Pages/Gallery/Album.php index a96cd1b23c0..0575c672882 100644 --- a/app/Livewire/Components/Pages/Gallery/Album.php +++ b/app/Livewire/Components/Pages/Gallery/Album.php @@ -100,7 +100,7 @@ final public function render(): View if ($this->album instanceof ModelsAlbum) { $is_latitude_longitude_found = $this->album->all_photos()->whereNotNull('latitude')->whereNotNull('longitude')->count() > 0; $aspectRatio = $this->album->album_thumb_aspect_ratio ?? Configs::getValueAsEnum('default_album_thumb_aspect_ratio', AspectRatioType::class); - $this->flags->album_thumb_css_aspect_ratio = $aspectRatio->css(); + $this->flags->album_thumb_css_aspect_ratio = $aspectRatio->css()->value; $this->flags->cover_id = $this->album->cover_id; } else { $is_latitude_longitude_found = $this->album->photos()->whereNotNull('latitude')->whereNotNull('longitude')->count() > 0; diff --git a/app/Livewire/DTO/AlbumFlags.php b/app/Livewire/DTO/AlbumFlags.php index 78636c47e57..e5f6a58526f 100644 --- a/app/Livewire/DTO/AlbumFlags.php +++ b/app/Livewire/DTO/AlbumFlags.php @@ -29,7 +29,7 @@ public function __construct( $this->is_map_accessible = Configs::getValueAsBool('map_display'); $this->is_map_accessible = $this->is_map_accessible && (Auth::check() || Configs::getValueAsBool('map_display_public')); $this->is_mod_frame_enabled = Configs::getValueAsBool('mod_frame_enabled'); - $this->album_thumb_css_aspect_ratio = Configs::getValueAsEnum('default_album_thumb_aspect_ratio', AspectRatioType::class)->css(); + $this->album_thumb_css_aspect_ratio = Configs::getValueAsEnum('default_album_thumb_aspect_ratio', AspectRatioType::class)->css()->value; $this->is_search_accessible = Auth::check() || Configs::getValueAsBool('search_public'); } } \ No newline at end of file diff --git a/app/Livewire/DTO/AlbumsFlags.php b/app/Livewire/DTO/AlbumsFlags.php index 0a8d1ffaa15..3984786a2df 100644 --- a/app/Livewire/DTO/AlbumsFlags.php +++ b/app/Livewire/DTO/AlbumsFlags.php @@ -36,6 +36,6 @@ public function __construct( $this->can_use_2fa = !Auth::check() && (WebAuthnCredential::query()->whereNull('disabled_at')->count() > 0); $this->can_edit = Gate::check(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, null]); $this->is_search_accessible = Auth::check() || Configs::getValueAsBool('search_public'); - $this->album_thumb_css_aspect_ratio = Configs::getValueAsEnum('default_album_thumb_aspect_ratio', AspectRatioType::class)->css(); + $this->album_thumb_css_aspect_ratio = Configs::getValueAsEnum('default_album_thumb_aspect_ratio', AspectRatioType::class)->css()->value; } } \ No newline at end of file diff --git a/app/Models/AccessPermission.php b/app/Models/AccessPermission.php index 7bd68cd8c72..aa6cd0a22f0 100644 --- a/app/Models/AccessPermission.php +++ b/app/Models/AccessPermission.php @@ -8,6 +8,7 @@ use App\Models\Extensions\HasAttributesPatch; use App\Models\Extensions\ThrowsConsistentExceptions; use App\Models\Extensions\UTCBasedTimes; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -60,6 +61,8 @@ class AccessPermission extends Model use UTCBasedTimes; use HasAttributesPatch; use ThrowsConsistentExceptions; + /** @phpstan-use HasFactory<\Database\Factories\AccessPermissionFactory> */ + use HasFactory; protected $casts = [ 'created_at' => 'datetime', diff --git a/app/Models/Album.php b/app/Models/Album.php index 6d29c8670fa..7ec13eb9dfd 100644 --- a/app/Models/Album.php +++ b/app/Models/Album.php @@ -131,6 +131,7 @@ class Album extends BaseAlbum implements Node /** @phpstan-use NodeTrait */ use NodeTrait; use ToArrayThrowsNotImplemented; + /** @phpstan-use HasFactory<\Database\Factories\AlbumFactory> */ use HasFactory; /** diff --git a/app/Models/Extensions/ForwardsToParentImplementation.php b/app/Models/Extensions/ForwardsToParentImplementation.php index 8a1edba13ba..830d1600e45 100644 --- a/app/Models/Extensions/ForwardsToParentImplementation.php +++ b/app/Models/Extensions/ForwardsToParentImplementation.php @@ -75,9 +75,7 @@ public function initializeForwardsToParentImplementation(): void /** * Perform a model insert operation. * - * @template TModel of \Illuminate\Database\Eloquent\Model - * - * @param Builder $query + * @param Builder $query * * @return bool * @@ -106,9 +104,7 @@ protected function performInsert(Builder $query): bool /** * Perform a model update operation. * - * @template TModel of \Illuminate\Database\Eloquent\Model - * - * @param Builder $query + * @param Builder $query * * @return bool */ @@ -331,6 +327,7 @@ public function getAttribute($key): mixed // If the "attribute" exists as a method on the model, we will just assume // it is a relationship and will load and return results from the query // and hydrate the relationship's value on the "relationships" array. + /** @disregard */ if ( method_exists($this, $key) || (static::$relationResolvers[get_class($this)][$key] ?? null) @@ -406,6 +403,7 @@ public function getRelationValue($key): mixed // If the "attribute" exists as a method on the model, we will just assume // it is a relationship and will load and return results from the query // and hydrate the relationship's value on the "relationships" array. + /** @disregard */ if ( method_exists($this, $key) || (static::$relationResolvers[get_class($this)][$key] ?? null) diff --git a/app/Models/Extensions/HasRandomIDAndLegacyTimeBasedID.php b/app/Models/Extensions/HasRandomIDAndLegacyTimeBasedID.php index b442465a323..a38b7c0af17 100644 --- a/app/Models/Extensions/HasRandomIDAndLegacyTimeBasedID.php +++ b/app/Models/Extensions/HasRandomIDAndLegacyTimeBasedID.php @@ -74,7 +74,7 @@ public function setAttribute($key, $value): mixed * The method is mostly copied & pasted from {@link \Illuminate\Database\Eloquent\Model::performInsert()} * with adoptions regarding key generation. * - * @param Builder $query + * @param Builder $query * * @return bool true on success * diff --git a/app/Models/Extensions/Thumb.php b/app/Models/Extensions/Thumb.php index d51dfb03e21..53c0415979a 100644 --- a/app/Models/Extensions/Thumb.php +++ b/app/Models/Extensions/Thumb.php @@ -43,7 +43,7 @@ protected function __construct(string $id, string $type, string $thumbUrl, ?stri public static function sizeVariantsFilter(HasMany $relation): HasMany { $svAlbumThumbs = [SizeVariantType::THUMB, SizeVariantType::THUMB2X]; - if (Features::active('livewire')) { + if (Features::active('livewire') || Features::active('vuejs')) { $svAlbumThumbs = [SizeVariantType::SMALL, SizeVariantType::SMALL2X, SizeVariantType::THUMB, SizeVariantType::THUMB2X]; } @@ -122,28 +122,18 @@ public static function createFromRandomQueryable(Relation|Builder $photoQueryabl */ public static function createFromPhoto(?Photo $photo): ?Thumb { - $thumb = (Features::active('livewire') && $photo?->size_variants->getSmall() !== null) - ? $photo->size_variants->getSmall() - : $photo?->size_variants->getThumb(); + if ($photo === null) { + return null; + } + + $thumb = $photo->size_variants->getSmall() ?? $photo->size_variants->getThumb(); if ($thumb === null) { return null; } - $thumb2x = (Features::active('livewire') && $photo?->size_variants->getSmall() !== null) + $thumb2x = $photo->size_variants->getSmall() !== null ? $photo->size_variants->getSmall2x() - : $photo?->size_variants->getThumb2x(); - - /** - * TODO: Code for later when Livewire is the only front-end. - */ - // $thumb = $photo?->size_variants->getSmall() ?? $photo?->size_variants->getThumb(); - // if ($thumb === null) { - // return null; - // } - - // $thumb2x = $photo?->size_variants->getSmall() !== null - // ? $photo?->size_variants->getSmall2x() - // : $photo?->size_variants->getThumb2x(); + : $photo->size_variants->getThumb2x(); return new self( $photo->id, diff --git a/app/Models/Photo.php b/app/Models/Photo.php index 51975d2fc38..13e7f5c1211 100644 --- a/app/Models/Photo.php +++ b/app/Models/Photo.php @@ -121,6 +121,7 @@ */ class Photo extends Model { + /** @phpstan-use HasFactory<\Database\Factories\PhotoFactory> */ use HasFactory; use UTCBasedTimes; use HasAttributesPatch; diff --git a/app/Models/SizeVariant.php b/app/Models/SizeVariant.php index 34bc4092da2..2d0b9798464 100644 --- a/app/Models/SizeVariant.php +++ b/app/Models/SizeVariant.php @@ -9,6 +9,7 @@ use App\Exceptions\ConfigurationException; use App\Exceptions\MediaFileOperationException; use App\Exceptions\ModelDBException; +use App\Http\Resources\Models\SizeVariantResource; use App\Image\Files\FlysystemFile; use App\Models\Builders\SizeVariantBuilder; use App\Models\Extensions\HasAttributesPatch; @@ -73,6 +74,7 @@ class SizeVariant extends Model use HasBidirectionalRelationships; use ThrowsConsistentExceptions; use ToArrayThrowsNotImplemented; + /** @phpstan-use HasFactory<\Database\Factories\SizeVariantFactory> */ use HasFactory; /** @@ -280,4 +282,9 @@ protected function performDeleteOnModel(): void $this->exists = false; $fileDeleter->do(); } + + public function toResource(bool $noUrl = false): SizeVariantResource + { + return new SizeVariantResource($this, noUrl: $noUrl); + } } diff --git a/app/Models/SymLink.php b/app/Models/SymLink.php index b40a615530d..fad2f66e2c1 100644 --- a/app/Models/SymLink.php +++ b/app/Models/SymLink.php @@ -142,7 +142,7 @@ protected function getUrlAttribute(): string * If this method cannot create the symbolic link, then this method * cancels the insert operation. * - * @param Builder $query + * @param Builder $query * * @return bool * diff --git a/app/Models/User.php b/app/Models/User.php index d291b264980..c5f0bc76380 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -76,6 +76,7 @@ */ class User extends Authenticatable implements WebAuthnAuthenticatable { + /** @phpstan-use HasFactory<\Database\Factories\UserFactory> */ use HasFactory; use Notifiable; use WebAuthnAuthentication; diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index e65f4f32dda..f3a29f37a77 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -2,6 +2,7 @@ namespace App\Providers; +use App\Assets\Features; use Illuminate\Cache\RateLimiting\Limit; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Http\Request; @@ -41,9 +42,15 @@ public function boot() // "catch all" route and the routes are considered in a "first match" // fashion. $this->routes(function () { - Route::middleware('api') + if (Features::active('legacy_api')) { + Route::middleware('api') ->prefix('api') - ->group(base_path('routes/api.php')); + ->group(base_path('routes/api_v1.php')); + } + + Route::middleware('api') + ->prefix('api/v2') + ->group(base_path('routes/api_v2.php')); Route::middleware('web-install') ->group(base_path('routes/web-install.php')); @@ -51,11 +58,13 @@ public function boot() Route::middleware('web-admin') ->group(base_path('routes/web-admin.php')); - Route::middleware('web') - ->group(base_path('routes/web-livewire.php')); - - Route::middleware('web') - ->group(base_path('routes/web.php')); + if (Features::active('vuejs')) { + Route::middleware('web') + ->group(base_path('routes/web_v2.php')); + } else { + Route::middleware('web') + ->group(base_path('routes/web_v1.php')); + } }); } diff --git a/app/Relations/HasManyBidirectionally.php b/app/Relations/HasManyBidirectionally.php index 563552a6221..08a53890685 100644 --- a/app/Relations/HasManyBidirectionally.php +++ b/app/Relations/HasManyBidirectionally.php @@ -46,7 +46,7 @@ public function __construct(Builder $query, Model $parent, string $foreignKey, s * @param Collection $results the unified collection of all child models of all parent models * @param string $relation the name of the relation from the parent to the child models * - * @return TParentModel[] + * @return array */ public function match(array $models, Collection $results, $relation): array { diff --git a/app/Relations/HasManyChildAlbums.php b/app/Relations/HasManyChildAlbums.php index 6293f96207e..129accd36d3 100644 --- a/app/Relations/HasManyChildAlbums.php +++ b/app/Relations/HasManyChildAlbums.php @@ -81,6 +81,7 @@ public function addEagerConstraints(array $models) public function getResults(): Collection { if (is_null($this->getParentKey())) { + /** @var Collection */ return $this->related->newCollection(); } @@ -99,7 +100,7 @@ public function getResults(): Collection * @param Collection $results the unified collection of all child models of all parent models * @param string $relation the name of the relation from the parent to the child models * - * @return Album[] + * @return array */ public function match(array $models, Collection $results, $relation): array { diff --git a/app/Relations/HasManyChildPhotos.php b/app/Relations/HasManyChildPhotos.php index 4c07d0cc9fd..d55436d3d13 100644 --- a/app/Relations/HasManyChildPhotos.php +++ b/app/Relations/HasManyChildPhotos.php @@ -119,7 +119,7 @@ public function getResults(): Collection * @param Collection $results the unified collection of all child models of all parent models * @param string $relation the name of the relation from the parent to the child models * - * @return Album[] + * @return array * * @throws \LogicException * @throws InvalidCastException diff --git a/app/Relations/HasManyPhotosByTag.php b/app/Relations/HasManyPhotosByTag.php index 0403fce27f7..ce9154f1671 100644 --- a/app/Relations/HasManyPhotosByTag.php +++ b/app/Relations/HasManyPhotosByTag.php @@ -10,6 +10,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; +/** @disregard */ class HasManyPhotosByTag extends BaseHasManyPhotos { public function __construct(TagAlbum $owningAlbum) @@ -78,7 +79,7 @@ public function addEagerConstraints(array $albums): void * @param Collection $photos collection of {@link Photo} models which needs to be mapped to the albums * @param string $relation the name of the relation * - * @return TagAlbum[] + * @return array * * @throws NotImplementedException */ diff --git a/app/Relations/HasManyPhotosRecursively.php b/app/Relations/HasManyPhotosRecursively.php index 33073d70296..d276a9acd0d 100644 --- a/app/Relations/HasManyPhotosRecursively.php +++ b/app/Relations/HasManyPhotosRecursively.php @@ -12,6 +12,7 @@ use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Gate; +/** @disregard */ class HasManyPhotosRecursively extends BaseHasManyPhotos { protected AlbumQueryPolicy $albumQueryPolicy; @@ -102,7 +103,7 @@ public function getResults(): Collection * @param Collection $photos collection of {@link Photo} models which needs to be mapped to the albums * @param string $relation the name of the relation * - * @return Album[] + * @return array * * @throws NotImplementedException */ diff --git a/app/Relations/HasManySizeVariants.php b/app/Relations/HasManySizeVariants.php index d341c24bfb5..c40996b329f 100644 --- a/app/Relations/HasManySizeVariants.php +++ b/app/Relations/HasManySizeVariants.php @@ -62,7 +62,7 @@ public function getResults(): SizeVariants * @param Photo[] $models * @param string $relation * - * @return Photo[] + * @return array */ public function initRelation(array $models, $relation): array { @@ -89,7 +89,7 @@ public function initRelation(array $models, $relation): array * @param Collection $results the unified collection of all child models of all parent models * @param string $relation the name of the relation from the parent to the child models * - * @return Photo[] + * @return array */ public function match(array $models, Collection $results, $relation): array { diff --git a/app/Services/Auth/SessionOrTokenGuard.php b/app/Services/Auth/SessionOrTokenGuard.php index 32482ad9a06..90cec266fc9 100644 --- a/app/Services/Auth/SessionOrTokenGuard.php +++ b/app/Services/Auth/SessionOrTokenGuard.php @@ -119,6 +119,7 @@ public static function createGuard(Application $app, string $name, array $config $guard = new self($name, $userProvider, $app->make('session.store')); $guard->setCookieJar($app->make('cookie')); $guard->setDispatcher($app->make('events')); + /** @disregard P1013 */ $guard->setRequest($app->refresh('request', $guard, 'setRequest')); if (isset($config['remember'])) { $guard->setRememberDuration($config['remember']); diff --git a/composer.json b/composer.json index 2b0c3b9279b..d877d9ac621 100644 --- a/composer.json +++ b/composer.json @@ -53,8 +53,8 @@ "laminas/laminas-text": "^2.9", "laragear/webauthn": "^2.0", "laravel/framework": "^11.0", - "league/flysystem-aws-s3-v3": "^3.22", "laravel/socialite": "^5.11", + "league/flysystem-aws-s3-v3": "^3.22", "livewire/livewire": "^3.0", "lychee-org/nestedset": "^9.0", "lychee-org/php-exif": "^1.0.4", @@ -72,9 +72,12 @@ "socialiteproviders/keycloak": "^5.3", "socialiteproviders/microsoft": "^4.2", "socialiteproviders/nextcloud": "^4.0", + "spatie/enum": "^3.13", "spatie/guzzle-rate-limiter-middleware": "^2.0", + "spatie/laravel-data": "^4.7", "spatie/laravel-feed": "^4.0", "spatie/laravel-image-optimizer": "^1.8", + "spatie/laravel-typescript-transformer": "^2.4", "symfony/cache": "^v6.0.0", "thecodingmachine/safe": "^2.4" }, diff --git a/composer.lock b/composer.lock index 06857762dd7..71bbc4eb7b8 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,867 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8674432987412fffb5c4dbacd2a42b27", + "content-hash": "969efdb2ae69668140c4e7749be592d0", "packages": [ + { + "name": "amphp/amp", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/amphp/amp.git", + "reference": "138801fb68cfc9c329da8a7b39d01ce7291ee4b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/amp/zipball/138801fb68cfc9c329da8a7b39d01ce7291ee4b0", + "reference": "138801fb68cfc9c329da8a7b39d01ce7291ee4b0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "5.23.1" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php", + "src/Future/functions.php", + "src/Internal/functions.php" + ], + "psr-4": { + "Amp\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + } + ], + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "https://amphp.org/amp", + "keywords": [ + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" + ], + "support": { + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v3.0.2" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-05-10T21:37:46+00:00" + }, + { + "name": "amphp/byte-stream", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/byte-stream.git", + "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/daa00f2efdbd71565bf64ffefa89e37542addf93", + "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/parser": "^1.1", + "amphp/pipeline": "^1", + "amphp/serialization": "^1", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2.3" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "5.22.1" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php", + "src/Internal/functions.php" + ], + "psr-4": { + "Amp\\ByteStream\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "https://amphp.org/byte-stream", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" + ], + "support": { + "issues": "https://github.com/amphp/byte-stream/issues", + "source": "https://github.com/amphp/byte-stream/tree/v2.1.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-02-17T04:49:38+00:00" + }, + { + "name": "amphp/cache", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/cache.git", + "reference": "46912e387e6aa94933b61ea1ead9cf7540b7797c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/cache/zipball/46912e387e6aa94933b61ea1ead9cf7540b7797c", + "reference": "46912e387e6aa94933b61ea1ead9cf7540b7797c", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/serialization": "^1", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\Cache\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + } + ], + "description": "A fiber-aware cache API based on Amp and Revolt.", + "homepage": "https://amphp.org/cache", + "support": { + "issues": "https://github.com/amphp/cache/issues", + "source": "https://github.com/amphp/cache/tree/v2.0.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-04-19T03:38:06+00:00" + }, + { + "name": "amphp/dns", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/dns.git", + "reference": "758266b0ea7470e2e42cd098493bc6d6c7100cf7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/dns/zipball/758266b0ea7470e2e42cd098493bc6d6c7100cf7", + "reference": "758266b0ea7470e2e42cd098493bc6d6c7100cf7", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/cache": "^2", + "amphp/parser": "^1", + "amphp/windows-registry": "^1.0.1", + "daverandom/libdns": "^2.0.2", + "ext-filter": "*", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "5.20" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\Dns\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Wright", + "email": "addr@daverandom.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + } + ], + "description": "Async DNS resolution for Amp.", + "homepage": "https://github.com/amphp/dns", + "keywords": [ + "amp", + "amphp", + "async", + "client", + "dns", + "resolve" + ], + "support": { + "issues": "https://github.com/amphp/dns/issues", + "source": "https://github.com/amphp/dns/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-06-02T19:54:12+00:00" + }, + { + "name": "amphp/parallel", + "version": "v2.2.9", + "source": { + "type": "git", + "url": "https://github.com/amphp/parallel.git", + "reference": "73d293f1fc4df1bebc3c4fce1432e82dd7032238" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/parallel/zipball/73d293f1fc4df1bebc3c4fce1432e82dd7032238", + "reference": "73d293f1fc4df1bebc3c4fce1432e82dd7032238", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/cache": "^2", + "amphp/parser": "^1", + "amphp/pipeline": "^1", + "amphp/process": "^2", + "amphp/serialization": "^1", + "amphp/socket": "^2", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.18" + }, + "type": "library", + "autoload": { + "files": [ + "src/Context/functions.php", + "src/Context/Internal/functions.php", + "src/Ipc/functions.php", + "src/Worker/functions.php" + ], + "psr-4": { + "Amp\\Parallel\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Stephen Coakley", + "email": "me@stephencoakley.com" + } + ], + "description": "Parallel processing component for Amp.", + "homepage": "https://github.com/amphp/parallel", + "keywords": [ + "async", + "asynchronous", + "concurrent", + "multi-processing", + "multi-threading" + ], + "support": { + "issues": "https://github.com/amphp/parallel/issues", + "source": "https://github.com/amphp/parallel/tree/v2.2.9" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-03-24T18:27:44+00:00" + }, + { + "name": "amphp/parser", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/parser.git", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/parser/zipball/3cf1f8b32a0171d4b1bed93d25617637a77cded7", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\Parser\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A generator parser to make streaming parsers simple.", + "homepage": "https://github.com/amphp/parser", + "keywords": [ + "async", + "non-blocking", + "parser", + "stream" + ], + "support": { + "issues": "https://github.com/amphp/parser/issues", + "source": "https://github.com/amphp/parser/tree/v1.1.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-03-21T19:16:53+00:00" + }, + { + "name": "amphp/pipeline", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/pipeline.git", + "reference": "66c095673aa5b6e689e63b52d19e577459129ab3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/pipeline/zipball/66c095673aa5b6e689e63b52d19e577459129ab3", + "reference": "66c095673aa5b6e689e63b52d19e577459129ab3", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "php": ">=8.1", + "revolt/event-loop": "^1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.18" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\Pipeline\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Asynchronous iterators and operators.", + "homepage": "https://amphp.org/pipeline", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "iterator", + "non-blocking" + ], + "support": { + "issues": "https://github.com/amphp/pipeline/issues", + "source": "https://github.com/amphp/pipeline/tree/v1.2.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-07-04T00:56:47+00:00" + }, + { + "name": "amphp/process", + "version": "v2.0.3", + "source": { + "type": "git", + "url": "https://github.com/amphp/process.git", + "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/process/zipball/52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d", + "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\Process\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A fiber-aware process manager based on Amp and Revolt.", + "homepage": "https://amphp.org/process", + "support": { + "issues": "https://github.com/amphp/process/issues", + "source": "https://github.com/amphp/process/tree/v2.0.3" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-04-19T03:13:44+00:00" + }, + { + "name": "amphp/serialization", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/serialization.git", + "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/serialization/zipball/693e77b2fb0b266c3c7d622317f881de44ae94a1", + "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "phpunit/phpunit": "^9 || ^8 || ^7" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\Serialization\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Serialization tools for IPC and data storage in PHP.", + "homepage": "https://github.com/amphp/serialization", + "keywords": [ + "async", + "asynchronous", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/amphp/serialization/issues", + "source": "https://github.com/amphp/serialization/tree/master" + }, + "time": "2020-03-25T21:39:07+00:00" + }, + { + "name": "amphp/socket", + "version": "v2.3.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/socket.git", + "reference": "58e0422221825b79681b72c50c47a930be7bf1e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/socket/zipball/58e0422221825b79681b72c50c47a930be7bf1e1", + "reference": "58e0422221825b79681b72c50c47a930be7bf1e1", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/dns": "^2", + "ext-openssl": "*", + "kelunik/certificate": "^1.1", + "league/uri": "^6.5 | ^7", + "league/uri-interfaces": "^2.3 | ^7", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "amphp/process": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "5.20" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php", + "src/Internal/functions.php", + "src/SocketAddress/functions.php" + ], + "psr-4": { + "Amp\\Socket\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Lowrey", + "email": "rdlowrey@gmail.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Non-blocking socket connection / server implementations based on Amp and Revolt.", + "homepage": "https://github.com/amphp/socket", + "keywords": [ + "amp", + "async", + "encryption", + "non-blocking", + "sockets", + "tcp", + "tls" + ], + "support": { + "issues": "https://github.com/amphp/socket/issues", + "source": "https://github.com/amphp/socket/tree/v2.3.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-04-21T14:33:03+00:00" + }, + { + "name": "amphp/sync", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/sync.git", + "reference": "375ef5b54a0d12c38e12728dde05a55e30f2fbec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/sync/zipball/375ef5b54a0d12c38e12728dde05a55e30f2fbec", + "reference": "375ef5b54a0d12c38e12728dde05a55e30f2fbec", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/pipeline": "^1", + "amphp/serialization": "^1", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "5.23" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\Sync\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Stephen Coakley", + "email": "me@stephencoakley.com" + } + ], + "description": "Non-blocking synchronization primitives for PHP based on Amp and Revolt.", + "homepage": "https://github.com/amphp/sync", + "keywords": [ + "async", + "asynchronous", + "mutex", + "semaphore", + "synchronization" + ], + "support": { + "issues": "https://github.com/amphp/sync/issues", + "source": "https://github.com/amphp/sync/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-03-12T01:00:01+00:00" + }, + { + "name": "amphp/windows-registry", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/windows-registry.git", + "reference": "0d569e8f256cca974e3842b6e78b4e434bf98306" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/windows-registry/zipball/0d569e8f256cca974e3842b6e78b4e434bf98306", + "reference": "0d569e8f256cca974e3842b6e78b4e434bf98306", + "shasum": "" + }, + "require": { + "amphp/byte-stream": "^2", + "amphp/process": "^2", + "php": ">=8.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\WindowsRegistry\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Windows Registry Reader.", + "support": { + "issues": "https://github.com/amphp/windows-registry/issues", + "source": "https://github.com/amphp/windows-registry/tree/v1.0.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2024-01-30T23:01:51+00:00" + }, { "name": "aws/aws-crt-php", "version": "v1.2.6", @@ -62,16 +921,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.315.5", + "version": "3.316.3", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "3e6d619d45d8e1a8681dd58de61ddfe90e8341e6" + "reference": "e832e594b3c213760e067e15ef2739f77505e832" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3e6d619d45d8e1a8681dd58de61ddfe90e8341e6", - "reference": "3e6d619d45d8e1a8681dd58de61ddfe90e8341e6", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/e832e594b3c213760e067e15ef2739f77505e832", + "reference": "e832e594b3c213760e067e15ef2739f77505e832", "shasum": "" }, "require": { @@ -151,9 +1010,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.315.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.316.3" }, - "time": "2024-07-03T18:12:51+00:00" + "time": "2024-07-12T18:07:23+00:00" }, { "name": "bepsvpt/secure-headers", @@ -428,18 +1287,62 @@ ], "time": "2023-12-20T15:40:13+00:00" }, + { + "name": "daverandom/libdns", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/DaveRandom/LibDNS.git", + "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DaveRandom/LibDNS/zipball/b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a", + "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "Required for IDN support" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "LibDNS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "DNS protocol implementation written in pure PHP", + "keywords": [ + "dns" + ], + "support": { + "issues": "https://github.com/DaveRandom/LibDNS/issues", + "source": "https://github.com/DaveRandom/LibDNS/tree/v2.1.0" + }, + "time": "2024-04-12T12:12:48+00:00" + }, { "name": "dflydev/dot-access-data", - "version": "v3.0.2", + "version": "v3.0.3", "source": { "type": "git", "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "f41715465d65213d644d3141a6a93081be5d3549" + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", - "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", "shasum": "" }, "require": { @@ -499,9 +1402,9 @@ ], "support": { "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" }, - "time": "2022-10-27T11:44:00+00:00" + "time": "2024-07-08T12:26:09+00:00" }, { "name": "doctrine/cache", @@ -1700,22 +2603,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.8.1", + "version": "7.9.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + "reference": "a629e5b69db96eb4939c1b34114130077dd4c6fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a629e5b69db96eb4939c1b34114130077dd4c6fc", + "reference": "a629e5b69db96eb4939c1b34114130077dd4c6fc", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1726,9 +2629,9 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "guzzle/client-integration-tests": "3.0.2", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1806,7 +2709,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + "source": "https://github.com/guzzle/guzzle/tree/7.9.1" }, "funding": [ { @@ -1822,20 +2725,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:35:24+00:00" + "time": "2024-07-19T16:19:57+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", "shasum": "" }, "require": { @@ -1843,7 +2746,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "type": "library", "extra": { @@ -1889,7 +2792,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.2" + "source": "https://github.com/guzzle/promises/tree/2.0.3" }, "funding": [ { @@ -1905,20 +2808,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:19:20+00:00" + "time": "2024-07-18T10:29:17+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.2", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", "shasum": "" }, "require": { @@ -1933,8 +2836,8 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -2005,7 +2908,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.2" + "source": "https://github.com/guzzle/psr7/tree/2.7.0" }, "funding": [ { @@ -2021,7 +2924,7 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:05:35+00:00" + "time": "2024-07-18T11:15:46+00:00" }, { "name": "guzzlehttp/uri-template", @@ -2109,6 +3012,64 @@ ], "time": "2023-12-03T19:50:20+00:00" }, + { + "name": "kelunik/certificate", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/kelunik/certificate.git", + "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kelunik/certificate/zipball/7e00d498c264d5eb4f78c69f41c8bd6719c0199e", + "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "php": ">=7.0" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^6 | 7 | ^8 | ^9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Kelunik\\Certificate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Access certificate details and transform between different formats.", + "keywords": [ + "DER", + "certificate", + "certificates", + "openssl", + "pem", + "x509" + ], + "support": { + "issues": "https://github.com/kelunik/certificate/issues", + "source": "https://github.com/kelunik/certificate/tree/v1.1.3" + }, + "time": "2023-02-03T21:26:53+00:00" + }, { "name": "laminas/laminas-servicemanager", "version": "3.22.1", @@ -2473,16 +3434,16 @@ }, { "name": "laravel/framework", - "version": "v11.14.0", + "version": "v11.16.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "657e8464e13147d56bc3a399115c8c26f38d4821" + "reference": "bd4808aaf103ccb5cb4b00bcee46140c070c0ec4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/657e8464e13147d56bc3a399115c8c26f38d4821", - "reference": "657e8464e13147d56bc3a399115c8c26f38d4821", + "url": "https://api.github.com/repos/laravel/framework/zipball/bd4808aaf103ccb5cb4b00bcee46140c070c0ec4", + "reference": "bd4808aaf103ccb5cb4b00bcee46140c070c0ec4", "shasum": "" }, "require": { @@ -2588,7 +3549,7 @@ "nyholm/psr7": "^1.2", "orchestra/testbench-core": "^9.1.5", "pda/pheanstalk": "^5.0", - "phpstan/phpstan": "^1.4.7", + "phpstan/phpstan": "^1.11.5", "phpunit/phpunit": "^10.5|^11.0", "predis/predis": "^2.0.2", "resend/resend-php": "^0.10.0", @@ -2675,7 +3636,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-07-02T17:23:58+00:00" + "time": "2024-07-16T14:33:07+00:00" }, { "name": "laravel/prompts", @@ -3511,18 +4472,192 @@ }, "time": "2022-04-15T14:02:14+00:00" }, + { + "name": "league/uri", + "version": "7.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "bedb6e55eff0c933668addaa7efa1e1f2c417cc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/bedb6e55eff0c933668addaa7efa1e1f2c417cc4", + "reference": "bedb6e55eff0c933668addaa7efa1e1f2c417cc4", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.3", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.4.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-03-23T07:42:40+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "8d43ef5c841032c87e2de015972c06f3865ef718" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/8d43ef5c841032c87e2de015972c06f3865ef718", + "reference": "8d43ef5c841032c87e2de015972c06f3865ef718", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-03-23T07:42:40+00:00" + }, { "name": "livewire/livewire", - "version": "v3.5.2", + "version": "v3.5.4", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "636725c1f87bc7844dd80277488268db27eec1aa" + "reference": "b158c6386a892efc6c5e4682e682829baac1f933" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/636725c1f87bc7844dd80277488268db27eec1aa", - "reference": "636725c1f87bc7844dd80277488268db27eec1aa", + "url": "https://api.github.com/repos/livewire/livewire/zipball/b158c6386a892efc6c5e4682e682829baac1f933", + "reference": "b158c6386a892efc6c5e4682e682829baac1f933", "shasum": "" }, "require": { @@ -3577,7 +4712,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.5.2" + "source": "https://github.com/livewire/livewire/tree/v3.5.4" }, "funding": [ { @@ -3585,7 +4720,7 @@ "type": "github" } ], - "time": "2024-07-03T17:22:45+00:00" + "time": "2024-07-15T18:27:32+00:00" }, { "name": "lychee-org/nestedset", @@ -3994,16 +5129,16 @@ }, { "name": "nesbot/carbon", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "39c8ef752db6865717cc3fba63970c16f057982c" + "reference": "cb4374784c87d0a0294e8513a52eb63c0aff3139" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/39c8ef752db6865717cc3fba63970c16f057982c", - "reference": "39c8ef752db6865717cc3fba63970c16f057982c", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cb4374784c87d0a0294e8513a52eb63c0aff3139", + "reference": "cb4374784c87d0a0294e8513a52eb63c0aff3139", "shasum": "" }, "require": { @@ -4096,7 +5231,7 @@ "type": "tidelift" } ], - "time": "2024-06-20T15:52:59+00:00" + "time": "2024-07-16T22:29:20+00:00" }, { "name": "nette/schema", @@ -4244,7 +5379,65 @@ "issues": "https://github.com/nette/utils/issues", "source": "https://github.com/nette/utils/tree/v4.0.4" }, - "time": "2024-01-17T16:50:36+00:00" + "time": "2024-01-17T16:50:36+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1", + "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0" + }, + "time": "2024-07-01T20:03:41+00:00" }, { "name": "nunomaduro/termwind", @@ -5018,6 +6211,117 @@ }, "time": "2024-03-15T13:55:21+00:00" }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "153ae662783729388a584b4361f2545e4d841e3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + }, + "time": "2024-02-23T11:10:43+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.2", @@ -5203,6 +6507,53 @@ ], "time": "2024-06-24T06:27:33+00:00" }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.29.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" + }, + "time": "2024-05-31T08:52:43+00:00" + }, { "name": "psr/cache", "version": "3.0.0", @@ -5884,6 +7235,78 @@ ], "time": "2024-04-27T21:32:50+00:00" }, + { + "name": "revolt/event-loop", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/revoltphp/event-loop.git", + "reference": "25de49af7223ba039f64da4ae9a28ec2d10d0254" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/25de49af7223ba039f64da4ae9a28ec2d10d0254", + "reference": "25de49af7223ba039f64da4ae9a28ec2d10d0254", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.15" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Revolt\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "ceesjank@gmail.com" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Rock-solid event loop for concurrent PHP applications.", + "keywords": [ + "async", + "asynchronous", + "concurrency", + "event", + "event-loop", + "non-blocking", + "scheduler" + ], + "support": { + "issues": "https://github.com/revoltphp/event-loop/issues", + "source": "https://github.com/revoltphp/event-loop/tree/v1.0.6" + }, + "time": "2023-11-30T05:34:44+00:00" + }, { "name": "revolution/socialite-mastodon", "version": "1.4.4", @@ -6304,16 +7727,16 @@ }, { "name": "socialiteproviders/microsoft", - "version": "4.4.0", + "version": "4.5.1", "source": { "type": "git", "url": "https://github.com/SocialiteProviders/Microsoft.git", - "reference": "f907a1744f33e6ede6315bb50c0302e178422784" + "reference": "9f55e544f183c36096a14b2e61b5d6c9dc23961e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SocialiteProviders/Microsoft/zipball/f907a1744f33e6ede6315bb50c0302e178422784", - "reference": "f907a1744f33e6ede6315bb50c0302e178422784", + "url": "https://api.github.com/repos/SocialiteProviders/Microsoft/zipball/9f55e544f183c36096a14b2e61b5d6c9dc23961e", + "reference": "9f55e544f183c36096a14b2e61b5d6c9dc23961e", "shasum": "" }, "require": { @@ -6346,35 +7769,85 @@ "socialite" ], "support": { - "docs": "https://socialiteproviders.com/microsoft", - "issues": "https://github.com/socialiteproviders/providers/issues", - "source": "https://github.com/socialiteproviders/providers" + "docs": "https://socialiteproviders.com/microsoft", + "issues": "https://github.com/socialiteproviders/providers/issues", + "source": "https://github.com/socialiteproviders/providers" + }, + "time": "2024-07-12T02:43:55+00:00" + }, + { + "name": "socialiteproviders/nextcloud", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/SocialiteProviders/Nextcloud.git", + "reference": "94b3cef64410994bdd480230a7aa78294564cc44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SocialiteProviders/Nextcloud/zipball/94b3cef64410994bdd480230a7aa78294564cc44", + "reference": "94b3cef64410994bdd480230a7aa78294564cc44", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.2 || ^8.0", + "socialiteproviders/manager": "~4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "SocialiteProviders\\Nextcloud\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Artur Shaik", + "email": "artur@shaik.link" + } + ], + "description": "Nextcloud OAuth2 Provider for Laravel Socialite", + "support": { + "source": "https://github.com/SocialiteProviders/Nextcloud/tree/4.0.0" }, - "time": "2024-07-02T06:43:41+00:00" + "time": "2021-02-27T23:17:54+00:00" }, { - "name": "socialiteproviders/nextcloud", - "version": "4.0.0", + "name": "spatie/enum", + "version": "3.13.0", "source": { "type": "git", - "url": "https://github.com/SocialiteProviders/Nextcloud.git", - "reference": "94b3cef64410994bdd480230a7aa78294564cc44" + "url": "https://github.com/spatie/enum.git", + "reference": "f1a0f464ba909491a53e60a955ce84ad7cd93a2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SocialiteProviders/Nextcloud/zipball/94b3cef64410994bdd480230a7aa78294564cc44", - "reference": "94b3cef64410994bdd480230a7aa78294564cc44", + "url": "https://api.github.com/repos/spatie/enum/zipball/f1a0f464ba909491a53e60a955ce84ad7cd93a2c", + "reference": "f1a0f464ba909491a53e60a955ce84ad7cd93a2c", "shasum": "" }, "require": { "ext-json": "*", - "php": "^7.2 || ^8.0", - "socialiteproviders/manager": "~4.0" + "php": "^8.0" + }, + "require-dev": { + "fakerphp/faker": "^1.9.1", + "larapack/dd": "^1.1", + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "^4.3" + }, + "suggest": { + "fakerphp/faker": "To use the enum faker provider", + "phpunit/phpunit": "To use the enum assertions" }, "type": "library", "autoload": { "psr-4": { - "SocialiteProviders\\Nextcloud\\": "" + "Spatie\\Enum\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6383,15 +7856,41 @@ ], "authors": [ { - "name": "Artur Shaik", - "email": "artur@shaik.link" + "name": "Brent Roose", + "email": "brent@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + }, + { + "name": "Tom Witkowski", + "email": "dev@gummibeer.de", + "homepage": "https://gummibeer.de", + "role": "Developer" } ], - "description": "Nextcloud OAuth2 Provider for Laravel Socialite", + "description": "PHP Enums", + "homepage": "https://github.com/spatie/enum", + "keywords": [ + "enum", + "enumerable", + "spatie" + ], "support": { - "source": "https://github.com/SocialiteProviders/Nextcloud/tree/4.0.0" + "docs": "https://docs.spatie.be/enum", + "issues": "https://github.com/spatie/enum/issues", + "source": "https://github.com/spatie/enum" }, - "time": "2021-02-27T23:17:54+00:00" + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-04-22T08:51:55+00:00" }, { "name": "spatie/guzzle-rate-limiter-middleware", @@ -6500,6 +7999,90 @@ }, "time": "2024-05-16T08:48:33+00:00" }, + { + "name": "spatie/laravel-data", + "version": "4.7.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-data.git", + "reference": "b7e10d345c059ff1de04168ec1d75b65157ac5a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-data/zipball/b7e10d345c059ff1de04168ec1d75b65157ac5a1", + "reference": "b7e10d345c059ff1de04168ec1d75b65157ac5a1", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^10.0|^11.0", + "php": "^8.1", + "phpdocumentor/type-resolver": "^1.5", + "spatie/laravel-package-tools": "^1.9.0", + "spatie/php-structure-discoverer": "^2.0" + }, + "require-dev": { + "fakerphp/faker": "^1.14", + "friendsofphp/php-cs-fixer": "^3.0", + "inertiajs/inertia-laravel": "^1.2", + "livewire/livewire": "^3.0", + "mockery/mockery": "^1.6", + "nesbot/carbon": "^2.63", + "nunomaduro/larastan": "^2.0", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.31", + "pestphp/pest-plugin-laravel": "^2.0", + "pestphp/pest-plugin-livewire": "^2.1", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpunit/phpunit": "^10.0", + "spatie/invade": "^1.0", + "spatie/laravel-typescript-transformer": "^2.3", + "spatie/pest-plugin-snapshots": "^2.1", + "spatie/test-time": "^1.2" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelData\\LaravelDataServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\LaravelData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "role": "Developer" + } + ], + "description": "Create unified resources and data transfer objects", + "homepage": "https://github.com/spatie/laravel-data", + "keywords": [ + "laravel", + "laravel-data", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-data/issues", + "source": "https://github.com/spatie/laravel-data/tree/4.7.1" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-06-25T11:01:36+00:00" + }, { "name": "spatie/laravel-feed", "version": "4.4.0", @@ -6709,41 +8292,275 @@ "spatie" ], "support": { - "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.4" + "issues": "https://github.com/spatie/laravel-package-tools/issues", + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.4" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-03-20T07:29:11+00:00" + }, + { + "name": "spatie/laravel-typescript-transformer", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-typescript-transformer.git", + "reference": "4c85ea553d332a075ed3ed7e28758056d8039939" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-typescript-transformer/zipball/4c85ea553d332a075ed3ed7e28758056d8039939", + "reference": "4c85ea553d332a075ed3ed7e28758056d8039939", + "shasum": "" + }, + "require": { + "illuminate/console": "^8.83|^9.30|^10.0|^11.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.12", + "spatie/typescript-transformer": "^2.1.13" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.0", + "mockery/mockery": "^1.4", + "nesbot/carbon": "^2.63", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0", + "pestphp/pest": "^1.22|^2.0", + "phpunit/phpunit": "^9.0|^10.0|^11.0", + "spatie/data-transfer-object": "^2.0", + "spatie/enum": "^3.0", + "spatie/laravel-model-states": "^1.6|^2.0", + "spatie/pest-plugin-snapshots": "^1.1|^2.0", + "spatie/phpunit-snapshot-assertions": "^4.2|^5.0", + "spatie/temporary-directory": "^1.2" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelTypeScriptTransformer\\TypeScriptTransformerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\LaravelTypeScriptTransformer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Transform your PHP structures to TypeScript types", + "homepage": "https://github.com/spatie/typescript-transformer", + "keywords": [ + "spatie", + "typescript-transformer" + ], + "support": { + "issues": "https://github.com/spatie/laravel-typescript-transformer/issues", + "source": "https://github.com/spatie/laravel-typescript-transformer/tree/2.4.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-05-03T08:00:04+00:00" + }, + { + "name": "spatie/php-structure-discoverer", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/php-structure-discoverer.git", + "reference": "24f5221641560ec0f7dce23dd814e7d555b0098b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/php-structure-discoverer/zipball/24f5221641560ec0f7dce23dd814e7d555b0098b", + "reference": "24f5221641560ec0f7dce23dd814e7d555b0098b", + "shasum": "" + }, + "require": { + "amphp/amp": "^v3.0", + "amphp/parallel": "^2.2", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.4.3", + "symfony/finder": "^6.0|^7.0" + }, + "require-dev": { + "illuminate/console": "^10.0|^11.0", + "laravel/pint": "^1.0", + "nunomaduro/collision": "^7.0|^8.0", + "nunomaduro/larastan": "^2.0.1", + "orchestra/testbench": "^7.0|^8.0|^9.0", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5|^10.0", + "spatie/laravel-ray": "^1.26" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\StructureDiscoverer\\StructureDiscovererServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\StructureDiscoverer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "role": "Developer" + } + ], + "description": "Automatically discover structures within your PHP application", + "homepage": "https://github.com/spatie/php-structure-discoverer", + "keywords": [ + "discover", + "laravel", + "php", + "php-structure-discoverer" + ], + "support": { + "issues": "https://github.com/spatie/php-structure-discoverer/issues", + "source": "https://github.com/spatie/php-structure-discoverer/tree/2.1.1" + }, + "funding": [ + { + "url": "https://github.com/LaravelAutoDiscoverer", + "type": "github" + } + ], + "time": "2024-03-13T16:08:30+00:00" + }, + { + "name": "spatie/temporary-directory", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/temporary-directory.git", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\TemporaryDirectory\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Vanderbist", + "email": "alex@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily create, use and destroy temporary directories", + "homepage": "https://github.com/spatie/temporary-directory", + "keywords": [ + "php", + "spatie", + "temporary-directory" + ], + "support": { + "issues": "https://github.com/spatie/temporary-directory/issues", + "source": "https://github.com/spatie/temporary-directory/tree/2.2.1" }, "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, { "url": "https://github.com/spatie", "type": "github" } ], - "time": "2024-03-20T07:29:11+00:00" + "time": "2023-12-25T11:46:58+00:00" }, { - "name": "spatie/temporary-directory", - "version": "2.2.1", + "name": "spatie/typescript-transformer", + "version": "2.3.1", "source": { "type": "git", - "url": "https://github.com/spatie/temporary-directory.git", - "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a" + "url": "https://github.com/spatie/typescript-transformer.git", + "reference": "b1d7ab4ea185297af52bf3665ad248252ff4258f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", - "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "url": "https://api.github.com/repos/spatie/typescript-transformer/zipball/b1d7ab4ea185297af52bf3665ad248252ff4258f", + "reference": "b1d7ab4ea185297af52bf3665ad248252ff4258f", "shasum": "" }, "require": { - "php": "^8.0" + "nikic/php-parser": "^4.18|^5.0", + "php": "^8.0", + "phpdocumentor/type-resolver": "^1.6.2", + "symfony/process": "^5.2|^6.0|^7.0" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "friendsofphp/php-cs-fixer": "^3.40", + "larapack/dd": "^1.1", + "myclabs/php-enum": "^1.7", + "pestphp/pest": "^1.22", + "phpstan/extension-installer": "^1.1", + "phpunit/phpunit": "^9.0", + "spatie/data-transfer-object": "^2.0", + "spatie/enum": "^3.0", + "spatie/pest-plugin-snapshots": "^1.1", + "spatie/temporary-directory": "^1.2|^2.0" }, "type": "library", "autoload": { "psr-4": { - "Spatie\\TemporaryDirectory\\": "src" + "Spatie\\TypeScriptTransformer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6752,22 +8569,21 @@ ], "authors": [ { - "name": "Alex Vanderbist", - "email": "alex@spatie.be", + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", "homepage": "https://spatie.be", "role": "Developer" } ], - "description": "Easily create, use and destroy temporary directories", - "homepage": "https://github.com/spatie/temporary-directory", + "description": "Transform your PHP structures to TypeScript types", + "homepage": "https://github.com/spatie/typescript-transformer", "keywords": [ - "php", "spatie", - "temporary-directory" + "typescript-transformer" ], "support": { - "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/2.2.1" + "issues": "https://github.com/spatie/typescript-transformer/issues", + "source": "https://github.com/spatie/typescript-transformer/tree/2.3.1" }, "funding": [ { @@ -6779,7 +8595,7 @@ "type": "github" } ], - "time": "2023-12-25T11:46:58+00:00" + "time": "2024-05-03T07:58:34+00:00" }, { "name": "symfony/cache", @@ -9887,16 +11703,16 @@ }, { "name": "barryvdh/laravel-ide-helper", - "version": "v3.0.0", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "bc1d67f01ce8c77e3f97d48ba51fa1d81874f622" + "reference": "591e7d665fbab8a3b682e451641706341573eb80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/bc1d67f01ce8c77e3f97d48ba51fa1d81874f622", - "reference": "bc1d67f01ce8c77e3f97d48ba51fa1d81874f622", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/591e7d665fbab8a3b682e451641706341573eb80", + "reference": "591e7d665fbab8a3b682e451641706341573eb80", "shasum": "" }, "require": { @@ -9928,7 +11744,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.1-dev" }, "laravel": { "providers": [ @@ -9965,7 +11781,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", - "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.0.0" + "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.1.0" }, "funding": [ { @@ -9977,7 +11793,7 @@ "type": "github" } ], - "time": "2024-03-01T12:53:18+00:00" + "time": "2024-07-12T14:20:51+00:00" }, { "name": "barryvdh/reflection-docblock", @@ -10241,16 +12057,16 @@ }, { "name": "composer/semver", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", "shasum": "" }, "require": { @@ -10302,7 +12118,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" + "source": "https://github.com/composer/semver/tree/3.4.2" }, "funding": [ { @@ -10318,7 +12134,7 @@ "type": "tidelift" } ], - "time": "2023-08-31T09:50:34+00:00" + "time": "2024-07-12T11:35:52+00:00" }, { "name": "composer/xdebug-handler", @@ -10886,16 +12702,16 @@ }, { "name": "larastan/larastan", - "version": "v2.9.7", + "version": "v2.9.8", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "5c805f636095cc2e0b659e3954775cf8f1dad1bb" + "reference": "340badd89b0eb5bddbc503a4829c08cf9a2819d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/5c805f636095cc2e0b659e3954775cf8f1dad1bb", - "reference": "5c805f636095cc2e0b659e3954775cf8f1dad1bb", + "url": "https://api.github.com/repos/larastan/larastan/zipball/340badd89b0eb5bddbc503a4829c08cf9a2819d7", + "reference": "340badd89b0eb5bddbc503a4829c08cf9a2819d7", "shasum": "" }, "require": { @@ -10909,7 +12725,7 @@ "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0", "php": "^8.0.2", "phpmyadmin/sql-parser": "^5.9.0", - "phpstan/phpstan": "^1.11.1" + "phpstan/phpstan": "^1.11.2" }, "require-dev": { "doctrine/coding-standard": "^12.0", @@ -10964,7 +12780,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.9.7" + "source": "https://github.com/larastan/larastan/tree/v2.9.8" }, "funding": [ { @@ -10984,7 +12800,7 @@ "type": "patreon" } ], - "time": "2024-05-27T18:33:26+00:00" + "time": "2024-07-06T17:46:02+00:00" }, { "name": "lychee-org/phpstan-lychee", @@ -11246,64 +13062,6 @@ ], "time": "2024-06-12T14:39:25+00:00" }, - { - "name": "nikic/php-parser", - "version": "v5.1.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1", - "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0" - }, - "time": "2024-07-01T20:03:41+00:00" - }, { "name": "phar-io/manifest", "version": "2.0.4", @@ -11483,117 +13241,6 @@ }, "time": "2024-03-27T12:14:49+00:00" }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.8.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "153ae662783729388a584b4361f2545e4d841e3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", - "reference": "153ae662783729388a584b4361f2545e4d841e3c", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.3 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" - }, - "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" - }, - "time": "2024-02-23T11:10:43+00:00" - }, { "name": "phpmyadmin/sql-parser", "version": "5.9.0", @@ -11682,65 +13329,18 @@ ], "time": "2024-01-20T20:34:02+00:00" }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.29.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", - "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" - }, - "time": "2024-05-31T08:52:43+00:00" - }, { "name": "phpstan/phpstan", - "version": "1.11.6", + "version": "1.11.7", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "6ac78f1165346c83b4a753f7e4186d969c6ad0ee" + "reference": "52d2bbfdcae7f895915629e4694e9497d0f8e28d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/6ac78f1165346c83b4a753f7e4186d969c6ad0ee", - "reference": "6ac78f1165346c83b4a753f7e4186d969c6ad0ee", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/52d2bbfdcae7f895915629e4694e9497d0f8e28d", + "reference": "52d2bbfdcae7f895915629e4694e9497d0f8e28d", "shasum": "" }, "require": { @@ -11785,7 +13385,7 @@ "type": "github" } ], - "time": "2024-07-01T15:33:06+00:00" + "time": "2024-07-06T11:17:41+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -12206,16 +13806,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.25", + "version": "10.5.28", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "831bf82312be6037e811833ddbea0b8de60ea314" + "reference": "ff7fb85cdf88131b83e721fb2a327b664dbed275" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/831bf82312be6037e811833ddbea0b8de60ea314", - "reference": "831bf82312be6037e811833ddbea0b8de60ea314", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ff7fb85cdf88131b83e721fb2a327b664dbed275", + "reference": "ff7fb85cdf88131b83e721fb2a327b664dbed275", "shasum": "" }, "require": { @@ -12225,26 +13825,26 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.12.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.5", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-invoker": "^4.0", - "phpunit/php-text-template": "^3.0", - "phpunit/php-timer": "^6.0", - "sebastian/cli-parser": "^2.0", - "sebastian/code-unit": "^2.0", - "sebastian/comparator": "^5.0", - "sebastian/diff": "^5.0", - "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.1", - "sebastian/global-state": "^6.0.1", - "sebastian/object-enumerator": "^5.0", - "sebastian/recursion-context": "^5.0", - "sebastian/type": "^4.0", - "sebastian/version": "^4.0" + "phpunit/php-code-coverage": "^10.1.15", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.1", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -12287,7 +13887,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.25" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.28" }, "funding": [ { @@ -12303,7 +13903,7 @@ "type": "tidelift" } ], - "time": "2024-07-03T05:49:17+00:00" + "time": "2024-07-18T14:54:16+00:00" }, { "name": "react/cache", diff --git a/config/data.php b/config/data.php new file mode 100644 index 00000000000..eee755ef956 --- /dev/null +++ b/config/data.php @@ -0,0 +1,201 @@ + DATE_ATOM, + + /** + * When transforming or casting dates, the following timezone will be used to + * convert the date to the correct timezone. If set to null no timezone will + * be passed. + */ + 'date_timezone' => null, + + /** + * It is possible to enable certain features of the package, these would otherwise + * be breaking changes, and thus they are disabled by default. In the next major + * version of the package, these features will be enabled by default. + */ + 'features' => [ + 'cast_and_transform_iterables' => false, + + /** + * When trying to set a computed property value, the package will throw an exception. + * You can disable this behaviour by setting this option to true, which will then just + * ignore the value being passed into the computed property and recalculate it. + */ + 'ignore_exception_when_trying_to_set_computed_property_value' => false, + ], + + /** + * Global transformers will take complex types and transform them into simple + * types. + */ + 'transformers' => [ + DateTimeInterface::class => DateTimeInterfaceTransformer::class, + \Illuminate\Contracts\Support\Arrayable::class => ArrayableTransformer::class, + BackedEnum::class => EnumTransformer::class, + ], + + /** + * Global casts will cast values into complex types when creating a data + * object from simple types. + */ + 'casts' => [ + DateTimeInterface::class => DateTimeInterfaceCast::class, + BackedEnum::class => EnumCast::class, + // Enumerable::class => Spatie\LaravelData\Casts\EnumerableCast::class, + ], + + /** + * Rule inferrers can be configured here. They will automatically add + * validation rules to properties of a data object based upon + * the type of the property. + */ + 'rule_inferrers' => [ + SometimesRuleInferrer::class, + NullableRuleInferrer::class, + RequiredRuleInferrer::class, + BuiltInTypesRuleInferrer::class, + AttributesRuleInferrer::class, + ], + + /** + * Normalizers return an array representation of the payload, or null if + * it cannot normalize the payload. The normalizers below are used for + * every data object, unless overridden in a specific data object class. + */ + 'normalizers' => [ + ModelNormalizer::class, + // FormRequestNormalizer::class, + ArrayableNormalizer::class, + ObjectNormalizer::class, + ArrayNormalizer::class, + JsonNormalizer::class, + ], + + /** + * Data objects can be wrapped into a key like 'data' when used as a resource, + * this key can be set globally here for all data objects. You can pass in + * `null` if you want to disable wrapping. + */ + 'wrap' => null, + + /** + * Adds a specific caster to the Symphony VarDumper component which hides + * some properties from data objects and collections when being dumped + * by `dump` or `dd`. Can be 'enabled', 'disabled' or 'development' + * which will only enable the caster locally. + */ + 'var_dumper_caster_mode' => 'development', + + /** + * It is possible to skip the PHP reflection analysis of data objects + * when running in production. This will speed up the package. You + * can configure where data objects are stored and which cache + * store should be used. + * + * Structures are cached forever as they'll become stale when your + * application is deployed with changes. You can set a duration + * in seconds if you want the cache to clear after a certain + * timeframe. + */ + 'structure_caching' => [ + 'enabled' => true, + 'directories' => [app_path('Data')], + 'cache' => [ + 'store' => env('CACHE_STORE', env('CACHE_DRIVER', 'file')), + 'prefix' => 'laravel-data', + 'duration' => null, + ], + 'reflection_discovery' => [ + 'enabled' => true, + 'base_path' => base_path(), + 'root_namespace' => null, + ], + ], + + /** + * A data object can be validated when created using a factory or when calling the from + * method. By default, only when a request is passed the data is being validated. This + * behaviour can be changed to always validate or to completely disable validation. + */ + 'validation_strategy' => \Spatie\LaravelData\Support\Creation\ValidationStrategy::OnlyRequests->value, + + /** + * When using an invalid include, exclude, only or except partial, the package will + * throw an exception. You can disable this behaviour by setting this option to true. + */ + 'ignore_invalid_partials' => false, + + /** + * When transforming a nested chain of data objects, the package can end up in an infinite + * loop when including a recursive relationship. The max transformation depth can be + * set as a safety measure to prevent this from happening. When set to null, the + * package will not enforce a maximum depth. + */ + 'max_transformation_depth' => null, + + /** + * When the maximum transformation depth is reached, the package will throw an exception. + * You can disable this behaviour by setting this option to true which will return an + * empty array. + */ + 'throw_when_max_transformation_depth_reached' => true, + + /** + * When using the `make:data` command, the package will use these settings to generate + * the data classes. You can override these settings by passing options to the command. + */ + 'commands' => [ + /** + * Provides default configuration for the `make:data` command. These settings can be overridden with options + * passed directly to the `make:data` command for generating single Data classes, or if not set they will + * automatically fall back to these defaults. See `php artisan make:data --help` for more information. + */ + 'make' => [ + /** + * The default namespace for generated Data classes. This exists under the application's root namespace, + * so the default 'Data` will end up as '\App\Data', and generated Data classes will be placed in the + * app/Data/ folder. Data classes can live anywhere, but this is where `make:data` will put them. + */ + 'namespace' => 'Data', + + /** + * This suffix will be appended to all data classes generated by make:data, so that they are less likely + * to conflict with other related classes, controllers or models with a similar name without resorting + * to adding an alias for the Data object. Set to a blank string (not null) to disable. + */ + 'suffix' => 'Resource', + ], + ], + + /** + * When using Livewire, the package allows you to enable or disable the synths + * these synths will automatically handle the data objects and their + * properties when used in a Livewire component. + */ + 'livewire' => [ + 'enable_synths' => false, + ], +]; diff --git a/config/features.php b/config/features.php index cd61e99d2ed..c413983116d 100644 --- a/config/features.php +++ b/config/features.php @@ -3,14 +3,25 @@ return [ /* |-------------------------------------------------------------------------- - | Use Livewire Front-end + | Use VueJS Front-end |-------------------------------------------------------------------------- | | This value determines whether livewire front-end is enabled as it is | currently under development. | */ - 'livewire' => (bool) env('LIVEWIRE_ENABLED', true), + 'vuejs' => (bool) env('VUEJS_ENABLED', true), + + /* + |-------------------------------------------------------------------------- + | Use VueJS Front-end + |-------------------------------------------------------------------------- + | + | This value determines whether livewire front-end is enabled as it is + | currently under development. + | + */ + 'legacy_api' => (bool) env('LEGACY_API_ENABLED', !(bool) env('VUEJS_ENABLED', true)), /* |-------------------------------------------------------------------------- diff --git a/config/scramble.php b/config/scramble.php index 436afbe7160..a692cae6ee0 100644 --- a/config/scramble.php +++ b/config/scramble.php @@ -1,5 +1,7 @@ null, + /* + * The path where your OpenAPI specification will be exported. + */ + 'export_path' => 'api.json', + 'info' => [ /* * API version. */ - 'version' => env('API_VERSION', '0.0.1'), + 'version' => env('API_VERSION', '2.0.0'), /* * Description rendered on the home page of the API documentation (`/docs/api`). @@ -26,7 +33,37 @@ ], /* - * The list of servers of the API. By default (when `null`), server URL will be created from + * Customize Stoplight Elements UI + */ + 'ui' => [ + /* + * Define the title of the documentation's website. App name is used when this config is `null`. + */ + 'title' => null, + + /* + * Define the theme of the documentation. Available options are `light` and `dark`. + */ + 'theme' => 'light', + + /* + * Hide the `Try It` feature. Enabled by default. + */ + 'hide_try_it' => false, + + /* + * URL to an image that displays as a small square logo next to the title, above the table of contents. + */ + 'logo' => '', + + /* + * Use to fetch the credential policy for the Try It feature. Options are: omit, include (default), and same-origin + */ + 'try_it_credentials_policy' => 'include', + ], + + /* + * The list of servers of the API. By default, when `null`, server URL will be created from * `scramble.api_path` and `scramble.api_domain` config variables. When providing an array, you * will need to specify the local server URL manually (if needed). * @@ -42,9 +79,9 @@ 'servers' => null, 'middleware' => [ - // Only available for admin 'web-admin', + // RestrictedDocsAccess::class, ], 'extensions' => [], -]; +]; \ No newline at end of file diff --git a/config/typescript-transformer.php b/config/typescript-transformer.php new file mode 100644 index 00000000000..fbe6cb1119a --- /dev/null +++ b/config/typescript-transformer.php @@ -0,0 +1,86 @@ + [ + app_path(), + ], + + /* + * Collectors will search for classes in the `auto_discover_types` paths and choose the correct + * transformer to transform them. By default, we include a DefaultCollector which will search + * for @typescript annotated and #[TypeScript] attributed classes to transform. + */ + + 'collectors' => [ + DefaultCollector::class, + EnumCollector::class, + ], + + /* + * Transformers take PHP classes(e.g., enums) as an input and will output + * a TypeScript representation of the PHP class. + */ + + 'transformers' => [ + SpatieStateTransformer::class, + EnumTransformer::class, + SpatieEnumTransformer::class, + DtoTransformer::class, + ], + + /* + * In your classes, you sometimes have types that should always be replaced + * by the same TypeScript representations. For example, you can replace a + * Datetime always with a string. You define these replacements here. + */ + + 'default_type_replacements' => [ + DateTime::class => 'string', + DateTimeImmutable::class => 'string', + Carbon\CarbonInterface::class => 'string', + Carbon\CarbonImmutable::class => 'string', + Carbon\Carbon::class => 'string', + ], + + /* + * The package will write the generated TypeScript to this file. + */ + + 'output_file' => resource_path('js/lychee.d.ts'), + + /* + * When the package is writing types to the output file, a writer is used to + * determine the format. By default, this is the `TypeDefinitionWriter`. + * But you can also use the `ModuleWriter` or implement your own. + */ + + 'writer' => TypeDefinitionWriter::class, + + /* + * The generated TypeScript file can be formatted. We ship a Prettier formatter + * out of the box: `PrettierFormatter` but you can also implement your own one. + * The generated TypeScript will not be formatted when no formatter was set. + */ + + 'formatter' => null, + + /* + * Enums can be transformed into types or native TypeScript enums, by default + * the package will transform them to types. + */ + + 'transform_to_native_enums' => false, +]; diff --git a/database/factories/AccessPermissionFactory.php b/database/factories/AccessPermissionFactory.php new file mode 100644 index 00000000000..3d234bbd256 --- /dev/null +++ b/database/factories/AccessPermissionFactory.php @@ -0,0 +1,132 @@ + + */ +class AccessPermissionFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = AccessPermission::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return + [ + 'is_link_required' => true, + 'grants_full_photo_access' => false, + 'grants_download' => false, + 'grants_upload' => false, + 'grants_edit' => false, + 'grants_delete' => false, + ]; + } + + public function public() + { + return $this->state(function (array $attributes) { + return [ + 'user_id' => null, + ]; + }); + } + + public function locked() + { + return $this->state(function (array $attributes) { + return [ + 'password' => Hash::make('password'), + ]; + }); + } + + public function for_user(User $user) + { + return $this->state(function (array $attributes) use ($user) { + return [ + 'user_id' => $user->id, + ]; + }); + } + + public function grants_edit() + { + return $this->state(function (array $attributes) { + return [ + 'grants_edit' => true, + ]; + }); + } + + public function grants_delete() + { + return $this->state(function (array $attributes) { + return [ + 'grants_delete' => true, + ]; + }); + } + + public function grants_upload() + { + return $this->state(function (array $attributes) { + return [ + 'grants_upload' => true, + ]; + }); + } + + public function grants_download() + { + return $this->state(function (array $attributes) { + return [ + 'grants_download' => true, + ]; + }); + } + + public function grants_full_photo() + { + return $this->state(function (array $attributes) { + return [ + 'grants_full_photo_access' => true, + ]; + }); + } + + public function visible() + { + return $this->state(function (array $attributes) { + return [ + 'is_link_required' => false, + ]; + }); + } + + public function for_album(Album $album) + { + return $this->state(function (array $attributes) use ($album) { + return [ + 'base_album_id' => $album->id, + ]; + })->afterCreating(function (AccessPermission $perm) { + $perm->load('album', 'user'); + }); + } +} \ No newline at end of file diff --git a/database/factories/AlbumFactory.php b/database/factories/AlbumFactory.php index e74325b045e..07ecbb106af 100644 --- a/database/factories/AlbumFactory.php +++ b/database/factories/AlbumFactory.php @@ -62,4 +62,16 @@ public function as_root(): self $album->makeRoot(); }); } + + // /** + // * Configure the model factory. + // */ + // public function configure(): static + // { + // return $this + // // ->afterMaking(function (Album $_album) {}) + // ->afterCreating(function (Album $album) { + // // dd($album->base_class); + // }); + // } } diff --git a/database/migrations/2024_07_06_214241_thumb_min_max_take_date_order.php b/database/migrations/2024_07_06_214241_thumb_min_max_take_date_order.php new file mode 100644 index 00000000000..5e39ec032b5 --- /dev/null +++ b/database/migrations/2024_07_06_214241_thumb_min_max_take_date_order.php @@ -0,0 +1,29 @@ + 'thumb_min_max_order', + 'value' => 'younger_older', + 'is_secret' => true, + 'cat' => self::GALLERY, + 'type_range' => 'older_younger|younger_older', + 'description' => 'Set which date to display first in thumb. Allowed values: older_younger, younger_older', + ], + [ + 'key' => 'header_min_max_order', + 'value' => 'older_younger', + 'is_secret' => true, + 'cat' => self::GALLERY, + 'type_range' => 'older_younger|younger_older', + 'description' => 'Set which date to display first in header. Allowed values: older_younger, younger_older', + ], + ]; + } +}; diff --git a/database/migrations/2024_07_12_183751_add_auto_play_config.php b/database/migrations/2024_07_12_183751_add_auto_play_config.php new file mode 100644 index 00000000000..9b8cf3a191e --- /dev/null +++ b/database/migrations/2024_07_12_183751_add_auto_play_config.php @@ -0,0 +1,21 @@ + 'autoplay_enabled', + 'value' => '1', + 'is_secret' => true, + 'cat' => self::GALLERY, + 'type_range' => self::BOOL, + 'description' => 'Set autoplay attribute on videos.', + ], + ]; + } +}; diff --git a/lang/cz.json b/lang/cz.json new file mode 100644 index 00000000000..6272e98b33d --- /dev/null +++ b/lang/cz.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Uživatelské jméno", + "PASSWORD": "Heslo", + "ENTER": "Vložit", + "CANCEL": "Storno", + "CONFIRM": "Confirm", + "SIGN_IN": "Příhlásit se", + "CLOSE": "Zavřít", + "SETTINGS": "Nastavení", + "SEARCH": "Hledat …", + "MORE": "Rozšířená nastavení", + "DEFAULT": "Default", + "GALLERY": "Gallery", + "USERS": "Uživatelé", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Sdílení", + "CHANGE_LOGIN": "Změnit přihlášení", + "CHANGE_SORTING": "Změnt řazení", + "SET_DROPBOX": "Nastavit Dropbox", + "ABOUT_LYCHEE": "O Lychee", + "DIAGNOSTICS": "Diagnostika", + "DIAGNOSTICS_GET_SIZE": "Request space usage", + "JOBS": "Show job history", + "LOGS": "Protokoly", + "SIGN_OUT": "Odhlásit se", + "UPDATE_AVAILABLE": "Update je k dispozici!", + "MIGRATION_AVAILABLE": "Migration available!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Výchozí licence pro nové uploady:", + "SET_LICENSE": "Nastavit licenci", + "SET_OVERLAY_TYPE": "Nastavit překrytí", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Nastavit providera OpenStreetMap", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Chytrá alba", + "SHARED_ALBUMS": "Sdílená alba", + "ALBUMS": "Alba", + "PHOTOS": "Obrázky", + "SEARCH_RESULTS": "Výsledky hledání", + "RENAME": "Přejmenovat", + "RENAME_ALL": "Přejmenovat vybrané", + "MERGE": "Sloučit", + "MERGE_ALL": "Sloučit vybrané", + "MAKE_PUBLIC": "Zveřejnit", + "SHARE_ALBUM": "Sdílet album", + "SHARE_PHOTO": "Sdílet fotografii", + "VISIBILITY_ALBUM": "Viditelnost alba", + "VISIBILITY_PHOTO": "Viditelnost fotografie", + "DOWNLOAD_ALBUM": "Stáhnout album", + "ABOUT_ALBUM": "O albu", + "DELETE_ALBUM": "Smazat album", + "MOVE_ALBUM": "Přesunout album", + "FULLSCREEN_ENTER": "Spustit režim celé obrazovky", + "FULLSCREEN_EXIT": "Ukončit režim celé obrazovky", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "Mazání alba a fotografie", + "KEEP_ALBUM": "Ponechat album", + "DELETE_ALBUM_CONFIRMATION": "Opravdu smazat album „%s“ a všechny fotografie, které obsahuje? Tento krok je nevratný!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album „%s“ (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Mazání alb a fotografií", + "KEEP_ALBUMS": "Ponechat alba", + "DELETE_ALBUMS_CONFIRMATION": "Opravdu smazat všechna vybraná %d alba a fotografie, které obsahují? Tento krok je nevratný!", + "DELETE_UNSORTED_CONFIRM": "Opravdu odstranit všechny „Nesetříděné“ fotografie? Tento krok je nevratný!", + "CLEAR_UNSORTED": "Odstranit Nesetříděné", + "KEEP_UNSORTED": "Ponechat Nesetříděné", + "EDIT_SHARING": "Upravit sdílení", + "MAKE_PRIVATE": "Nastavit jako privátní", + "CLOSE_ALBUM": "Zavřít album", + "CLOSE_PHOTO": "Zavřít fotografii", + "CLOSE_MAP": "Zavřít mapu", + "ADD": "Přidat", + "MOVE": "Přesunout", + "MOVE_ALL": "Přesunout vybrané", + "DUPLICATE": "Duplikovat", + "DUPLICATE_ALL": "Duplikovat vybrané", + "COPY_TO": "Kopírovat do …", + "COPY_ALL_TO": "Kopírovat vybrané do …", + "DELETE": "Odstranit", + "SAVE": "Save", + "DELETE_ALL": "Odstranit vybrané", + "DOWNLOAD": "Stáhnout", + "DOWNLOAD_ALL": "Stánout vybrané", + "UPLOAD_PHOTO": "Odeslat fotografii", + "IMPORT_LINK": "Importovat z odkazu", + "IMPORT_DROPBOX": "Importovat z Dropboxu", + "IMPORT_SERVER": "Importovat ze serveru", + "NEW_ALBUM": "Nové album", + "NEW_TAG_ALBUM": "Nové tag album", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Zadejte název nového alba:", + "UNTITLED": "Bezejmanné", + "UNSORTED": "Nesetříděné", + "STARRED": "Oblíbené", + "RECENT": "Poslední", + "PUBLIC": "Veřejné", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "fotografií", + "CREATE_ALBUM": "Vytvořit album", + "CREATE_TAG_ALBUM": "Vytvořit Tag album", + "STAR_PHOTO": "Označit jako oblíbené", + "STAR": "Označit jako oblíbené", + "UNSTAR": "Unstar", + "STAR_ALL": "Vše označit jako oblíbené", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "Štítek", + "TAG_ALL": "Oštítkovat vše", + "UNSTAR_PHOTO": "Odebrat z oblíbených", + "SET_COVER": "Set Album Cover", + "REMOVE_COVER": "Remove Album Cover", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Otevřít originál", + "ABOUT_PHOTO": "O fotografii", + "DISPLAY_FULL_MAP": "Mapa", + "DIRECT_LINK": "Přímý odkaz", + "DIRECT_LINKS": "Přímé odkazy", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "O albu", + "ALBUM_BASICS": "Základní informace", + "ALBUM_TITLE": "Název", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Zadat nový název alba:", + "ALBUMS_NEW_TITLE": "Zadat nový název pro %d vybraná alba:", + "ALBUM_SET_TITLE": "Uložit název", + "ALBUM_DESCRIPTION": "Popis", + "ALBUM_SHOW_TAGS": "Zobrazené tagy", + "ALBUM_NEW_DESCRIPTION": "Zadat nový popis pro album:", + "ALBUM_SET_DESCRIPTION": "Uložit popis", + "ALBUM_NEW_SHOWTAGS": "Zadejte tagy fotografií, které budou viditelné v albu:", + "ALBUM_SET_SHOWTAGS": "Tagy k zobrazení", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Vytvořeno", + "ALBUM_IMAGES": "Obrázky", + "ALBUM_VIDEOS": "Videa", + "ALBUM_SUBALBUMS": "Subalba", + "ALBUM_SHARING": "Sdílení", + "ALBUM_SHR_YES": "Ano", + "ALBUM_SHR_NO": "Ne", + "ALBUM_PUBLIC": "Veřejné", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Originál", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Skryté", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Mark album as sensitive", + "ALBUM_UNMARK_NSFW": "Unmark album as sensitive", + "ALBUM_NSFW": "Sensitive", + "ALBUM_NSFW_EXPL": "Album is marked to contain sensitive content.", + "ALBUM_DOWNLOADABLE": "Stažitelné", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Tlačítko sdílet je viditelné", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users see social media sharing links.", + "ALBUM_PASSWORD": "Heslo", + "ALBUM_PASSWORD_PROT": "Chráněné heslem", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Toto album je chráněno heslem. K jeho zobrazení zadejte prosím platné heslo:", + "ALBUM_MERGE": "Sloučení vybraných alb „%1$s“ do jednoho alba „%2$s“?", + "ALBUMS_MERGE": "Sloučit „%s“?", + "MERGE_ALBUM": "Sloučit alba", + "DONT_MERGE": "Neslučovat", + "ALBUM_MOVE": "Opravdu přesunout album „%1$s“ do alba „%2$s“?", + "ALBUMS_MOVE": "Opravdu přesunout vybraná alba do alba „%s“?", + "MOVE_ALBUMS": "Přesunout album", + "NOT_MOVE_ALBUMS": "Nepřesouvat", + "ROOT": "Alba", + "ALBUM_REUSE": "Použití", + "ALBUM_LICENSE": "Licence", + "ALBUM_SET_LICENSE": "Nastavit licenci", + "ALBUM_LICENSE_HELP": "Potřebujete pomoci s výběrem?", + "ALBUM_LICENSE_NONE": "Žádná", + "ALBUM_RESERVED": "Všechna práva vyhrazena", + "ALBUM_SET_ORDER": "Set Order", + "ALBUM_ORDERING": "Order by", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "O fotografii", + "PHOTO_BASICS": "Základní informace", + "PHOTO_TITLE": "Název", + "PHOTO_NEW_TITLE": "Zadat nový název fotografie:", + "PHOTO_SET_TITLE": "Uložit název", + "PHOTO_UPLOADED": "Odesláno", + "PHOTO_DESCRIPTION": "Popis", + "PHOTO_NEW_DESCRIPTION": "Zadejte nový název pro tuto fotografii:", + "PHOTO_SET_DESCRIPTION": "Uložit popis", + "PHOTO_NEW_LICENSE": "Přidat licenci", + "PHOTO_SET_LICENSE": "Uložit licenci", + "PHOTO_LICENSE": "Licence", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Opakované použití", + "PHOTO_LICENSE_NONE": "Žádná", + "PHOTO_RESERVED": "Všechna práva vyhrazena", + "PHOTO_LATITUDE": "Zeměpisná šířka", + "PHOTO_LONGITUDE": "Zeměpisná délka", + "PHOTO_ALTITUDE": "Nadmořská výška", + "PHOTO_IMGDIRECTION": "Směr", + "PHOTO_LOCATION": "Location", + "PHOTO_IMAGE": "Fotografie", + "PHOTO_VIDEO": "Video", + "PHOTO_SIZE": "Velikost", + "PHOTO_FORMAT": "Formát", + "PHOTO_RESOLUTION": "Rozlišení", + "PHOTO_DURATION": "Trvání", + "PHOTO_FPS": "Frekvence snímků", + "PHOTO_TAGS": "Štítky", + "PHOTO_NOTAGS": "Bez štítků", + "PHOTO_NEW_TAGS": "Zadejte štítky pro tento obrázek. Jednotlivé štítky oddělte čárkou:", + "PHOTOS_NEW_TAGS": "Zadejte štítky pro všechny %d vybrané fotografie. Stávající štítky budou přepsány. Jednotlivé štítky oddělte čárkou:", + "PHOTO_SET_TAGS": "Uložit štítky", + "PHOTO_CAMERA": "Fotoaparát", + "PHOTO_CAPTURED": "Pořízeno", + "PHOTO_MAKE": "Značka", + "PHOTO_TYPE": "Typ\/model", + "PHOTO_LENS": "Objektiv", + "PHOTO_SHUTTER": "Uzávěrka", + "PHOTO_APERTURE": "Clona", + "PHOTO_FOCAL": "Fokus", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Sdílet", + "PHOTO_DELETE": "Odstranit fotografii", + "PHOTO_KEEP": "Ponechat fotografii", + "PHOTO_DELETE_CONFIRMATION": "Opravdu odstranit fotografii „%s“? Tento krok je nevratný!", + "PHOTO_DELETE_ALL": "Opravdu odstranit všechny %d vybrané fotografie? Tento krok je nevratný!", + "PHOTOS_NEW_TITLE": "Zadejte nový název pro všechny %d vybrané fotografie:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Tato fotografie je umístěna ve veřejném albu. Fotografii jako veřejnou nebo soukromou musíte nastavit v albu, v nemž je umístěna.", + "PHOTO_SHOW_ALBUM": "Zobrazit album", + "PHOTO_PUBLIC": "Veřejné", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Originál", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Skrytá", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Stažitelná", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Share button is visible", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Zabezpečená heslem", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "Vlastnosti sdílení fotografie budou změněny takto:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Protože je tato fotografie umístěna ve veřejném albu, zdědí i nastavení tohoto veřejného alba. Aktuální stav viditelnosti je uveden pouze pro informaci.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "Viditelnost této fotografie lze doladit pomocí globálních nastavení. Aktuální stav viditelnosti je uveden pouze pro informaci.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Probíhá příprava", + "ERROR": "Chyba", + "ERROR_TEXT": "Něco není v pořádku. Obnovte stránku a postup zopakujte!", + "ERROR_UNKNOWN": "Neočekávaná chyba. Postup prosím opakujte a ujistěte se o správnosti instalace na serveru. Další informace jsou k dispozici v souboru README.", + "ERROR_MAP_DEACTIVATED": "Funkce Mapy byla v nastavení deaktivována.", + "ERROR_SEARCH_DEACTIVATED": "Funkce hledání byla v nastavení deaktivována.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Opakovat", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Přihlašovací údaje byly aktualizovány.", + "SETTINGS_SUCCESS_SORT": "Stav řazení byl aktulizován.", + "SETTINGS_SUCCESS_DROPBOX": "Dropbox Key byl aktualizován.", + "SETTINGS_SUCCESS_LANG": "Jazyk byl aktualizován", + "SETTINGS_SUCCESS_LAYOUT": "Vzhled byl aktualizován", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "EXIF překryv byl aktulizován", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Veřejné vyhledávání bylo aktulizováno", + "SETTINGS_SUCCESS_LICENSE": "Výchozí licence byla aktualizována", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Nastavení zobrazeni Map bylo aktualizováno", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Nastavení zobrazeni Map pro veřejná alba bylo aktualizováno", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Poskytovatel Map byl aktualizován", + "SETTINGS_SUCCESS_CSS": "CSS aktualizováno", + "SETTINGS_SUCCESS_JS": "JS aktualizováno", + "SETTINGS_SUCCESS_UPDATE": "Nastavení úspešně aktualizováno", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Změna rozšířených nastavení může mít negativní vliv na stabilitu, bezpečnost a rychlost Lychee. Měňte pouze to, co opravdu dobře chápete.", + "SETTINGS_ADVANCED_SAVE": "Uložit změny, rizika jsou mi známa!", + "U2F_NOT_SUPPORTED": "U2F not supported. Sorry.", + "U2F_NOT_SECURE": "Environment not secured. U2F not available.", + "U2F_REGISTER_KEY": "Register new device.", + "U2F_REGISTRATION_SUCCESS": "Registration successful!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentication successful!", + "U2F_CREDENTIALS": "Credentials", + "U2F_CREDENTIALS_DELETED": "Credentials deleted!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Jméno uživatele", + "LOGIN_PASSWORD": "Heslo", + "LOGIN_PASSWORD_CONFIRM": "Zopakujte heslo", + "PASSWORD_TITLE": "Zadejte aktuální heslo:", + "PASSWORD_CURRENT": "Aktuální heslo", + "PASSWORD_TEXT": "Vaše uživatelské jméno a heslo budou změněny následovně:", + "PASSWORD_CHANGE": "Změnit přihlášení", + "EDIT_SHARING_TITLE": "Editace sdílení", + "EDIT_SHARING_TEXT": "Vlastnosti sdílení tohoto alba budou změněny následovně:", + "SHARE_ALBUM_TEXT": "Album bude sdíleno s následujícími parametry:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Řadit alba podle %1$s ve %2$s pořadí.", + "SORT_ALBUM_SELECT_1": "Data vytvoření", + "SORT_ALBUM_SELECT_2": "Názvu", + "SORT_ALBUM_SELECT_3": "Popisu", + "SORT_ALBUM_SELECT_5": "Nejmladšího data snímku", + "SORT_ALBUM_SELECT_6": "Nejstaršího data snímku", + "SORT_PHOTO_BY": "Řadit alba podle %1$s ve %2$s pořadí.", + "SORT_PHOTO_SELECT_1": "Data uložení", + "SORT_PHOTO_SELECT_2": "Data záznamu", + "SORT_PHOTO_SELECT_3": "Názvu", + "SORT_PHOTO_SELECT_4": "Popisu", + "SORT_PHOTO_SELECT_6": "Oblíbenosti", + "SORT_PHOTO_SELECT_7": "Formátu", + "SORT_ASCENDING": "Vzestupném", + "SORT_DESCENDING": "Sestupném", + "SORT_CHANGE": "Změnit řazení", + "DROPBOX_TITLE": "Dropbox - nastavení", + "DROPBOX_TEXT": "Pro uspěšný import fotografií z Dropboxu je řeba platný API klíč, který lze získat na stránkách Dropboxu<\/a>. Vygenerovaný osobní klíč zadejte níže:", + "LANG_TEXT": "Změnit jazyk Lychee na:", + "LANG_TITLE": "Změnit jazyk", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Vlastní CSS:", + "CSS_TITLE": "Změnit CSS", + "JS_TEXT": "Vlastní JS:", + "JS_TITLE": "Změnit JS", + "PUBLIC_SEARCH_TEXT": "Veřejné vyhledávání povoleno:", + "OVERLAY_TYPE": "Data, která budou použita na překryvu:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "EXIF data", + "OVERLAY_DESCRIPTION": "Popis", + "OVERLAY_DATE": "Datum pořízení", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Povolit Mapy (poskytovatel OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Povolit mapy pro veřejná alba (poskytovatel OpenStreetMap):", + "MAP_PROVIDER": "Poskytovatel OpenStreetMap názvů:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (bez HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (bez HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (bez HiDPI)", + "MAP_PROVIDER_RRZE": "Universita v Erlangenu, Německo (pouze HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Včetně fotografií v subalbech:", + "LOCATION_DECODING": "Přeložít GPS data na název místa", + "LOCATION_SHOW": "Zobrazit název místa", + "LOCATION_SHOW_PUBLIC": "Zobrazit název místa v public módu", + "LAYOUT_TYPE": "Vzhled fotografií:", + "LAYOUT_SQUARES": "Čtvercové náhledy", + "LAYOUT_JUSTIFIED": "V poměru stran, zarovnáno", + "LAYOUT_MASONRY": "V poměru stran, masonry", + "LAYOUT_GRID": "V poměru stran, grid", + "LAYOUT_UNJUSTIFIED": "V poměru stran, nezarovnáno", + "SET_LAYOUT": "Změnit vzhled", + "NSFW_VISIBLE_TEXT_1": "Make Sensitive albums visible by default.", + "NSFW_VISIBLE_TEXT_2": "If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Default sensitive album visibility updated with success.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Bez výsledku", + "VIEW_NO_PUBLIC_ALBUMS": "Veřejná alba nejsou k dispozici", + "VIEW_NO_CONFIGURATION": "Žádná konfigurace", + "VIEW_PHOTO_NOT_FOUND": "Fotografie nenalezena", + "NO_TAGS": "Žádné štítky", + "UPLOAD_MANAGE_NEW_PHOTOS": "Nyní můžete spravovat nové nové obrázky.", + "UPLOAD_COMPLETE": "Upload dokončen", + "UPLOAD_COMPLETE_FAILED": "Chyba při uploadu jedné nebo více fotografií.", + "UPLOAD_IMPORTING": "Import", + "UPLOAD_IMPORTING_URL": "URL pro import", + "UPLOAD_UPLOADING": "Probíhá upload", + "UPLOAD_FINISHED": "Dokončeno", + "UPLOAD_PROCESSING": "Zpracovává se", + "UPLOAD_FAILED": "Selhání", + "UPLOAD_FAILED_ERROR": "Upload selhal. Server vrátil chybu!", + "UPLOAD_FAILED_WARNING": "Upload selhal. Server vrátil upozornění!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "Vynecháno", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "Podrobnosti získáte v konzoli svého prohlížeče.", + "UPLOAD_UNKNOWN": "Server vrátil neočkávanou dopověď. Podrobnosti získáte v konzoli svého prohlížeče.", + "UPLOAD_ERROR_UNKNOWN": "Upload selhal. Server vrátil neznámou chybu!", + "UPLOAD_ERROR_POSTSIZE": "Upload failed. The PHP post_max_size may be too small! Otherwise check the FAQ.", + "UPLOAD_ERROR_FILESIZE": "Upload failed. The PHP upload_max_filesize may be too small! Otherwise check the FAQ.", + "UPLOAD_IN_PROGRESS": "Právě probíhá upload na Lychee!", + "UPLOAD_IMPORT_WARN_ERR": "Import byl dokončen s upozorněními nebo chybami. Podrobnosti si prosím prohlédněte v protokolu (Nastavení -> Protokoly).", + "UPLOAD_IMPORT_COMPLETE": "Import dokončen", + "UPLOAD_IMPORT_INSTR": "Zadejte prosím přímý odkaz k fotografii, která má být naimportována:", + "UPLOAD_IMPORT": "Importovat", + "UPLOAD_IMPORT_SERVER": "Import ze serveru", + "UPLOAD_IMPORT_SERVER_FOLD": "Složka je prázdná nebo neobsahuje soubory, které lze zpracovat. Podrobnosti si prosím prohlédněte v protokolu (Nastavení -> Protokoly).", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Import neproběhl, protože složka je prázdná!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Odstranit původní soubory", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Pokud to bude možné, původní soubory budou po importu odstraněny.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "Proces importu alokuje příliš mnoho paměti serveru a může být tedy neočekávaně přerušen.", + "UPLOAD_WARNING": "Upozornění", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "Uvedená cesta není čitelnou složkou!", + "UPLOAD_IMPORT_PATH_RESERVED": "Uvedená cesta je rezervována pro Lychee!", + "UPLOAD_IMPORT_FAILED": "Soubor nelze importovat!", + "UPLOAD_IMPORT_UNSUPPORTED": "Nepodporovaný typ souboru!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Ideální řešení vlastního hostování a správy fotografií", + "ABOUT_DESCRIPTION": "Lychee<\/a> je open-source nástroj na správu fotogragfií na Vašem serveru nebo webu. Instalace je hotova dílem okmažiku. Upload, správa a sdílení fotografií se provádí běžnými aplikacemi. Lychee přináší vše, co je třeba pro bezpečné online uložení Vašich fotografií.", + "FOOTER_COPYRIGHT": "Všechny fotografie na tomto webu jsou ve vlastnictví copyright %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Hostováno na Lychee", + "URL_COPY_TO_CLIPBOARD": "Kopírovat do schránky", + "URL_COPIED_TO_CLIPBOARD": "URL zkopírována do schránky!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Přímý odkaz k souborům:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Střední", + "PHOTO_MEDIUM_HIDPI": "Střední HiDPI", + "PHOTO_SMALL": "Náhled", + "PHOTO_SMALL_HIDPI": "Náhled HiDPI", + "PHOTO_THUMB": "Čtvercový náhled", + "PHOTO_THUMB_HIDPI": "Čtvercový náhled HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Video part of live-photo", + "PHOTO_VIEW": "Zobrazení foto Lychee:", + "PHOTO_EDIT_ROTATECWISE": "Otočit doprava", + "PHOTO_EDIT_ROTATECCWISE": "Otočit doleva", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/de.json b/lang/de.json new file mode 100644 index 00000000000..a3e8830f349 --- /dev/null +++ b/lang/de.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram Landschafts)", + "4by5": "4\/5 (instagram Portrait)", + "2by3": "2\/3 (Portrait)", + "3by2": "3\/2 (Landschafts)", + "1by1": "square", + "1byx9": "16\/9 (Landschafts)" + }, + "lychee": { + "USERNAME": "Benutzername", + "PASSWORD": "Kennwort", + "ENTER": "Eingabe", + "CANCEL": "Abbrechen", + "CONFIRM": "Bestätigen", + "SIGN_IN": "Anmelden", + "CLOSE": "Schließen", + "SETTINGS": "Einstellungen", + "SEARCH": "Suchen …", + "MORE": "Mehr", + "DEFAULT": "Standard", + "GALLERY": "Gallerie", + "USERS": "Benutzer", + "PROFILE": "Profil", + "CREATE": "Erstellen", + "REMOVE": "Entfernen", + "SHARE": "Freigeben", + "U2F": "U2F", + "NOTIFICATIONS": "Benachrichtigungen", + "SHARING": "Freigabe", + "CHANGE_LOGIN": "Anmeldung ändern", + "CHANGE_SORTING": "Sortierung ändern", + "SET_DROPBOX": "Dropbox einrichten", + "ABOUT_LYCHEE": "Über Lychee", + "DIAGNOSTICS": "Diagnose", + "DIAGNOSTICS_GET_SIZE": "Speicherplatz-Nutzung abrufen", + "JOBS": "Job-Verlauf anzeigen", + "LOGS": "Logs anzeigen", + "SIGN_OUT": "Abmelden", + "UPDATE_AVAILABLE": "Update verfügbar!", + "MIGRATION_AVAILABLE": "Migration verfügbar!", + "CHECK_FOR_UPDATE": "auf Updates prüfen", + "DEFAULT_LICENSE": "Standard-Lizenz für neue Uploads:", + "SET_LICENSE": "Lizenz anwenden", + "SET_OVERLAY_TYPE": "Setze Overlay", + "SET_ALBUM_DECORATION": "Albumsdekorationen speichern", + "SET_MAP_PROVIDER": "Speichere Provider für OpenStreetMap Karten", + "FULL_SETTINGS": "Alle Einstellungen", + "UPDATE": "Update", + "RESET": "Zurücksetzen", + "DISABLE_TOKEN_TOOLTIP": "Deaktivieren", + "ENABLE_TOKEN": "API-Schlüssel aktivieren", + "DISABLED_TOKEN_STATUS_MSG": "Deaktiviert", + "TOKEN_BUTTON": "API-Schlüssel ...", + "TOKEN_NOT_AVAILABLE": "Sie haben diesen Schlüssel bereits angesehen.", + "TOKEN_WAIT": "Warten ...", + "SMART_ALBUMS": "Intelligente Alben", + "SHARED_ALBUMS": "Freigegebene Alben", + "ALBUMS": "Alben", + "PHOTOS": "Bilder", + "SEARCH_RESULTS": "Suchergebnisse", + "RENAME": "Umbenennen", + "RENAME_ALL": "Ausgewählte umbenennen", + "MERGE": "Zusammenführen", + "MERGE_ALL": "Ausgewählte zusammenführen", + "MAKE_PUBLIC": "Veröffentlichen", + "SHARE_ALBUM": "Album freigeben", + "SHARE_PHOTO": "Foto freigeben", + "VISIBILITY_ALBUM": "Sichtbarkeit des Albums", + "VISIBILITY_PHOTO": "Sichtbarkeit des Fotos", + "DOWNLOAD_ALBUM": "Album herunterladen", + "ABOUT_ALBUM": "Über dieses Album", + "DELETE_ALBUM": "Album löschen", + "MOVE_ALBUM": "Album verschieben", + "FULLSCREEN_ENTER": "Vollbild", + "FULLSCREEN_EXIT": "Vollbild beenden", + "SHARING_ALBUM_USERS": "Teile dieses Album mit Benutzern", + "WAIT_FETCH_DATA": "Bitte warten Sie, während die Daten abgerufen werden…", + "SHARING_ALBUM_USERS_NO_USERS": "Es sind keine Benutzer vorhanden, mit denen das Album geteilt werden kann", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Wählen Sie die Benutzer aus, mit denen das Album geteilt werden soll", + "DELETE_ALBUM_QUESTION": "Album und Fotos löschen", + "KEEP_ALBUM": "Album behalten", + "DELETE_ALBUM_CONFIRMATION": "Sind Sie sicher, dass Sie das Album „%s“ und alle enthaltenen Fotos löschen wollen? Diese Aktion kann nicht rückgängig gemacht werden!", + "DELETE_TAG_ALBUM_QUESTION": "Album löschen", + "DELETE_TAG_ALBUM_CONFIRMATION": "Sind Sie sicher, dass Sie das Album „%s“ löschen wollen (Fotos darin werden nicht gelöscht)? Diese Aktion kann nicht rückgängig gemacht werden!", + "DELETE_ALBUMS_QUESTION": "Alben und Fotos löschen", + "KEEP_ALBUMS": "Alben behalten", + "DELETE_ALBUMS_CONFIRMATION": "Sind Sie sicher, dass Sie alle %d ausgewählten Alben und die enthaltenen Fotos löschen wollen? Diese Aktion kann nicht rückgängig gemacht werden!", + "DELETE_UNSORTED_CONFIRM": "Sind Sie sicher, dass Sie alle Fotos aus „Unsortiert“ löschen wollen? Diese Aktion kann nicht rückgängig gemacht werden!", + "CLEAR_UNSORTED": "Unsortierte löschen", + "KEEP_UNSORTED": "Unsortierte behalten", + "EDIT_SHARING": "Freigabe bearbeiten", + "MAKE_PRIVATE": "Privat", + "CLOSE_ALBUM": "Album schließen", + "CLOSE_PHOTO": "Foto schließen", + "CLOSE_MAP": "Karte schließen", + "ADD": "Hinzufügen", + "MOVE": "Verschieben", + "MOVE_ALL": "Ausgewählte verschieben", + "DUPLICATE": "Duplizieren", + "DUPLICATE_ALL": "Ausgewählte duplizieren", + "COPY_TO": "Kopieren nach …", + "COPY_ALL_TO": "Ausgewählte kopieren nach …", + "DELETE": "Löschen", + "SAVE": "Speichern", + "DELETE_ALL": "Ausgewählte löschen", + "DOWNLOAD": "Herunterladen", + "DOWNLOAD_ALL": "Ausgewählte herunterladen", + "UPLOAD_PHOTO": "Foto hochladen", + "IMPORT_LINK": "Aus Link importieren", + "IMPORT_DROPBOX": "Aus Dropbox importieren", + "IMPORT_SERVER": "Von Server importieren", + "NEW_ALBUM": "Neues Album", + "NEW_TAG_ALBUM": "Neues Tag-Album", + "UPLOAD_TRACK": "Track hochladen", + "DELETE_TRACK": "Track löschen", + "TITLE_NEW_ALBUM": "Geben Sie einen Titel für das neue Album ein:", + "UNTITLED": "Unbenannt", + "UNSORTED": "Unsortiert", + "STARRED": "Favoriten", + "RECENT": "Zuletzt benutzt", + "PUBLIC": "Öffentlich", + "ON_THIS_DAY": "An diesem Tag", + "NUM_PHOTOS": "Fotos", + "CREATE_ALBUM": "Album erstellen", + "CREATE_TAG_ALBUM": "Neues Tag-Album erstellen", + "STAR_PHOTO": "Foto als Favorit markieren", + "STAR": "Als Favorit markieren", + "UNSTAR": "Als Favorit demarkieren", + "STAR_ALL": "Ausgewählte als Favoriten markieren", + "UNSTAR_ALL": "Ausgewählte als Favoriten demarkieren", + "TAG": "Taggen", + "TAG_ALL": "Ausgewählte taggen", + "UNSTAR_PHOTO": "Foto von Favoriten entfernen", + "SET_COVER": "Als Album-Cover setzen", + "REMOVE_COVER": "Als Album-Cover entfernen", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Original öffnen", + "ABOUT_PHOTO": "Über dieses Foto", + "DISPLAY_FULL_MAP": "Karte", + "DIRECT_LINK": "Direkter Link", + "DIRECT_LINKS": "Direkte Links", + "QR_CODE": "QR-Code", + "ALBUM_ABOUT": "Über", + "ALBUM_BASICS": "Grundlegende Informationen", + "ALBUM_TITLE": "Titel", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Geben Sie einen neuen Titel für dieses Album ein:", + "ALBUMS_NEW_TITLE": "Geben Sie einen Titel für alle %d ausgewählten Alben ein:", + "ALBUM_SET_TITLE": "Titel speichern", + "ALBUM_DESCRIPTION": "Beschreibung", + "ALBUM_SHOW_TAGS": "Angezeigte Tags", + "ALBUM_NEW_DESCRIPTION": "Geben Sie eine neue Beschreibung für dieses Album ein:", + "ALBUM_SET_DESCRIPTION": "Beschreibung speichern", + "ALBUM_NEW_SHOWTAGS": "Gebe Tags der Bilder ein, die in diesem Album sichtbar sein sollen:", + "ALBUM_SET_SHOWTAGS": "Setze Tags zum anschauen", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Erstellt", + "ALBUM_IMAGES": "Bilder", + "ALBUM_VIDEOS": "Videos", + "ALBUM_SUBALBUMS": "Unteralben", + "ALBUM_SHARING": "Teilen", + "ALBUM_SHR_YES": "Ja", + "ALBUM_SHR_NO": "Nein", + "ALBUM_PUBLIC": "Öffentlich", + "ALBUM_PUBLIC_EXPL": "Anonyme Nutzer können, abhängig von den Einstellungen unten, auf dieses Album zugreifen.", + "ALBUM_FULL": "Original", + "ALBUM_FULL_EXPL": "Anonyme Nutzer können Fotos in Originalauflösung betrachten.", + "ALBUM_HIDDEN": "Versteckt", + "ALBUM_HIDDEN_EXPL": "Anonyme Nutzer benötigen einen direkten Link, um auf dieses Album zuzugreifen.", + "ALBUM_MARK_NSFW": "Markiere Album als sensibel", + "ALBUM_UNMARK_NSFW": "Entferne Markierung des Albums als sensibel", + "ALBUM_NSFW": "Sensibel", + "ALBUM_NSFW_EXPL": "Album enthält sensible Inhalte.", + "ALBUM_DOWNLOADABLE": "Zum Herunterladen", + "ALBUM_DOWNLOADABLE_EXPL": "Anonyme Nutzer können dieses Album herunterladen.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Teilen-Button ist sichtbar", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonyme Nutzer können Links zum Teilen in sozialen Medien sehen.", + "ALBUM_PASSWORD": "Kennwort", + "ALBUM_PASSWORD_PROT": "Kennwortgeschützt", + "ALBUM_PASSWORD_PROT_EXPL": "Anonyme Nutzer benötigen ein Passwort, um auf dieses Album zuzugreifen.", + "ALBUM_PASSWORD_REQUIRED": "Dieses Album ist mit einem Kennwort geschützt. Geben Sie unten das Kennwort ein, um das Album anzusehen:", + "ALBUM_MERGE": "Sind Sie sicher, dass Sie das Album „%1$s“ mit dem Album „%2$s“ zusammenführen wollen?", + "ALBUMS_MERGE": "Sind Sie sicher, dass Sie alle ausgewählten Alben mit dem Album „%s“ zusammenführen möchten?", + "MERGE_ALBUM": "Alben zusammenführen", + "DONT_MERGE": "Nicht zusammenführen", + "ALBUM_MOVE": "Sind Sie sicher, dass Sie das Album „%1$s“ nach „%2$s“ verschieben möchten?", + "ALBUMS_MOVE": "Sind Sie sicher, dass Sie die ausgewählten Alben in das Album „%s“ verschieben wollen?", + "MOVE_ALBUMS": "Alben verschieben", + "NOT_MOVE_ALBUMS": "Nicht verschieben", + "ROOT": "Alben", + "ALBUM_REUSE": "Weiterverwendung", + "ALBUM_LICENSE": "Lizenz", + "ALBUM_SET_LICENSE": "Lizenz festlegen", + "ALBUM_LICENSE_HELP": "Benötigen Sie Hilfe bei der Auswahl?", + "ALBUM_LICENSE_NONE": "Keine", + "ALBUM_RESERVED": "Alle Rechte vorbehalten", + "ALBUM_SET_ORDER": "Reihenfolge festlegen", + "ALBUM_ORDERING": "Sortieren nach", + "ALBUM_PHOTO_ORDERING": "Fotos sortieren nach", + "ALBUM_CHILDREN_ORDERING": "Alben sortieren nach", + "ALBUM_OWNER": "Besitzer", + "PHOTO_ABOUT": "Über", + "PHOTO_BASICS": "Grundlegende Informationen", + "PHOTO_TITLE": "Titel", + "PHOTO_NEW_TITLE": "Geben Sie einen neuen Titel für dieses Foto ein:", + "PHOTO_SET_TITLE": "Titel speichern", + "PHOTO_UPLOADED": "Hochgeladen", + "PHOTO_DESCRIPTION": "Beschreibung", + "PHOTO_NEW_DESCRIPTION": "Geben Sie eine neue Beschreibung für dieses Foto ein:", + "PHOTO_SET_DESCRIPTION": "Beschreibung speichern", + "PHOTO_NEW_LICENSE": "Neue Lizenz hinzufügen", + "PHOTO_SET_LICENSE": "Lizenz festlegen", + "PHOTO_LICENSE": "Lizenz", + "PHOTO_LICENSE_HELP": "Benötigen Sie Hilfe beim Auswählen?", + "PHOTO_REUSE": "Weiterverwendung", + "PHOTO_LICENSE_NONE": "Keine", + "PHOTO_RESERVED": "Alle Rechte vorbehalten", + "PHOTO_LATITUDE": "Breite", + "PHOTO_LONGITUDE": "Länge", + "PHOTO_ALTITUDE": "Höhe", + "PHOTO_IMGDIRECTION": "Richtung", + "PHOTO_LOCATION": "Ort", + "PHOTO_IMAGE": "Bild", + "PHOTO_VIDEO": "Video", + "PHOTO_SIZE": "Größe", + "PHOTO_FORMAT": "Format", + "PHOTO_RESOLUTION": "Auflösung", + "PHOTO_DURATION": "Dauer", + "PHOTO_FPS": "Bilder pro Sekunde", + "PHOTO_TAGS": "Tags", + "PHOTO_NOTAGS": "Keine Tags", + "PHOTO_NEW_TAGS": "Geben Sie die Tags für dieses Foto ein. Sie können mehrere Tags hinzufügen, indem Sie sie mit einem Komma trennen:", + "PHOTOS_NEW_TAGS": "Geben Sie die Tags für alle %d ausgewählten Fotos ein. Bestehende Tags werden überschrieben. Sie können mehrere Tags hinzufügen, indem Sie sie mit einem Komma trennen:", + "PHOTO_SET_TAGS": "Tags speichern", + "PHOTO_CAMERA": "Kamera", + "PHOTO_CAPTURED": "Aufgenommen", + "PHOTO_MAKE": "Marke", + "PHOTO_TYPE": "Typ\/Modell", + "PHOTO_LENS": "Objektiv", + "PHOTO_SHUTTER": "Verschlusszeit", + "PHOTO_APERTURE": "Blende", + "PHOTO_FOCAL": "Brennweite", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Teilen", + "PHOTO_DELETE": "Foto löschen", + "PHOTO_KEEP": "Foto behalten", + "PHOTO_DELETE_CONFIRMATION": "Sind Sie sicher, dass Sie das Foto „%s“ löschen wollen? Diese Aktion kann nicht rückgängig gemacht werden!", + "PHOTO_DELETE_ALL": "Sind Sie sicher, dass Sie alle %d ausgewählten Fotos löschen wollen? Diese Aktion kann nicht rückgängig gemacht werden!", + "PHOTOS_NEW_TITLE": "Geben Sie einen Titel für die %d ausgewählten Fotos ein:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Dieses Foto befindet sich in einem öffentlichen Album. Um dieses Foto als privat oder öffentlich zu markieren, bearbeiten Sie die Sichtbarkeit des übergeordneten Albums.", + "PHOTO_SHOW_ALBUM": "Album anzeigen", + "PHOTO_PUBLIC": "Öffentlich", + "PHOTO_PUBLIC_EXPL": "Anonyme Nutzer können, abhängig von den Einstellungen unten, dieses Foto betrachten.", + "PHOTO_FULL": "Original", + "PHOTO_FULL_EXPL": "Anonyme Nutzer können das Foto in Originalauflösung betrachten.", + "PHOTO_HIDDEN": "Versteckt", + "PHOTO_HIDDEN_EXPL": "Anonyme Nutzer benötigen einen direkten Link, um auf das Foto zu betrachten.", + "PHOTO_DOWNLOADABLE": "Herunterladbar", + "PHOTO_DOWNLOADABLE_EXPL": "Anonyme Nutzer können dieses Foto herunterladen.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Teilen-Button ist sichtbar", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonyme Nutzer können Links zum Teilen in sozialen Medien sehen.", + "PHOTO_PASSWORD_PROT": "Passwortgeschützt", + "PHOTO_PASSWORD_PROT_EXPL": "Anonyme Nutzer benötigen ein Passwort, um dieses Foto zu sehen.", + "PHOTO_EDIT_SHARING_TEXT": "Die Einstellungen zum Teilen des Foto werden wie folgt angepasst:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Dieses Foto ist in einem öffentlichen Album und erbt deshalb die Sichtbarkeitseinstellungen des Albums. Die aktuellen Sichtbarkeitseinstellungen werden unten nur zur Info dargestellt.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "Die Sichtbarkeit dieses Fotos kann über die globalen Lychee Einstellungen modifiziert werden. Die aktuellen Sichtbarkeitseinstellungen werden unten nur zur Info dargestellt.", + "PHOTO_NEW_CREATED_AT": "Geben Sie das Upload-Datum für dieses Foto ein. MM\/TT\/JJJJ, hh{mm}", + "PHOTO_SET_CREATED_AT": "Upload-Datum festlegen", + "LOADING": "Laden", + "ERROR": "Fehler", + "ERROR_TEXT": "Hoppla, da ist etwas schiefgegangen. Bitte laden Sie die Seite erneut und probieren Sie es noch einmal!", + "ERROR_UNKNOWN": "Etwas Unerwartetes ist passiert. Bitte probieren Sie es erneut und überprüfen Sie die Installation und Ihren Server. Lesen Sie die README-Datei für mehr Informationen.", + "ERROR_MAP_DEACTIVATED": "Karten sind unter Einstellungen deaktiviert worden.", + "ERROR_SEARCH_DEACTIVATED": "Suchfunktion wurde unter Einstellungen deaktiviert.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Änderung erfolgreich.", + "RETRY": "Noch einmal versuchen", + "OVERRIDE": "Überschreiben", + "TAGS_OVERRIDE_INFO": "Wenn das nicht aktiviert ist, werden die Tags zu den vorhandenen Tags des Fotos hinzugefügt.", + "SETTINGS_SUCCESS_LOGIN": "Benutzerdaten aktualisiert", + "SETTINGS_SUCCESS_SORT": "Sortierreihenfolge aktualisiert", + "SETTINGS_SUCCESS_DROPBOX": "Dropbox-Schlüssel aktualisiert", + "SETTINGS_SUCCESS_LANG": "Sprache aktualisiert", + "SETTINGS_SUCCESS_LAYOUT": "Layout aktualisiert", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "EXIF-Overlay-Einstellungen aktualisiert", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Öffentliche Suche geändert", + "SETTINGS_SUCCESS_LICENSE": "Standard-Lizenz aktualisiert", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Karteneinstellungen erfolgreich aktualisiert", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Karteneinstellungen für öffentlichen Alben erfolgreich aktualisiert", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Provider für Karten erfolgreich aktualisiert", + "SETTINGS_SUCCESS_CSS": "CSS aktualisiert", + "SETTINGS_SUCCESS_JS": "JS aktualisiert", + "SETTINGS_SUCCESS_UPDATE": "Einstellungen erfolgreich aktualisiert", + "SETTINGS_DROPBOX_KEY": "Dropbox-API-Schlüssel", + "SETTINGS_ADVANCED_WARNING_EXPL": "Ändern dieser erweiterten Einstellungen kann sich negativ auf die Stabilität, Sicherheit und Geschwindigkeit dieser Anwendung auswirken. Sie sollten sie nur ändern, wenn Sie genau wissen, was Sie tun.", + "SETTINGS_ADVANCED_SAVE": "Änderungen speichern, ich kenne das Risiko!", + "U2F_NOT_SUPPORTED": "U2F wird nicht unterstützt. Sorry.", + "U2F_NOT_SECURE": "Umgebung ist nicht sicher. U2F ist nicht verfügbar.", + "U2F_REGISTER_KEY": "Neues Gerät registrieren", + "U2F_REGISTRATION_SUCCESS": "Registrierung erfolgreich!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentifizierung erfolgreich!", + "U2F_CREDENTIALS": "Anmeldedaten", + "U2F_CREDENTIALS_DELETED": "Anmeldedaten gelöscht!", + "U2F_LOGIN": "Mit WebAuthn anmelden", + "NEW_PHOTOS_NOTIFICATION": "E-Mails für neue Fotos senden", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "Benachrichtigung für neue Fotos aktualisiert", + "USER_EMAIL_INSTRUCTION": "Geben Sie Ihre E-Mail-Adresse unten ein, um Benachrichtigungen zu aktivieren. Um Benachrichtigungen zu deaktivieren, entfernen Sie die E-Mail-Adresse unten einfach.", + "LOGIN_USERNAME": "Neuer Benutzername", + "LOGIN_PASSWORD": "Neues Kennwort", + "LOGIN_PASSWORD_CONFIRM": "Passwort bestätigen", + "PASSWORD_TITLE": "Geben Sie Ihr bestehendes Kennwort ein:", + "PASSWORD_CURRENT": "Bestehendes Kennwort", + "PASSWORD_TEXT": "Ihr Benutzername und Passwort werden wie folgt geändert:", + "PASSWORD_CHANGE": "Benutzer ändern", + "EDIT_SHARING_TITLE": "Freigabe bearbeiten", + "EDIT_SHARING_TEXT": "Die Freigabeeinstellungen für dieses Album werden wie folgt geändert:", + "SHARE_ALBUM_TEXT": "Dieses Album wird mit folgenden Einstellungen freigegeben:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribut", + "SORT_DIALOG_ORDER_LABEL": "Reihenfolge", + "SORT_ALBUM_BY": "Alben nach %1$s in einer %2$s Reihenfolge sortieren.", + "SORT_ALBUM_SELECT_1": "Erstellungszeitpunkt", + "SORT_ALBUM_SELECT_2": "Titel", + "SORT_ALBUM_SELECT_3": "Beschreibung", + "SORT_ALBUM_SELECT_5": "Neuestes Aufnahmedatum", + "SORT_ALBUM_SELECT_6": "Ältestes Aufnahmedatum", + "SORT_PHOTO_BY": "Fotos nach %1$s in einer %2$s Reihenfolge sortieren.", + "SORT_PHOTO_SELECT_1": "Zeitpunkt des Hochladens", + "SORT_PHOTO_SELECT_2": "Aufnahmedatum", + "SORT_PHOTO_SELECT_3": "Titel", + "SORT_PHOTO_SELECT_4": "Beschreibung", + "SORT_PHOTO_SELECT_6": "Favorit", + "SORT_PHOTO_SELECT_7": "Fotoformat", + "SORT_ASCENDING": "aufsteigenden", + "SORT_DESCENDING": "absteigenden", + "SORT_CHANGE": "Sortierung ändern", + "DROPBOX_TITLE": "Dropbox-Schlüssel festlegen", + "DROPBOX_TEXT": "Um Ihre Fotos von Dropbox zu importieren, brauchen Sie einen gültigen API-Key von der Dropbox-Webseite<\/a>. Erstellen Sie einen persönlichen Schlüssel und geben Sie ihn hier ein:", + "LANG_TEXT": "Sprache für Lychee ändern:", + "LANG_TITLE": "Sprache festlegen", + "SETTING_RECENT_PUBLIC_TEXT": "Intelligentes Album „Zuletzt benutzt“ für anonyme Nutzer aktivieren", + "SETTING_STARRED_PUBLIC_TEXT": "Intelligentes Album „Favoriten“ für anonyme Nutzer aktivieren", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Intelligentes Album „An diesem Tag“ für anonyme Nutzer aktivieren", + "CSS_TEXT": "CSS personalisieren:", + "CSS_TITLE": "CSS ändern", + "JS_TEXT": "JS personalisieren:", + "JS_TITLE": "JS ändern", + "PUBLIC_SEARCH_TEXT": "Öffentliche Suche erlauben", + "OVERLAY_TYPE": "Daten für Foto-Overlay:", + "OVERLAY_NONE": "Kein Overlay", + "OVERLAY_EXIF": "EXIF-Daten des Fotos", + "OVERLAY_DESCRIPTION": "Beschreibung des Fotos", + "OVERLAY_DATE": "Erstellungsdatum des Fotos", + "ALBUM_DECORATION": "Albumsdekorationen:", + "ALBUM_DECORATION_NONE": "Keine", + "ALBUM_DECORATION_ORIGINAL": "Unteralben ohne Anzahl", + "ALBUM_DECORATION_ALBUM": "Anzahl Unteralben", + "ALBUM_DECORATION_PHOTO": "Anzahl Fotos", + "ALBUM_DECORATION_ALL": "Anzahl Unteralben und Fotos", + "ALBUM_DECORATION_ORIENTATION": "Ausrichtung der Albumsdekorationen:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (Fotos, Alben)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (Alben, Fotos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertikal (oben Fotos, Alben)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertikal (oben Alben, Fotos)", + "MAP_DISPLAY_TEXT": "Kartenfunktionalitäten aktivieren (OpenStreetMap)", + "MAP_DISPLAY_PUBLIC_TEXT": "Kartenfunktionalität für öffentliche Alben aktivieren (OpenStreetMap)", + "MAP_PROVIDER": "Provider für OpenStreetMap-Karten:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (kein HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (kein HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (kein HiDPI)", + "MAP_PROVIDER_RRZE": "Universtät Erlangen, Deutschland (nur HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Fotos von Unterordnern für Karten berücksichtigen", + "LOCATION_DECODING": "Ortsnamen mittels GPS-Daten bestimmen", + "LOCATION_SHOW": "Zeige Ortsnamen", + "LOCATION_SHOW_PUBLIC": "Zeige Ortsnamen für öffentliche Alben", + "LAYOUT_TYPE": "Layout des Fotos:", + "LAYOUT_SQUARES": "Quadratische Miniaturansichten", + "LAYOUT_JUSTIFIED": "Seitenverhältnis beibehalten, Blocksatz", + "LAYOUT_MASONRY": "Seitenverhältnis beibehalten, masonry", + "LAYOUT_GRID": "Seitenverhältnis beibehalten, Gitter", + "LAYOUT_UNJUSTIFIED": "Seitenverhältnis beibehalten, Flattersatz", + "SET_LAYOUT": "Ausgerichtetes Layout benutzen:", + "NSFW_VISIBLE_TEXT_1": "Sensible Alben sind standardmäßig auf sichtbar", + "NSFW_VISIBLE_TEXT_2": "Wenn das Album öffentlich ist, kann weiterhin zugegriffen werden. Es wird nur ausgeblendet und kann durch Drücken der Taste H<\/kbd> sichtbar gemacht werden.<\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Standardmäßige Sichtbarkeit wurde erfolgreich geändert.", + "NSFW_BANNER": "

Krititscher Inhalt<\/h1>

Diese Album enthält krititsche Inhalte, die manche Personen anstößig oder verstörend finden könnten.<\/p>

Zur Einwilligung klicken.<\/p>", + "NSFW_HEADER": "Krititscher Inhalt", + "NSFW_EXPLANATION": "Diese Album enthält krititsche Inhalte, die manche Personen anstößig oder verstörend finden könnten.", + "TAP_CONSENT": "Zur Einwilligung klicken.", + "VIEW_NO_RESULT": "Keine Ergebnisse", + "VIEW_NO_PUBLIC_ALBUMS": "Keine öffentlichen Alben", + "VIEW_NO_CONFIGURATION": "Keine Konfiguration", + "VIEW_PHOTO_NOT_FOUND": "Foto nicht gefunden", + "NO_TAGS": "Keine Tags", + "UPLOAD_MANAGE_NEW_PHOTOS": "Sie können jetzt Ihre neuen Fotos verwalten.", + "UPLOAD_COMPLETE": "Hochladen abgeschlossen", + "UPLOAD_COMPLETE_FAILED": "Fehler beim Hochladen eines oder mehrerer Fotos.", + "UPLOAD_IMPORTING": "Importieren", + "UPLOAD_IMPORTING_URL": "URL importieren", + "UPLOAD_UPLOADING": "Hochladen", + "UPLOAD_FINISHED": "Beendet", + "UPLOAD_PROCESSING": "Verarbeiten", + "UPLOAD_FAILED": "Fehlgeschlagen", + "UPLOAD_FAILED_ERROR": "Hochladen fehlgeschlagen. Der Server hat einen Fehler gemeldet!", + "UPLOAD_FAILED_WARNING": "Hochladen fehlgeschlagen. Der Server hat eine Warnung ausgegeben!", + "UPLOAD_CANCELLED": "Abgebrochen", + "UPLOAD_SKIPPED": "Übersprungen", + "UPLOAD_UPDATED": "Upgedatet", + "UPLOAD_GENERAL": "Allgemein", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "Dieses Foto wurde übersprungen, da es bereits in deiner Bibliothek vorhanden ist.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "Dieses Foto wurde übersprungen, da es bereits in deiner Bibliothek vorhanden ist, jedoch wurden die Metadaten upgedatet.", + "UPLOAD_ERROR_CONSOLE": "Bitte schauen Sie in die Konsole Ihres Browsers, um weiter Details zu erfahren.", + "UPLOAD_UNKNOWN": "Der Server hat eine unbekannte Antwort gegeben. Bitte schauen Sie in die Konsole Ihres Browsers, um weiter Details zu erfahren.", + "UPLOAD_ERROR_UNKNOWN": "Hochladen fehlgeschlagen. Der Server hat einen unbekannten Fehler gemeldet!", + "UPLOAD_ERROR_POSTSIZE": "Upload fehlgeschlagen. Das post_max_size_Limit ist zu klein!", + "UPLOAD_ERROR_FILESIZE": "Upload fehlgeschlagen. Das upload_max_filesize-Limit ist zu klein!", + "UPLOAD_IN_PROGRESS": "Lychee ist gerade beim Hochladen!", + "UPLOAD_IMPORT_WARN_ERR": "Der Import ist fertig, hat aber Warnungen oder Fehler zurückgegeben. Schauen Sie bitte ins Protokoll (Einstellungen\/Protokoll ansehen).", + "UPLOAD_IMPORT_COMPLETE": "Import abgeschlossen", + "UPLOAD_IMPORT_INSTR": "Geben Sie bitte den direkten Link ein, um ihn zu importieren:", + "UPLOAD_IMPORT": "Importieren", + "UPLOAD_IMPORT_SERVER": "Importieren von Server", + "UPLOAD_IMPORT_SERVER_FOLD": "Der Ordner ist leer oder enthält keine lesbaren Dateien zum Verarbeiten. Schauen Sie bitte ins Protokoll (Einstellungen\/Protokoll ansehen).", + "UPLOAD_IMPORT_SERVER_INSTR": "Importiert alle Fotos, Ordner und Unterordner in den folgenden absoluten Pfaden (auf dem Server). Mehrere Pfade können mit Leerzeichen getrennt werden; mit \\ können Sie ein Leerzeichen im Pfad verwenden.", + "UPLOAD_ABSOLUTE_PATH": "Absolute Pfade zu Verzeichnissen, mit Leerzeichen getrennt", + "UPLOAD_IMPORT_SERVER_EMPT": "Konnte Import nicht starten, weil der Ordner leer ist.", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Originale löschen", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Die Originaldateien werden nach dem Import gelöscht, falls möglich.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolischer Link", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Importiere Dateien durch symbolische Links zu den Originalen.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Überspringe Duplikate", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Bestehende Medien-Dateien wurden übersprungen.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Synchronisiere Metadaten erneut", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update Metadaten der bestehenden Medien-Dateien.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "Der Importprozess auf dem Server nähert sich dem Speicherlimit und wird eventuell vorzeitig beendet.", + "UPLOAD_WARNING": "Warnung", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "Der angegebene Pfad ist kein lesbares Verzeichnis!", + "UPLOAD_IMPORT_PATH_RESERVED": "Der angegebene Pfad ist ein von Lychee reservierter Pfad!", + "UPLOAD_IMPORT_FAILED": "The Datei konnte nicht importiert werden!", + "UPLOAD_IMPORT_UNSUPPORTED": "Dateityp wird nicht unterstützt!", + "UPLOAD_IMPORT_CANCELLED": "Import abgebrochen", + "ABOUT_SUBTITLE": "Selbst gehostetes Foto-Management, aber richtig!", + "ABOUT_DESCRIPTION": "Lychee<\/a> ist ein freies Foto-Management-Werkzeug, dass auf Ihrem Server oder Webspace läuft. Die Installation ist eine Sache von Sekunden. Hochladen, Organisieren und Teilen von Fotos funktioniert wie in einer nativen Anwendung. Lychee hält alles bereit, was Sie benötigen, und alle Bilder werden sicher abgespeichert.", + "FOOTER_COPYRIGHT": "Alle Bilder auf dieser Website unterliegen dem Urheberrecht von %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Läuft mit Lychee", + "URL_COPY_TO_CLIPBOARD": "In die Zwischenablage kopiert", + "URL_COPIED_TO_CLIPBOARD": "URL in die Zwischenablage kopiert!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Direkte Links zu den Bilddateien:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Mittlere Größe", + "PHOTO_MEDIUM_HIDPI": "Mittlere Größe HiDPI", + "PHOTO_SMALL": "Miniaturansicht", + "PHOTO_SMALL_HIDPI": "Miniaturansicht HiDPI", + "PHOTO_THUMB": "Quadratische Miniaturansicht", + "PHOTO_THUMB_HIDPI": "Quadratische Miniaturansicht HiDPI", + "PHOTO_THUMBNAIL": "Foto-Vorschau", + "PHOTO_LIVE_VIDEO": "Video des Live-Fotos", + "PHOTO_VIEW": "Lychees Foto-Ansicht:", + "PHOTO_EDIT_ROTATECWISE": "Im Uhrzeigersinn drehen", + "PHOTO_EDIT_ROTATECCWISE": "Gegen den Uhrzeigersinn drehen", + "ERROR_GPX": "Fehler beim Laden der GPX-Datei: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Entweder Alben oder Fotos auswählen!", + "ERROR_COULD_NOT_FIND": "Konnte nicht finden, was Sie suchen.", + "ERROR_INVALID_EMAIL": "Ungültige E-Mail-Adresse", + "EMAIL_SUCCESS": "E-Mail-Adresse aktualisiert!", + "ERROR_PHOTO_NOT_FOUND": "Fehler: Foto „%s“ wurde nicht gefunden!", + "ERROR_EMPTY_USERNAME": "Neuer Benutzername kann nicht leer sein.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "Passwörter stimmt nicht überein.", + "ERROR_EMPTY_PASSWORD": "Neues Passwort kann nicht leer sein.", + "ERROR_SELECT_ALBUM": "Wählen Sie ein Album zum Freigeben aus!", + "ERROR_SELECT_USER": "Wählen Sie einen Benutzer aus, mit dem das Album geteilt wird!", + "ERROR_SELECT_SHARING": "Zu entfernende Freigabe auswählen!", + "SHARING_SUCCESS": "Freigabe aktualisiert!", + "SHARING_REMOVED": "Freigabe entfernt!", + "USER_CREATED": "Benutzer erstellt!", + "USER_DELETED": "Benutzer gelöscht!", + "USER_UPDATED": "Benutzer aktualisiert!", + "ENTER_EMAIL": "Geben Sie Ihre E-Mail-Adresse ein:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Fehler: Album-JSON wurde nicht gefunden!", + "ERROR_ALBUM_NOT_FOUND": "Fehler: Album „%s“ wurde nicht gefunden", + "ERROR_DROPBOX_KEY": "Fehler: Dropbox-Schlüssel nicht gesetzt", + "ERROR_SESSION": "Sitzung abgelaufen", + "CAMERA_DATE": "Kameradatum", + "NEW_PASSWORD": "Neues Password", + "ALLOW_UPLOADS": "Hochladen erlauben", + "ALLOW_USER_SELF_EDIT": "Erlaube Selbstverwaltung des Nutzerkontos", + "OSM_CONTRIBUTORS": "OpenStreetMap-Beitragende" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "auf Updates prüfen", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth ist nicht verfügbar.", + "SET_UP_CREDENTIALS": "Richten Sie die Zugangsdaten in Ihrer .env ein", + "SET_UP_OAUTH": "Oauth-Authentifizierung einrichten", + "SET_UP": "%s einrichten", + "TOKEN_REGISTERED": "Token %s registriert.", + "RESET": "zurücksetzen" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/el.json b/lang/el.json new file mode 100644 index 00000000000..dd9becf4adb --- /dev/null +++ b/lang/el.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Óνομα χρήστη", + "PASSWORD": "Κωδικός πρόσβασης", + "ENTER": "Είσοδος", + "CANCEL": "Άκυρο", + "CONFIRM": "Confirm", + "SIGN_IN": "Συνδεθείτε", + "CLOSE": "Κλείσιμο", + "SETTINGS": "Ρυθμίσεις", + "SEARCH": "Αναζήτηση …", + "MORE": "Περισσότερα", + "DEFAULT": "Default", + "GALLERY": "Gallery", + "USERS": "Χρήστες", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Κοινή χρήση", + "CHANGE_LOGIN": "Αλλαγή σύνδεσης", + "CHANGE_SORTING": "Αλλαγή Ταξινόμησης", + "SET_DROPBOX": "Ορίστε λογαριασμό Dropbox", + "ABOUT_LYCHEE": "Περί Lychee", + "DIAGNOSTICS": "Διαγνωστικά", + "DIAGNOSTICS_GET_SIZE": "Request space usage", + "JOBS": "Show job history", + "LOGS": "Εμφάνιση Καταγραφών", + "SIGN_OUT": "Αποσύνδεση", + "UPDATE_AVAILABLE": "Διαθέσιμη Ενημέρωση!", + "MIGRATION_AVAILABLE": "Migration available!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Προεπιλεγμένη άδεια για τις νέες μεταφορτώσεις:", + "SET_LICENSE": "Ορισμός Άδειας", + "SET_OVERLAY_TYPE": "Ορισμός Τύπου Overlay", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Set OpenStreetMap tiles provider", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Έξυπνα λευκώματα", + "SHARED_ALBUMS": "Κοινόχρηστα λευκώματα", + "ALBUMS": "Λευκώματα", + "PHOTOS": "Εικόνες", + "SEARCH_RESULTS": "Search results", + "RENAME": "Μετονομασία", + "RENAME_ALL": "Μετονομασία Επιλεγμένων", + "MERGE": "Συγχώνευση", + "MERGE_ALL": "Συγχώνευση Επιλεγμένων", + "MAKE_PUBLIC": "Κάντε το Δημόσιο", + "SHARE_ALBUM": "Κοινή χρήση Λευκώματος", + "SHARE_PHOTO": "Κοινή χρήση Φωτογραφίας", + "VISIBILITY_ALBUM": "Ορατότητα Λευκώματος", + "VISIBILITY_PHOTO": "Ορατότητα Φωτογραφίας", + "DOWNLOAD_ALBUM": "Λήψη Λευκώματος", + "ABOUT_ALBUM": "Πληροφορίες Λευκώματος", + "DELETE_ALBUM": "Διαγραφή Λευκώματος", + "MOVE_ALBUM": "Μετακίνηση Λευκώματος", + "FULLSCREEN_ENTER": "Εισέλθετε σε λειτουργία Πλήρης Οθόνης", + "FULLSCREEN_EXIT": "Εξέλθετε από λειτουργία Πλήρης Οθόνης", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "Διαγραφή Λευκώματος και Φωτογραφιών", + "KEEP_ALBUM": "Διατήρηση Λευκώματος", + "DELETE_ALBUM_CONFIRMATION": "Είστε σίγουρη\/ος πως θέλετε να διαγράψετε αυτό το λεύκωμα «%s» και όλες τις φωτογραφίες που περιέχει; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album «%s» (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Διαγραφή Λευκωμάτων και Φωτογραφιών", + "KEEP_ALBUMS": "Διατήρηση Λευκωμάτων", + "DELETE_ALBUMS_CONFIRMATION": "Είστε σίγουρη\/ος πως θέλετε να διαγράψετε όλα %d τα επιλεγμένα λευκώματα και όλες τις φωτογραφίες που περιέχουν; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί!", + "DELETE_UNSORTED_CONFIRM": "Είστε σίγουρη\/ος πως θέλετε να διαγράψετε όλες τις «Μη Ταξινομημένες» φωτογραφίες? Αυτή η ενέργεια δεν μπορεί να αναιρεθεί!", + "CLEAR_UNSORTED": "Καθαρισμός των μη ταξινομημένων φωτογραφιών", + "KEEP_UNSORTED": "Διατήρηση των Μη Ταξινομημένων", + "EDIT_SHARING": "Επεξεργασία Κοινής Χρήσης", + "MAKE_PRIVATE": "Κάντε το Ιδιωτικό", + "CLOSE_ALBUM": "Κλείσιμο Λευκώματος", + "CLOSE_PHOTO": "Κλείσιμο Φωτογραφίας", + "CLOSE_MAP": "Close Map", + "ADD": "Προσθήκη", + "MOVE": "Μετακίνηση", + "MOVE_ALL": "Μετακίνηση Επιλεγμένων", + "DUPLICATE": "Κλώνοποίηση", + "DUPLICATE_ALL": "Κλώνοποίηση Επιλεγμένων", + "COPY_TO": "Αντιγραφή σε …", + "COPY_ALL_TO": "Αντιγραφή Επιλεγμένων σε …", + "DELETE": "Διαγραφή", + "SAVE": "Save", + "DELETE_ALL": "Διαγραφή Επιλεγμένων", + "DOWNLOAD": "Λήψη", + "DOWNLOAD_ALL": "Λήψη Επιλεγμένων", + "UPLOAD_PHOTO": "Μεταφόρτωση Φωτογραφίας", + "IMPORT_LINK": "Εισαγωγή από Σύνδεσμο", + "IMPORT_DROPBOX": "Εισαγωγή από Dropbox", + "IMPORT_SERVER": "Εισαγωγή από Εξυπηρετητή", + "NEW_ALBUM": "Νέο Λεύκωμα", + "NEW_TAG_ALBUM": "New Tag Album", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Εισάγετε έναν τίτλο για το νέο λεύκωμα:", + "UNTITLED": "Χωρίς Τίτλο", + "UNSORTED": "Μη Ταξινομημένα", + "STARRED": "Με Αστέρι", + "RECENT": "Πρόσφατα", + "PUBLIC": "Δημόσια", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "Φωτογραφίες", + "CREATE_ALBUM": "Δημιουργία Λευκώματος", + "CREATE_TAG_ALBUM": "Create Tag Album", + "STAR_PHOTO": "Βάλτε Αστέρι στη Φωτογραφία", + "STAR": "Βάλτε Αστέρι", + "UNSTAR": "Unstar", + "STAR_ALL": "Βάλτε Αστέρι στα επιλεγμένα", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "Ετικέτες", + "TAG_ALL": "Ετικέτες στα επιλεγμένα", + "UNSTAR_PHOTO": "Αφαιρέστε Αστέρια από τη Φωτογραφία", + "SET_COVER": "Set Album Cover", + "REMOVE_COVER": "Remove Album Cover", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Πρωτότυπη Φωτογραφία", + "ABOUT_PHOTO": "Πληροφορίες Φωτογραφίας", + "DISPLAY_FULL_MAP": "Map", + "DIRECT_LINK": "Απευθείας Σύνδεσμος", + "DIRECT_LINKS": "Απευθείας Σύνδεσμοι", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "Περί", + "ALBUM_BASICS": "Βασικές Πληροφορίες", + "ALBUM_TITLE": "Τίτλος", + "ALBUM_COPYRIGHT": "Πνευματική ιδιοκτησία", + "ALBUM_SET_COPYRIGHT": "Δήλωσε πνευματική ιδιοκτησία", + "ALBUM_NEW_TITLE": "Εισάγετε έναν νέο τίτλο για αυτό το Λεύκωμα:", + "ALBUMS_NEW_TITLE": "Εισάγετε νέο τίτλο για όλα %d τα επιλεγμένα λευκώματα:", + "ALBUM_SET_TITLE": "Ορίστε Τίτλο", + "ALBUM_DESCRIPTION": "Περιγραφή", + "ALBUM_SHOW_TAGS": "Tags to show", + "ALBUM_NEW_DESCRIPTION": "Εισάγετε μία νέα περιγραφή για αυτό το λεύκωμα:", + "ALBUM_SET_DESCRIPTION": "Ορίστε Περιγραφή", + "ALBUM_NEW_SHOWTAGS": "Enter tags of photos that will be visible in this album:", + "ALBUM_SET_SHOWTAGS": "Set tags to show", + "ALBUM_ALBUM": "Λεύκωμα", + "ALBUM_CREATED": "Δημιουργήθηκε", + "ALBUM_IMAGES": "Εικόνες", + "ALBUM_VIDEOS": "Βίντεο", + "ALBUM_SUBALBUMS": "Υπο-λευκώματα", + "ALBUM_SHARING": "Κοινή Χρήση", + "ALBUM_SHR_YES": "ΝΑΙ", + "ALBUM_SHR_NO": "Όχι", + "ALBUM_PUBLIC": "Δημόσιο", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Πρωτότυπο", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Κρυφό", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Mark album as sensitive", + "ALBUM_UNMARK_NSFW": "Unmark album as sensitive", + "ALBUM_NSFW": "Sensitive", + "ALBUM_NSFW_EXPL": "Album is marked to contain sensitive content.", + "ALBUM_DOWNLOADABLE": "Δυνατότητα Λήψης", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Share button is visible", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "ALBUM_PASSWORD": "Κωδικός Πρόσβασης", + "ALBUM_PASSWORD_PROT": "Προστατεύεται με κωδικό πρόσβασης", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Αυτό το λεύκωμα προστατεύεται με κωδικό πρόσβασης. Εισάγετε τον κωδικό πρόσβασης παρακάτω για να δείτε τις φωτογραφίες αυτού του λευκώματος:", + "ALBUM_MERGE": "Είστε σίγουρη\/ος πως θέλετε να συγχωνεύσετε αυτό το λεύκωμα «%1$s» σε αυτό το λεύκωμα «%2$s»?", + "ALBUMS_MERGE": "Είστε σίγουρη\/ος πως θέλετε να συγχωνεύσετε όλα τα επιλεγμένα λευκώματα «%s»?", + "MERGE_ALBUM": "Συγχώνευση Λευκωμάτων", + "DONT_MERGE": "Να μη γίνει συγχώνευση", + "ALBUM_MOVE": "Είστε σίγουρη\/ος πως θέλετε να μετακινήσετε το λεύκωμα «%1$s» σε αυτό το λεύκωμα «%2$s»?", + "ALBUMS_MOVE": "Είστε σίγουρη\/ος πως θέλετε να μετακινήσετε όλα τα επιλεγμένα λευκώματα σε αυτό το λεύκωμα «%s»?", + "MOVE_ALBUMS": "Μετακίνηση Λευκωμάτων", + "NOT_MOVE_ALBUMS": "Να μη γίνει μετακίνηση", + "ROOT": "Λευκώματα", + "ALBUM_REUSE": "Επαναχρησιμοποίηση", + "ALBUM_LICENSE": "Άδεια", + "ALBUM_SET_LICENSE": "Ορισμός Άδειας", + "ALBUM_LICENSE_HELP": "Χρειάζεστε βοήθεια για την επιλογή άδειας;", + "ALBUM_LICENSE_NONE": "Καμία", + "ALBUM_RESERVED": "Με επιφύλαξη παντός δικαιώματος", + "ALBUM_SET_ORDER": "Set Order", + "ALBUM_ORDERING": "Order by", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "Περί", + "PHOTO_BASICS": "Βασικές Πληροφορίες", + "PHOTO_TITLE": "Τίτλος", + "PHOTO_NEW_TITLE": "Εισάγετε έναν νέο τίτλο για αυτή τη φωτογραφία:", + "PHOTO_SET_TITLE": "Ορισμός Τίτλου", + "PHOTO_UPLOADED": "Μεταφορτώθηκε", + "PHOTO_DESCRIPTION": "Περιγραφή", + "PHOTO_NEW_DESCRIPTION": "Εισάγετε μία νέα περιγραφή για αυτή τη φωτογραφία:", + "PHOTO_SET_DESCRIPTION": "Ορισμός Περιγραφής", + "PHOTO_NEW_LICENSE": "Προσθήκη Άδειας", + "PHOTO_SET_LICENSE": "Ορισμός Άδειας", + "PHOTO_LICENSE": "Άδεια", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Επαναχρησιμοποίηση", + "PHOTO_LICENSE_NONE": "Καμία", + "PHOTO_RESERVED": "Με επιφύλαξη παντός δικαιώματος", + "PHOTO_LATITUDE": "Γεωγραφικό πλάτος", + "PHOTO_LONGITUDE": "Γεωγραφικό μήκος", + "PHOTO_ALTITUDE": "Υψόμετρο", + "PHOTO_IMGDIRECTION": "Κατεύθυνση", + "PHOTO_LOCATION": "Location", + "PHOTO_IMAGE": "Εικόνα", + "PHOTO_VIDEO": "Video", + "PHOTO_SIZE": "Μέγεθος", + "PHOTO_FORMAT": "Μορφή", + "PHOTO_RESOLUTION": "Ανάλυση", + "PHOTO_DURATION": "Duration", + "PHOTO_FPS": "Ρυθμός καρέ", + "PHOTO_TAGS": "Ετικέτες", + "PHOTO_NOTAGS": "Χωρίς Ετικέτες", + "PHOTO_NEW_TAGS": "Εισάγετε τις ετικέτες σας για αυτή τη φωτογραφία. Μπορείτε να προσθέσετε πολλαπλές ετικέτες χωρίζοντάς ’τες με ένα κόμμα:", + "PHOTOS_NEW_TAGS": "Εισάγετε τις ετικέτες σας για όλες %d τις επιλεγμένες φωγογραφίες. Υφιστάμενες ετικέτες θα αντικατασταθούν. Μπορείτε να προσθέσετε πολλαπλές ετικέτες χωρίζοντάς ’τες με ένα κόμμα:", + "PHOTO_SET_TAGS": "Ορισμός Ετικετών", + "PHOTO_CAMERA": "Κάμερα", + "PHOTO_CAPTURED": "Φωτογραφήθηκε", + "PHOTO_MAKE": "Έτος Κατασκευής", + "PHOTO_TYPE": "Τύπος\/Μοντέλο", + "PHOTO_LENS": "Lens", + "PHOTO_SHUTTER": "Ταχύτητα Κλείστρου", + "PHOTO_APERTURE": "Διάφραγμα", + "PHOTO_FOCAL": "Εστιακό μήκος", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Κοινή Χρήση", + "PHOTO_DELETE": "Διαγραφή Φωτογραφίας", + "PHOTO_KEEP": "Να μη γίνει διαγραφή", + "PHOTO_DELETE_CONFIRMATION": "Είστε σίγουρη\/ος πως θέλετε να διαγράψετε αυτή τη φωτογραφία «%s»? Αυτή η ενέργεια δεν μπορεί να αναιρεθεί!", + "PHOTO_DELETE_ALL": "Είστε σίγουρη\/ος πως θέλετε να διαγράψετε όλες %d τις επιλεγμένες φωτογραφίες; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί!", + "PHOTOS_NEW_TITLE": "Εισάγετε νέο τίτλο για όλες %d τις επιλεγμένες φωτογραφίες:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Αυτή η φωτογραφία βρίσκεται σε ένα δημόσιο λεύκωμα. Για να κάνετε αυτή τη φωτογραφία ιδιωτική ή δημόσια, επεξεργαστείτε τις ρυθμίσεις ορατότητας του συσχετιζόμενου Λευκώματος.", + "PHOTO_SHOW_ALBUM": "Εμφάνιση Λευκώματος", + "PHOTO_PUBLIC": "Δημόσια", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Πρωτότυπη", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Hidden", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Δυνατότητα Λήψης", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Share button is visible", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Προστατεύεται με κωδικό πρόσβασης", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "Οι ιδιότητες κοινής χρήσης αυτής της φωτογραφίας θα αλλάξουν στις ακόλουθες:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Επειδή αυτή η φωτογραφία βρίσκεται σε ένα δημόσιο λεύκωμα, κληρονομεί τις ρυθμίσεις ορατότητας του λευκώματος στο οποίο ανήκει. Η τρέχουσα ορατότητά της φαίνεται παρακάτω για ενημερωτικούς λόγους μόνο.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "Η ορατότητα αυτής της φωτογραφίας μπορεί να ρυθμιστεί με μεγαλύτερη λεπτομέρεια χρησιμοποιώντας τις γενικές ρυθμίσεις του Lychee. Η τρέχουσα ορατότητά της φαίνεται παρακάτω για ενημερωτικούς λόγους μόνο.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Φορτώνει", + "ERROR": "Σφάλμα", + "ERROR_TEXT": "Ουπς, φαίνεται πως κάτι πήγε στραβά. Παρακαλούμε κάντε ανανέωση της σελίδας και προσπαθήστε ξανά!", + "ERROR_UNKNOWN": "Κάτι απρόσμενο συνέβη. Παρακαλούμε προσπαθείστε ξανά και ελέγξτε την εγκατάστασή σας και τον εξυπηρετητή. Ρίξτε μια ματιά στο αρχείο readme για περισσότερες πληροφορίες.", + "ERROR_MAP_DEACTIVATED": "Map functionality has been deactivated under settings.", + "ERROR_SEARCH_DEACTIVATED": "Search functionality has been deactivated under settings.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Προσπάθεια ξανά", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Τα στοιχεία εισόδου ενημερώθηκαν.", + "SETTINGS_SUCCESS_SORT": "Η Ταξινόμηση ενημερώθηκε.", + "SETTINGS_SUCCESS_DROPBOX": "Το κλειδί για το Dropbox ενημερώθηκε.", + "SETTINGS_SUCCESS_LANG": "Η γλώσσα ενημερώθηκε", + "SETTINGS_SUCCESS_LAYOUT": "Η διάταξη ενημερώθηκε", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "Οι ρυθμίσεις επιφάνειας EXIF ενημερώθηκαν", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Η δημόσια αναζήτηση ενημερώθηκε", + "SETTINGS_SUCCESS_LICENSE": "Η προεπιλεγμένη άδεια ενημερώθηκε", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Οι ρυθμίσεις εμφάνισης χάρτη ενημερώθηκαν", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Map display settings for public albums updated", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Map provider settings updated", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F not supported. Sorry.", + "U2F_NOT_SECURE": "Environment not secured. U2F not available.", + "U2F_REGISTER_KEY": "Register new device.", + "U2F_REGISTRATION_SUCCESS": "Registration successful!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentication successful!", + "U2F_CREDENTIALS": "Credentials", + "U2F_CREDENTIALS_DELETED": "Credentials deleted!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Νέο όνομα χρήστη", + "LOGIN_PASSWORD": "Νέος κωδικός πρόσβασης", + "LOGIN_PASSWORD_CONFIRM": "Επιβεβαίωση κωδικού πρόσβασης", + "PASSWORD_TITLE": "Εισάγετε τον τρέχον κωδικό πρόσβασης:", + "PASSWORD_CURRENT": "Τρέχον κωδικός πρόσβασης", + "PASSWORD_TEXT": "Το όνομα χρήστη και ο κωδικός πρόσβασής σας θα αλλάξουν στα παρακάτω:", + "PASSWORD_CHANGE": "Αλλαγή στοιχείων εισόδου", + "EDIT_SHARING_TITLE": "Επεξεργασία κοινής χρήσης", + "EDIT_SHARING_TEXT": "Οι ιδιότητες κοινής χρήσης αυτού του λευκώματος θα αλλάξουν στις παρακάτω:", + "SHARE_ALBUM_TEXT": "Αυτό το λεύκωμα θα κοινοποιείται με τις παρακάτω ιδιότητες:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Ταξινόμηση λευκωμάτων κατά %1$s με %2$s σειρά.", + "SORT_ALBUM_SELECT_1": "Ημερομηνία Δημιουργίας", + "SORT_ALBUM_SELECT_2": "Τίτλος", + "SORT_ALBUM_SELECT_3": "Περιγραφή", + "SORT_ALBUM_SELECT_5": "Νεότερη Ημερομηνία Λήψης", + "SORT_ALBUM_SELECT_6": "Παλαιότερη Ημερομηνία Λήψης", + "SORT_PHOTO_BY": "Ταξινόμηση Φωτογραφιών κατά %1$s με %2$s σειρά.", + "SORT_PHOTO_SELECT_1": "Ημερομηνία Μεταφόρτωσης", + "SORT_PHOTO_SELECT_2": "Ημερομηνία Λήψης", + "SORT_PHOTO_SELECT_3": "Τίτλος", + "SORT_PHOTO_SELECT_4": "Περιγραφή", + "SORT_PHOTO_SELECT_6": "Αστέρια", + "SORT_PHOTO_SELECT_7": "Μορφή Φωτογραφίας", + "SORT_ASCENDING": "Αύξουσα", + "SORT_DESCENDING": "Φθίνουσα", + "SORT_CHANGE": "Αλλαγή Ταξινόμησης", + "DROPBOX_TITLE": "Ορισμός Κλειδιού Dropbox", + "DROPBOX_TEXT": "Για να μπορέσουμε να εισάγουμε φωτογραφίες από το δικό σας Dropbox, θα χρειαστείτε ένα έγκυρο κλειδί drop-ins app από την ιστοσελίδα του Dropbox<\/a>. Παράγετε ένα προσωπικό κλειδί και εισάγετέ το παρακάτω:", + "LANG_TEXT": "Αλλαγή γλώσσας του Lychee για:", + "LANG_TITLE": "Αλλαγή Γλώσσας", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Να επιτρέπεται η δημόσια αναζήτηση:", + "OVERLAY_TYPE": "Δεδομένα που θα χρησιμοποιηθούν στο overlay εικόνας:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "EXIF δεδομένα φωτογραφίας", + "OVERLAY_DESCRIPTION": "Περιγραφή φωτογραφίας", + "OVERLAY_DATE": "Ημερομηνία λήψης της φωτογραφίας", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Εμφάνιση συντεταγμένων στον χάρτη (OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Enable maps for public albums (provided by OpenStreetMap):", + "MAP_PROVIDER": "Provider of OpenStreetMap tiles:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (no HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (no HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (no HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (only HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Include photos of subalbums on map:", + "LOCATION_DECODING": "Decode GPS data into location name", + "LOCATION_SHOW": "Show location name", + "LOCATION_SHOW_PUBLIC": "Show location name for public mode", + "LAYOUT_TYPE": "Διάταξη φωτογραφιών:", + "LAYOUT_SQUARES": "Τετράγωνες μικρογραφίες", + "LAYOUT_JUSTIFIED": "Με ίσες αναλογίες", + "LAYOUT_MASONRY": "Με ίσες masonry", + "LAYOUT_GRID": "Με ίσες grid", + "LAYOUT_UNJUSTIFIED": "Με άνισες αναλογίες", + "SET_LAYOUT": "Αλλαγή διάταξης", + "NSFW_VISIBLE_TEXT_1": "Make Sensitive albums visible by default.", + "NSFW_VISIBLE_TEXT_2": "If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Default sensitive album visibility updated with success.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Κανένα αποτέλεσμα", + "VIEW_NO_PUBLIC_ALBUMS": "Κανένα δημόσιο λεύκωμα", + "VIEW_NO_CONFIGURATION": "Καμία ρύθμιση", + "VIEW_PHOTO_NOT_FOUND": "Η φωτογραφία δεν βρέθηκε", + "NO_TAGS": "Καμία ετικέτα", + "UPLOAD_MANAGE_NEW_PHOTOS": "Μπορείτε τώρα να διαχειριστείτε τις νέες φωτογραφίες σας.", + "UPLOAD_COMPLETE": "Η μεταφόρτωση ολοκληρώθηκε", + "UPLOAD_COMPLETE_FAILED": "Αποτυχία μεταφόρτωσης μιας ή περισσότερων φωτογραφιών.", + "UPLOAD_IMPORTING": "Γίνεται εισαγωγή", + "UPLOAD_IMPORTING_URL": "Εισαγωγή URL", + "UPLOAD_UPLOADING": "Γίνεται μεταφόρτωση", + "UPLOAD_FINISHED": "Ολοκληρώθηκε", + "UPLOAD_PROCESSING": "Γίνεται επεξεργασία", + "UPLOAD_FAILED": "Απέτυχε", + "UPLOAD_FAILED_ERROR": "Η μεταφόρτωση απέτυχε. Ο εξυπηρετητής επέστρεψε ένα σφάλμα!", + "UPLOAD_FAILED_WARNING": "Η μεταφόρτωση απέτυχε. Ο εξυπηρετητής επέστρεψε μία προειδοποίηση!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "Παραλείφθηκε", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "Παρακαλούμε ρίξτε μια ματιά στην κονσόλα του περιηγητή σας για περισσότερες λεπτομέρειες.", + "UPLOAD_UNKNOWN": "Ο εξυπηρετητής επέστρεψε μία άγνωστη απόκριση. Παρακαλούμε ρίξτε μια ματιά στην κονσόλα του περιηγητή σας για περισσότερες λεπτομέρειες.", + "UPLOAD_ERROR_UNKNOWN": "Η μεταφόρτωση απέτυχε. Ο εξυπηρετητής επέστρεψε ένα άγνωστο σφάλμα!", + "UPLOAD_ERROR_POSTSIZE": "Upload failed. The PHP post_max_size may be too small! Otherwise check the FAQ.", + "UPLOAD_ERROR_FILESIZE": "Upload failed. The PHP upload_max_filesize may be too small! Otherwise check the FAQ.", + "UPLOAD_IN_PROGRESS": "Το Lychee αυτή τη στιγμή μεταφορτώνει!", + "UPLOAD_IMPORT_WARN_ERR": "Η εισαγωγή ολοκληρώθηκε, αλλά επέστρεψε προειδοποιήσεις ή σφάλματα. Παρακαλούμε ρίξτε μια ματία στις καταγραφές (Ρυθμίσεις -> Εμφάνιση Καταγραφών) για περισσότερες λεπτομέρειες.", + "UPLOAD_IMPORT_COMPLETE": "Η εισαγωγή ολοκληρώθηκε", + "UPLOAD_IMPORT_INSTR": "Παρακαλούμε εισάγετε τον απευθείας σύνδεσμο μιας φωτογραφίας για να την εισάγετε:", + "UPLOAD_IMPORT": "Εισαγωγή", + "UPLOAD_IMPORT_SERVER": "Γίνεται εισαγωγή από εξυπηρετητή", + "UPLOAD_IMPORT_SERVER_FOLD": "Ο φάκελος είναι άδειος ή μη αναγνώσιμα αρχεία προς επεξεργασία. Παρακαλούμε ρίξτε μια ματία στις καταγραφές (Ρυθμίσεις -> Εμφάνιση Καταγραφών) για περισσότερες λεπτομέρειες.", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Δεν ήταν δυνατό να ξεκινήσει η διαδικασία εισαγωγής, διότι ο κατάλογος ήταν άδειος!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Διαγραφή πρωτότυπων", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Αν είναι εφικτό τα πρωτότυπα αρχεία θα διαγραφούν αφού ολοκληρωθεί η εισαγωγή τους.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "Η διεργασία εισαγωγής στον εξυπηρετητή πλησιάζει τα όρια μνήμης και μπορεί να τερματιστεί πρόωρα.", + "UPLOAD_WARNING": "Προειδοποίηση", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "Η δοθείσα διαδρομή δεν είναι ένας αναγνώσιμος κατάλογος!", + "UPLOAD_IMPORT_PATH_RESERVED": "Η δοθείσα διαδρομή χρησιμοποιείται από το Lychee!", + "UPLOAD_IMPORT_FAILED": "Δεν ήταν δυνατή η εισαγωγή του αρχείου!", + "UPLOAD_IMPORT_UNSUPPORTED": "Μη υποστηριζόμενος τύπος αρχείου!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Αυτό-φιλοξενούμενη διαχείριση φωτογραφιών καμωμένη σωστά", + "ABOUT_DESCRIPTION": "Lychee<\/a> είναι ένα δωρεάν εργαλείο διαχείρισης φωτογραφιών, το οποίο \"τρέχει\" στον δικό σας εξυπηρετητή ή δικτυακό-χώρο. Εγκαθίσταται σε μερικά δευτερόλεπτα. Μεταφορτώστε, διαχειριστείτε και κοινοποιήστε φωτογραφίες σαν από εγκατεστημένη εφαρμογή. Το Lychee παρέχεται με όλες τις λειτουργίες που χρειάζεστε και όλες οι φωτογραφίες σας είναι αποθηκευμένες με ασφάλεια.", + "FOOTER_COPYRIGHT": "Όλες οι εικόνες σε αυτή την ιστοσελίδα υπόκεινται σε πνευματικά δικαιώματα από %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Φιλοξενείται από το Lychee", + "URL_COPY_TO_CLIPBOARD": "Αντιγραφή στο πρόχειρο", + "URL_COPIED_TO_CLIPBOARD": "Η διεύθυνση URL αντιγράφηκε στο πρόχειρο!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Απευθείας σύνδεσμοι στα αρχεία εικόνων:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Μέτρια", + "PHOTO_MEDIUM_HIDPI": "Μέτρια HiDPI", + "PHOTO_SMALL": "Μικρογραφία", + "PHOTO_SMALL_HIDPI": "Μικρογραφία HiDPI", + "PHOTO_THUMB": "Τετράγωνη Μικρογραφία", + "PHOTO_THUMB_HIDPI": "Τετράγωνη Μικρογραφία HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Video part of live-photo", + "PHOTO_VIEW": "Lychee Προβολή Φωτογραφιών:", + "PHOTO_EDIT_ROTATECWISE": "Rotate clockwise", + "PHOTO_EDIT_ROTATECCWISE": "Rotate counter-clockwise", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/en.json b/lang/en.json new file mode 100644 index 00000000000..24770982d26 --- /dev/null +++ b/lang/en.json @@ -0,0 +1,665 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Username", + "PASSWORD": "Password", + "ENTER": "Enter", + "CANCEL": "Cancel", + "CONFIRM": "Confirm", + "SIGN_IN": "Sign In", + "CLOSE": "Close", + "SETTINGS": "Settings", + "SEARCH": "Search …", + "MORE": "More", + "DEFAULT": "Default", + "GALLERY": "Gallery", + "USERS": "Users", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Sharing", + "CHANGE_LOGIN": "Change Login", + "CHANGE_SORTING": "Change Sorting", + "SET_DROPBOX": "Set Dropbox", + "ABOUT_LYCHEE": "About Lychee", + "DIAGNOSTICS": "Diagnostics", + "DIAGNOSTICS_GET_SIZE": "Request space usage", + "JOBS": "Show job history", + "LOGS": "Show Logs", + "SIGN_OUT": "Sign Out", + "UPDATE_AVAILABLE": "Update available!", + "MIGRATION_AVAILABLE": "Migration available!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Default license for new uploads:", + "SET_LICENSE": "Set License", + "SET_OVERLAY_TYPE": "Set Overlay", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Set OpenStreetMap tiles provider", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Smart albums", + "SHARED_ALBUMS": "Shared albums", + "ALBUMS": "Albums", + "PHOTOS": "Pictures", + "SEARCH_RESULTS": "Search results", + "RENAME": "Rename", + "RENAME_ALL": "Rename Selected", + "MERGE": "Merge", + "MERGE_ALL": "Merge Selected", + "MAKE_PUBLIC": "Make Public", + "SHARE_ALBUM": "Share Album", + "SHARE_PHOTO": "Share Photo", + "VISIBILITY_ALBUM": "Album Visibility", + "VISIBILITY_PHOTO": "Photo Visibility", + "DOWNLOAD_ALBUM": "Download Album", + "ABOUT_ALBUM": "About Album", + "DELETE_ALBUM": "Delete Album", + "MOVE_ALBUM": "Move Album", + "FULLSCREEN_ENTER": "Enter Fullscreen", + "FULLSCREEN_EXIT": "Exit Fullscreen", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "Delete Album and Photos", + "KEEP_ALBUM": "Keep Album", + "DELETE_ALBUM_CONFIRMATION": "Are you sure you want to delete the album “%s” and all of the photos it contains? This action can’t be undone!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album “%s” (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Delete Albums and Photos", + "KEEP_ALBUMS": "Keep Albums", + "DELETE_ALBUMS_CONFIRMATION": "Are you sure you want to delete all %d selected albums and all of the photos they contain? This action can’t be undone!", + "DELETE_UNSORTED_CONFIRM": "Are you sure you want to delete all photos from “Unsorted”? This action can’t be undone!", + "CLEAR_UNSORTED": "Clear Unsorted", + "KEEP_UNSORTED": "Keep Unsorted", + "EDIT_SHARING": "Edit Sharing", + "MAKE_PRIVATE": "Make Private", + "CLOSE_ALBUM": "Close Album", + "CLOSE_PHOTO": "Close Photo", + "CLOSE_MAP": "Close Map", + "ADD": "Add", + "MOVE": "Move", + "MOVE_ALL": "Move Selected", + "DUPLICATE": "Duplicate", + "DUPLICATE_ALL": "Duplicate Selected", + "COPY_TO": "Copy to …", + "COPY_ALL_TO": "Copy Selected to …", + "DELETE": "Delete", + "SAVE": "Save", + "DELETE_ALL": "Delete Selected", + "DOWNLOAD": "Download", + "DOWNLOAD_ALL": "Download Selected", + "UPLOAD_PHOTO": "Upload Photo", + "IMPORT_LINK": "Import from Link", + "IMPORT_DROPBOX": "Import from Dropbox", + "IMPORT_SERVER": "Import from Server", + "NEW_ALBUM": "New Album", + "NEW_TAG_ALBUM": "New Tag Album", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Enter a title for the new album:", + "UNTITLED": "Untitled", + "UNSORTED": "Unsorted", + "STARRED": "Starred", + "RECENT": "Recent", + "PUBLIC": "Public", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "Photos", + "CREATE_ALBUM": "Create Album", + "CREATE_TAG_ALBUM": "Create Tag Album", + "STAR_PHOTO": "Star Photo", + "STAR": "Star", + "UNSTAR": "Unstar", + "STAR_ALL": "Star Selected", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "Tag", + "TAG_ALL": "Tag Selected", + "UNSTAR_PHOTO": "Unstar Photo", + "SET_COVER": "Set Album Cover", + "REMOVE_COVER": "Remove Album Cover", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Open Original", + "ABOUT_PHOTO": "About Photo", + "DISPLAY_FULL_MAP": "Map", + "DIRECT_LINK": "Direct Link", + "DIRECT_LINKS": "Direct Links", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "About", + "ALBUM_BASICS": "Basics", + "ALBUM_TITLE": "Title", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Enter a new title for this album:", + "ALBUMS_NEW_TITLE": "Enter a title for all %d selected albums:", + "ALBUM_SET_TITLE": "Set Title", + "ALBUM_DESCRIPTION": "Description", + "ALBUM_SHOW_TAGS": "Tags to show", + "ALBUM_NEW_DESCRIPTION": "Enter a new description for this album:", + "ALBUM_SET_DESCRIPTION": "Set Description", + "ALBUM_NEW_SHOWTAGS": "Enter tags of photos that will be visible in this album:", + "ALBUM_SET_SHOWTAGS": "Set tags to show", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Created", + "ALBUM_IMAGES": "Images", + "ALBUM_VIDEOS": "Videos", + "ALBUM_SUBALBUMS": "Subalbums", + "ALBUM_SHARING": "Share", + "ALBUM_SHR_YES": "YES", + "ALBUM_SHR_NO": "No", + "ALBUM_PUBLIC": "Public", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Original", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Hidden", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Mark album as sensitive", + "ALBUM_UNMARK_NSFW": "Unmark album as sensitive", + "ALBUM_NSFW": "Sensitive", + "ALBUM_NSFW_EXPL": "Album contains sensitive content.", + "ALBUM_DOWNLOADABLE": "Downloadable", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Share button is visible", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "ALBUM_PASSWORD": "Password", + "ALBUM_PASSWORD_PROT": "Password protected", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "This album is protected by a password. Enter the password below to view the photos of this album:", + "ALBUM_MERGE": "Are you sure you want to merge the album “%1$s” into the album “%2$s”?", + "ALBUMS_MERGE": "Are you sure you want to merge all selected albums into the album “%s”?", + "MERGE_ALBUM": "Merge Albums", + "DONT_MERGE": "Don’t Merge", + "ALBUM_MOVE": "Are you sure you want to move the album “%1$s” into the album “%2$s”?", + "ALBUMS_MOVE": "Are you sure you want to move all selected albums into the album “%s”?", + "MOVE_ALBUMS": "Move Albums", + "NOT_MOVE_ALBUMS": "Don’t Move", + "ROOT": "Albums", + "ALBUM_REUSE": "Reuse", + "ALBUM_LICENSE": "License", + "ALBUM_SET_LICENSE": "Set License", + "ALBUM_LICENSE_HELP": "Need help choosing?", + "ALBUM_LICENSE_NONE": "None", + "ALBUM_RESERVED": "All Rights Reserved", + "ALBUM_SET_ORDER": "Set Order", + "ALBUM_ORDERING": "Order by", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "About", + "PHOTO_BASICS": "Basics", + "PHOTO_TITLE": "Title", + "PHOTO_NEW_TITLE": "Enter a new title for this photo:", + "PHOTO_SET_TITLE": "Set Title", + "PHOTO_UPLOADED": "Uploaded", + "PHOTO_DESCRIPTION": "Description", + "PHOTO_NEW_DESCRIPTION": "Enter a new description for this photo:", + "PHOTO_SET_DESCRIPTION": "Set Description", + "PHOTO_NEW_LICENSE": "Add a License", + "PHOTO_SET_LICENSE": "Set License", + "PHOTO_LICENSE": "License", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Reuse", + "PHOTO_LICENSE_NONE": "None", + "PHOTO_RESERVED": "All Rights Reserved", + "PHOTO_LATITUDE": "Latitude", + "PHOTO_LONGITUDE": "Longitude", + "PHOTO_ALTITUDE": "Altitude", + "PHOTO_IMGDIRECTION": "Direction", + "PHOTO_LOCATION": "Location", + "PHOTO_IMAGE": "Image", + "PHOTO_VIDEO": "Video", + "PHOTO_SIZE": "Size", + "PHOTO_FORMAT": "Format", + "PHOTO_RESOLUTION": "Resolution", + "PHOTO_DURATION": "Duration", + "PHOTO_FPS": "Frame rate", + "PHOTO_TAGS": "Tags", + "PHOTO_NOTAGS": "No Tags", + "PHOTO_NEW_TAGS": "Enter your tags for this photo. You can add multiple tags by separating them with a comma:", + "PHOTOS_NEW_TAGS": "Enter your tags for all %d selected photos. Existing tags will be overwritten. You can add multiple tags by separating them with a comma:", + "PHOTO_SET_TAGS": "Set Tags", + "PHOTO_CAMERA": "Camera", + "PHOTO_CAPTURED": "Captured", + "PHOTO_MAKE": "Make", + "PHOTO_TYPE": "Type\/Model", + "PHOTO_LENS": "Lens", + "PHOTO_SHUTTER": "Shutter Speed", + "PHOTO_APERTURE": "Aperture", + "PHOTO_FOCAL": "Focal Length", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Sharing", + "PHOTO_DELETE": "Delete Photo", + "PHOTO_KEEP": "Keep Photo", + "PHOTO_DELETE_CONFIRMATION": "Are you sure you want to delete the photo “%s”? This action can’t be undone!", + "PHOTO_DELETE_ALL": "Are you sure you want to delete all %d selected photo? This action can’t be undone!", + "PHOTOS_NEW_TITLE": "Enter a title for all %d selected photos:", + "PHOTO_MAKE_PRIVATE_ALBUM": "This photo is located in a public album. To make this photo private or public, edit the visibility of the associated album.", + "PHOTO_SHOW_ALBUM": "Show Album", + "PHOTO_PUBLIC": "Public", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Original", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Hidden", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Downloadable", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Share button is visible", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Password protected", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "The sharing properties of this photo will be changed to the following:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Because this photo is located in a public album, it inherits that album’s visibility settings. Its current visibility is shown below for informational purposes only.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "The visibility of this photo can be fine-tuned using global Lychee settings. Its current visibility is shown below for informational purposes only.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Loading", + "ERROR": "Error", + "ERROR_TEXT": "Whoops, it looks like something went wrong. Please reload the site and try again!", + "ERROR_UNKNOWN": "Something unexpected happened. Please try again and check your installation and server. Take a look at the readme for more information.", + "ERROR_MAP_DEACTIVATED": "Map functionality has been deactivated under settings.", + "ERROR_SEARCH_DEACTIVATED": "Search functionality has been deactivated under settings.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Retry", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Login Info updated.", + "SETTINGS_SUCCESS_SORT": "Sorting order updated.", + "SETTINGS_SUCCESS_DROPBOX": "Dropbox Key updated.", + "SETTINGS_SUCCESS_LANG": "Language updated", + "SETTINGS_SUCCESS_LAYOUT": "Layout updated", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "EXIF Overlay setting updated", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Public search updated", + "SETTINGS_SUCCESS_LICENSE": "Default license updated", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Map display settings updated", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Map display settings for public albums updated", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Map provider settings updated", + "SETTINGS_SUCCESS_CSS": "CSS updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F not supported. Sorry.", + "U2F_NOT_SECURE": "Environment not secured. U2F not available.", + "U2F_REGISTER_KEY": "Register new device.", + "U2F_REGISTRATION_SUCCESS": "Registration successful!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentication successful!", + "U2F_CREDENTIALS": "Credentials", + "U2F_CREDENTIALS_DELETED": "Credentials deleted!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "New Username", + "LOGIN_PASSWORD": "New Password", + "LOGIN_PASSWORD_CONFIRM": "Confirm Password", + "PASSWORD_TITLE": "Enter your current password:", + "PASSWORD_CURRENT": "Current Password", + "PASSWORD_TEXT": "Your credentials will be changed to the following:", + "PASSWORD_CHANGE": "Change Login", + "EDIT_SHARING_TITLE": "Edit Sharing", + "EDIT_SHARING_TEXT": "The sharing properties of this album will be changed to the following:", + "SHARE_ALBUM_TEXT": "This album will be shared with the following properties:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Sort albums by %1$s in an %2$s order.", + "SORT_ALBUM_SELECT_1": "Creation Time", + "SORT_ALBUM_SELECT_2": "Title", + "SORT_ALBUM_SELECT_3": "Description", + "SORT_ALBUM_SELECT_5": "Latest Take Date", + "SORT_ALBUM_SELECT_6": "Oldest Take Date", + "SORT_PHOTO_BY": "Sort photos by %1$s in an %2$s order.", + "SORT_PHOTO_SELECT_1": "Upload Time", + "SORT_PHOTO_SELECT_2": "Take Date", + "SORT_PHOTO_SELECT_3": "Title", + "SORT_PHOTO_SELECT_4": "Description", + "SORT_PHOTO_SELECT_6": "Star", + "SORT_PHOTO_SELECT_7": "Photo Format", + "SORT_ASCENDING": "Ascending", + "SORT_DESCENDING": "Descending", + "SORT_CHANGE": "Change Sorting", + "DROPBOX_TITLE": "Set Dropbox Key", + "DROPBOX_TEXT": "In order to import photos from your Dropbox, you need a valid drop-ins app key from their website<\/a>. Generate yourself a personal key and enter it below:", + "LANG_TEXT": "Change Lychee language for:", + "LANG_TITLE": "Change Language", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Public search allowed:", + "OVERLAY_TYPE": "Photo overlay:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "EXIF data", + "OVERLAY_DESCRIPTION": "Description", + "OVERLAY_DATE": "Date taken", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Enable maps (provided by OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Enable maps for public albums (provided by OpenStreetMap):", + "MAP_PROVIDER": "Provider of OpenStreetMap tiles:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (no HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (no HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (no HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (only HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Include photos of subalbums on map:", + "LOCATION_DECODING": "Decode GPS data into location name", + "LOCATION_SHOW": "Show location name", + "LOCATION_SHOW_PUBLIC": "Show location name for public mode", + "LAYOUT_TYPE": "Layout of photos:", + "LAYOUT_SQUARES": "Square thumbnails", + "LAYOUT_JUSTIFIED": "With aspect, justified", + "LAYOUT_MASONRY": "With aspect, masonry", + "LAYOUT_GRID": "With aspect, grid", + "LAYOUT_UNJUSTIFIED": "With aspect, unjustified", + "SET_LAYOUT": "Change layout", + "NSFW_VISIBLE_TEXT_1": "Make Sensitive albums visible by default.", + "NSFW_VISIBLE_TEXT_2": "If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Default sensitive album visibility updated with success.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "No results", + "VIEW_NO_PUBLIC_ALBUMS": "No public albums", + "VIEW_NO_CONFIGURATION": "No configuration", + "VIEW_PHOTO_NOT_FOUND": "Photo not found", + "NO_TAGS": "No Tags", + "UPLOAD_MANAGE_NEW_PHOTOS": "You can now manage your new photo(s).", + "UPLOAD_COMPLETE": "Upload complete", + "UPLOAD_COMPLETE_FAILED": "Failed to upload one or more photos.", + "UPLOAD_IMPORTING": "Importing", + "UPLOAD_IMPORTING_URL": "Importing URL", + "UPLOAD_UPLOADING": "Uploading", + "UPLOAD_FINISHED": "Finished", + "UPLOAD_PROCESSING": "Processing", + "UPLOAD_FAILED": "Failed", + "UPLOAD_FAILED_ERROR": "Upload failed. The server returned an error!", + "UPLOAD_FAILED_WARNING": "Upload failed. The server returned a warning!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "Skipped", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "Please take a look at the console of your browser for further details.", + "UPLOAD_UNKNOWN": "Server returned an unknown response. Please take a look at the console of your browser for further details.", + "UPLOAD_ERROR_UNKNOWN": "Upload failed. The server returned an unknown error!", + "UPLOAD_ERROR_POSTSIZE": "Upload failed. The PHP post_max_size may be too small! Otherwise check the FAQ.", + "UPLOAD_ERROR_FILESIZE": "Upload failed. The PHP upload_max_filesize may be too small! Otherwise check the FAQ.", + "UPLOAD_IN_PROGRESS": "Lychee is currently uploading!", + "UPLOAD_IMPORT_WARN_ERR": "The import has been finished, but returned warnings or errors. Please take a look at the log (Settings -> Show Log) for further details.", + "UPLOAD_IMPORT_COMPLETE": "Import complete", + "UPLOAD_IMPORT_INSTR": "Please enter the direct link to a photo to import it:", + "UPLOAD_IMPORT": "Import", + "UPLOAD_IMPORT_SERVER": "Importing from server", + "UPLOAD_IMPORT_SERVER_FOLD": "Folder empty or no readable files to process. Please take a look at the log (Settings -> Show Log) for further details.", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders, and sub-folders located in the folders with the following absolute paths (on the server). Paths are space-separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Could not start import because the folder was empty!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Delete originals", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Original files will be deleted after the import when possible.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "The import process on the server is approaching the memory limit and may end up being terminated prematurely.", + "UPLOAD_WARNING": "Warning", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "The given path is not a readable directory!", + "UPLOAD_IMPORT_PATH_RESERVED": "The given path is a reserved path of Lychee!", + "UPLOAD_IMPORT_FAILED": "Could not import the file!", + "UPLOAD_IMPORT_UNSUPPORTED": "Unsupported file type!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Self-hosted photo-management done right", + "ABOUT_DESCRIPTION": "Lychee<\/a> is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.", + "FOOTER_COPYRIGHT": "All images on this website are subject to copyright by %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Hosted with Lychee", + "URL_COPY_TO_CLIPBOARD": "Copy to clipboard", + "URL_COPIED_TO_CLIPBOARD": "Copied URL to clipboard!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Direct links to image files:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Medium", + "PHOTO_MEDIUM_HIDPI": "Medium HiDPI", + "PHOTO_SMALL": "Thumb", + "PHOTO_SMALL_HIDPI": "Thumb HiDPI", + "PHOTO_THUMB": "Square thumb", + "PHOTO_THUMB_HIDPI": "Square thumb HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Video part of live-photo", + "PHOTO_VIEW": "Lychee Photo View:", + "PHOTO_EDIT_ROTATECWISE": "Rotate clockwise", + "PHOTO_EDIT_ROTATECCWISE": "Rotate counter-clockwise", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found!", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album JSON not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "pagination.bck": { + "previous": "« Previous", + "next": "Next »" + }, + "passwords.bck": { + "password": "Passwords must be at least six characters and match the confirmation.", + "reset": "Your password has been reset!", + "sent": "We have e-mailed your password reset link!", + "token": "This password reset token is invalid.", + "user": "We can't find a user with that e-mail address." + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/en/lychee.php b/lang/en/lychee.php index 5b4c6c31162..18bb5d77ed2 100644 --- a/lang/en/lychee.php +++ b/lang/en/lychee.php @@ -8,7 +8,7 @@ 'ENTER' => 'Enter', 'CANCEL' => 'Cancel', 'CONFIRM' => 'Confirm', - 'SIGN_IN' => 'Sign In', + 'SIGN_IN' => 'Sign-In', 'CLOSE' => 'Close', 'SETTINGS' => 'Settings', 'SEARCH' => 'Search …', diff --git a/lang/es.json b/lang/es.json new file mode 100644 index 00000000000..fbc30bb5ea8 --- /dev/null +++ b/lang/es.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Nombre de usuario", + "PASSWORD": "Contraseña", + "ENTER": "Entrar", + "CANCEL": "Cancelar", + "CONFIRM": "Confirm", + "SIGN_IN": "Iniciar sesión", + "CLOSE": "Cerrar", + "SETTINGS": "Configuraciones", + "SEARCH": "Buscar …", + "MORE": "Más", + "DEFAULT": "Por Defecto", + "GALLERY": "Galería", + "USERS": "Usuarios", + "PROFILE": "Profile", + "CREATE": "Crear", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notificaciones", + "SHARING": "Compartir", + "CHANGE_LOGIN": "Cambiar inicio de sesión", + "CHANGE_SORTING": "Cambiar clasificación", + "SET_DROPBOX": "Establecer Dropbox", + "ABOUT_LYCHEE": "Acerca de Lychee", + "DIAGNOSTICS": "Diagnóstico", + "DIAGNOSTICS_GET_SIZE": "Pedir uso de espacio", + "JOBS": "Show job history", + "LOGS": "Mostrar Registros", + "SIGN_OUT": "Cerrar Sesión", + "UPDATE_AVAILABLE": "¡Actualización disponible!", + "MIGRATION_AVAILABLE": "Migración disponible!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Licencia predeterminada para nuevas cargas:", + "SET_LICENSE": "Establecer Licencia", + "SET_OVERLAY_TYPE": "Establecer Superposición", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Establecer proveedor de capas de OpenStreetMap", + "FULL_SETTINGS": "Configuración completa", + "UPDATE": "Actualizar", + "RESET": "Resetear", + "DISABLE_TOKEN_TOOLTIP": "Deshabilitar", + "ENABLE_TOKEN": "Habilitar token de API", + "DISABLED_TOKEN_STATUS_MSG": "Deshabilitado", + "TOKEN_BUTTON": "Token de API ...", + "TOKEN_NOT_AVAILABLE": "Ya has visto este token.", + "TOKEN_WAIT": "Espera ...", + "SMART_ALBUMS": "Álbumes inteligentes", + "SHARED_ALBUMS": "Álbumes compartidos", + "ALBUMS": "Álbumes", + "PHOTOS": "Imágenes", + "SEARCH_RESULTS": "Resultados de la búsqueda", + "RENAME": "Renombrar", + "RENAME_ALL": "Renombrar Todo", + "MERGE": "Unir", + "MERGE_ALL": "Unir Todo", + "MAKE_PUBLIC": "Hacer Público", + "SHARE_ALBUM": "Compartir Álbum", + "SHARE_PHOTO": "Compartir Foto", + "VISIBILITY_ALBUM": "Visibilidad del Álbum", + "VISIBILITY_PHOTO": "Visibilidad de la Foto", + "DOWNLOAD_ALBUM": "Descargar Álbum", + "ABOUT_ALBUM": "Acerca del Álbum", + "DELETE_ALBUM": "Eliminar Álbum", + "MOVE_ALBUM": "Mover Álbum", + "FULLSCREEN_ENTER": "Ingreser a pantalla completa", + "FULLSCREEN_EXIT": "Salir de pantalla completa", + "SHARING_ALBUM_USERS": "Compartir este álbum con usuarios", + "WAIT_FETCH_DATA": "Espere mientras obtenemos los datos …", + "SHARING_ALBUM_USERS_NO_USERS": "No hay usuarios con los que compartir el álbum", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Seleccione los usuarios con los que compartir este álbum", + "DELETE_ALBUM_QUESTION": "Eliminar Álbum y Fotos", + "KEEP_ALBUM": "Mantener Álbum", + "DELETE_ALBUM_CONFIRMATION": "¿Estás seguro de que deseas eliminar el álbum «%s»? ¿Ha seleccionado un álbum y todas las fotos que contiene? ¡Esta acción no se puede deshacer!", + "DELETE_TAG_ALBUM_QUESTION": "Eliminar Álbum", + "DELETE_TAG_ALBUM_CONFIRMATION": "¿Estás seguro de que deseas eliminar el álbum «%s» (cualquier foto dentro no será eliminada)? ¡Esta acción no se puede deshacer!", + "DELETE_ALBUMS_QUESTION": "Eliminar Álbumes y Fotos", + "KEEP_ALBUMS": "Mantener Álbumes", + "DELETE_ALBUMS_CONFIRMATION": "¿Está seguro de que desea eliminar todo %d? Ha seleccionado álbumes y todas las fotos que contienen ¡Esta acción no se puede deshacer!", + "DELETE_UNSORTED_CONFIRM": "¿Estás seguro de que deseas eliminar todas las fotos de «Sin clasificar»? ¡Esta acción no se puede deshacer!", + "CLEAR_UNSORTED": "Borrar «Sin Clasificar»", + "KEEP_UNSORTED": "Mantener «Sin Clasificar»", + "EDIT_SHARING": "Editar Compartido", + "MAKE_PRIVATE": "Hazlo Privado", + "CLOSE_ALBUM": "Cerrar Álbum", + "CLOSE_PHOTO": "Cerrar Foto", + "CLOSE_MAP": "Cerrar Mapa", + "ADD": "Añadir", + "MOVE": "Mover", + "MOVE_ALL": "Mover Todo", + "DUPLICATE": "Duplicar", + "DUPLICATE_ALL": "Duplicar Todo", + "COPY_TO": "Copiar a …", + "COPY_ALL_TO": "Copiar Todo a …", + "DELETE": "Eliminar", + "SAVE": "Guardar", + "DELETE_ALL": "Eliminar Todos", + "DOWNLOAD": "Descargar", + "DOWNLOAD_ALL": "Descargar Seleccionados", + "UPLOAD_PHOTO": "Subir Foto", + "IMPORT_LINK": "Importar desde Enlace", + "IMPORT_DROPBOX": "Importar desde Dropbox", + "IMPORT_SERVER": "Importar desde Servidor", + "NEW_ALBUM": "Nuevo Álbum", + "NEW_TAG_ALBUM": "Nuevo Album de Etiquetas", + "UPLOAD_TRACK": "Subir pista", + "DELETE_TRACK": "Borrar pista", + "TITLE_NEW_ALBUM": "Ingrese un título para el nuevo álbum:", + "UNTITLED": "Sin Título", + "UNSORTED": "Sin Clasificar", + "STARRED": "Destacado", + "RECENT": "Reciente", + "PUBLIC": "Público", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "Fotos", + "CREATE_ALBUM": "Crear Álbum", + "CREATE_TAG_ALBUM": "Crear Album de Etiquetas", + "STAR_PHOTO": "Destacar Photo", + "STAR": "Destacar", + "UNSTAR": "No Destacar", + "STAR_ALL": "Destacar Todo", + "UNSTAR_ALL": "No Destacar Seleccionados", + "TAG": "Etiquetar", + "TAG_ALL": "Etiquetar Todo", + "UNSTAR_PHOTO": "Desetiquetar Foto", + "SET_COVER": "Establecer portada del álbum", + "REMOVE_COVER": "Eliminar portada del álbum", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Foto Completa", + "ABOUT_PHOTO": "Acerca de la Foto", + "DISPLAY_FULL_MAP": "Mapa", + "DIRECT_LINK": "Enlace Directo", + "DIRECT_LINKS": "Enlaces Directos", + "QR_CODE": "Código QR", + "ALBUM_ABOUT": "Acerca de", + "ALBUM_BASICS": "Básico", + "ALBUM_TITLE": "Título", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Ingrese un nuevo título para este álbum:", + "ALBUMS_NEW_TITLE": "Ingrese un título para todos %d álbumes seleccionados:", + "ALBUM_SET_TITLE": "Establecer Título", + "ALBUM_DESCRIPTION": "Descripción", + "ALBUM_SHOW_TAGS": "Etiquetas para mostrar", + "ALBUM_NEW_DESCRIPTION": "Ingrese una nueva descripción para este álbum:", + "ALBUM_SET_DESCRIPTION": "Establecer Descripción", + "ALBUM_NEW_SHOWTAGS": "Ingrese las etiquetas de las fotos que serán visibles en este álbum:", + "ALBUM_SET_SHOWTAGS": "Establecer Etiquetas para mostrar", + "ALBUM_ALBUM": "Álbum", + "ALBUM_CREATED": "Creado", + "ALBUM_IMAGES": "Imágenes", + "ALBUM_VIDEOS": "Videos", + "ALBUM_SUBALBUMS": "Subalbums", + "ALBUM_SHARING": "Compartir", + "ALBUM_SHR_YES": "SI", + "ALBUM_SHR_NO": "No", + "ALBUM_PUBLIC": "Público", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Original", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Oculto", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Marcar álbum como sensible", + "ALBUM_UNMARK_NSFW": "Desmarcar álbum como sensible", + "ALBUM_NSFW": "Sensible", + "ALBUM_NSFW_EXPL": "El álbum está marcado para contener contenido confidencial.", + "ALBUM_DOWNLOADABLE": "Descargable", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "El botón Compartir está visible", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "ALBUM_PASSWORD": "Contraseña", + "ALBUM_PASSWORD_PROT": "Contraseña protegida", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Este álbum está protegido por una contraseña. Ingrese la contraseña a continuación para ver las fotos de este álbum:", + "ALBUM_MERGE": "¿Estás seguro de que quieres fusionar el álbum «%1$s» en el álbum «%2$s»?", + "ALBUMS_MERGE": "¿Está seguro de que desea fusionar todos los álbumes seleccionados en el álbum «%s»?", + "MERGE_ALBUM": "Fusionar álbumes", + "DONT_MERGE": "No combinar", + "ALBUM_MOVE": "¿Estás seguro de que quieres mover el álbum «%1$s» detro del álbum «%2$s»?", + "ALBUMS_MOVE": "¿Está seguro de que desea mover todos los álbumes seleccionados al álbum «%s»?", + "MOVE_ALBUMS": "Mover álbumes", + "NOT_MOVE_ALBUMS": "No mover", + "ROOT": "Inicio", + "ALBUM_REUSE": "Reutilizar", + "ALBUM_LICENSE": "Licencia", + "ALBUM_SET_LICENSE": "Establecer licencia", + "ALBUM_LICENSE_HELP": "¿Necesitas ayuda para elegir?", + "ALBUM_LICENSE_NONE": "Ninguna", + "ALBUM_RESERVED": "Todos los derechos reservados", + "ALBUM_SET_ORDER": "Establecer orden", + "ALBUM_ORDERING": "Ordenar por", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Dueño", + "PHOTO_ABOUT": "Acerca de", + "PHOTO_BASICS": "Básico", + "PHOTO_TITLE": "Título", + "PHOTO_NEW_TITLE": "Ingrese un nuevo título para esta foto:", + "PHOTO_SET_TITLE": "Establecer título", + "PHOTO_UPLOADED": "Subido", + "PHOTO_DESCRIPTION": "Descripción", + "PHOTO_NEW_DESCRIPTION": "Ingrese una nueva descripción para esta foto:", + "PHOTO_SET_DESCRIPTION": "Establecer descripción", + "PHOTO_NEW_LICENSE": "Agregar una licencia", + "PHOTO_SET_LICENSE": "Establecer licencia", + "PHOTO_LICENSE": "Licencia", + "PHOTO_LICENSE_HELP": "¿Necesitas ayuda para elegir?", + "PHOTO_REUSE": "Reutilizar", + "PHOTO_LICENSE_NONE": "Ninguna", + "PHOTO_RESERVED": "Todos los derechos reservados", + "PHOTO_LATITUDE": "Latitud", + "PHOTO_LONGITUDE": "Longitud", + "PHOTO_ALTITUDE": "Altitud", + "PHOTO_IMGDIRECTION": "Dirección", + "PHOTO_LOCATION": "Ubicación", + "PHOTO_IMAGE": "Imagen", + "PHOTO_VIDEO": "Vídeo", + "PHOTO_SIZE": "Tamaño", + "PHOTO_FORMAT": "Formato", + "PHOTO_RESOLUTION": "Resolución", + "PHOTO_DURATION": "Duración", + "PHOTO_FPS": "Cuadros por segundo", + "PHOTO_TAGS": "Etiquetas", + "PHOTO_NOTAGS": "Sin etiquetas", + "PHOTO_NEW_TAGS": "Ingrese sus etiquetas para esta foto. Puede agregar varias etiquetas separándolas con una coma:", + "PHOTOS_NEW_TAGS": "Ingrese sus etiquetas para todos %d fotos seleccionadas. Las etiquetas existentes se sobrescribirán. Puede agregar varias etiquetas separándolas con una coma:", + "PHOTO_SET_TAGS": "Establecer etiquetas", + "PHOTO_CAMERA": "Cámara", + "PHOTO_CAPTURED": "Capturado", + "PHOTO_MAKE": "Hacer", + "PHOTO_TYPE": "Tipo \/ Modelo", + "PHOTO_LENS": "Lens", + "PHOTO_SHUTTER": "Velocidad de obturación", + "PHOTO_APERTURE": "Abertura", + "PHOTO_FOCAL": "Longitud focal", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Compartir", + "PHOTO_DELETE": "Borrar Foto", + "PHOTO_KEEP": "Mantener Foto", + "PHOTO_DELETE_CONFIRMATION": "¿Estás seguro de que deseas eliminar la foto «%s»? ¡Esta acción no se puede deshacer!", + "PHOTO_DELETE_ALL": "¿Está seguro de que desea eliminar todo %d foto seleccionada? ¡Esta acción no se puede deshacer!", + "PHOTOS_NEW_TITLE": "Ingrese un título para todos %d fotos seleccionadas:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Esta foto se encuentra en un álbum público. Para que esta foto sea privada o pública, edite la visibilidad del álbum asociado.", + "PHOTO_SHOW_ALBUM": "Mostrar álbum", + "PHOTO_PUBLIC": "Público", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Original", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Oculto", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Descargable", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "El botón Compartir está visible", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Contraseña protegida", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "Las propiedades para compartir de esta foto se cambiarán a lo siguiente:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Debido a que esta foto se encuentra en un álbum público, hereda la configuración de visibilidad de ese álbum. Su visibilidad actual se muestra a continuación solo con fines informativos.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "La visibilidad de esta foto se puede ajustar utilizando la configuración global de Lychee. Su visibilidad actual se muestra a continuación solo con fines informativos.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Cargando", + "ERROR": "Error", + "ERROR_TEXT": "Vaya, parece que algo salió mal. ¡Vuelva a cargar el sitio e intente nuevamente!", + "ERROR_UNKNOWN": "Algo inesperado sucedió. Intente nuevamente y verifique su instalación y servidor. Eche un vistazo al archivo Léame para obtener más información.", + "ERROR_MAP_DEACTIVATED": "La funcionalidad del mapa se ha desactivado en la configuración.", + "ERROR_SEARCH_DEACTIVATED": "La función de búsqueda se ha desactivado en la configuración.", + "SUCCESS": "Vale", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Procesar de nuevo", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Información de inicio de sesión actualizada", + "SETTINGS_SUCCESS_SORT": "Orden de clasificación actualizado", + "SETTINGS_SUCCESS_DROPBOX": "Clave Dropbox actualizada", + "SETTINGS_SUCCESS_LANG": "Idioma actualizado", + "SETTINGS_SUCCESS_LAYOUT": "Diseño actualizado", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "Configuración de superposición EXIF actualizada", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Búsqueda pública actualizada", + "SETTINGS_SUCCESS_LICENSE": "Licencia predeterminada actualizada", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Configuración de visualización del mapa actualizada", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Configuración de visualización de mapa para álbumes públicos actualizada", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Configuración del proveedor de mapas actualizada", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Clave API Dropbox", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F no compatible. Lo siento.", + "U2F_NOT_SECURE": "Entorno no protegido. U2F no disponible.", + "U2F_REGISTER_KEY": "Registrar nuevo dispositivo.", + "U2F_REGISTRATION_SUCCESS": "¡Registro correcto!", + "U2F_AUTHENTIFICATION_SUCCESS": "¡Autenticación correcta!", + "U2F_CREDENTIALS": "Credenciales", + "U2F_CREDENTIALS_DELETED": "¡Credenciales eliminadas!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Enviar correos electrónicos de notificación de nuevas fotos.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "Notificación de nuevas fotos actualizada", + "USER_EMAIL_INSTRUCTION": "Agregue su correo electrónico a continuación para habilitar la recepción de notificaciones. Para dejar de recibir correos electrónicos, simplemente elimine su correo electrónico a continuación.", + "LOGIN_USERNAME": "Nuevo nombre de usuario", + "LOGIN_PASSWORD": "Nueva contraseña", + "LOGIN_PASSWORD_CONFIRM": "Confirmar contraseña", + "PASSWORD_TITLE": "Introduce tu contraseña actual:", + "PASSWORD_CURRENT": "Contraseña actual", + "PASSWORD_TEXT": "Su nombre de usuario y contraseña se cambiarán a lo siguiente:", + "PASSWORD_CHANGE": "Cambiar inicio de sesión", + "EDIT_SHARING_TITLE": "Editar compartir", + "EDIT_SHARING_TEXT": "Las propiedades para compartir de este álbum se cambiarán a lo siguiente:", + "SHARE_ALBUM_TEXT": "Este álbum se compartirá con las siguientes propiedades:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Ordenar álbumes por %1$s en un %2$s orden.", + "SORT_ALBUM_SELECT_1": "Tiempo de creación", + "SORT_ALBUM_SELECT_2": "Título", + "SORT_ALBUM_SELECT_3": "Descripción", + "SORT_ALBUM_SELECT_5": "Última fecha de toma", + "SORT_ALBUM_SELECT_6": "La fecha de toma más antigua", + "SORT_PHOTO_BY": "Ordenar fotos por %1$s en un %2$s orden.", + "SORT_PHOTO_SELECT_1": "Tiempo de carga", + "SORT_PHOTO_SELECT_2": "Fecha Realización", + "SORT_PHOTO_SELECT_3": "Título", + "SORT_PHOTO_SELECT_4": "Descripción", + "SORT_PHOTO_SELECT_6": "Estrella", + "SORT_PHOTO_SELECT_7": "Formato de foto", + "SORT_ASCENDING": "Ascendente", + "SORT_DESCENDING": "Descendente", + "SORT_CHANGE": "Cambiar clasificación", + "DROPBOX_TITLE": "Establecer clave de Dropbox", + "DROPBOX_TEXT": "Para importar fotos desde su Dropbox, necesita una clave de aplicación válida desde su sitio web <\/a>. Generar usted mismo una clave personal e ingrésela a continuación:", + "LANG_TEXT": "Cambiar el idioma Lychee para:", + "LANG_TITLE": "Cambiar idioma", + "SETTING_RECENT_PUBLIC_TEXT": "Rendre l'album \"Recent\" accessible a tous publics", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Búsqueda pública permitida:", + "OVERLAY_TYPE": "Datos para usar en la superposición de imágenes:", + "OVERLAY_NONE": "Ninguna", + "OVERLAY_EXIF": "Datos EXIF de fotos", + "OVERLAY_DESCRIPTION": "Descripción de la foto", + "OVERLAY_DATE": "Fecha de foto tomada", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Habilitar mapas (OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Habilitar mapas para álbumes públicos (proporcionados por OpenStreetMap):", + "MAP_PROVIDER": "Proveedor de capas de OpenStreetMap:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (no HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (no HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (no HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (only HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Incluir fotos de subálbumes en el mapa:", + "LOCATION_DECODING": "Decodificar datos GPS en nombre de ubicación", + "LOCATION_SHOW": "Mostrar nombre de ubicación", + "LOCATION_SHOW_PUBLIC": "Mostrar el nombre de la ubicación para el modo público", + "LAYOUT_TYPE": "Diseño de fotos:", + "LAYOUT_SQUARES": "Miniaturas cuadradas", + "LAYOUT_JUSTIFIED": "Con aspecto justificado", + "LAYOUT_MASONRY": "Con aspecto, masonry", + "LAYOUT_GRID": "Con aspecto, grid", + "LAYOUT_UNJUSTIFIED": "Con aspecto, injustificado", + "SET_LAYOUT": "Cambia el diseño", + "NSFW_VISIBLE_TEXT_1": "Haz que los álbumes confidenciales sean visibles de forma predeterminada.", + "NSFW_VISIBLE_TEXT_2": "Si el álbum es público, todavía está accesible, simplemente oculto a la vista y puede revelarse presionando H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Visibilidad predeterminada del álbum sensible actualizada con éxito.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "No hay resultados", + "VIEW_NO_PUBLIC_ALBUMS": "Sin álbumes públicos", + "VIEW_NO_CONFIGURATION": "Sin configuración", + "VIEW_PHOTO_NOT_FOUND": "Foto no encontrada", + "NO_TAGS": "Sin etiquetas", + "UPLOAD_MANAGE_NEW_PHOTOS": "Ahora puede administrar sus nuevas fotos.", + "UPLOAD_COMPLETE": "Carga completa", + "UPLOAD_COMPLETE_FAILED": "No se pudo cargar una o más fotos.", + "UPLOAD_IMPORTING": "Importador", + "UPLOAD_IMPORTING_URL": "Importando URL", + "UPLOAD_UPLOADING": "Subiendo", + "UPLOAD_FINISHED": "Terminado", + "UPLOAD_PROCESSING": "Tratamiento", + "UPLOAD_FAILED": "Ha fallado", + "UPLOAD_FAILED_ERROR": "Subida fallida. ¡El servidor devolvió un error!", + "UPLOAD_FAILED_WARNING": "Subida fallida. ¡El servidor devolvió una advertencia!", + "UPLOAD_CANCELLED": "Cancelado", + "UPLOAD_SKIPPED": "Saltado", + "UPLOAD_UPDATED": "Actualizado", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "Esta foto ha sido omitida porque ya está en tu biblioteca.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "Esta foto se omitió porque ya está en tu biblioteca, pero sus metadatos se actualizaron.", + "UPLOAD_ERROR_CONSOLE": "Por favor, eche un vistazo a la consola de su navegador para más detalles.", + "UPLOAD_UNKNOWN": "El servidor devolvió una respuesta desconocida. Por favor, eche un vistazo a la consola de su navegador para más detalles.", + "UPLOAD_ERROR_UNKNOWN": "Subida fallida. ¡El servidor devolvió un error desconocido!", + "UPLOAD_ERROR_POSTSIZE": "Subida fallida. ¡El PHP post_max_size puede ser demasiado pequeño! De lo contrario, consulta las preguntas frecuentes.", + "UPLOAD_ERROR_FILESIZE": "Subida fallida. ¡El PHP upload_max_filesize puede ser demasiado pequeño! De lo contrario, consulta las preguntas frecuentes.", + "UPLOAD_IN_PROGRESS": "¡Lychee está subiendo actualmente!", + "UPLOAD_IMPORT_WARN_ERR": "La importación ha finalizado, pero devolvió advertencias o errores. Por favor, eche un vistazo al registro (Configuración -> Mostrar registro) para obtener más detalles.", + "UPLOAD_IMPORT_COMPLETE": "Importación completa", + "UPLOAD_IMPORT_INSTR": "Ingrese el enlace directo a una foto para importarla:", + "UPLOAD_IMPORT": "Importar", + "UPLOAD_IMPORT_SERVER": "Importando desde el servidor", + "UPLOAD_IMPORT_SERVER_FOLD": "Carpeta vacía o no hay archivos legibles para procesar. Por favor, eche un vistazo al registro (Configuración -> Mostrar registro) para obtener más detalles.", + "UPLOAD_IMPORT_SERVER_INSTR": "Importe todas las fotos, carpetas y subcarpetas ubicadas en las carpetas con las siguientes rutas absolutas (en el servidor). Las rutas están separadas por espacios, use \\ para escapar de un espacio en una ruta.", + "UPLOAD_ABSOLUTE_PATH": "Ruta absoluta a los directorios, separados por espacios", + "UPLOAD_IMPORT_SERVER_EMPT": "No se pudo iniciar la importación porque la carpeta estaba vacía", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Eliminar originales", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Los archivos originales se eliminarán después de la importación cuando sea posible", + "UPLOAD_IMPORT_VIA_SYMLINK": "Enlaces simbólicos", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Importar archivos utilizando enlaces simbólicos a originales.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Omitir duplicados", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Se omiten los archivos multimedia existentes.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Volver a sincronizar metadatos", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Actualizar metadatos de archivos multimedia existentes.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "El proceso de importación en el servidor se acerca al límite de memoria y puede terminar antes de tiempo.", + "UPLOAD_WARNING": "Advertencia", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "¡La ruta dada no es un directorio legible!", + "UPLOAD_IMPORT_PATH_RESERVED": "¡El camino dado es un camino reservado de Lychee!", + "UPLOAD_IMPORT_FAILED": "¡No se pudo importar el archivo!", + "UPLOAD_IMPORT_UNSUPPORTED": "¡Tipo de archivo no soportado!", + "UPLOAD_IMPORT_CANCELLED": "Importación cancelada", + "ABOUT_SUBTITLE": "Un auto-hosteado gestor de imagenes, bien hecho", + "ABOUT_DESCRIPTION": "Lychee<\/a> es una herramienta gratuita de gestión de fotos, que se ejecuta en su servidor o espacio web. La instalación es cuestión de segundos. Cargue, administre y comparta fotos como desde una aplicación nativa. Lychee viene con todo lo que necesitas y todas tus fotos se almacenan de forma segura.", + "FOOTER_COPYRIGHT": "Todas las imágenes de este sitio web están sujetas a copyright por %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Alojado con Lychee", + "URL_COPY_TO_CLIPBOARD": "Copiar al portapapeles", + "URL_COPIED_TO_CLIPBOARD": "¡URL copiada al portapapeles!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Enlaces directos a archivos de imagen:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Mediana", + "PHOTO_MEDIUM_HIDPI": "Mediana HiDPI", + "PHOTO_SMALL": "Miniatura", + "PHOTO_SMALL_HIDPI": "Miniatura HiDPI", + "PHOTO_THUMB": "Cuadrado de Miniatura", + "PHOTO_THUMB_HIDPI": "Cuadrado de Miniatura HiDPI", + "PHOTO_THUMBNAIL": "Miniatura de la foto", + "PHOTO_LIVE_VIDEO": "Video de live-photo", + "PHOTO_VIEW": "Vista de Foto de Lychee", + "PHOTO_EDIT_ROTATECWISE": "Rotate clockwise", + "PHOTO_EDIT_ROTATECCWISE": "Rotate counter-clockwise", + "ERROR_GPX": "Error al cargar archivo GPX: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "¡Seleccione álbumes o fotos!", + "ERROR_COULD_NOT_FIND": "No se pudo encontrar lo que buscas.", + "ERROR_INVALID_EMAIL": "No es una dirección de correo electrónico válida.", + "EMAIL_SUCCESS": "¡Correo electrónico actualizado!", + "ERROR_PHOTO_NOT_FOUND": "Error: ¡foto %s no encontrada!", + "ERROR_EMPTY_USERNAME": "el nuevo nombre de usuario no puede estar vacío.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "la nueva contraseña no coincide.", + "ERROR_EMPTY_PASSWORD": "la nueva contraseña no puede estar vacía.", + "ERROR_SELECT_ALBUM": "¡Selecciona un álbum para compartir!", + "ERROR_SELECT_USER": "¡Seleccione un usuario con el que compartir!", + "ERROR_SELECT_SHARING": "¡Seleccione un recurso compartido para eliminar!", + "SHARING_SUCCESS": "¡Compartir actualizado!", + "SHARING_REMOVED": "¡Compartir eliminado!", + "USER_CREATED": "¡Usuario creado!", + "USER_DELETED": "¡Usuario eliminado!", + "USER_UPDATED": "¡Usuario actualizado!", + "ENTER_EMAIL": "Ingrese su dirección de correo electrónico:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: ¡Álbum JSON no encontrado!", + "ERROR_ALBUM_NOT_FOUND": "Error: álbum %s no encontrado", + "ERROR_DROPBOX_KEY": "Error: clave de Dropbox no configurada", + "ERROR_SESSION": "Sesión caducada.", + "CAMERA_DATE": "Fecha de la cámara", + "NEW_PASSWORD": "nueva contraseña", + "ALLOW_UPLOADS": "Permitir subidas", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "Contribuidores de OpenStreetMap" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/fr.json b/lang/fr.json new file mode 100644 index 00000000000..4cc0383031c --- /dev/null +++ b/lang/fr.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram paysage)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (paysage)", + "1by1": "square", + "1byx9": "16\/9 (paysage)" + }, + "lychee": { + "USERNAME": "Nom d’utilisateur", + "PASSWORD": "Mot de passe", + "ENTER": "OK", + "CANCEL": "Annuler", + "CONFIRM": "Confirmer", + "SIGN_IN": "Connexion", + "CLOSE": "Fermer", + "SETTINGS": "Paramètres", + "SEARCH": "Rechercher…", + "MORE": "Plus", + "DEFAULT": "Valeur par défaut", + "GALLERY": "Galerie", + "USERS": "Utilisateurs", + "PROFILE": "Profil", + "CREATE": "Créer", + "REMOVE": "Retirer", + "SHARE": "Partager", + "U2F": "U2F", + "NOTIFICATIONS": "Informations", + "SHARING": "Partage", + "CHANGE_LOGIN": "Changer le nom d’utilisateur", + "CHANGE_SORTING": "Changer le tri", + "SET_DROPBOX": "Paramétrer Dropbox", + "ABOUT_LYCHEE": "À propos de Lychee", + "DIAGNOSTICS": "Diagnostics", + "DIAGNOSTICS_GET_SIZE": "Calculer l’espace utilisé", + "JOBS": "Historique des tâches", + "LOGS": "Logs", + "SIGN_OUT": "Déconnexion", + "UPDATE_AVAILABLE": "Une mise à jour est disponible !", + "MIGRATION_AVAILABLE": "Une migration est disponible !", + "CHECK_FOR_UPDATE": "Vérifier les mises à jour", + "DEFAULT_LICENSE": "License par defaut pour les nouveaux ajouts :", + "SET_LICENSE": "Sélectionner une license", + "SET_OVERLAY_TYPE": "Sélectionner le type d’Overlay", + "SET_ALBUM_DECORATION": "Sélectionner les décorations des album", + "SET_MAP_PROVIDER": "Sélectionner le fournisseur de données cartographiques", + "FULL_SETTINGS": "Tous les paramètres", + "UPDATE": "Mettre à jour", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Smart Albums", + "SHARED_ALBUMS": "Albums partagés", + "ALBUMS": "Albums", + "PHOTOS": "Photos", + "SEARCH_RESULTS": "Résultats", + "RENAME": "Renommer", + "RENAME_ALL": "Renommer la sélection", + "MERGE": "Fusionner", + "MERGE_ALL": "Fusionner la sélection", + "MAKE_PUBLIC": "Rendre public", + "SHARE_ALBUM": "Partager l’album", + "SHARE_PHOTO": "Partager la photo", + "VISIBILITY_ALBUM": "Visibilité de l’album", + "VISIBILITY_PHOTO": "Visibilité de la Photo", + "DOWNLOAD_ALBUM": "Télécharger l’album", + "ABOUT_ALBUM": "À propos de l’album", + "DELETE_ALBUM": "Supprimer l’album", + "MOVE_ALBUM": "Déplacer l’album", + "FULLSCREEN_ENTER": "Entrer en mode plein écran", + "FULLSCREEN_EXIT": "Sortir du mode plein écran", + "SHARING_ALBUM_USERS": "Partager l’album avec des utilisateurs", + "WAIT_FETCH_DATA": "Merci de patienter le temps que les données soient récupérées…", + "SHARING_ALBUM_USERS_NO_USERS": "Il n’y pas d’utilisateurs avec qui partager cet album", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Sélectionner les utilisateurs avec qui partager cet album", + "DELETE_ALBUM_QUESTION": "Supprimer l’album et ses photos", + "KEEP_ALBUM": "Garder l’album", + "DELETE_ALBUM_CONFIRMATION": "Voulez-vous vraiment supprimer l’album «%s» et toutes les photos qu’il contient ? Cette action est irréversible !", + "DELETE_TAG_ALBUM_QUESTION": "Supprimer l’album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Voulez-vous vraiment supprimer l’album «%s» (les photos qu’il contient ne seront pas supprimées)? Cette action est irréversible !", + "DELETE_ALBUMS_QUESTION": "Supprimer les albums et leurs photos", + "KEEP_ALBUMS": "Garder les albums", + "DELETE_ALBUMS_CONFIRMATION": "Voulez-vous vraiment supprimer les %d albums selectionnés et toutes leurs photos ? Cette action est irréversible !", + "DELETE_UNSORTED_CONFIRM": "Voulez-vous vraiment supprimer toutes les photos de «Non-triés» ? Cette action est irréversible !", + "CLEAR_UNSORTED": "Vider Non-triés", + "KEEP_UNSORTED": "Garder Non-triés", + "EDIT_SHARING": "Éditer le partage", + "MAKE_PRIVATE": "Rendre privé", + "CLOSE_ALBUM": "Fermer l’album", + "CLOSE_PHOTO": "Fermer la photo", + "CLOSE_MAP": "Fermer la carte", + "ADD": "Ajouter", + "MOVE": "Déplacer", + "MOVE_ALL": "Déplacer la sélection", + "DUPLICATE": "Dupliquer", + "DUPLICATE_ALL": "Dupliquer la sélection", + "COPY_TO": "Copier vers…", + "COPY_ALL_TO": "Copier la sélection vers…", + "DELETE": "Supprimer", + "SAVE": "Sauvegarder", + "DELETE_ALL": "Supprimer la sélection", + "DOWNLOAD": "Télécharger", + "DOWNLOAD_ALL": "Télécharger la sélection", + "UPLOAD_PHOTO": "Ajouter une photo ou une vidéo", + "IMPORT_LINK": "Importer depuis un lien", + "IMPORT_DROPBOX": "Importer depuis Dropbox", + "IMPORT_SERVER": "Importer depuis le serveur", + "NEW_ALBUM": "Nouvel album", + "NEW_TAG_ALBUM": "Nouvel album d’étiquette", + "UPLOAD_TRACK": "Ajouter une trace", + "DELETE_TRACK": "Supprimer la trace", + "TITLE_NEW_ALBUM": "Entrez le titre du nouvel album :", + "UNTITLED": "Sans titre", + "UNSORTED": "Non-triés", + "STARRED": "Favoris", + "RECENT": "Récent", + "PUBLIC": "Public", + "ON_THIS_DAY": "Ce jour-là", + "NUM_PHOTOS": "Photos", + "CREATE_ALBUM": "Créer un album", + "CREATE_TAG_ALBUM": "Créer un album d’étiquette", + "STAR_PHOTO": "Mettre en Favoris", + "STAR": "Favori", + "UNSTAR": "Retirer des favoris", + "STAR_ALL": "Marquer la sélection comme favoris", + "UNSTAR_ALL": "Retirer la sélection des favoris", + "TAG": "Tagger", + "TAG_ALL": "Tagger la sélection", + "UNSTAR_PHOTO": "Retirer des Favoris", + "SET_COVER": "Changer la couverture de l’album", + "REMOVE_COVER": "Supprimer la couverture de l’album", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Ouvrir l’original", + "ABOUT_PHOTO": "À propos de la photo", + "DISPLAY_FULL_MAP": "Carte", + "DIRECT_LINK": "Lien direct", + "DIRECT_LINKS": "Liens directs", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "À propos", + "ALBUM_BASICS": "Informations de base", + "ALBUM_TITLE": "Titre", + "ALBUM_COPYRIGHT": "Droits d’auteur", + "ALBUM_SET_COPYRIGHT": "Définir les droits d’auteur", + "ALBUM_NEW_TITLE": "Entrez un nouveau titre pour cet album :", + "ALBUMS_NEW_TITLE": "Entrez un titre pour les %d albums sélectionnés :", + "ALBUM_SET_TITLE": "Enregistrer le titre", + "ALBUM_DESCRIPTION": "Description", + "ALBUM_SHOW_TAGS": "Étiquettes à afficher", + "ALBUM_NEW_DESCRIPTION": "Entrez une nouvelle description pour cet album :", + "ALBUM_SET_DESCRIPTION": "Choisir une description", + "ALBUM_NEW_SHOWTAGS": "Entrez les étiquettes des photos qui seront affichées dans cet album :", + "ALBUM_SET_SHOWTAGS": "Afficher ces étiquettes", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "", + "ALBUM_IMAGES": "Images", + "ALBUM_VIDEOS": "Videos", + "ALBUM_SUBALBUMS": "Sous-albums", + "ALBUM_SHARING": "Partager", + "ALBUM_SHR_YES": "Oui", + "ALBUM_SHR_NO": "Non", + "ALBUM_PUBLIC": "Public", + "ALBUM_PUBLIC_EXPL": "Les utilisateurs anonymes peuvent accéder à cet album, sous réserve des restrictions suivantes.", + "ALBUM_FULL": "Originaux", + "ALBUM_FULL_EXPL": "Les utilisateurs anonymes peuvent contempler des photos en pleine résolution.", + "ALBUM_HIDDEN": "Masqué", + "ALBUM_HIDDEN_EXPL": "Les utilisateurs anonymes ont besoin d’un lien direct pour accéder à cet album.", + "ALBUM_MARK_NSFW": "Marquer cet album comme sensible", + "ALBUM_UNMARK_NSFW": "Retirer la marque «album sensible»", + "ALBUM_NSFW": "Sensible", + "ALBUM_NSFW_EXPL": "Cet album contient des photos pouvant choquer les utilisateurs.", + "ALBUM_DOWNLOADABLE": "Téléchargeable", + "ALBUM_DOWNLOADABLE_EXPL": "Les utilisateurs anonymes peuvent télécharger cet album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Visibilité du bouton de partage.", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Les utilisateurs anonymes peuvent voir les liens de partage sur les média sociaux.", + "ALBUM_PASSWORD": "Mot de passe", + "ALBUM_PASSWORD_PROT": "Protéger par un mot de passe.", + "ALBUM_PASSWORD_PROT_EXPL": "Les utilisateurs anonymes ont besoin d’un mot de passe partagé pour accéder à cet album.", + "ALBUM_PASSWORD_REQUIRED": "Cet album est protégé par un mot de passe. Entrez le mot de passe pour afficher les photos de cet album :", + "ALBUM_MERGE": "Voulez-vous vraiment fusionner l’album «%1$s» dans l’album «%2$s» ?", + "ALBUMS_MERGE": "Voulez-vous vraiment fusionner les albums selectionnés avec l’album «%s»?", + "MERGE_ALBUM": "Fusionner les albums", + "DONT_MERGE": "Ne pas fusionner.", + "ALBUM_MOVE": "Voulez-vous vraiment déplacer l’album «%1$s» dans l’album «%2$s» ?", + "ALBUMS_MOVE": "Voulez-vous vraiment déplacer les albums selectionnés dans l’album «%s» ?", + "MOVE_ALBUMS": "Déplacer les albums", + "NOT_MOVE_ALBUMS": "Ne pas déplacer", + "ROOT": "Albums", + "ALBUM_REUSE": "Réutilisation", + "ALBUM_LICENSE": "License", + "ALBUM_SET_LICENSE": "Sélectionner une license", + "ALBUM_LICENSE_HELP": "Un doute sur le choix ?", + "ALBUM_LICENSE_NONE": "Aucune", + "ALBUM_RESERVED": "Tous droits réservés", + "ALBUM_SET_ORDER": "Changer l’ordre", + "ALBUM_ORDERING": "Trier par", + "ALBUM_PHOTO_ORDERING": "Trier les photos par", + "ALBUM_CHILDREN_ORDERING": "Tier les sous-albums par", + "ALBUM_OWNER": "Propriétaire", + "PHOTO_ABOUT": "À propos", + "PHOTO_BASICS": "Informations de base", + "PHOTO_TITLE": "Titre", + "PHOTO_NEW_TITLE": "Entrer un nouveau titre pour cette photo :", + "PHOTO_SET_TITLE": "Choisir un titre", + "PHOTO_UPLOADED": "Uploadé", + "PHOTO_DESCRIPTION": "Description", + "PHOTO_NEW_DESCRIPTION": "Entrez une nouvelle description pour cette photo :", + "PHOTO_SET_DESCRIPTION": "Choisir une description", + "PHOTO_NEW_LICENSE": "Ajouter une License", + "PHOTO_SET_LICENSE": "Sélectionner License", + "PHOTO_LICENSE": "License", + "PHOTO_LICENSE_HELP": "Un doute sur le choix ?", + "PHOTO_REUSE": "Réutilisation", + "PHOTO_LICENSE_NONE": "Aucune", + "PHOTO_RESERVED": "Tous droits réservés", + "PHOTO_LATITUDE": "Latitude", + "PHOTO_LONGITUDE": "Longitude", + "PHOTO_ALTITUDE": "Altitude", + "PHOTO_IMGDIRECTION": "Direction", + "PHOTO_LOCATION": "Localisation", + "PHOTO_IMAGE": "Image", + "PHOTO_VIDEO": "Vidéo", + "PHOTO_SIZE": "Dimension", + "PHOTO_FORMAT": "Format", + "PHOTO_RESOLUTION": "Résolution", + "PHOTO_DURATION": "Durée", + "PHOTO_FPS": "Fréquence", + "PHOTO_TAGS": "Étiquettes", + "PHOTO_NOTAGS": "Pas d’étiquettes", + "PHOTO_NEW_TAGS": "Entrez vos étiquettes pour cette photo. Vous pouvez ajouter plusieurs étiquettes en les séparant avec une virgule :", + "PHOTOS_NEW_TAGS": "Entrez vos étiquettes pour toutes les %d photos selectionnées. Les tags existants seront remplacés. Vous pouvez ajouter plusieurs tags en les séparant avec une virgule :", + "PHOTO_SET_TAGS": "Établir les étiquettes", + "PHOTO_CAMERA": "Appareil", + "PHOTO_CAPTURED": "Date de prise de vue", + "PHOTO_MAKE": "Marque", + "PHOTO_TYPE": "Modèle", + "PHOTO_LENS": "Objectif", + "PHOTO_SHUTTER": "Durée d’exposition", + "PHOTO_APERTURE": "Ouverture", + "PHOTO_FOCAL": "Distance focale", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Partager", + "PHOTO_DELETE": "Supprimer la photo", + "PHOTO_KEEP": "Garder la photo", + "PHOTO_DELETE_CONFIRMATION": "Voulez-vous vraiment supprimer la photo «%s» ? Cette action est irréversible !", + "PHOTO_DELETE_ALL": "Voulez-vous vraiment supprimer toutes les %d photos sélectionnées ? Cette action est irréversible !", + "PHOTOS_NEW_TITLE": "Entrer un titre pour toutes les %d photos sélectionnées :", + "PHOTO_MAKE_PRIVATE_ALBUM": "Cette photo est située dans un album public. Pour rendre cette photo privée ou publique, modifiez la visibilité de l’album associé.", + "PHOTO_SHOW_ALBUM": "Afficher l’album", + "PHOTO_PUBLIC": "Public", + "PHOTO_PUBLIC_EXPL": "Les utilisateurs anonymes peuvent visualiser cette photo sous réserve des restrictions suivantes.", + "PHOTO_FULL": "Originale", + "PHOTO_FULL_EXPL": "Les utilisateurs anonymes peuvent voir la photo en pleine résolution.", + "PHOTO_HIDDEN": "Cachée.", + "PHOTO_HIDDEN_EXPL": "Les utilisateurs anonymes ont besoin d’un lien direct pour voir cette photo.", + "PHOTO_DOWNLOADABLE": "Téléchargeable.", + "PHOTO_DOWNLOADABLE_EXPL": "Les utilisateurs anonymes peuvent télécharger cette photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Visibilité du bouton de partage", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Les utilisateurs anonymes peuvent voir les liens de partage sur les média sociaux.", + "PHOTO_PASSWORD_PROT": "Protéger par un mot de passe.", + "PHOTO_PASSWORD_PROT_EXPL": "Les utilisateurs anonymes ont besoin d’un mot de passe partagé pour voir cette photo.", + "PHOTO_EDIT_SHARING_TEXT": "Les propriété de partages de cette photo seront changé pour les suivantes :", + "PHOTO_NO_EDIT_SHARING_TEXT": "Parce que cette photo est dans un album public, elle hérite des propriété de partage de l’album. Sa visibilité est montrée ci dessous pour votre information.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "La visibilité de cette photo est ajustable avec les paramètres generaux de Lychee. Sa visibilité est montrée ci dessous pour votre information.", + "PHOTO_NEW_CREATED_AT": "Entrez la date d’upload de cette photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Changer la date", + "LOADING": "Chargement en cours", + "ERROR": "Erreur", + "ERROR_TEXT": "Il semble qu’une erreur soit survenue. Veuillez rafraichir la page et réessayer !", + "ERROR_UNKNOWN": "Une erreur inattendue est survenue. Veuillez réessayer et vérifier votre installation et votre serveur. Consultez le fichier Readme pour obtenir plus d’information.", + "ERROR_MAP_DEACTIVATED": "La carte a été désactivée dans les paramètres.", + "ERROR_SEARCH_DEACTIVATED": "La recherche a été désactivée dans les paramètres.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Changement réussi.", + "RETRY": "Réessayer", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Informations de connexions mise à jour.", + "SETTINGS_SUCCESS_SORT": "Ordre d’affichage mis à jour.", + "SETTINGS_SUCCESS_DROPBOX": "Clé Dropbox mise à jour.", + "SETTINGS_SUCCESS_LANG": "Langage mis à jour.", + "SETTINGS_SUCCESS_LAYOUT": "Affichage mis à jour.", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "Overlay EXIF mis à jour.", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Recherche publique mise à jour.", + "SETTINGS_SUCCESS_LICENSE": "License par défaut mise à jour.", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Paramètres de la carte mis à jour.", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Paramètres de la carte pour les albums publics mis à jour.", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Fournisseur de la Carte mis à jour.", + "SETTINGS_SUCCESS_CSS": "Stylesheets mise à jour.", + "SETTINGS_SUCCESS_JS": "JS mise à jour.", + "SETTINGS_SUCCESS_UPDATE": "Paramètres mis à jour avec succes.", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changer les paramètres avancés peut influencer la stabilité, la securité et les performances de Lychee. Modifiez à vos risques et périls.", + "SETTINGS_ADVANCED_SAVE": "Sauvegarder mes modifications, j’accepte le risque !", + "U2F_NOT_SUPPORTED": "U2F non suporté. Desolé.", + "U2F_NOT_SECURE": "Environment non sécurisé. U2F non disponible.", + "U2F_REGISTER_KEY": "Enregistrer une nouvelle clé.", + "U2F_REGISTRATION_SUCCESS": "Enregistrement réussi !", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentification réussie !", + "U2F_CREDENTIALS": "Clés", + "U2F_CREDENTIALS_DELETED": "Clé supprimée !", + "U2F_LOGIN": "Connexion avec WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Envoyer les notifications de nouvelles photos par emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "Notification de nouvelles photos mise à jour", + "USER_EMAIL_INSTRUCTION": "Ajouter votre email Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Nouvel utilisateur", + "LOGIN_PASSWORD": "Nouveau Mot de passe", + "LOGIN_PASSWORD_CONFIRM": "Confirmez le mot de passe", + "PASSWORD_TITLE": "Entrez votre mot de passe existant :", + "PASSWORD_CURRENT": "Mot de passe existant :", + "PASSWORD_TEXT": "Vos identifiants seront modifiés comme suit :", + "PASSWORD_CHANGE": "Modifier les informations de connexion", + "EDIT_SHARING_TITLE": "Modifier le partage", + "EDIT_SHARING_TEXT": "Les propriétés de partage de cet album vont être modifiées comme suit :", + "SHARE_ALBUM_TEXT": "Cet album sera partagé avec les propriétés suivantes :", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribut", + "SORT_DIALOG_ORDER_LABEL": "Ordre", + "SORT_ALBUM_BY": "Trier les albums %1$s dans l’ordre %2$s.", + "SORT_ALBUM_SELECT_1": "Heure de création", + "SORT_ALBUM_SELECT_2": "Titre", + "SORT_ALBUM_SELECT_3": "Description", + "SORT_ALBUM_SELECT_5": "Prise de vue la plus récente", + "SORT_ALBUM_SELECT_6": "Prise de vue la plus ancienne", + "SORT_PHOTO_BY": "Trier les photos %1$s dans l’ordre %2$s.", + "SORT_PHOTO_SELECT_1": "Date d’upload", + "SORT_PHOTO_SELECT_2": "Date de prise de vue", + "SORT_PHOTO_SELECT_3": "Titre", + "SORT_PHOTO_SELECT_4": "Description", + "SORT_PHOTO_SELECT_6": "Favoris", + "SORT_PHOTO_SELECT_7": "Format de la photo", + "SORT_ASCENDING": "Croissant", + "SORT_DESCENDING": "Décroissant", + "SORT_CHANGE": "Modifier le tri", + "DROPBOX_TITLE": "Définir une clé Dropbox", + "DROPBOX_TEXT": "Pour pouvoir importer des photos à partir de votre Dropbox, vous aurez besoin d’une clé d’application «drop-ins» valide à créer sur leur site<\/a>. Générez votre clé personnelle et puis entrez-la ci-dessous :", + "LANG_TEXT": "Remplacer la langue de Lychee par :", + "LANG_TITLE": "Changer la langue", + "SETTING_RECENT_PUBLIC_TEXT": "Rendre l’album \"Recent\" accessible à tous publics", + "SETTING_STARRED_PUBLIC_TEXT": "Rendre l’album \"Favoris\" accessible à tous publics", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Rendre l’album \"Ce jour-là\" accessible à tous publics", + "CSS_TEXT": "Personaliser le CSS :", + "CSS_TITLE": "Changer le CSS", + "JS_TEXT": "Personaliser le JS:", + "JS_TITLE": "Changer le code JS", + "PUBLIC_SEARCH_TEXT": "Recherche publique autorisée :", + "OVERLAY_TYPE": "Informations à utiliser pour l’overlay :", + "OVERLAY_NONE": "Pas d’overlay", + "OVERLAY_EXIF": "Informations EXIF", + "OVERLAY_DESCRIPTION": "Description de la photo", + "OVERLAY_DATE": "Date de la photo", + "ALBUM_DECORATION": "Décorations des album:", + "ALBUM_DECORATION_NONE": "Pas de décorations", + "ALBUM_DECORATION_ORIGINAL": "Montrer la présence de sous-album", + "ALBUM_DECORATION_ALBUM": "Montrer le nombre de sous-album", + "ALBUM_DECORATION_PHOTO": "Montrer le nombre de photos", + "ALBUM_DECORATION_ALL": "Montrer le nombre de sous-album et de photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation des décorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontale (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontale (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Verticale (photos au-dessus, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Verticale (albums au-dessus, photos)", + "MAP_DISPLAY_TEXT": "Activer les cartes (fourni par OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Activer les cartes pour les albums publics (fourni par OpenStreetMap):", + "MAP_PROVIDER": "Fournisseur de cartes OpenStreetMap :", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (no HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (no HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (no HiDPI)", + "MAP_PROVIDER_RRZE": "University de Erlangen, Allemagne (only HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Inclure les photos des sous-albums sur la carte :", + "LOCATION_DECODING": "Convertir les informations GPS en nom de localisation", + "LOCATION_SHOW": "Montrer le nom de la localisation", + "LOCATION_SHOW_PUBLIC": "Montrer le nom de la localisation en mode public", + "LAYOUT_TYPE": "Affichage des photos :", + "LAYOUT_SQUARES": "Miniatures carrées", + "LAYOUT_JUSTIFIED": "En proportions, justifiées", + "LAYOUT_MASONRY": "En proportion, Maçonnerie", + "LAYOUT_GRID": "En proportion, Grille", + "LAYOUT_UNJUSTIFIED": "En proportions, non-justifiées", + "SET_LAYOUT": "Changer l’affichage", + "NSFW_VISIBLE_TEXT_1": "Rende les albums sensible visible par défaut.", + "NSFW_VISIBLE_TEXT_2": "Si l’album est public, il est toujours accessible, juste masqué et peut-être révélé avec la touche H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Visibilé par default des albums sensible mis à jour.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Contenu Sensible", + "NSFW_EXPLANATION": "Cet album contient des contenus sensible que certaine personnes peuvent trouver chocant ou troublant.", + "TAP_CONSENT": "Tap pour consentir.", + "VIEW_NO_RESULT": "Aucun résultat", + "VIEW_NO_PUBLIC_ALBUMS": "Aucun album public", + "VIEW_NO_CONFIGURATION": "Aucune configuration", + "VIEW_PHOTO_NOT_FOUND": "Photo introuvable", + "NO_TAGS": "Aucun tag", + "UPLOAD_MANAGE_NEW_PHOTOS": "Vous pouvez désormais gérer vos nouvelles photos.", + "UPLOAD_COMPLETE": "Upload terminé", + "UPLOAD_COMPLETE_FAILED": "L’Upload d’une ou plusieurs photos a échoué.", + "UPLOAD_IMPORTING": "Importation", + "UPLOAD_IMPORTING_URL": "Importation depuis l’URL", + "UPLOAD_UPLOADING": "Upload en cours", + "UPLOAD_FINISHED": "Terminé", + "UPLOAD_PROCESSING": "Traitement", + "UPLOAD_FAILED": "Échec", + "UPLOAD_FAILED_ERROR": "L’upload a échoué. Le serveur a retourné une erreur !", + "UPLOAD_FAILED_WARNING": "L’upload a échoué. Le serveur a retourné un avertissement !", + "UPLOAD_CANCELLED": "Annulé", + "UPLOAD_SKIPPED": "Ignoré", + "UPLOAD_UPDATED": "Mis à jour", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "Cette photo a été sautée parce qu’elle est deja dans votre gallerie.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "Cette photo a été sautée parce qu’elle est deja dans votre gallerie, mais ses metadatas ont été mises à jour.", + "UPLOAD_ERROR_CONSOLE": "Veuillez consulter la console de votre navigateur pour obtenir plus de détails.", + "UPLOAD_UNKNOWN": "Le serveur a retourné une reponse inconnue. Veuillez consulter la console de votre navigateur pour obtenir plus de détails.", + "UPLOAD_ERROR_UNKNOWN": "L’upload a échoué. Le serveur a retourné une erreur inconnue !", + "UPLOAD_ERROR_POSTSIZE": "L’upload a échoué. PHP post_max_size est peut-être trop petit ! Sinon consultez la FAQ.", + "UPLOAD_ERROR_FILESIZE": "L’upload a échoué. PHP upload_max_filesize est peut-être trop petit ! Sinon consultez la FAQ.", + "UPLOAD_IN_PROGRESS": "Lychee est en cours de téléchargement !", + "UPLOAD_IMPORT_WARN_ERR": "L’importation est terminée, mais des erreurs ou des avertissements ont été retournés. Veuillez consulter le fichier de Log (Paramètres -> Afficher les logs) pour obtenir plus de détails.", + "UPLOAD_IMPORT_COMPLETE": "Importation terminée", + "UPLOAD_IMPORT_INSTR": "Veuillez entrer un lien direct vers une photo pour l’importer :", + "UPLOAD_IMPORT": "Importer", + "UPLOAD_IMPORT_SERVER": "Importation à partir du serveur", + "UPLOAD_IMPORT_SERVER_FOLD": "Dossier vide ou aucun fichier lisible à traiter. Veuillez consulter le journal (Paramètres -> Afficher le journal) pour obtenir plus de détails.", + "UPLOAD_IMPORT_SERVER_INSTR": "Cette action importera toutes les photos ainsi que tous les dossiers et sous-dossiers situés dans les répertoires suivants séparés par des espaces. Utilisez \\ pour les espaces dans les chemins.", + "UPLOAD_ABSOLUTE_PATH": "Chemin absolu des répertoires, séparés par des espaces", + "UPLOAD_IMPORT_SERVER_EMPT": "Impossible de démarrer l’importation car le dossier était vide !", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Supprimer les originaux", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Les fichiers originaux seront supprimés après l’importation lorsque cela est possible.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Liens symboliques", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Importer les fichier en utilisant des liens symboliques vers les originaux.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Sauter les doublons", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Les médias déjà existants seront sautés files.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Mettre à jour les metadatas", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Mettre à jour les metadatas des fichiers existants.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "Le processus d’importation du serveur approche la limite de la mémoire disponible et peut être terminé prématurément.", + "UPLOAD_WARNING": "Attention", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "Le chemin fourni n’est pas un reportoire lisible !", + "UPLOAD_IMPORT_PATH_RESERVED": "Le chemin fourni est reservé à Lychee !", + "UPLOAD_IMPORT_FAILED": "Impossible d’importer le fichier !", + "UPLOAD_IMPORT_UNSUPPORTED": "Type de fichier non supporté !", + "UPLOAD_IMPORT_CANCELLED": "Import annulé", + "ABOUT_SUBTITLE": "Hebergement personalisé de photo à votre façon !", + "ABOUT_DESCRIPTION": "Lychee<\/a> est une outil de gestion de gallerie gratuit qui fonctionne sur votre propre serveur. L’installation est rapide. Uploadez, gérez et partagez vos photos comme avec une application propre. Lychee vous fourni tout ce dont vous avez besoin et vos photos sont stockées en sécurité chez vous.", + "FOOTER_COPYRIGHT": "Toutes les images de ce site Web sont protégées par le droit d’auteur par %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Hébergé par Lychee", + "URL_COPY_TO_CLIPBOARD": "Copier dans le presse-papier", + "URL_COPIED_TO_CLIPBOARD": "l’URL a été copiée dans le presse-papier !", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Liens directs pour les fichier de l’image :", + "PHOTO_ORIGINAL": "Taille originale", + "PHOTO_MEDIUM": "Moyenne taille", + "PHOTO_MEDIUM_HIDPI": "Moyenne taille HiDPI", + "PHOTO_SMALL": "Petite taille", + "PHOTO_SMALL_HIDPI": "Petite taille HiDPI", + "PHOTO_THUMB": "Mignature carrée", + "PHOTO_THUMB_HIDPI": "Mignature carrée HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Partie vidéo d’une live-photo", + "PHOTO_VIEW": "Vue photo de Lychee :", + "PHOTO_EDIT_ROTATECWISE": "Pivoter dans le sens des aiguilles d’une montre.", + "PHOTO_EDIT_ROTATECCWISE": "Pivoter dans le sens contraire des aiguilles d’une montre.", + "ERROR_GPX": "Erreur lors du chargement du fichier GPX : ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Merci de sélectionner soit des albums, soit des photos !", + "ERROR_COULD_NOT_FIND": "Nous ne trouvons pas ce que vous cherchez.", + "ERROR_INVALID_EMAIL": "Email non valide.", + "EMAIL_SUCCESS": "Email mis à jour !", + "ERROR_PHOTO_NOT_FOUND": "Erreur : photo %s non trouvée !", + "ERROR_EMPTY_USERNAME": "Le nom d utilisateur ne peut être vide.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "Le nouveau mot de passe ne correspondent pas.", + "ERROR_EMPTY_PASSWORD": "Le nouveau mot de passe ne peut pas être vide.", + "ERROR_SELECT_ALBUM": "Sélectionnez un album à partager !", + "ERROR_SELECT_USER": "Sélectionnez un utilisateur avec qui partager !", + "ERROR_SELECT_SHARING": "Sélectionnez un partage à retirer !", + "SHARING_SUCCESS": "Partage mis à jour !", + "SHARING_REMOVED": "Partage supprimé !", + "USER_CREATED": "Utilisateur créé !", + "USER_DELETED": "Utilisateur supprimé !", + "USER_UPDATED": "Utilisateur mis à jour !", + "ENTER_EMAIL": "Entrer une address email :", + "ERROR_ALBUM_JSON_NOT_FOUND": "Erreur : Album json non trouvé !", + "ERROR_ALBUM_NOT_FOUND": "Erreur : album %s non trouvé", + "ERROR_DROPBOX_KEY": "Erreur : Dropbox key vide", + "ERROR_SESSION": "La session a expiré.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "Nouveau mot de passe", + "ALLOW_UPLOADS": "Authoriser les uploads", + "ALLOW_USER_SELF_EDIT": "Authoriser l’auto-gestion de compte utilisateur", + "OSM_CONTRIBUTORS": "Contributeur OpenStreetMap" + }, + "maintenance": { + "title": "Maintenance", + "description": "Vous trouverez sur cette page toutes les actions necessaire au bon fonctionment de Lychee.", + "cleaning": { + "title": "Nettoyer %s", + "result": "%s supprimé.", + "description": "Supprimer le contenu de %s<\/span>", + "button": "Nettoyer" + }, + "fix-jobs": { + "title": "Réparer l’historique des Jobs", + "description": "Marquer les jobs avec status %s<\/span> ou %s<\/span> comme %s<\/span>.", + "button": "Réparer l’historique" + }, + "gen-sizevariants": { + "title": "%s manquants", + "description": "Nous avons trouvé %d %s qui peuvent être générés.", + "button": "Générer !", + "success": "Nous avons créé %d %s avec succès." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Statistique d’arbres", + "Oddness": "Imparité", + "Duplicates": "Duplicata", + "Wrong parents": "Mauvais parents", + "Missing parents": "Parents manquants", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimisation de la base de donnée", + "description": "Si vous remarquez que votre installation est devenue lente, il est possible que votre base de donnée n’ai pas les index requis.", + "button": "Optimiser la base de donnée" + }, + "update": { + "title": "Mises à jour", + "check-button": "Vérifier les mise-à-jour", + "update-button": "Mettre à jour", + "no-pending-updates": "Aucune mise-à-jour disponible" + } + }, + "oauth": { + "NOT_AVAILABLE": "L’authentication via Oauth n’est pas disponible", + "SET_UP_CREDENTIALS": "Définissez vos identifiants dans le fichier .env", + "SET_UP_OAUTH": "Utiliser l’authentication Oauth", + "SET_UP": "Connectez-vous avec %s", + "TOKEN_REGISTERED": "%s connecté.", + "RESET": "oublier" + }, + "validation": { + "accepted": "Le champ {attribute} doit être accepté.", + "active_url": "Le champ {attribute} n'est pas une URL valide.", + "after": "Le champ {attribute} doit être une date postérieure au {date}.", + "after_or_equal": "Le champ {attribute} doit être une date postérieure ou égale au {date}.", + "alpha": "Le champ {attribute} doit contenir uniquement des lettres.", + "alpha_dash": "Le champ {attribute} doit contenir uniquement des lettres, des chiffres et des tirets.", + "alpha_num": "Le champ {attribute} doit contenir uniquement des chiffres et des lettres.", + "array": "Le champ {attribute} doit être un tableau.", + "before": "Le champ {attribute} doit être une date antérieure au {date}.", + "before_or_equal": "Le champ {attribute} doit être une date antérieure ou égale au {date}.", + "between": { + "array": "Le tableau {attribute} doit contenir entre {min} et {max} éléments.", + "file": "La taille du fichier de {attribute} doit être comprise entre {min} et {max} kilo-octets.", + "numeric": "La valeur de {attribute} doit être comprise entre {min} et {max}.", + "string": "Le texte {attribute} doit contenir entre {min} et {max} caractères." + }, + "boolean": "Le champ {attribute} doit être vrai ou faux.", + "confirmed": "Le champ de confirmation {attribute} ne correspond pas.", + "date": "Le champ {attribute} n'est pas une date valide.", + "date_format": "Le champ {attribute} ne correspond pas au format {format}.", + "different": "Les champs {attribute} et {other} doivent être différents.", + "digits": "Le champ {attribute} doit contenir {digits} chiffres.", + "digits_between": "Le champ {attribute} doit contenir entre {min} et {max} chiffres.", + "dimensions": "La taille de l'image {attribute} n'est pas conforme.", + "distinct": "Le champ {attribute} a une valeur en double.", + "email": "Le champ {attribute} doit être une adresse e-mail valide.", + "exists": "Le champ {attribute} sélectionné est invalide.", + "file": "Le champ {attribute} doit être un fichier.", + "filled": "Le champ {attribute} doit avoir une valeur.", + "gt": { + "array": "Le tableau {attribute} doit contenir plus de {value} éléments.", + "file": "La taille du fichier de {attribute} doit être supérieure à {value} kilo-octets.", + "numeric": "La valeur de {attribute} doit être supérieure à {value}.", + "string": "Le texte {attribute} doit contenir plus de {value} caractères." + }, + "gte": { + "array": "Le tableau {attribute} doit contenir au moins {value} éléments.", + "file": "La taille du fichier de {attribute} doit être supérieure ou égale à {value} kilo-octets.", + "numeric": "La valeur de {attribute} doit être supérieure ou égale à {value}.", + "string": "Le texte {attribute} doit contenir au moins {value} caractères." + }, + "image": "Le champ {attribute} doit être une image.", + "in": "Le champ {attribute} est invalide.", + "in_array": "Le champ {attribute} n'existe pas dans {other}.", + "integer": "Le champ {attribute} doit être un entier.", + "ip": "Le champ {attribute} doit être une adresse IP valide.", + "ipv4": "Le champ {attribute} doit être une adresse IPv4 valide.", + "ipv6": "Le champ {attribute} doit être une adresse IPv6 valide.", + "json": "Le champ {attribute} doit être un document JSON valide.", + "lt": { + "array": "Le tableau {attribute} doit contenir moins de {value} éléments.", + "file": "La taille du fichier de {attribute} doit être inférieure à {value} kilo-octets.", + "numeric": "La valeur de {attribute} doit être inférieure à {value}.", + "string": "Le texte {attribute} doit contenir moins de {value} caractères." + }, + "lte": { + "array": "Le tableau {attribute} doit contenir au plus {value} éléments.", + "file": "La taille du fichier de {attribute} doit être inférieure ou égale à {value} kilo-octets.", + "numeric": "La valeur de {attribute} doit être inférieure ou égale à {value}.", + "string": "Le texte {attribute} doit contenir au plus {value} caractères." + }, + "max": { + "array": "Le tableau {attribute} ne peut pas contenir plus que {max} éléments.", + "file": "La taille du fichier de {attribute} ne peut pas dépasser {max} kilo-octets.", + "numeric": "La valeur de {attribute} ne peut pas être supérieure à {max}.", + "string": "Le texte de {attribute} ne peut pas contenir plus de {max} caractères." + }, + "mimes": "Le champ {attribute} doit être un fichier de type : {values}.", + "mimetypes": "Le champ {attribute} doit être un fichier de type : {values}.", + "min": { + "array": "Le tableau {attribute} doit contenir au moins {min} éléments.", + "file": "La taille du fichier de {attribute} doit être supérieure ou égale à {min} kilo-octets.", + "numeric": "La valeur de {attribute} doit être supérieure ou égale à {min}.", + "string": "Le texte de {attribute} doit contenir au moins {min} caractères." + }, + "not_in": "Le champ {attribute} sélectionné n'est pas valide.", + "not_regex": "Le format du champ {attribute} n'est pas valide.", + "numeric": "Le champ {attribute} doit contenir un nombre.", + "present": "Le champ {attribute} doit être présent.", + "regex": "Le format du champ {attribute} est invalide.", + "required": "Le champ {attribute} est obligatoire.", + "required_if": "Le champ {attribute} est obligatoire quand la valeur de {other} est {value}.", + "required_unless": "Le champ {attribute} est obligatoire sauf si {other} est {values}.", + "required_with": "Le champ {attribute} est obligatoire quand {values} est présent.", + "required_with_all": "Le champ {attribute} est obligatoire quand {values} sont présents.", + "required_without": "Le champ {attribute} est obligatoire quand {values} n'est pas présent.", + "required_without_all": "Le champ {attribute} est requis quand aucun de {values} n'est présent.", + "same": "Les champs {attribute} et {other} doivent être identiques.", + "size": { + "array": "Le tableau {attribute} doit contenir {size} éléments.", + "file": "La taille du fichier de {attribute} doit être de {size} kilo-octets.", + "numeric": "La valeur de {attribute} doit être {size}.", + "string": "Le texte de {attribute} doit contenir {size} caractères." + }, + "string": "Le champ {attribute} doit être une chaîne de caractères.", + "timezone": "Le champ {attribute} doit être un fuseau horaire valide.", + "unique": "La valeur du champ {attribute} est déjà utilisée.", + "uploaded": "Le fichier du champ {attribute} n'a pu être téléversé.", + "url": "Le format de l'URL de {attribute} n'est pas valide.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/hu.json b/lang/hu.json new file mode 100644 index 00000000000..da8d0cdd90d --- /dev/null +++ b/lang/hu.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Felhasználónév", + "PASSWORD": "Jelszó", + "ENTER": "Belépés", + "CANCEL": "Mégse", + "CONFIRM": "Confirm", + "SIGN_IN": "Bejelentkezés", + "CLOSE": "Bezárás", + "SETTINGS": "Beállítások", + "SEARCH": "Keresés …", + "MORE": "Több", + "DEFAULT": "alapértelmezett", + "GALLERY": "Galéria", + "USERS": "Felhasználók", + "PROFILE": "Profile", + "CREATE": "Létrehozás", + "REMOVE": "Törlés", + "SHARE": "Megosztás", + "U2F": "2 faktoros azonosítás", + "NOTIFICATIONS": "Értesítések", + "SHARING": "Megosztás", + "CHANGE_LOGIN": "Bejelentkezés módosítása", + "CHANGE_SORTING": "Rendezés módosítása", + "SET_DROPBOX": "Dropbox beállítása", + "ABOUT_LYCHEE": "A Lychee-ről", + "DIAGNOSTICS": "Diagnosztika", + "DIAGNOSTICS_GET_SIZE": "Térhasználat lekérése", + "JOBS": "Show job history", + "LOGS": "Naplók megtekintése", + "SIGN_OUT": "Kijelentkezés", + "UPDATE_AVAILABLE": "Frissítés elérhető!", + "MIGRATION_AVAILABLE": "Migráció elérhető!", + "CHECK_FOR_UPDATE": "Frissítések keresése", + "DEFAULT_LICENSE": "Alapértelmezett licenc új feltöltésekhez:", + "SET_LICENSE": "Licenc beállítása", + "SET_OVERLAY_TYPE": "Átlátszó réteg beállítása", + "SET_ALBUM_DECORATION": "Album díszítések beállítása", + "SET_MAP_PROVIDER": "OpenStreetMap csempék szolgáltatójának beállítása", + "FULL_SETTINGS": "Teljes beállítások", + "UPDATE": "Frissítés", + "RESET": "Alaphelyzetbe állítás", + "DISABLE_TOKEN_TOOLTIP": "Letiltás", + "ENABLE_TOKEN": "API token engedélyezése", + "DISABLED_TOKEN_STATUS_MSG": "Letiltott", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "Már megtekintetted ezt a tokent.", + "TOKEN_WAIT": "Várakozás ...", + "SMART_ALBUMS": "Okos albumok", + "SHARED_ALBUMS": "Megosztott albumok", + "ALBUMS": "Albumok", + "PHOTOS": "Fényképek", + "SEARCH_RESULTS": "Keresési eredmények", + "RENAME": "Átnevezés", + "RENAME_ALL": "Kijelöltek átnevezése", + "MERGE": "Összevonás", + "MERGE_ALL": "Kijelöltek összevonása", + "MAKE_PUBLIC": "Nyilvánosságra hozás", + "SHARE_ALBUM": "Album megosztása", + "SHARE_PHOTO": "Fotó megosztása", + "VISIBILITY_ALBUM": "Album láthatósága", + "VISIBILITY_PHOTO": "Fotó láthatósága", + "DOWNLOAD_ALBUM": "Album letöltése", + "ABOUT_ALBUM": "Az albumról", + "DELETE_ALBUM": "Album törlése", + "MOVE_ALBUM": "Album áthelyezése", + "FULLSCREEN_ENTER": "Teljes képernyőre váltás", + "FULLSCREEN_EXIT": "Kilépés a teljes képernyőből", + "SHARING_ALBUM_USERS": "Az album megosztása felhasználókkal", + "WAIT_FETCH_DATA": "Kérjük, várjon, amíg lekérdezzük az adatokat …", + "SHARING_ALBUM_USERS_NO_USERS": "Nincsenek felhasználók, akikkel meg lehetne osztani az albumot", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Válassza ki a felhasználókat, akikkel megosztja ezt az albumot", + "DELETE_ALBUM_QUESTION": "Album és fényképek törlése", + "KEEP_ALBUM": "Album megtartása", + "DELETE_ALBUM_CONFIRMATION": "Biztosan törölni szeretné a(z) „%s” nevű albumot és az összes benne lévő fényképet? Ezt a műveletet nem lehet visszavonni!", + "DELETE_TAG_ALBUM_QUESTION": "Album törlése", + "DELETE_TAG_ALBUM_CONFIRMATION": "Biztosan törölni szeretné a(z) „%s” nevű albumot (a benne lévő fényképek nem kerülnek törlésre)? Ezt a műveletet nem lehet visszavonni!", + "DELETE_ALBUMS_QUESTION": "Albumok és fényképek törlése", + "KEEP_ALBUMS": "Albumok megtartása", + "DELETE_ALBUMS_CONFIRMATION": "Biztosan törölni szeretné az összes %d kijelölt albumot és az azokban lévő összes fényképet? Ezt a műveletet nem lehet visszavonni!", + "DELETE_UNSORTED_CONFIRM": "Biztosan törölni szeretné az összes fotót a \"Nem rendezett\" albumból? Ezt a műveletet nem lehet visszavonni!", + "CLEAR_UNSORTED": "Nem rendezett törlése", + "KEEP_UNSORTED": "Nem rendezett megtartása", + "EDIT_SHARING": "Megosztás szerkesztése", + "MAKE_PRIVATE": "Priváttá tétel", + "CLOSE_ALBUM": "Album bezárása", + "CLOSE_PHOTO": "Fotó bezárása", + "CLOSE_MAP": "Térkép bezárása", + "ADD": "Hozzáadás", + "MOVE": "Áthelyezés", + "MOVE_ALL": "Kijelöltek áthelyezése", + "DUPLICATE": "Másolás", + "DUPLICATE_ALL": "Kijelöltek másolása", + "COPY_TO": "Másolás ide …", + "COPY_ALL_TO": "Kijelöltek másolása ide …", + "DELETE": "Törlés", + "SAVE": "Mentés", + "DELETE_ALL": "Kijelöltek törlése", + "DOWNLOAD": "Letöltés", + "DOWNLOAD_ALL": "Kijelöltek letöltése", + "UPLOAD_PHOTO": "Fénykép feltöltése", + "IMPORT_LINK": "Importálás hivatkozásból", + "IMPORT_DROPBOX": "Importálás Dropboxból", + "IMPORT_SERVER": "Importálás szerverről", + "NEW_ALBUM": "Új album", + "NEW_TAG_ALBUM": "Új címkézett album", + "UPLOAD_TRACK": "Zeneszám feltöltése", + "DELETE_TRACK": "Zeneszám törlése", + "TITLE_NEW_ALBUM": "Adjon meg egy címet az új albumnak:", + "UNTITLED": "Cím nélküli", + "UNSORTED": "Nem rendezett", + "STARRED": "Kedvencek", + "RECENT": "Legutóbbi", + "PUBLIC": "Nyilvános", + "ON_THIS_DAY": "Ezen a napon", + "NUM_PHOTOS": "Fényképek", + "CREATE_ALBUM": "Album létrehozása", + "CREATE_TAG_ALBUM": "Címke album létrehozása", + "STAR_PHOTO": "Kedvenc fotó", + "STAR": "Kedvenc", + "UNSTAR": "Nem kedvenc", + "STAR_ALL": "Összes kedvenc", + "UNSTAR_ALL": "Összes nem kedvenc", + "TAG": "Címke", + "TAG_ALL": "Összes címke", + "UNSTAR_PHOTO": "Fotó kedvencjelölésének eltávolítása", + "SET_COVER": "Album borítójának beállítása", + "REMOVE_COVER": "Album borítójának eltávolítása", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Eredeti megnyitása", + "ABOUT_PHOTO": "A fotóról", + "DISPLAY_FULL_MAP": "Térkép", + "DIRECT_LINK": "Közvetlen hivatkozás", + "DIRECT_LINKS": "Közvetlen hivatkozások", + "QR_CODE": "QR kód", + "ALBUM_ABOUT": "Névjegy", + "ALBUM_BASICS": "Alapok", + "ALBUM_TITLE": "Cím", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Adjon meg egy új címet ennek az albumnak:", + "ALBUMS_NEW_TITLE": "Adjon meg címet az összes %d kiválasztott albumnak:", + "ALBUM_SET_TITLE": "Cím beállítása", + "ALBUM_DESCRIPTION": "Leírás", + "ALBUM_SHOW_TAGS": "Megjelenítendő címkék", + "ALBUM_NEW_DESCRIPTION": "Adjon meg egy új leírást ennek az albumnak:", + "ALBUM_SET_DESCRIPTION": "Leírás beállítása", + "ALBUM_NEW_SHOWTAGS": "Adjon meg olyan fényképek címkéit, amelyek láthatóak lesznek ebben az albumban:", + "ALBUM_SET_SHOWTAGS": "Megjelenítendő címkék beállítása", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Létrehozva", + "ALBUM_IMAGES": "Képek", + "ALBUM_VIDEOS": "Videók", + "ALBUM_SUBALBUMS": "Al-albumok", + "ALBUM_SHARING": "Megosztás", + "ALBUM_SHR_YES": "IGEN", + "ALBUM_SHR_NO": "Nem", + "ALBUM_PUBLIC": "Nyilvános", + "ALBUM_PUBLIC_EXPL": "Az anonim felhasználók hozzáférhetnek ehhez az albumhoz a következő korlátozások betartásával.", + "ALBUM_FULL": "Eredeti", + "ALBUM_FULL_EXPL": "Az anonim felhasználók megnézhetik a teljes felbontású fényképeket.", + "ALBUM_HIDDEN": "Rejtett", + "ALBUM_HIDDEN_EXPL": "Az anonim felhasználóknak közvetlen hivatkozásra van szükségük ennek az albumnak az eléréséhez.", + "ALBUM_MARK_NSFW": "Album megjelölése érzékeny tartalomként", + "ALBUM_UNMARK_NSFW": "Album érzékeny tartalomként jelölésének eltávolítása", + "ALBUM_NSFW": "Érzékeny tartalom", + "ALBUM_NSFW_EXPL": "Az album érzékeny tartalmat tartalmaz.", + "ALBUM_DOWNLOADABLE": "Letölthető", + "ALBUM_DOWNLOADABLE_EXPL": "Az anonim felhasználók letölthetik ezt az albumot.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Megosztás gomb látható", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Az anonim felhasználók láthatják a közösségi média megosztási linkeket.", + "ALBUM_PASSWORD": "Jelszó", + "ALBUM_PASSWORD_PROT": "Jelszóval védett", + "ALBUM_PASSWORD_PROT_EXPL": "Az anonim felhasználóknak megosztott jelszóra van szükségük ennek az albumnak az eléréséhez.", + "ALBUM_PASSWORD_REQUIRED": "Ezt az albumot jelszó véd. Az album fényképeinek megtekintéséhez adja meg a jelszót:", + "ALBUM_MERGE": "Biztosan össze akarja olvasztani a(z) „%1$s” albumot a(z) „%2$s” albumba?", + "ALBUMS_MERGE": "Biztosan össze akarja olvasztani az összes kiválasztott albumot a(z) „%s” albumba?", + "MERGE_ALBUM": "Albumok összeolvasztása", + "DONT_MERGE": "Ne olvassza össze", + "ALBUM_MOVE": "Biztosan át akarja mozgatni a(z) „%1$s” albumot a(z) „%2$s” albumba?", + "ALBUMS_MOVE": "Biztosan át akarja mozgatni az összes kiválasztott albumot a(z) „%s” albumba?", + "MOVE_ALBUMS": "Albumok áthelyezése", + "NOT_MOVE_ALBUMS": "Ne helyezze át", + "ROOT": "Albumok", + "ALBUM_REUSE": "Újrafelhasználás", + "ALBUM_LICENSE": "Licenc", + "ALBUM_SET_LICENSE": "Licenc beállítása", + "ALBUM_LICENSE_HELP": "Segítségre van szüksége a választáshoz?", + "ALBUM_LICENSE_NONE": "Nincs", + "ALBUM_RESERVED": "Minden jog fenntartva", + "ALBUM_SET_ORDER": "Sorrend beállítása", + "ALBUM_ORDERING": "Sorrend:", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Tulajdonos", + "PHOTO_ABOUT": "Névjegy", + "PHOTO_BASICS": "Alapok", + "PHOTO_TITLE": "Cím", + "PHOTO_NEW_TITLE": "Adjon meg egy új címet ennek a fényképnek:", + "PHOTO_SET_TITLE": "Cím beállítása", + "PHOTO_UPLOADED": "Feltöltve", + "PHOTO_DESCRIPTION": "Leírás", + "PHOTO_NEW_DESCRIPTION": "Adjon meg egy új leírást ennek a fényképnek:", + "PHOTO_SET_DESCRIPTION": "Leírás beállítása", + "PHOTO_NEW_LICENSE": "Licenc hozzáadása", + "PHOTO_SET_LICENSE": "Licenc beállítása", + "PHOTO_LICENSE": "Licenc", + "PHOTO_LICENSE_HELP": "Segítségre van szüksége a választáshoz?", + "PHOTO_REUSE": "Újrafelhasználás", + "PHOTO_LICENSE_NONE": "Nincs", + "PHOTO_RESERVED": "Minden jog fenntartva", + "PHOTO_LATITUDE": "Szélesség", + "PHOTO_LONGITUDE": "Hosszúság", + "PHOTO_ALTITUDE": "Magasság", + "PHOTO_IMGDIRECTION": "Irány", + "PHOTO_LOCATION": "Hely", + "PHOTO_IMAGE": "Kép", + "PHOTO_VIDEO": "Videó", + "PHOTO_SIZE": "Méret", + "PHOTO_FORMAT": "Formátum", + "PHOTO_RESOLUTION": "Felbontás", + "PHOTO_DURATION": "Időtartam", + "PHOTO_FPS": "Képfrissítési ráta", + "PHOTO_TAGS": "Címkék", + "PHOTO_NOTAGS": "Nincsenek címkék", + "PHOTO_NEW_TAGS": "Adja meg a címkéket ehhez a fényképhez. Több címkét is hozzáadhat, vesszővel elválasztva:", + "PHOTOS_NEW_TAGS": "Adja meg a címkéket az összes %d kiválasztott fényképhez. A meglévő címkéket felülírják. Több címkét is hozzáadhat, vesszővel elválasztva:", + "PHOTO_SET_TAGS": "Címkék beállítása", + "PHOTO_CAMERA": "Kamera", + "PHOTO_CAPTURED": "Rögzítve", + "PHOTO_MAKE": "Gyártó", + "PHOTO_TYPE": "Típus\/Modell", + "PHOTO_LENS": "Objektív", + "PHOTO_SHUTTER": "Záridő", + "PHOTO_APERTURE": "Rekeszérték", + "PHOTO_FOCAL": "Fókusztávolság", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Megosztás", + "PHOTO_DELETE": "Fénykép törlése", + "PHOTO_KEEP": "Fénykép megtartása", + "PHOTO_DELETE_CONFIRMATION": "Biztosan törölni szeretné a(z) „%s” fényképet? Ez a művelet nem vonható vissza!", + "PHOTO_DELETE_ALL": "Biztosan törölni szeretné az összes %d kiválasztott fényképet? Ez a művelet nem vonható vissza!", + "PHOTOS_NEW_TITLE": "Adjon meg egy címet az összes %d kiválasztott fényképnek:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Ez a fénykép egy nyilvános albumon található. A fénykép privát vagy nyilvános beállításainak megváltoztatásához szerkessze az ehhez a fényképhez tartozó album láthatóságát.", + "PHOTO_SHOW_ALBUM": "Album megjelenítése", + "PHOTO_PUBLIC": "Nyilvános", + "PHOTO_PUBLIC_EXPL": "Az anonim felhasználók megtekinthetik ezt a fényképet a következő korlátozások betartásával.", + "PHOTO_FULL": "Eredeti", + "PHOTO_FULL_EXPL": "Az anonim felhasználók megtekinthetik a teljes felbontású fényképet.", + "PHOTO_HIDDEN": "Rejtett", + "PHOTO_HIDDEN_EXPL": "Az anonim felhasználóknak szükségük van egy közvetlen hivatkozásra a fénykép megtekintéséhez.", + "PHOTO_DOWNLOADABLE": "Letölthető", + "PHOTO_DOWNLOADABLE_EXPL": "Az anonim felhasználók letölthetik ezt a fényképet.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Megosztás gomb látható", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Az anonim felhasználók láthatják a közösségi média megosztási linkeket.", + "PHOTO_PASSWORD_PROT": "Jelszóval védett", + "PHOTO_PASSWORD_PROT_EXPL": "Az anonim felhasználóknak megosztott jelszóra van szükségük a fénykép megtekintéséhez.", + "PHOTO_EDIT_SHARING_TEXT": "E fénykép megosztási tulajdonságai a következőként fognak megváltozni:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Mivel ez a fénykép egy nyilvános albumon található, örökli azt az album láthatósági beállításait. Jelenlegi láthatósága csak tájékoztató jelleggel jelenik meg.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "E fénykép láthatóságát globális Lychee beállításokkal finomhangolhatja. Jelenlegi láthatósága csak tájékoztató jelleggel jelenik meg.", + "PHOTO_NEW_CREATED_AT": "Adja meg ennek a fényképnek a feltöltési dátumát. hh\/nn\/éééé, óó{pp} [de\/du]", + "PHOTO_SET_CREATED_AT": "Feltöltési dátum beállítása", + "LOADING": "Betöltés", + "ERROR": "Hiba", + "ERROR_TEXT": "Hoppá, úgy tűnik, valami hiba történt. Kérjük, frissítse az oldalt és próbálja újra!", + "ERROR_UNKNOWN": "Valami váratlan történt. Kérjük, próbálja újra, és ellenőrizze a telepítést és a szervert. További információért tekintse meg az útmutatót.", + "ERROR_MAP_DEACTIVATED": "Térkép funkció letiltva a beállításokban.", + "ERROR_SEARCH_DEACTIVATED": "Keresési funkció letiltva a beállításokban.", + "SUCCESS": "Rendben", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Újra", + "OVERRIDE": "Felülbírálás", + "TAGS_OVERRIDE_INFO": "Ha ez nincs bejelölve, a címkéket hozzáadják a fénykép meglévő címkéihez.", + "SETTINGS_SUCCESS_LOGIN": "Bejelentkezési információk frissítve.", + "SETTINGS_SUCCESS_SORT": "Rendezési sorrend frissítve.", + "SETTINGS_SUCCESS_DROPBOX": "Dropbox kulcs frissítve.", + "SETTINGS_SUCCESS_LANG": "Nyelv frissítve", + "SETTINGS_SUCCESS_LAYOUT": "Elrendezés frissítve", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "EXIF fedőréteg beállítás frissítve", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Nyilvános keresés frissítve", + "SETTINGS_SUCCESS_LICENSE": "Alapértelmezett licenc frissítve", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Térkép megjelenítési beállítások frissítve", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Térkép megjelenítési beállítások nyilvános albumokhoz frissítve", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Térkép szolgáltató beállítások frissítve", + "SETTINGS_SUCCESS_CSS": "CSS frissítve", + "SETTINGS_SUCCESS_JS": "JS frissítve", + "SETTINGS_SUCCESS_UPDATE": "Beállítások sikeresen frissítve", + "SETTINGS_DROPBOX_KEY": "Dropbox API kulcs", + "SETTINGS_ADVANCED_WARNING_EXPL": "Ezen speciális beállítások módosítása káros lehet az alkalmazás stabilitására, biztonságára és teljesítményére nézve. Csak akkor módosítsa őket, ha biztos benne, hogy tudja, mit csinál.", + "SETTINGS_ADVANCED_SAVE": "Módosítások mentése, elfogadom a kockázatot!", + "U2F_NOT_SUPPORTED": "Az U2F nem támogatott. Sajnáljuk.", + "U2F_NOT_SECURE": "Nem biztonságos környezet. Az U2F nem érhető el.", + "U2F_REGISTER_KEY": "Új eszköz regisztrálása.", + "U2F_REGISTRATION_SUCCESS": "Sikeres regisztráció!", + "U2F_AUTHENTIFICATION_SUCCESS": "Sikeres hitelesítés!", + "U2F_CREDENTIALS": "Hitelesítő adatok", + "U2F_CREDENTIALS_DELETED": "Hitelesítő adatok törölve!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Küldjön értesítést az új fényképekről e-mailben.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "Az új fényképek értesítése frissítve", + "USER_EMAIL_INSTRUCTION": "Adja hozzá az alábbi e-mail címet a fogadásra jogosító e-mail értesítések engedélyezéséhez. Az e-mail értesítések visszavonásához egyszerűen távolítsa el az e-mail címet alulról.", + "LOGIN_USERNAME": "Új felhasználónév", + "LOGIN_PASSWORD": "Új jelszó", + "LOGIN_PASSWORD_CONFIRM": "Jelszó megerősítése", + "PASSWORD_TITLE": "Adja meg jelenlegi jelszavát:", + "PASSWORD_CURRENT": "Jelenlegi jelszó", + "PASSWORD_TEXT": "A hitelesítő adatai a következőre lesznek megváltoztatva:", + "PASSWORD_CHANGE": "Bejelentkezés változtatása", + "EDIT_SHARING_TITLE": "Megosztás szerkesztése", + "EDIT_SHARING_TEXT": "Az album megosztási tulajdonságai a következőre lesznek megváltoztatva:", + "SHARE_ALBUM_TEXT": "Ez az album a következő tulajdonságokkal lesz megosztva:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribútum", + "SORT_DIALOG_ORDER_LABEL": "Rendelés", + "SORT_ALBUM_BY": "Albumok rendezése %1$s alapján %2$s rendben.", + "SORT_ALBUM_SELECT_1": "Létrehozás ideje", + "SORT_ALBUM_SELECT_2": "Cím", + "SORT_ALBUM_SELECT_3": "Leírás", + "SORT_ALBUM_SELECT_5": "Legutóbbi felvétel dátuma", + "SORT_ALBUM_SELECT_6": "Legrégebbi felvétel dátuma", + "SORT_PHOTO_BY": "Fényképek rendezése %1$s alapján %2$s rendben.", + "SORT_PHOTO_SELECT_1": "Feltöltés ideje", + "SORT_PHOTO_SELECT_2": "Felvétel dátuma", + "SORT_PHOTO_SELECT_3": "Cím", + "SORT_PHOTO_SELECT_4": "Leírás", + "SORT_PHOTO_SELECT_6": "Csillag", + "SORT_PHOTO_SELECT_7": "Fénykép formátuma", + "SORT_ASCENDING": "Növekvő", + "SORT_DESCENDING": "Csökkenő", + "SORT_CHANGE": "Rendezés megváltoztatása", + "DROPBOX_TITLE": "Dropbox Kulcs Beállítása", + "DROPBOX_TEXT": "Annak érdekében, hogy képeket importáljon a Dropbox-ról, érvényes 'drop-ins app' kulcsra van szüksége a weboldalukon<\/a>. Generáljon magának egy személyes kulcsot és írja be az alábbiakban:", + "LANG_TEXT": "Változtassa meg a Lychee nyelvét:", + "LANG_TITLE": "Nyelv megváltoztatása", + "SETTING_RECENT_PUBLIC_TEXT": "\"Legutóbbi\" okos album hozzáférhetővé tétele névtelen felhasználók számára", + "SETTING_STARRED_PUBLIC_TEXT": "\"Csillagozott\" okos album hozzáférhetővé tétele névtelen felhasználók számára", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "\"Ezen a napon\" okos album hozzáférhetővé tétele névtelen felhasználók számára", + "CSS_TEXT": "Testreszabott CSS:", + "CSS_TITLE": "CSS megváltoztatása", + "JS_TEXT": "Testreszabott JS:", + "JS_TITLE": "JS megváltoztatása", + "PUBLIC_SEARCH_TEXT": "Nyilvános keresés engedélyezve:", + "OVERLAY_TYPE": "Fénykép fedőréteg:", + "OVERLAY_NONE": "Nincs", + "OVERLAY_EXIF": "EXIF adatok", + "OVERLAY_DESCRIPTION": "Leírás", + "OVERLAY_DATE": "Felvétel dátuma", + "ALBUM_DECORATION": "Album dekorációk:", + "ALBUM_DECORATION_NONE": "Nincs", + "ALBUM_DECORATION_ORIGINAL": "Al-album jelző", + "ALBUM_DECORATION_ALBUM": "Al-albumok száma", + "ALBUM_DECORATION_PHOTO": "Fényképek száma", + "ALBUM_DECORATION_ALL": "Al-albumok és fényképek száma", + "ALBUM_DECORATION_ORIENTATION": "Album dekorációk elrendezése:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Vízszintes (fényképek, albumok)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Vízszintes (albumok, fényképek)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Függőleges (felső fényképek, albumok)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Függőleges (felső albumok, fényképek)", + "MAP_DISPLAY_TEXT": "Térképek engedélyezése (OpenStreetMap által):", + "MAP_DISPLAY_PUBLIC_TEXT": "Térképek engedélyezése nyilvános albumokhoz (OpenStreetMap által):", + "MAP_PROVIDER": "OpenStreetMap csempék szolgáltatója:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (nem HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (nem HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (nem HiDPI)", + "MAP_PROVIDER_RRZE": "Erlangen Egyetem, Németország (csak HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Al-albumok fényképeinek belefoglalása a térképbe:", + "LOCATION_DECODING": "GPS adatok dekódolása helyszín névbe", + "LOCATION_SHOW": "Helyszín név megjelenítése", + "LOCATION_SHOW_PUBLIC": "Helyszín név megjelenítése nyilvános módban", + "LAYOUT_TYPE": "Fényképek elrendezése:", + "LAYOUT_SQUARES": "Négyzet alakú bélyegképek", + "LAYOUT_JUSTIFIED": "Képaránnyal, igazított", + "LAYOUT_MASONRY": "Képaránnyal, masonry", + "LAYOUT_GRID": "Képaránnyal, grid", + "LAYOUT_UNJUSTIFIED": "Képaránnyal, igazítatlan", + "SET_LAYOUT": "Elrendezés megváltoztatása", + "NSFW_VISIBLE_TEXT_1": "Érzékeny albumok alapértelmezett láthatóságának beállítása.", + "NSFW_VISIBLE_TEXT_2": "Ha az album nyilvános, még mindig elérhető, csak el van rejtve a nézetből és megjeleníthető a H<\/kbd> billentyű megnyomásával<\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Az alapértelmezett érzékeny album láthatósága sikeresen frissítve.", + "NSFW_BANNER": "

Érzékeny tartalom<\/h1>

Ez az album érzékeny tartalmat tartalmaz, amit néhány ember zavaró vagy zavarba ejtő lehet. Tapintson az engedélyezéshez.<\/p>", + "NSFW_HEADER": "Érzékeny tartalom", + "NSFW_EXPLANATION": "Ez az album érzékeny tartalmat tartalmaz, amit néhány ember zavaró vagy zavarba ejtő lehet.", + "TAP_CONSENT": "Tapintson az engedélyezéshez.", + "VIEW_NO_RESULT": "Nincs találat", + "VIEW_NO_PUBLIC_ALBUMS": "Nincsenek nyilvános albumok", + "VIEW_NO_CONFIGURATION": "Nincs konfiguráció", + "VIEW_PHOTO_NOT_FOUND": "A fénykép nem található", + "NO_TAGS": "Nincsenek címkék", + "UPLOAD_MANAGE_NEW_PHOTOS": "Most már kezelheti az új fénykép(ek)et.", + "UPLOAD_COMPLETE": "Feltöltés befejeződött", + "UPLOAD_COMPLETE_FAILED": "Egy vagy több fénykép feltöltése sikertelen.", + "UPLOAD_IMPORTING": "Importálás", + "UPLOAD_IMPORTING_URL": "URL importálás", + "UPLOAD_UPLOADING": "Feltöltés", + "UPLOAD_FINISHED": "Befejezve", + "UPLOAD_PROCESSING": "Feldolgozás", + "UPLOAD_FAILED": "Sikertelen", + "UPLOAD_FAILED_ERROR": "A feltöltés sikertelen. A kiszolgáló hibát adott vissza!", + "UPLOAD_FAILED_WARNING": "A feltöltés sikertelen. A kiszolgáló figyelmeztetést adott vissza!", + "UPLOAD_CANCELLED": "Megszakítva", + "UPLOAD_SKIPPED": "Kihagyva", + "UPLOAD_UPDATED": "Frissítve", + "UPLOAD_GENERAL": "Általános", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "Ez a fénykép kimaradt, mert már a könyvtárában van.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "Ez a fénykép kimaradt, mert már a könyvtárában van, de a metaadata frissítve lett.", + "UPLOAD_ERROR_CONSOLE": "Tekintse meg a böngésző konzolját további részletekért.", + "UPLOAD_UNKNOWN": "A kiszolgáló ismeretlen választ adott vissza. Tekintse meg a böngésző konzolját további részletekért.", + "UPLOAD_ERROR_UNKNOWN": "A feltöltés sikertelen. A kiszolgáló ismeretlen hibát adott vissza!", + "UPLOAD_ERROR_POSTSIZE": "A feltöltés sikertelen. A PHP post_max_size mérete lehet túl kicsi! Kérjük, ellenőrizze a GYIK-et.", + "UPLOAD_ERROR_FILESIZE": "A feltöltés sikertelen. A PHP upload_max_filesize mérete lehet túl kicsi! Kérjük, ellenőrizze a GYIK-et.", + "UPLOAD_IN_PROGRESS": "A Lychee jelenleg feltölti!", + "UPLOAD_IMPORT_WARN_ERR": "Az importálás befejeződött, de figyelmeztetések vagy hibák jelentkeztek. Tekintse meg a naplót (Beállítások -> Napló mutatása) további részletekért.", + "UPLOAD_IMPORT_COMPLETE": "Az importálás befejeződött", + "UPLOAD_IMPORT_INSTR": "Kérjük, adja meg a fénykép közvetlen hivatkozását az importáláshoz:", + "UPLOAD_IMPORT": "Importálás", + "UPLOAD_IMPORT_SERVER": "Importálás a kiszolgálóról", + "UPLOAD_IMPORT_SERVER_FOLD": "A mappa üres vagy nincsenek olvasható fájlok feldolgozásra. Tekintse meg a naplót (Beállítások -> Napló mutatása) további részletekért.", + "UPLOAD_IMPORT_SERVER_INSTR": "Az alábbi abszolút elérési útvonalakkal (a kiszolgálón) rendelkező mappákban található összes fénykép, mappa és almappa importálása. Az elérési útvonalak szóközzel vannak elválasztva, a szóköz escape-elve van '\\'-vel az útvonalon.", + "UPLOAD_ABSOLUTE_PATH": "Abszolút elérési útvonalak a könyvtárakhoz, szóközzel elválasztva", + "UPLOAD_IMPORT_SERVER_EMPT": "Az importálás nem indítható el, mert a mappa üres!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Eredeti törlése", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Az eredeti fájlok az importálás után törölve lesznek, ha lehetséges.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Szimbolikus hivatkozások", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Fájlok importálása szimbolikus hivatkozásokkal az eredeti fájlokhoz.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Ismétlődők kihagyása", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Létező médiafájlok kihagyása.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Metaadat újrakapcsolása", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Meglévő médiafájlok metaadatainak frissítése.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "Az import folyamata a kiszolgálón a memórialimithez közeledik, és előfordulhat, hogy előbb-utóbb megszakad.", + "UPLOAD_WARNING": "Figyelmeztetés", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "A megadott útvonal nem olvasható mappa!", + "UPLOAD_IMPORT_PATH_RESERVED": "A megadott útvonal a Lychee fenntartott útvonala!", + "UPLOAD_IMPORT_FAILED": "Nem sikerült importálni a fájlt!", + "UPLOAD_IMPORT_UNSUPPORTED": "Nem támogatott fájltípus!", + "UPLOAD_IMPORT_CANCELLED": "Az importálás megszakítva", + "ABOUT_SUBTITLE": "Önállóan futtatható, jól megtervezett fényképkezelés", + "ABOUT_DESCRIPTION": "Lychee<\/a> egy ingyenes fényképkezelő eszköz, amely saját szerverén vagy webtárhelyén fut. Az installáció néhány másodpercet vesz igénybe. Töltsön fel, kezeljen és osszon meg fényképeket, mintha egy natív alkalmazásban lenne. A Lychee mindennel rendelkezik, amire szüksége van, és az összes fényképe biztonságosan van tárolva.", + "FOOTER_COPYRIGHT": "Az összes kép ezen a weboldalon szerzői jogi védelem alatt áll: %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Futtatja: Lychee", + "URL_COPY_TO_CLIPBOARD": "Vágólapra másolás", + "URL_COPIED_TO_CLIPBOARD": "URL másolva a vágólapra!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Közvetlen linkek a képfájlokhoz:", + "PHOTO_ORIGINAL": "Eredeti", + "PHOTO_MEDIUM": "Közepes", + "PHOTO_MEDIUM_HIDPI": "Közepes HiDPI", + "PHOTO_SMALL": "Bélyegkép", + "PHOTO_SMALL_HIDPI": "Bélyegkép HiDPI", + "PHOTO_THUMB": "Négyzetes bélyegkép", + "PHOTO_THUMB_HIDPI": "Négyzetes bélyegkép HiDPI", + "PHOTO_THUMBNAIL": "Kép bélyegképe", + "PHOTO_LIVE_VIDEO": "Videó része a live-fotónak", + "PHOTO_VIEW": "Lychee Kép Megtekintés:", + "PHOTO_EDIT_ROTATECWISE": "Forgatás óramutató járásával megegyezően", + "PHOTO_EDIT_ROTATECCWISE": "Forgatás óramutató járásával ellenkezőleg", + "ERROR_GPX": "Hiba a GPX fájl betöltésekor: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Kérlek válassz albumban vagy fényképeknél közül!", + "ERROR_COULD_NOT_FIND": "Nem található, amit keresel.", + "ERROR_INVALID_EMAIL": "Érvénytelen email cím.", + "EMAIL_SUCCESS": "Email frissítve!", + "ERROR_PHOTO_NOT_FOUND": "Hiba: fénykép %s nem található!", + "ERROR_EMPTY_USERNAME": "az új felhasználónév nem lehet üres.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "az új jelszó nem egyezik meg.", + "ERROR_EMPTY_PASSWORD": "az új jelszó nem lehet üres.", + "ERROR_SELECT_ALBUM": "Válassz egy albumot a megosztáshoz!", + "ERROR_SELECT_USER": "Válassz egy felhasználót a megosztáshoz!", + "ERROR_SELECT_SHARING": "Válassz egy megosztást a törléshez!", + "SHARING_SUCCESS": "Megosztás frissítve!", + "SHARING_REMOVED": "Megosztás eltávolítva!", + "USER_CREATED": "Felhasználó létrehozva!", + "USER_DELETED": "Felhasználó törölve!", + "USER_UPDATED": "Felhasználó frissítve!", + "ENTER_EMAIL": "Add meg az email címed:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Hiba: Album JSON nem található!", + "ERROR_ALBUM_NOT_FOUND": "Hiba: album %s nem található", + "ERROR_DROPBOX_KEY": "Hiba: A Dropbox kulcs nincs beállítva", + "ERROR_SESSION": "A munkamenet lejárt.", + "CAMERA_DATE": "Kamera dátuma", + "NEW_PASSWORD": "új jelszó", + "ALLOW_UPLOADS": "Feltöltések engedélyezése", + "ALLOW_USER_SELF_EDIT": "Felhasználói fiókok önkezelésének engedélyezése", + "OSM_CONTRIBUTORS": "OpenStreetMap hozzájárulók" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/it.json b/lang/it.json new file mode 100644 index 00000000000..8c821d6acf1 --- /dev/null +++ b/lang/it.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Nome utente", + "PASSWORD": "Password", + "ENTER": "Invia", + "CANCEL": "Annulla", + "CONFIRM": "Confirm", + "SIGN_IN": "Entra", + "CLOSE": "Chiudi", + "SETTINGS": "Impostazioni", + "SEARCH": "Cerca …", + "MORE": "Altro", + "DEFAULT": "Default", + "GALLERY": "Gallery", + "USERS": "Utenti", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Condivisione", + "CHANGE_LOGIN": "Cambia Login", + "CHANGE_SORTING": "Cambia Ordinamento", + "SET_DROPBOX": "Imposta Dropbox", + "ABOUT_LYCHEE": "Informazioni su Lychee", + "DIAGNOSTICS": "Diagnostica", + "DIAGNOSTICS_GET_SIZE": "Request space usage", + "JOBS": "Show job history", + "LOGS": "Visualizza Log", + "SIGN_OUT": "Esci", + "UPDATE_AVAILABLE": "Aggiornamento disponibile!", + "MIGRATION_AVAILABLE": "Migration available!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Licenza predefinita per i nuovi caricamenti:", + "SET_LICENSE": "Imposta Licenza", + "SET_OVERLAY_TYPE": "Imposta Filigrana", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Set OpenStreetMap tiles provider", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Album smart", + "SHARED_ALBUMS": "Album condivisi", + "ALBUMS": "Album", + "PHOTOS": "Immagini", + "SEARCH_RESULTS": "Search results", + "RENAME": "Rinomina", + "RENAME_ALL": "Rinomina Tutto", + "MERGE": "Unisci", + "MERGE_ALL": "Unisci Tutto", + "MAKE_PUBLIC": "Rendi Pubblico", + "SHARE_ALBUM": "Condividi Album", + "SHARE_PHOTO": "Condividi Photo", + "VISIBILITY_ALBUM": "Album Visibility", + "VISIBILITY_PHOTO": "Photo Visibility", + "DOWNLOAD_ALBUM": "Scarica Album", + "ABOUT_ALBUM": "Informazioni Album", + "DELETE_ALBUM": "Elimina Album", + "MOVE_ALBUM": "Move Album", + "FULLSCREEN_ENTER": "Entra In Modalità Schermo Intero", + "FULLSCREEN_EXIT": "Esci Dalla Modalità Schermo Intero", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "Elimina Album e Immagini", + "KEEP_ALBUM": "Mantieni Album", + "DELETE_ALBUM_CONFIRMATION": "Sei sicuro di voler eliminare l’album «%s» e tutte le immagini che contiene? Questa azione non può essere annullata successivamente!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album «%s» (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Elimina gli Album e le Immagini", + "KEEP_ALBUMS": "Mantieni gli Album", + "DELETE_ALBUMS_CONFIRMATION": "Sei sicuro di voler eliminare tutti %d gli album selezionati e le immagini contenute in essi? Questa azione non può essere annullata successivamente!", + "DELETE_UNSORTED_CONFIRM": "Sei sicuro di voler eliminare tutte le immagini da «Non Catalogate»? Questa azione non può essere annullata successivamente!", + "CLEAR_UNSORTED": "Rimuovi Immagini Non Catalogate", + "KEEP_UNSORTED": "Mantieni Immagini Non Catalogate", + "EDIT_SHARING": "Modifica Condivisibilità", + "MAKE_PRIVATE": "Rendi Privato", + "CLOSE_ALBUM": "Chiudi Album", + "CLOSE_PHOTO": "Chiudi Foto", + "CLOSE_MAP": "Close Map", + "ADD": "Aggiungi", + "MOVE": "Sposta", + "MOVE_ALL": "Sposta Tutto", + "DUPLICATE": "Duplica", + "DUPLICATE_ALL": "Duplica Tutto", + "COPY_TO": "Copia in …", + "COPY_ALL_TO": "Copia Tutto in …", + "DELETE": "Elimina", + "SAVE": "Save", + "DELETE_ALL": "Elimina Tutto", + "DOWNLOAD": "Scarica", + "DOWNLOAD_ALL": "Scarica Tutto", + "UPLOAD_PHOTO": "Carica Foto", + "IMPORT_LINK": "Importa da Link", + "IMPORT_DROPBOX": "Importa da Dropbox", + "IMPORT_SERVER": "Importa da Server", + "NEW_ALBUM": "Nuovo Album", + "NEW_TAG_ALBUM": "New Tag Album", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Inserire un titolo per il nuovo album:", + "UNTITLED": "Senza Titolo", + "UNSORTED": "Non Catalogate", + "STARRED": "Speciali", + "RECENT": "Recenti", + "PUBLIC": "Pubbliche", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "Foto", + "CREATE_ALBUM": "Crea Album", + "CREATE_TAG_ALBUM": "Create Tag Album", + "STAR_PHOTO": "Contrassegna la Foto come Speciale", + "STAR": "Contrassegna come Speciale", + "UNSTAR": "Unstar", + "STAR_ALL": "Contrassegna Tutto come Speciale", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "Tag", + "TAG_ALL": "Tagga Tutto", + "UNSTAR_PHOTO": "Rimuovi dalle Foto Speciali", + "SET_COVER": "Set Album Cover", + "REMOVE_COVER": "Remove Album Cover", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Open Original", + "ABOUT_PHOTO": "Informazioni sulla Foto", + "DISPLAY_FULL_MAP": "Map", + "DIRECT_LINK": "Link Diretto", + "DIRECT_LINKS": "Direct Links", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "Informazioni", + "ALBUM_BASICS": "Base", + "ALBUM_TITLE": "Titolo", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Inserire un nuovo titolo per questo album:", + "ALBUMS_NEW_TITLE": "Inserire un nuovo titolo per %d gli album selezionati:", + "ALBUM_SET_TITLE": "Imposta Titolo", + "ALBUM_DESCRIPTION": "Descrizione", + "ALBUM_SHOW_TAGS": "Tags to show", + "ALBUM_NEW_DESCRIPTION": "Inserire una nuova descrizione per questo album:", + "ALBUM_SET_DESCRIPTION": "Imposta Descrizione", + "ALBUM_NEW_SHOWTAGS": "Enter tags of photos that will be visible in this album:", + "ALBUM_SET_SHOWTAGS": "Set tags to show", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Creato", + "ALBUM_IMAGES": "Immagini", + "ALBUM_VIDEOS": "Video", + "ALBUM_SUBALBUMS": "Subalbums", + "ALBUM_SHARING": "Condividi", + "ALBUM_SHR_YES": "SI", + "ALBUM_SHR_NO": "No", + "ALBUM_PUBLIC": "Pubblico", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Original", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Nascosto", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Mark album as sensitive", + "ALBUM_UNMARK_NSFW": "Unmark album as sensitive", + "ALBUM_NSFW": "Sensitive", + "ALBUM_NSFW_EXPL": "Album is marked to contain sensitive content.", + "ALBUM_DOWNLOADABLE": "Scaricabile", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Share button is visible", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "ALBUM_PASSWORD": "Password", + "ALBUM_PASSWORD_PROT": "Password protetta", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Questo album è protetto da password. Inserire la password sotto per vedere le foto di questo album:", + "ALBUM_MERGE": "Sei sicuro di voler unire l’album «%1$s» nell’album «%2$s»?", + "ALBUMS_MERGE": "Sei sicuro di voler unire tutti gli album selezionati nell’album «%s»?", + "MERGE_ALBUM": "Unisci Album", + "DONT_MERGE": "Non Unire", + "ALBUM_MOVE": "Sei sicuro di voler spostare l’album «%1$s» nell’album «%2$s»?", + "ALBUMS_MOVE": "Sei sicure di voler spostare tutti gli album selezionati nell’album «%s»?", + "MOVE_ALBUMS": "Sposta Album", + "NOT_MOVE_ALBUMS": "Non Spostare", + "ROOT": "Radice", + "ALBUM_REUSE": "Riutilizza", + "ALBUM_LICENSE": "Licenza", + "ALBUM_SET_LICENSE": "Imposta licenza", + "ALBUM_LICENSE_HELP": "Hai bisogno di aiuto per scegliere?", + "ALBUM_LICENSE_NONE": "Nessuna", + "ALBUM_RESERVED": "Tutti i Diritti Riservati", + "ALBUM_SET_ORDER": "Set Order", + "ALBUM_ORDERING": "Order by", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "Informazioni", + "PHOTO_BASICS": "Base", + "PHOTO_TITLE": "Titolo", + "PHOTO_NEW_TITLE": "Inserisci un nuovo titolo per questa foto:", + "PHOTO_SET_TITLE": "Imposta Titolo", + "PHOTO_UPLOADED": "Caricata", + "PHOTO_DESCRIPTION": "Descrizione", + "PHOTO_NEW_DESCRIPTION": "Inserire una nuova descrizione per questa foto:", + "PHOTO_SET_DESCRIPTION": "Imposta Descrizione", + "PHOTO_NEW_LICENSE": "Aggiungi una Licenze", + "PHOTO_SET_LICENSE": "Imposta Licenza", + "PHOTO_LICENSE": "Licenza", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Riutilizzo", + "PHOTO_LICENSE_NONE": "Nessuna", + "PHOTO_RESERVED": "Tutti i Diritti Riservati", + "PHOTO_LATITUDE": "Latitude", + "PHOTO_LONGITUDE": "Longitude", + "PHOTO_ALTITUDE": "Altitude", + "PHOTO_LOCATION": "Location", + "PHOTO_IMGDIRECTION": "Direction", + "PHOTO_IMAGE": "Immagine", + "PHOTO_VIDEO": "Video", + "PHOTO_SIZE": "Dimensioni", + "PHOTO_FORMAT": "Formato", + "PHOTO_RESOLUTION": "Risoluzione", + "PHOTO_DURATION": "Durata", + "PHOTO_FPS": "Frame rate", + "PHOTO_TAGS": "Tag", + "PHOTO_NOTAGS": "Nessun Tag", + "PHOTO_NEW_TAGS": "Inserisci i tuoi tag per questa foto. Puoi aggiungere più tag separandoli con una virgola:", + "PHOTOS_NEW_TAGS": "Inserisci i tuoi tag per tutte %d le foto selezionate. I tag esistenti verrano sovrascritti. Puoi aggiungere più tag separandoli con una virgola:", + "PHOTO_SET_TAGS": "Imposta Tag", + "PHOTO_CAMERA": "Fotocamera", + "PHOTO_CAPTURED": "Scattata", + "PHOTO_MAKE": "Produttore", + "PHOTO_TYPE": "Tipo\/Modello", + "PHOTO_LENS": "Lens", + "PHOTO_SHUTTER": "Tempo di Esposizione", + "PHOTO_APERTURE": "Apertura", + "PHOTO_FOCAL": "Lunghezza Focale", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Condivisione", + "PHOTO_DELETE": "Elimina Photo", + "PHOTO_KEEP": "Mantieni Photo", + "PHOTO_DELETE_CONFIRMATION": "Sei sicuro di voler eliminare la foto «%s»? Questa operazione non può essere annullata successivamente!", + "PHOTO_DELETE_ALL": "Sei sicuro di voler eliminare tutte le %d foto selezionate? Questa operazione non può essere annullata successivamente!", + "PHOTOS_NEW_TITLE": "Inserisci un titolo per tutte le %d foto selezionate:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Questa foto è all’interno di un album pubblico. Per rendere questa foto privata o pubblica, modifica la visibilità dell’album associato.", + "PHOTO_SHOW_ALBUM": "Visualizza Album", + "PHOTO_PUBLIC": "Public", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Original", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Hidden", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Downloadable", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Share button is visible", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Password protected", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "The sharing properties of this photo will be changed to the following:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Because this photo is located in a public album, it inherits that album’s visibility settings. Its current visibility is shown below for informational purposes only.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "The visibility of this photo can be fine-tuned using global Lychee settings. Its current visibility is shown below for informational purposes only.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Caricamento", + "ERROR": "Errore", + "ERROR_TEXT": "Oops, sembra che qualcosa sia andato storto. Per favore ricarica il sito e prova di nuovo!", + "ERROR_UNKNOWN": "È successo qualcosa di inaspettato. Per favore prova di nuovo e controlla la tua installazione e il tuo server. Controlla il readme per più informazioni.", + "ERROR_MAP_DEACTIVATED": "Map functionality has been deactivated under settings.", + "ERROR_SEARCH_DEACTIVATED": "Search functionality has been deactivated under settings.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Riprova", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Informazioni di Login Aggiornate.", + "SETTINGS_SUCCESS_SORT": "Modalità di ordinamento aggiornate.", + "SETTINGS_SUCCESS_DROPBOX": "Chaive Dropbox aggiornata.", + "SETTINGS_SUCCESS_LANG": "Lingua aggiornata", + "SETTINGS_SUCCESS_LAYOUT": "Layout aggiornato", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "Impostazioni filigrana EXIF aggiornate", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Ricerca pubblica aggiornata", + "SETTINGS_SUCCESS_LICENSE": "Licenza predefinita aggiornata", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Map display settings updated", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Map display settings for public albums updated", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Map provider settings updated", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F not supported. Sorry.", + "U2F_NOT_SECURE": "Environment not secured. U2F not available.", + "U2F_REGISTER_KEY": "Register new device.", + "U2F_REGISTRATION_SUCCESS": "Registration successful!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentication successful!", + "U2F_CREDENTIALS": "Credentials", + "U2F_CREDENTIALS_DELETED": "Credentials deleted!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Nuovo Nome Utente", + "LOGIN_PASSWORD": "Nuova Password", + "LOGIN_PASSWORD_CONFIRM": "Conferma Password", + "PASSWORD_TITLE": "Inserisci la tua password attuale:", + "PASSWORD_CURRENT": "Password Attuale", + "PASSWORD_TEXT": "Il tuo nome utente e password verrano cambiati nei seguenti:", + "PASSWORD_CHANGE": "Cambia Login", + "EDIT_SHARING_TITLE": "Modifica Condivisibilità", + "EDIT_SHARING_TEXT": "Le proprietà di condivisione di questo album verrano cambiate nelle seguenti:", + "SHARE_ALBUM_TEXT": "Questo album verrà condiviso con le seguenti proprietà:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Ordina album per %1$s in un ordine %2$s.", + "SORT_ALBUM_SELECT_1": "Data di Creazione", + "SORT_ALBUM_SELECT_2": "Titolo", + "SORT_ALBUM_SELECT_3": "Descrizione", + "SORT_ALBUM_SELECT_5": "Ultima Aggiornamento", + "SORT_ALBUM_SELECT_6": "Aggiornamento più vecchio", + "SORT_PHOTO_BY": "Ordina foto per %1$s in un ordine %2$s.", + "SORT_PHOTO_SELECT_1": "Data di Upload", + "SORT_PHOTO_SELECT_2": "Data di Creazione", + "SORT_PHOTO_SELECT_3": "Titolo", + "SORT_PHOTO_SELECT_4": "Descrizione", + "SORT_PHOTO_SELECT_6": "Speciale", + "SORT_PHOTO_SELECT_7": "Formato Photo", + "SORT_ASCENDING": "Crescente", + "SORT_DESCENDING": "Decrescente", + "SORT_CHANGE": "Cambia Ordinamento", + "DROPBOX_TITLE": "Imposta Chiave Dropbox", + "DROPBOX_TEXT": "Per importare foto dal tuo Dropbox, ha bisogno di una chiave valida ottenibile da their website<\/a>. Genera la tua chiave personale e inseriscila qui di seguito:", + "LANG_TEXT": "Cambia Lingua Lychee per:", + "LANG_TITLE": "Cambia Lingua", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Ricerca pubblica consentita:", + "OVERLAY_TYPE": "Contenuto da utilizzare nella filigrana:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "Dati Foto EXIF", + "OVERLAY_DESCRIPTION": "Descrizione della Foto", + "OVERLAY_DATE": "Data di Creazione della Foto", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Enable maps (provided by OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Enable maps for public albums (provided by OpenStreetMap):", + "MAP_PROVIDER": "Provider of OpenStreetMap tiles:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (no HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (no HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (no HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (only HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Include photos of subalbums on map:", + "LOCATION_DECODING": "Decode GPS data into location name", + "LOCATION_SHOW": "Show location name", + "LOCATION_SHOW_PUBLIC": "Show location name for public mode", + "LAYOUT_TYPE": "Layout delle foto:", + "LAYOUT_SQUARES": "Miniature Quadrate", + "LAYOUT_JUSTIFIED": "Relativo all’aspetto, giustificate", + "LAYOUT_MASONRY": "Relativo all’aspetto, masonry", + "LAYOUT_GRID": "Relativo all’aspetto, grid", + "LAYOUT_UNJUSTIFIED": "Relativo all’aspetto, non giustificate", + "SET_LAYOUT": "Cambia layout", + "NSFW_VISIBLE_TEXT_1": "Make Sensitive albums visible by default.", + "NSFW_VISIBLE_TEXT_2": "If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Default sensitive album visibility updated with success.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Nessun risultato", + "VIEW_NO_PUBLIC_ALBUMS": "Nessun album pubblico", + "VIEW_NO_CONFIGURATION": "Nessuna configurazione", + "VIEW_PHOTO_NOT_FOUND": "Foto non trovata", + "NO_TAGS": "Nessun Tag", + "UPLOAD_MANAGE_NEW_PHOTOS": "Adesso puoi gestire le tue nuove foto.", + "UPLOAD_COMPLETE": "Caricamento completato", + "UPLOAD_COMPLETE_FAILED": "Caricamento fallito per una o più foto.", + "UPLOAD_IMPORTING": "Importazione", + "UPLOAD_IMPORTING_URL": "Importazione URL", + "UPLOAD_UPLOADING": "Caricamento", + "UPLOAD_FINISHED": "Finito", + "UPLOAD_PROCESSING": "In Elaborazione", + "UPLOAD_FAILED": "Fallito", + "UPLOAD_FAILED_ERROR": "Caricamento fallito. Il server ha restituito un errore!", + "UPLOAD_FAILED_WARNING": "Caricamento fallito. Il server ha restituito un avviso!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "Saltato", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "Per favore controlla la console del tuo browser per ulteriori dettagli.", + "UPLOAD_UNKNOWN": "Il server ha restituito una risposta sconosciuta. Per favore controlla la console del tuo browser per ulteriori dettagli.", + "UPLOAD_ERROR_UNKNOWN": "Caricamneto fallito. Il server ha restituito un errore sconosciuto!", + "UPLOAD_ERROR_POSTSIZE": "Upload failed. The PHP post_max_size may be too small! Otherwise check the FAQ.", + "UPLOAD_ERROR_FILESIZE": "Upload failed. The PHP upload_max_filesize may be too small! Otherwise check the FAQ.", + "UPLOAD_IN_PROGRESS": "Lychee sta momentaneamente caricando!", + "UPLOAD_IMPORT_WARN_ERR": "L’importazione è finita, ma ha restituito errori o avvisi. Per favore controlla il log (Impostazioni -> Visualizza Log) per ulteriori dettagli.", + "UPLOAD_IMPORT_COMPLETE": "Importazione completata", + "UPLOAD_IMPORT_INSTR": "Per favore inserisci il link diretto alla foto per importarla:", + "UPLOAD_IMPORT": "Importa", + "UPLOAD_IMPORT_SERVER": "Importa da server", + "UPLOAD_IMPORT_SERVER_FOLD": "Cartella vuota o nessun file leggibile da elaborare. Per favore controlla il log (Impostazioni -> Visualizza Log) per ulteriori dettagli.", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "È stato impossibile avviare l’importazione dato che la cartella era vuota!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Delete originals", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "I file originali saranno eliminati dopo l’importazione se possibile.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "The import process on the server is approaching the memory limit and may end up being terminated prematurely.", + "UPLOAD_WARNING": "Warning", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "The given path is not a readable directory!", + "UPLOAD_IMPORT_PATH_RESERVED": "The given path is a reserved path of Lychee!", + "UPLOAD_IMPORT_FAILED": "Could not import the file!", + "UPLOAD_IMPORT_UNSUPPORTED": "Unsupported file type!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Gestione propria delle foto fatta nel modo giusto", + "ABOUT_DESCRIPTION": "Lychee<\/a> è uno strumento gratuito di gestione delle foto, eseguito nel server o sul tuo spazio web. L’installazione è questione di secondi. Carica, gestisci e condividi foto come in un’applicazione nativa. Lychee offre tutto ciò di cui hai bisogno e tutte le tue foto vengono salvate in modo sicuro.", + "FOOTER_COPYRIGHT": "Tutte le immagini su questo sito web sono soggette a copyright di %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Hosted with Lychee", + "URL_COPY_TO_CLIPBOARD": "Copy to clipboard", + "URL_COPIED_TO_CLIPBOARD": "Copied URL to clipboard!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Direct links to image files:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Medium", + "PHOTO_MEDIUM_HIDPI": "Medium HiDPI", + "PHOTO_SMALL": "Thumb", + "PHOTO_SMALL_HIDPI": "Thumb HiDPI", + "PHOTO_THUMB": "Square thumb", + "PHOTO_THUMB_HIDPI": "Square thumb HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Video part of live-photo", + "PHOTO_VIEW": "Lychee Photo View:", + "PHOTO_EDIT_ROTATECWISE": "Ruota in senso orario", + "PHOTO_EDIT_ROTATECCWISE": "Ruota in senso anti-orario", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/nl.json b/lang/nl.json new file mode 100644 index 00000000000..60c9eb137bf --- /dev/null +++ b/lang/nl.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Gebruikersnaam", + "PASSWORD": "Wachtwoord", + "ENTER": "Enter", + "CANCEL": "Annuleer", + "CONFIRM": "Doe maar", + "SIGN_IN": "Log in", + "CLOSE": "Sluit", + "SETTINGS": "Settings", + "SEARCH": "Search …", + "MORE": "More", + "DEFAULT": "Default", + "GALLERY": "Gallery", + "USERS": "Users", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Sharing", + "CHANGE_LOGIN": "Verander Login", + "CHANGE_SORTING": "Verander Sortering", + "SET_DROPBOX": "Set Dropbox", + "ABOUT_LYCHEE": "Over Lychee", + "DIAGNOSTICS": "Diagnostics", + "DIAGNOSTICS_GET_SIZE": "Request space usage", + "JOBS": "Show job history", + "LOGS": "Laat logs zien", + "SIGN_OUT": "Log uit", + "UPDATE_AVAILABLE": "Update beschikbaar!", + "MIGRATION_AVAILABLE": "Migration available!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Default license for new uploads:", + "SET_LICENSE": "Set License", + "SET_OVERLAY_TYPE": "Set Overlay", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Set OpenStreetMap tiles provider", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Slimme albums", + "SHARED_ALBUMS": "Shared albums", + "ALBUMS": "Albums", + "PHOTOS": "Pictures", + "SEARCH_RESULTS": "Search results", + "RENAME": "Hernoem", + "RENAME_ALL": "Geselecteerde Hernoem", + "MERGE": "Voeg samen", + "MERGE_ALL": "Geselecteerd samenvoegen", + "MAKE_PUBLIC": "Maak Publiek", + "SHARE_ALBUM": "Deel Album", + "SHARE_PHOTO": "Deel Photo", + "VISIBILITY_ALBUM": "Album Visibility", + "VISIBILITY_PHOTO": "Photo Visibility", + "DOWNLOAD_ALBUM": "Download Album", + "ABOUT_ALBUM": "Over Album", + "DELETE_ALBUM": "Verwijder Album", + "MOVE_ALBUM": "Move Album", + "FULLSCREEN_ENTER": "Enter Fullscreen", + "FULLSCREEN_EXIT": "Exit Fullscreen", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "Verwijder Album en Foto’s", + "KEEP_ALBUM": "Behoud Album", + "DELETE_ALBUM_CONFIRMATION": "Weet je zeker dat je dit album en alle foto’s die het “%s” bevat wilt verwijderen? Deze actie kan niet ongedaan gemaakt worden!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album “%s” (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Verwijder Albums en Foto’s", + "KEEP_ALBUMS": "Behoud Albums", + "DELETE_ALBUMS_CONFIRMATION": "Weet je zeker dat je deze albums en alle foto’s die ze %d bevatten wilt verwijderen? Deze actie kan niet ongedaan gemaakt worden!", + "DELETE_UNSORTED_CONFIRM": "Weet je zeker dat je alle foto’s van “Ongesoorteerd” wilt verwijdren? Deze actie kan niet ongedaan gemaakt worden!", + "CLEAR_UNSORTED": "Wis Ongesoorteerd", + "KEEP_UNSORTED": "Behoud Ongesoorteerd", + "EDIT_SHARING": "Bewerk delen", + "MAKE_PRIVATE": "Maak privé", + "CLOSE_ALBUM": "Sluit Album", + "CLOSE_PHOTO": "Sluit Foto", + "CLOSE_MAP": "Close Map", + "ADD": "Voeg toe", + "MOVE": "Verplaats", + "MOVE_ALL": "Verplaatsen Geselecteerd", + "DUPLICATE": "Dupliceer", + "DUPLICATE_ALL": "Duplicaat Geselecteerd", + "COPY_TO": "Copy to …", + "COPY_ALL_TO": "Kopiëren geselecteerd om …", + "DELETE": "Verwijder", + "SAVE": "Save", + "DELETE_ALL": "Geselecteerde verwijderen", + "DOWNLOAD": "Download", + "DOWNLOAD_ALL": "Download Geselecteerd", + "UPLOAD_PHOTO": "Upload Foto", + "IMPORT_LINK": "Importeer van Link", + "IMPORT_DROPBOX": "Importeer van Dropbox", + "IMPORT_SERVER": "Importeer van Server", + "NEW_ALBUM": "Nieuw Album", + "NEW_TAG_ALBUM": "New Tag Album", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Voer een titel voor het album in:", + "UNTITLED": "Ongetiteld", + "UNSORTED": "Ongesoorteerd", + "STARRED": "Met ster", + "RECENT": "Recentelijk", + "PUBLIC": "Publiekelijk", + "ON_THIS_DAY": "Deze Dag", + "NUM_PHOTOS": "Foto’s", + "CREATE_ALBUM": "Maak Album", + "CREATE_TAG_ALBUM": "Create Tag Album", + "STAR_PHOTO": "Markeer met ster", + "STAR": "Ster", + "UNSTAR": "Unstar", + "STAR_ALL": "Markeer geselecteerd als favorieten", + "UNSTAR_ALL": "Verwijder geselecteerd als favorieten", + "TAG": "Tags", + "TAG_ALL": "Geselecteerde tags", + "UNSTAR_PHOTO": "Verwijder ster markeering", + "SET_COVER": "Set Album Cover", + "REMOVE_COVER": "Remove Album Cover", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Open Original", + "ABOUT_PHOTO": "Over Foto", + "DISPLAY_FULL_MAP": "Map", + "DIRECT_LINK": "Directe Link", + "DIRECT_LINKS": "Directe Links", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "Over", + "ALBUM_BASICS": "Basics", + "ALBUM_TITLE": "Titel", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Geef dit album een nieuwe titel:", + "ALBUMS_NEW_TITLE": "Geef alle geselecteerde %d albums een nieuwe titel:", + "ALBUM_SET_TITLE": "Sla Titel op", + "ALBUM_DESCRIPTION": "Onderwerk", + "ALBUM_SHOW_TAGS": "Tags to show", + "ALBUM_NEW_DESCRIPTION": "Geef een nieuwe omschrijving in:", + "ALBUM_SET_DESCRIPTION": "Sla Omschrijving op", + "ALBUM_NEW_SHOWTAGS": "Enter tags of photos that will be visible in this album:", + "ALBUM_SET_SHOWTAGS": "Set tags to show", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Aangemaakt", + "ALBUM_IMAGES": "Afbeeldingen", + "ALBUM_VIDEOS": "Videos", + "ALBUM_SUBALBUMS": "Subalbums", + "ALBUM_SHARING": "Deel", + "ALBUM_SHR_YES": "Ja", + "ALBUM_SHR_NO": "Nee", + "ALBUM_PUBLIC": "Publiekelijk", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Original", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Verborgen", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Mark album as sensitive", + "ALBUM_UNMARK_NSFW": "Unmark album as sensitive", + "ALBUM_NSFW": "Sensitive", + "ALBUM_NSFW_EXPL": "Album is marked to contain sensitive content.", + "ALBUM_DOWNLOADABLE": "Downloadbaar", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Share button is visible", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users see social media sharing links.", + "ALBUM_PASSWORD": "Wachtwoord", + "ALBUM_PASSWORD_PROT": "Met wachtwoord beschermt", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Dit album is met een wachtwoord beschermt, voer het wachtwoord in:", + "ALBUM_MERGE": "Weet je zeker dat je dit album wilt samenvoegen “%1$s” met het album “%2$s”?", + "ALBUMS_MERGE": "Weet je zeker dat je alle albums wilt samenvoegen naar “%s”?", + "MERGE_ALBUM": "Voeg albums samen", + "DONT_MERGE": "Voeg niet samen", + "ALBUM_MOVE": "Are you sure you want to move the album “%1$s” into the album “%2$s”?", + "ALBUMS_MOVE": "Are you sure you want to move all selected albums into the album “%s”?", + "MOVE_ALBUMS": "Move Albums", + "NOT_MOVE_ALBUMS": "Don't Move", + "ROOT": "Albums", + "ALBUM_REUSE": "Reuse", + "ALBUM_LICENSE": "License", + "ALBUM_SET_LICENSE": "Set License", + "ALBUM_LICENSE_HELP": "Need help choosing?", + "ALBUM_LICENSE_NONE": "None", + "ALBUM_RESERVED": "All Rights Reserved", + "ALBUM_SET_ORDER": "Set Order", + "ALBUM_ORDERING": "Order by", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "Over", + "PHOTO_BASICS": "Basics", + "PHOTO_TITLE": "Titel", + "PHOTO_NEW_TITLE": "Geef deze foto een nieuwe titel:", + "PHOTO_SET_TITLE": "Sla Titel op", + "PHOTO_UPLOADED": "Geupload", + "PHOTO_DESCRIPTION": "Omschrijving", + "PHOTO_NEW_DESCRIPTION": "Geef deze foto een nieuwe omschrijving:", + "PHOTO_SET_DESCRIPTION": "Sla omschrijving op", + "PHOTO_NEW_LICENSE": "Add a License", + "PHOTO_SET_LICENSE": "Set License", + "PHOTO_LICENSE": "License", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Reuse", + "PHOTO_LICENSE_NONE": "None", + "PHOTO_RESERVED": "All Rights Reserved", + "PHOTO_LATITUDE": "Latitude", + "PHOTO_LONGITUDE": "Longitude", + "PHOTO_ALTITUDE": "Altitude", + "PHOTO_IMGDIRECTION": "Direction", + "PHOTO_LOCATION": "Location", + "PHOTO_IMAGE": "Afbeelding", + "PHOTO_VIDEO": "Video", + "PHOTO_SIZE": "Grootte", + "PHOTO_FORMAT": "Formaat", + "PHOTO_RESOLUTION": "Resolutie", + "PHOTO_DURATION": "Duration", + "PHOTO_FPS": "Frame rate", + "PHOTO_TAGS": "Tags", + "PHOTO_NOTAGS": "Geen Tags", + "PHOTO_NEW_TAGS": "Voer je tags voor deze foto in, meerdere tags kunnen worden gescheiden door komma’s:", + "PHOTOS_NEW_TAGS": "Voer je tags in voor alle %d geselecteerde foto’s, meerdere tags kunnen worden gescheiden door komma’s:", + "PHOTO_SET_TAGS": "Sla Tags op", + "PHOTO_CAMERA": "Camera", + "PHOTO_CAPTURED": "Gefotografeerd", + "PHOTO_MAKE": "Fabricant", + "PHOTO_TYPE": "Type\/Model", + "PHOTO_LENS": "Lens", + "PHOTO_SHUTTER": "Sluitertijd", + "PHOTO_APERTURE": "Diafragma", + "PHOTO_FOCAL": "Brandpuntafstand", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Deling", + "PHOTO_DELETE": "Verwijder Foto", + "PHOTO_KEEP": "Behoud Foto", + "PHOTO_DELETE_CONFIRMATION": "Weet je zeker dat je deze foto “%s” wilt verwijderen? Deze actie kan niet ongedaan gemaakt worden!", + "PHOTO_DELETE_ALL": "Weet je zeker dat je alle geslecteerd foto’s wilt verwijderen? %d Deze actie kan niet ongedaan gemaakt worden!", + "PHOTOS_NEW_TITLE": "Voer een titel in voor alle %d geselecteerde foto’s:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Deze foto bevind zich in een gedeeld album. Om de zichtbaarheid van deze foto te wijzigen pas je de zichtbaarheid van het album aan.", + "PHOTO_SHOW_ALBUM": "Geef album weer", + "PHOTO_PUBLIC": "Public", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Original", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Hidden", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Downloadable", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Share button is visible", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Password protected", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "The sharing properties of this photo will be changed to the following:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Because this photo is located in a public album, it inherits that album’s visibility settings. Its current visibility is shown below for informational purposes only.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "The visibility of this photo can be fine-tuned using global Lychee settings. Its current visibility is shown below for informational purposes only.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Laden", + "ERROR": "Error", + "ERROR_TEXT": "Whoops, er is iets misgegaan. Herlaad de pagina en probeer het opnieuw!", + "ERROR_UNKNOWN": "Er is iets onverwachts gebeurd. Probeer het opnieuw of controleer je installatie en server. Kijk naar de readme voor meer informatie.", + "ERROR_MAP_DEACTIVATED": "Map functionality has been deactivated under settings.", + "ERROR_SEARCH_DEACTIVATED": "Search functionality has been deactivated under settings.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Probeer opnieuw", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Login Info updated.", + "SETTINGS_SUCCESS_SORT": "Sorting order updated.", + "SETTINGS_SUCCESS_DROPBOX": "Dropbox Key updated.", + "SETTINGS_SUCCESS_LANG": "Language updated", + "SETTINGS_SUCCESS_LAYOUT": "Layout updated", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "EXIF Overlay setting updated", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Publieke zoekactie bijgewerkt", + "SETTINGS_SUCCESS_LICENSE": "Default license updated", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Map display settings updated", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Map display settings for public albums updated", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Map provider settings updated", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F not supported. Sorry.", + "U2F_NOT_SECURE": "Environment not secured. U2F not available.", + "U2F_REGISTER_KEY": "Register new device.", + "U2F_REGISTRATION_SUCCESS": "Registration successful!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentication successful!", + "U2F_CREDENTIALS": "Credentials", + "U2F_CREDENTIALS_DELETED": "Credentials deleted!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Nieuw Gebruikersnaam", + "LOGIN_PASSWORD": "Nieuw Wachtwoord", + "LOGIN_PASSWORD_CONFIRM": "Confirm Password", + "PASSWORD_TITLE": "Voer je huidige wachtwoord in:", + "PASSWORD_CURRENT": "Huidig Wachtwoord", + "PASSWORD_TEXT": "Je gebruikersnaam en wachtwoord worden verandert naar:", + "PASSWORD_CHANGE": "Verander Login", + "EDIT_SHARING_TITLE": "Bewerk delen", + "EDIT_SHARING_TEXT": "De deelinstellingen van dit album worden alsvolgt ingesteld:", + "SHARE_ALBUM_TEXT": "Dit album wordt gedeeld met de volgende instellingen:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Sorteer albums op %1$s in een %2$s volgorde.", + "SORT_ALBUM_SELECT_1": "Aangemaakt op", + "SORT_ALBUM_SELECT_2": "Titel", + "SORT_ALBUM_SELECT_3": "Omschrijving", + "SORT_ALBUM_SELECT_5": "Nieuwste foto datum", + "SORT_ALBUM_SELECT_6": "Oudste foto datum", + "SORT_PHOTO_BY": "Sorteer albums op %1$s in een %2$s volgorde.", + "SORT_PHOTO_SELECT_1": "Upload Tijd", + "SORT_PHOTO_SELECT_2": "Aangemaakt op", + "SORT_PHOTO_SELECT_3": "Titel", + "SORT_PHOTO_SELECT_4": "Omschrijving", + "SORT_PHOTO_SELECT_6": "Ster", + "SORT_PHOTO_SELECT_7": "Foto formaat", + "SORT_ASCENDING": "Oplopende", + "SORT_DESCENDING": "Aflopende", + "SORT_CHANGE": "Change Sorting", + "DROPBOX_TITLE": "Stel Dropbox sleutel in", + "DROPBOX_TEXT": "Om foto’s vanuit Dropbox te kunnen importeren moet je een geldige drop-ins app sleutel hebben van hun website<\/a>. Genereer een sleutel en voer die in:", + "LANG_TEXT": "Change Lychee language for:", + "LANG_TITLE": "Change Language", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Openbare zoekactie toegestaan:", + "OVERLAY_TYPE": "Photo overlay:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "EXIF data", + "OVERLAY_DESCRIPTION": "Description", + "OVERLAY_DATE": "Date taken", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Enable maps (provided by OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Enable maps for public albums (provided by OpenStreetMap):", + "MAP_PROVIDER": "Provider of OpenStreetMap tiles:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (no HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (no HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (no HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (only HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Include photos of subalbums on map:", + "LOCATION_DECODING": "Decode GPS data into location name", + "LOCATION_SHOW": "Show location name", + "LOCATION_SHOW_PUBLIC": "Show location name for public mode", + "LAYOUT_TYPE": "Layout of photos:", + "LAYOUT_SQUARES": "Square thumbnails", + "LAYOUT_JUSTIFIED": "With aspect, justified", + "LAYOUT_MASONRY": "With aspect, masonry", + "LAYOUT_GRID": "With aspect, grid", + "LAYOUT_UNJUSTIFIED": "With aspect, unjustified", + "SET_LAYOUT": "Change layout", + "NSFW_VISIBLE_TEXT_1": "Make Sensitive albums visible by default.", + "NSFW_VISIBLE_TEXT_2": "If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Default sensitive album visibility updated with success.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Geen resultaten", + "VIEW_NO_PUBLIC_ALBUMS": "Geen publieke albums", + "VIEW_NO_CONFIGURATION": "Geen configutatie", + "VIEW_PHOTO_NOT_FOUND": "Foto niet gevonden", + "NO_TAGS": "Geen tags", + "UPLOAD_MANAGE_NEW_PHOTOS": "Je kan je nieuwe foto(’s) nu beheren.", + "UPLOAD_COMPLETE": "Upload voltooid", + "UPLOAD_COMPLETE_FAILED": "Fout bij het uploaden van een of meerdere foto’s.", + "UPLOAD_IMPORTING": "Importeren", + "UPLOAD_IMPORTING_URL": "Importeren van URL", + "UPLOAD_UPLOADING": "Uploaden", + "UPLOAD_FINISHED": "Afgerond", + "UPLOAD_PROCESSING": "Verwerken", + "UPLOAD_FAILED": "Mislukt", + "UPLOAD_FAILED_ERROR": "Upload mislukt. Server gaf een error!", + "UPLOAD_FAILED_WARNING": "Upload mislukt. Server gaf een waarschuwing!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "Overgeslagen", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "Kijk naar je browsers console voor meer informatie.", + "UPLOAD_UNKNOWN": "Server gaf een onbekende terugkoppeling, kijk naar je browsers console voor meer informatie.", + "UPLOAD_ERROR_UNKNOWN": "Upload mislukt. Server gaf een onbekende error!", + "UPLOAD_ERROR_POSTSIZE": "Upload failed. The PHP post_max_size may be too small! Otherwise check the FAQ.", + "UPLOAD_ERROR_FILESIZE": "Upload failed. The PHP upload_max_filesize may be too small! Otherwise check the FAQ.", + "UPLOAD_IN_PROGRESS": "Lychee is aan het uploaden!", + "UPLOAD_IMPORT_WARN_ERR": "De import is voltooid maar gaf waarschuwingen of errors terug. Kijk naar de logs (instellingen -> Show Log) for further details.", + "UPLOAD_IMPORT_COMPLETE": "Import complete", + "UPLOAD_IMPORT_INSTR": "Please enter the direct link to a photo to import it:", + "UPLOAD_IMPORT": "Import", + "UPLOAD_IMPORT_SERVER": "Importing from server", + "UPLOAD_IMPORT_SERVER_FOLD": "Folder empty or no readable files to process. Please take a look at the log (Settings -> Laat logs zien) voor meer informatie.", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Kan de import niet starten, folder is leeg!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Delete originals", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "De orginele bestanden worden verwijderd na de import indien mogelijk.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "The import process on the server is approaching the memory limit and may end up being terminated prematurely.", + "UPLOAD_WARNING": "Warning", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "The given path is not a readable directory!", + "UPLOAD_IMPORT_PATH_RESERVED": "The given path is a reserved path of Lychee!", + "UPLOAD_IMPORT_FAILED": "Could not import the file!", + "UPLOAD_IMPORT_UNSUPPORTED": "Unsupported file type!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Self-hosted photo-management done right", + "ABOUT_DESCRIPTION": "Lychee<\/a> is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.", + "FOOTER_COPYRIGHT": "Alle afbeeldingen op deze website zijn onderworpen aan het auteursrecht van %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Hosted with Lychee", + "URL_COPY_TO_CLIPBOARD": "Copy to clipboard", + "URL_COPIED_TO_CLIPBOARD": "Copied URL to clipboard!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Direct links to image files:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Medium", + "PHOTO_MEDIUM_HIDPI": "Medium HiDPI", + "PHOTO_SMALL": "Thumb", + "PHOTO_SMALL_HIDPI": "Thumb HiDPI", + "PHOTO_THUMB": "Square thumb", + "PHOTO_THUMB_HIDPI": "Square thumb HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Video part of live-photo", + "PHOTO_VIEW": "Lychee Photo View:", + "PHOTO_EDIT_ROTATECWISE": "Rotate clockwise", + "PHOTO_EDIT_ROTATECCWISE": "Rotate counter-clockwise", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/no.json b/lang/no.json new file mode 100644 index 00000000000..fac986fa9da --- /dev/null +++ b/lang/no.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Brukernavn", + "PASSWORD": "Passord", + "ENTER": "Stig inn", + "CANCEL": "Avbryt", + "CONFIRM": "Confirm", + "SIGN_IN": "Logg inn", + "CLOSE": "Lukk", + "SETTINGS": "Innstillinger", + "SEARCH": "Søk …", + "MORE": "Mer", + "DEFAULT": "Default", + "GALLERY": "Gallery", + "USERS": "Brukere", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Deling", + "CHANGE_LOGIN": "Endre Bruker", + "CHANGE_SORTING": "Endre sortering", + "SET_DROPBOX": "Lagre Dropbox", + "ABOUT_LYCHEE": "Om Lychee", + "DIAGNOSTICS": "Diagnostikk", + "DIAGNOSTICS_GET_SIZE": "Hent diskbruk", + "JOBS": "Show job history", + "LOGS": "Vis Logg", + "SIGN_OUT": "Logg Ut", + "UPDATE_AVAILABLE": "Oppdatering er tilgjengelig!", + "MIGRATION_AVAILABLE": "Migrering er tilgjengelig!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Standard lisens for nye opplastinger:", + "SET_LICENSE": "Lagre Lisens", + "SET_OVERLAY_TYPE": "Lagre overvisning", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Lagre leverandør for OpenStreetMap fliser", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Automatiske album", + "SHARED_ALBUMS": "Delte album", + "ALBUMS": "Album", + "PHOTOS": "Bilder", + "SEARCH_RESULTS": "Søkeresultater", + "RENAME": "Gi nytt navn", + "RENAME_ALL": "Gi nytt navn til Valgte", + "MERGE": "Slå sammen", + "MERGE_ALL": "Slå sammen Valgte", + "MAKE_PUBLIC": "Gjør Offentlig", + "SHARE_ALBUM": "Del Albumet", + "SHARE_PHOTO": "Del Bilde", + "VISIBILITY_ALBUM": "Albumsynlighet", + "VISIBILITY_PHOTO": "Bildesynlighet", + "DOWNLOAD_ALBUM": "Last ned Albumet", + "ABOUT_ALBUM": "Om Albumet", + "DELETE_ALBUM": "Fjern Albumet", + "MOVE_ALBUM": "Flytt Albumet", + "FULLSCREEN_ENTER": "Gå i Fullskjermvisning", + "FULLSCREEN_EXIT": "Slutt Fullskjermvisning", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "Fjern Album og Bilder", + "KEEP_ALBUM": "Behold Album", + "DELETE_ALBUM_CONFIRMATION": "Ønsker du virkelig å fjerne album «%s» og alle bildene i det? Denne handlingen kan ikke angres!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album «%s» (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Fjern Album og Bilder", + "KEEP_ALBUMS": "Behold Album", + "DELETE_ALBUMS_CONFIRMATION": "Ønsker du virkelig å fjerne %d valgte album og alle bildene i disse? Denne handlingen kan ikke angres!", + "DELETE_UNSORTED_CONFIRM": "Ønsker du virkelig å fjerne alle bilder fra «Usorterte»? Denne handlingen kan ikke angres!", + "CLEAR_UNSORTED": "Fjern Usorterte", + "KEEP_UNSORTED": "Behold Usorterte", + "EDIT_SHARING": "Endre Deling", + "MAKE_PRIVATE": "Gjør Privat", + "CLOSE_ALBUM": "Lukk Album", + "CLOSE_PHOTO": "Lukk Bilde", + "CLOSE_MAP": "Lukk Kart", + "ADD": "Legg til", + "MOVE": "Flytt", + "MOVE_ALL": "Flytt Valgte", + "DUPLICATE": "Dupliser", + "DUPLICATE_ALL": "Dupliser Valgte", + "COPY_TO": "Kopier til …", + "COPY_ALL_TO": "Kopier Valgte til …", + "DELETE": "Fjern", + "SAVE": "Save", + "DELETE_ALL": "Fjern Valgte", + "DOWNLOAD": "Last ned", + "DOWNLOAD_ALL": "Last ned Valgte", + "UPLOAD_PHOTO": "Last opp Bilde", + "IMPORT_LINK": "Importer fra Lenke", + "IMPORT_DROPBOX": "Importer fra Dropbox", + "IMPORT_SERVER": "Importer fra Serveren", + "NEW_ALBUM": "Nytt Album", + "NEW_TAG_ALBUM": "New Tag Album", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Legg inn en tittel for det nye albumet:", + "UNTITLED": "Uten Tittel", + "UNSORTED": "Usorterte", + "STARRED": "Favoritter", + "RECENT": "Nylige", + "PUBLIC": "Offentlige", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "Bilder", + "CREATE_ALBUM": "Lag Album", + "CREATE_TAG_ALBUM": "Create Tag Album", + "STAR_PHOTO": "Stjernemerk Bilde", + "STAR": "Stjernemerk", + "UNSTAR": "Unstar", + "STAR_ALL": "Stjernemerk Valgte", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "Tagg", + "TAG_ALL": "Tagg Valgte", + "UNSTAR_PHOTO": "Fjern Stjernemerke", + "SET_COVER": "Set Album Cover", + "REMOVE_COVER": "Remove Album Cover", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Originalbildet", + "ABOUT_PHOTO": "Om Bildet", + "DISPLAY_FULL_MAP": "Kart", + "DIRECT_LINK": "Direktelenke", + "DIRECT_LINKS": "Direktelenker", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "Om", + "ALBUM_BASICS": "Grunnleggende", + "ALBUM_TITLE": "Tittel", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Legg inn en ny tittel for Albumet:", + "ALBUMS_NEW_TITLE": "Legg inn en ny tittel for %d valgte album:", + "ALBUM_SET_TITLE": "Lagre Tittel", + "ALBUM_DESCRIPTION": "Beskrivelse", + "ALBUM_SHOW_TAGS": "Tags to show", + "ALBUM_NEW_DESCRIPTION": "Legg inn en ny beskrivelse for Albumet:", + "ALBUM_SET_DESCRIPTION": "Lagre Beskrivelsen", + "ALBUM_NEW_SHOWTAGS": "Enter tags of photos that will be visible in this album:", + "ALBUM_SET_SHOWTAGS": "Set tags to show", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Laget", + "ALBUM_IMAGES": "Bilder", + "ALBUM_VIDEOS": "Filmer", + "ALBUM_SUBALBUMS": "Underalbum", + "ALBUM_SHARING": "Deling", + "ALBUM_SHR_YES": "JA", + "ALBUM_SHR_NO": "Nei", + "ALBUM_PUBLIC": "Offentlig", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Original", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Skjult", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Mark album as sensitive", + "ALBUM_UNMARK_NSFW": "Unmark album as sensitive", + "ALBUM_NSFW": "Sensitive", + "ALBUM_NSFW_EXPL": "Album is marked to contain sensitive content.", + "ALBUM_DOWNLOADABLE": "Nedlastbar", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Delingsknappen er synlig", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "ALBUM_PASSWORD": "Passord", + "ALBUM_PASSWORD_PROT": "Passordbeskyttet", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Albumet er beskyttet med et passord. Fyll inn passordet under for å se bildene i Albumet:", + "ALBUM_MERGE": "Ønsker du virkelig slå sammen album «%1$s» med album «%2$s»?", + "ALBUMS_MERGE": "Ønsker du virkelig å slå sammen alle valge album til albumet «%s»?", + "MERGE_ALBUM": "Slå sammen Album", + "DONT_MERGE": "Ikke slå sammen", + "ALBUM_MOVE": "Ønsker du virkelig å flytte album «%1$s» inn i album «%2$s»?", + "ALBUMS_MOVE": "Ønsker du virkelig å flytte alle valge album inn i album «%2$s»?", + "MOVE_ALBUMS": "Flytt Album", + "NOT_MOVE_ALBUMS": "Ikke flytt", + "ROOT": "Album", + "ALBUM_REUSE": "Bruk om igjen", + "ALBUM_LICENSE": "Lisens", + "ALBUM_SET_LICENSE": "Lagre Lisens", + "ALBUM_LICENSE_HELP": "Trenger du hjelp for å velge?", + "ALBUM_LICENSE_NONE": "Ingen", + "ALBUM_RESERVED": "Alle Rettigheter Forbeholdt", + "ALBUM_SET_ORDER": "Set Order", + "ALBUM_ORDERING": "Order by", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "Om", + "PHOTO_BASICS": "Grunnleggende", + "PHOTO_TITLE": "Tittel", + "PHOTO_NEW_TITLE": "Fyll inn en ny tittel for bildet:", + "PHOTO_SET_TITLE": "Lagre Tittelen", + "PHOTO_UPLOADED": "Opplastet", + "PHOTO_DESCRIPTION": "Beskrivelse", + "PHOTO_NEW_DESCRIPTION": "Fyll inn en ny beskrivelse for dette bildet:", + "PHOTO_SET_DESCRIPTION": "Lagre Beskrivelsen", + "PHOTO_NEW_LICENSE": "Legg til en Lisens", + "PHOTO_SET_LICENSE": "Lagre Lisens", + "PHOTO_LICENSE": "Lisens", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Bruk om igjen", + "PHOTO_LICENSE_NONE": "Ingen", + "PHOTO_RESERVED": "Alle Rettigheter Forbeholdt", + "PHOTO_LATITUDE": "Breddegrad", + "PHOTO_LONGITUDE": "Lengdegrad", + "PHOTO_ALTITUDE": "Høyde", + "PHOTO_IMGDIRECTION": "Retning", + "PHOTO_LOCATION": "Sted", + "PHOTO_IMAGE": "Bilde", + "PHOTO_VIDEO": "Film", + "PHOTO_SIZE": "Størrelse", + "PHOTO_FORMAT": "Format", + "PHOTO_RESOLUTION": "Oppløsning", + "PHOTO_DURATION": "Lengde", + "PHOTO_FPS": "Bilderate", + "PHOTO_TAGS": "Tagger", + "PHOTO_NOTAGS": "Ingen Tagger", + "PHOTO_NEW_TAGS": "Fyll inn tagger for dette bildet. Du kan legge inn flere tagger ved å dele de med komma", + "PHOTOS_NEW_TAGS": "Legg inn tagger for %d valgte bilder. Tagger vil bli overskrevet. Du kan legge inn flere tagger ved å dele de med komma", + "PHOTO_SET_TAGS": "Lagre Tagger", + "PHOTO_CAMERA": "Kamera", + "PHOTO_CAPTURED": "Tatt", + "PHOTO_MAKE": "Produsent", + "PHOTO_TYPE": "Type\/Modell", + "PHOTO_LENS": "Linse", + "PHOTO_SHUTTER": "Lukkertid", + "PHOTO_APERTURE": "Blendertall", + "PHOTO_FOCAL": "Brennvidde", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Deling", + "PHOTO_DELETE": "Fjern Bilde", + "PHOTO_KEEP": "Behold Bilde", + "PHOTO_DELETE_CONFIRMATION": "Ønsker du virkelig å fjerne bilde «%s»? Denne handlingen kan ikke angres!", + "PHOTO_DELETE_ALL": "Ønsker du virkelig å fjerne %d valgte bilder? Denne handlingen kan ikke angres!", + "PHOTOS_NEW_TITLE": "Fyll inn en tittel for %d valgte bilder:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Bildet er i et offentlig album. Synligheten til bildet kan endres gjennom egenskapene for albumet.", + "PHOTO_SHOW_ALBUM": "Vis Album", + "PHOTO_PUBLIC": "Offentlig", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Original", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Gjemt", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Kan lastes ned", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Delingsknappen er synlig", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Passordbeskyttet", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "Innstillingene for deling av bildet vil bli endret til:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Dette bildet er i et offentlig album som arver synligheten til albumet. Nåværende synlighet er vist bare for informasjon.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "Synligeten til bildet kan bli finjustert gjennom innstillingene til Lychee. Nåværende synlighet er vist bare for informasjon.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Laster", + "ERROR": "Feil", + "ERROR_TEXT": "Oisann, her ser det ut som noe gikk galt. Vennligst last inn siden på nytt og prøv igjen!", + "ERROR_UNKNOWN": "Noe uventet skjedde. Prøv på nytt og kontroller installasjonen av Lychee og serveren. Se readme<\/b> for mer informasjon", + "ERROR_MAP_DEACTIVATED": "Kartfunksjoner har blitt deaktivert under innstillinger", + "ERROR_SEARCH_DEACTIVATED": "Søkefunksjoner har blitt deaktivert under innstillinger", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Prøv igjen", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Innlogging oppdatert.", + "SETTINGS_SUCCESS_SORT": "Sorteringsrekkefølge oppdatert.", + "SETTINGS_SUCCESS_DROPBOX": "Dropboxnøkkel oppdatert.", + "SETTINGS_SUCCESS_LANG": "Språk oppdatert", + "SETTINGS_SUCCESS_LAYOUT": "Oppsett oppdatert", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "Instilling for EXIF overvisning oppdatert", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Offentlig søk oppdatert", + "SETTINGS_SUCCESS_LICENSE": "Standard lisens oppdatert", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Innstillinger for Kartvisning oppdatert", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Innstillinger for Kartvisning for offentlige album oppdatert", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Innstillinger for kartleverandør oppdatert", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F not supported. Sorry.", + "U2F_NOT_SECURE": "Environment not secured. U2F not available.", + "U2F_REGISTER_KEY": "Register new device.", + "U2F_REGISTRATION_SUCCESS": "Registration successful!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentication successful!", + "U2F_CREDENTIALS": "Credentials", + "U2F_CREDENTIALS_DELETED": "Credentials deleted!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Nytt Brukernavn", + "LOGIN_PASSWORD": "Nytt Passord", + "LOGIN_PASSWORD_CONFIRM": "Bekreft Passord", + "PASSWORD_TITLE": "Fyll inn ditt nåværende passord:", + "PASSWORD_CURRENT": "Nåværende Passord", + "PASSWORD_TEXT": "Brukernavnet og passordet ditt vil bli endret til det følgende:", + "PASSWORD_CHANGE": "Lagre brukernavn og passord", + "EDIT_SHARING_TITLE": "Endre Deling", + "EDIT_SHARING_TEXT": "Egenskapene for deling for dette albumet vil bli endret til følgende:", + "SHARE_ALBUM_TEXT": "Albumet vil bli delt med følgende egenskaper:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Sorter album etter %1$s i en %2$s rekkefølge.", + "SORT_ALBUM_SELECT_1": "Opprettelsestid", + "SORT_ALBUM_SELECT_2": "Tittel", + "SORT_ALBUM_SELECT_3": "Beskrivelse", + "SORT_ALBUM_SELECT_5": "Seneste fangstdato", + "SORT_ALBUM_SELECT_6": "Eldste fangstdato", + "SORT_PHOTO_BY": "Sorter bilder etter %1$s i en %2$s rekkefølge.", + "SORT_PHOTO_SELECT_1": "Opplastingstid", + "SORT_PHOTO_SELECT_2": "Fangsdato", + "SORT_PHOTO_SELECT_3": "Tittel", + "SORT_PHOTO_SELECT_4": "Beskrivelse", + "SORT_PHOTO_SELECT_6": "Stjernemerk", + "SORT_PHOTO_SELECT_7": "Bildeformat", + "SORT_ASCENDING": "Stigende", + "SORT_DESCENDING": "Fallende", + "SORT_CHANGE": "Lagre Rekkefølge", + "DROPBOX_TITLE": "Lagre nøkkel for Dropbox", + "DROPBOX_TEXT": "For å importere bilder fra Dropbox trengs en gyldig applikasjonsnøkkel fra deres nettside<\/a>. Lag en personlig nøkkel og fyll inn denne under:", + "LANG_TEXT": "Endre språk for Lychee til:", + "LANG_TITLE": "Lagre innstilling for språk", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Offentlig søk tillatt:", + "OVERLAY_TYPE": "Data som skal brukes til overvisning:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "EXIF bildedata", + "OVERLAY_DESCRIPTION": "Bildebeskrivelser", + "OVERLAY_DATE": "Dato for når bildet ble tatt", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Skru på kart (levert av OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Skru på kart for offentlige album (levert av OpenStreetMap):", + "LOCATION_DECODING": "Benytt GPS data for å fylle ut stedsnavn", + "LOCATION_SHOW": "Vis stedsnavn", + "LOCATION_SHOW_PUBLIC": "Vis stedsnavn i offentlig modus", + "MAP_PROVIDER": "Leverandør av OpenStreetMap fliser:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (ikke HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (ikke HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (ikke HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (bare HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Inkluder bilder av underalbum på kart:", + "LAYOUT_TYPE": "Oppsett for bilder:", + "LAYOUT_SQUARES": "Kvadratiske miniatyrbilder", + "LAYOUT_JUSTIFIED": "Med aspektratio, justert", + "LAYOUT_MASONRY": "Med aspektratio, masonry", + "LAYOUT_GRID": "Med aspektratio, grid", + "LAYOUT_UNJUSTIFIED": "Med aspektratio, ikke justert", + "SET_LAYOUT": "Lagre oppsett", + "NSFW_VISIBLE_TEXT_1": "Make Sensitive albums visible by default.", + "NSFW_VISIBLE_TEXT_2": "If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Default sensitive album visibility updated with success.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Ingen resultater", + "VIEW_NO_PUBLIC_ALBUMS": "Ingen offentlige album", + "VIEW_NO_CONFIGURATION": "Ingen innstillinger", + "VIEW_PHOTO_NOT_FOUND": "Bildet ble ikke funnet", + "NO_TAGS": "Ingen Tagger", + "UPLOAD_MANAGE_NEW_PHOTOS": "Du kan nå håndtere de nye bildene.", + "UPLOAD_COMPLETE": "Opplasting fullført", + "UPLOAD_COMPLETE_FAILED": "Kunne ikke laste opp en eller flere av bildene.", + "UPLOAD_IMPORTING": "Importerer", + "UPLOAD_IMPORTING_URL": "Importerer lenke", + "UPLOAD_UPLOADING": "Laster opp", + "UPLOAD_FINISHED": "Fullført", + "UPLOAD_PROCESSING": "Arbeider", + "UPLOAD_FAILED": "Feilet", + "UPLOAD_FAILED_ERROR": "Opplasting feilet. Serveren svarte med en feil!", + "UPLOAD_FAILED_WARNING": "Opplasting feilet. Serveren svarte med en advarsel!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "Hoppet over", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "Vennligst se konsollen i nettleseren for mer informasjon.", + "UPLOAD_UNKNOWN": "Serveren svarte med en ukjent feilmelding. Vennlist se konsollen i nettleseren for mer informasjon.", + "UPLOAD_ERROR_UNKNOWN": "Opplasting feilet. Serveren svarte med en ukjent feil!", + "UPLOAD_ERROR_POSTSIZE": "Upload failed. The PHP post_max_size may be too small! Otherwise check the FAQ.", + "UPLOAD_ERROR_FILESIZE": "Upload failed. The PHP upload_max_filesize may be too small! Otherwise check the FAQ.", + "UPLOAD_IN_PROGRESS": "Lychee laster for tiden opp!", + "UPLOAD_IMPORT_WARN_ERR": "Importeringen er ferdig, men advarsler eller feil ble returnert. Vennligst see loggen (Innstilinger -> Vis Logg) for mer informasjon.", + "UPLOAD_IMPORT_COMPLETE": "Importering fullført", + "UPLOAD_IMPORT_INSTR": "Vennlist fyll inn en direkte lenke til et bilde for å importere det:", + "UPLOAD_IMPORT": "Importer", + "UPLOAD_IMPORT_SERVER": "Importer fra server", + "UPLOAD_IMPORT_SERVER_FOLD": "Mappen er tom eller inneholder ingen lesbare filer som kan behandles. Vennligst se loggen (Innstillinger -> Vis Logg) for mer informasjon.", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Kunne ikke starte importeringen siden mappen var tom!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Fjern originalene", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "De opprinnelige filene vil bli fjernet etter importeringen når mulig.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "Importeringsprossesen på serverren nærmer seg grensen for hvor mye minne som kan brukes, og kan bli avbrutt før den er ferdig.", + "UPLOAD_WARNING": "Advarsel", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "Stien er ikke en lesbar mappe!", + "UPLOAD_IMPORT_PATH_RESERVED": "Stien er en sti som er reservert for Lychee!", + "UPLOAD_IMPORT_FAILED": "Kan ikke importere filen!", + "UPLOAD_IMPORT_UNSUPPORTED": "Filtypen er ikke støttet!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Selvlevert bildehåndtering den riktige måten!", + "ABOUT_DESCRIPTION": "Lychee<\/a> er et gratis bildehåndteringsverktøy, som kjører på serveren eller en webhost som du eier og kontrollerer. Installasjon tar sekunder. Last opp, håndter, og del bilder som om det er din egen maskin. Lychee leverer alt du trenger, og alle bildene er trygt lagret.", + "FOOTER_COPYRIGHT": "Alle bildene på denne nettsiden er bundet av opphavsrett fra %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Levert av Lychee", + "URL_COPY_TO_CLIPBOARD": "Kopier til utklippstavlen", + "URL_COPIED_TO_CLIPBOARD": "Kopierte lenke til utklippstavlen!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Direkte lenke til bildefiler:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Medium", + "PHOTO_MEDIUM_HIDPI": "Medium HiDPI", + "PHOTO_SMALL": "Miniatyr", + "PHOTO_SMALL_HIDPI": "Miniatyr HiDPI", + "PHOTO_THUMB": "Kvadratisk miniatyr", + "PHOTO_THUMB_HIDPI": "Kvadratisk miniatyr HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Filmdel av livebilde", + "PHOTO_VIEW": "Lychee Bildevisning:", + "PHOTO_EDIT_ROTATECWISE": "Roter med klokken", + "PHOTO_EDIT_ROTATECCWISE": "Roter mot klokken", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/pl.json b/lang/pl.json new file mode 100644 index 00000000000..480d2c48805 --- /dev/null +++ b/lang/pl.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Nazwa użytkownika", + "PASSWORD": "Hasło", + "ENTER": "Potwierdź", + "CANCEL": "Anuluj", + "CONFIRM": "Confirm", + "SIGN_IN": "Zaloguj", + "CLOSE": "Zamknij", + "SETTINGS": "Ustawienia", + "SEARCH": "Szukaj …", + "MORE": "Więcej", + "DEFAULT": "Domyślne", + "GALLERY": "Gallery", + "USERS": "Użytkownicy", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Udostępnianie", + "CHANGE_LOGIN": "Zmień login", + "CHANGE_SORTING": "Zmień sortowanie", + "SET_DROPBOX": "Zapisz", + "ABOUT_LYCHEE": "O Lychee", + "DIAGNOSTICS": "Informacje techniczne", + "DIAGNOSTICS_GET_SIZE": "Analiza miejsca na dysku", + "JOBS": "Show job history", + "LOGS": "Logi", + "SIGN_OUT": "Wyloguj", + "UPDATE_AVAILABLE": "Dostępna aktualizacja!", + "MIGRATION_AVAILABLE": "Dostępna migracja!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Domyślna licencja dla nowych wrzutek:", + "SET_LICENSE": "Zapisz", + "SET_OVERLAY_TYPE": "Set Overlay", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Set OpenStreetMap tiles provider", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Inteligentne albumy", + "SHARED_ALBUMS": "Udostępnione albumy", + "ALBUMS": "Albumy", + "PHOTOS": "Zdjęcia", + "SEARCH_RESULTS": "Wyniki wyszukiwania", + "RENAME": "Zmień nazwę", + "RENAME_ALL": "Zamień zaznaczone", + "MERGE": "Połącz z …", + "MERGE_ALL": "Połącz zaznaczone", + "MAKE_PUBLIC": "Ustaw jako publiczne", + "SHARE_ALBUM": "Udostępnij album", + "SHARE_PHOTO": "Udostępnij zdjęcie", + "VISIBILITY_ALBUM": "Widoczność", + "VISIBILITY_PHOTO": "Widoczność", + "DOWNLOAD_ALBUM": "Pobierz album", + "ABOUT_ALBUM": "O albumie", + "DELETE_ALBUM": "Usuń album", + "MOVE_ALBUM": "Przenieś album", + "FULLSCREEN_ENTER": "Włącz pełny ekran", + "FULLSCREEN_EXIT": "Wyłącz pełny rkran", + "SHARING_ALBUM_USERS": "Udostępnij album", + "WAIT_FETCH_DATA": "Proszę czekać, trwa pobieranie danych …", + "SHARING_ALBUM_USERS_NO_USERS": "Brak użytkowników do udostępnienia albumu", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Wybierz użytkowników aby udostępnić ten album", + "DELETE_ALBUM_QUESTION": "Usuń album i zdjęcia", + "KEEP_ALBUM": "Zatrzymaj album", + "DELETE_ALBUM_CONFIRMATION": "Czy na pewno chcesz usunąć album „%s” razem z zawartością ? Ta akcja jest nieodwracalna!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album „%s” (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Usuń album wraz z zawartością", + "KEEP_ALBUMS": "Zatrzymaj Albumy", + "DELETE_ALBUMS_CONFIRMATION": "Czy na pewno usunąć %d zaznaczone albumy wraz z zawartością? Ta akcja jest nieodwracalna!", + "DELETE_UNSORTED_CONFIRM": "Czy na pewno usunąć wszystkie zdjęcia z „Nieposortowane”? Ta operacja nie może zostać cofnięta!", + "CLEAR_UNSORTED": "Wyczyść Nieposortowane", + "KEEP_UNSORTED": "Zatrzymaj Nieposortowane", + "EDIT_SHARING": "Edytuj udostępnianie", + "MAKE_PRIVATE": "Oznacz jako prywatne", + "CLOSE_ALBUM": "Zmaknij album", + "CLOSE_PHOTO": "Zamknij zdjęcie", + "CLOSE_MAP": "Zamknij mapę", + "ADD": "Dodaj", + "MOVE": "Przenieś do …", + "MOVE_ALL": "Przenieś zaznaczone", + "DUPLICATE": "Kopiuj", + "DUPLICATE_ALL": "Kopiuj zaznaczone", + "COPY_TO": "Kopiuj do …", + "COPY_ALL_TO": "Kopiuj zaznaczone do …", + "DELETE": "Usuń", + "SAVE": "Save", + "DELETE_ALL": "Usuń zaznaczone", + "DOWNLOAD": "Pobierz", + "DOWNLOAD_ALL": "Pobierz zaznaczone", + "UPLOAD_PHOTO": "Wgraj zdjęcie", + "IMPORT_LINK": "Importuj z adresu", + "IMPORT_DROPBOX": "Importuj z Dropbox", + "IMPORT_SERVER": "Importuj z serwera", + "NEW_ALBUM": "Dodaj album", + "NEW_TAG_ALBUM": "Dodaj album z tagami", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Wpisz tytuł dla nowego albumu:", + "UNTITLED": "Bez nazwy", + "UNSORTED": "Nieposortowane", + "STARRED": "Oznaczone", + "RECENT": "Ostatnie", + "PUBLIC": "Publiczne", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "Zdjęć", + "CREATE_ALBUM": "Utwórz album", + "CREATE_TAG_ALBUM": "Utwórz album z tagami", + "STAR_PHOTO": "Oznacz", + "STAR": "Oznacz", + "UNSTAR": "Unstar", + "STAR_ALL": "Oznacz zaznaczone", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "Otaguj", + "TAG_ALL": "Otaguj zaznaczone", + "UNSTAR_PHOTO": "Cofnij oznaczenie", + "SET_COVER": "Ustaw jako okładkę albumu", + "REMOVE_COVER": "Usuń okładkę albumu", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Otwórz oryginalne", + "ABOUT_PHOTO": "Informacje o zdjęciu", + "DISPLAY_FULL_MAP": "Mapa", + "DIRECT_LINK": "Link bezpośredni", + "DIRECT_LINKS": "Linki bezpośrednie", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "Informacje o albumie", + "ALBUM_BASICS": "Informacje podstawowe", + "ALBUM_TITLE": "Tytuł", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Edytuj tytuł albumu:", + "ALBUMS_NEW_TITLE": "Wpisz tytuł dla %d wybranych albumów:", + "ALBUM_SET_TITLE": "Zapisz", + "ALBUM_DESCRIPTION": "Opis", + "ALBUM_SHOW_TAGS": "Tagi do pokazania", + "ALBUM_NEW_DESCRIPTION": "Edytuj opis albumu:", + "ALBUM_SET_DESCRIPTION": "Zapisz", + "ALBUM_NEW_SHOWTAGS": "Enter tags of photos that will be visible in this album:", + "ALBUM_SET_SHOWTAGS": "Ustaw tagi do pokazania", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Utworzone", + "ALBUM_IMAGES": "Zdjęcia", + "ALBUM_VIDEOS": "Filmy", + "ALBUM_SUBALBUMS": "Albumy podrzędne", + "ALBUM_SHARING": "Udostępnianie", + "ALBUM_SHR_YES": "TAK", + "ALBUM_SHR_NO": "Nie", + "ALBUM_PUBLIC": "Publiczny", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Oryginalne zdjęcia", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Ukryty", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Oznacz album jako poufny", + "ALBUM_UNMARK_NSFW": "Odznacz album jako poufny", + "ALBUM_NSFW": "Poufny", + "ALBUM_NSFW_EXPL": "Album zawiera poufne informacje.", + "ALBUM_DOWNLOADABLE": "Pobieranie", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Udostępnianie", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "ALBUM_PASSWORD": "Hasło", + "ALBUM_PASSWORD_PROT": "Zabezpieczony", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Album chroniony jest hasłem. Wpisz hasło aby zobaczyć zawartość:", + "ALBUM_MERGE": "Czy na pewno połączyć ten album „%1$s” z albumem „%2$s”?", + "ALBUMS_MERGE": "Czy na pewno połączyć zaznaczone albumy z „%s”?", + "MERGE_ALBUM": "Połącz albumy", + "DONT_MERGE": "Anuluj", + "ALBUM_MOVE": "Czy na pewno przenieść album „%1$s” do albumu „%2$s”?", + "ALBUMS_MOVE": "Czy na pewno przenieść zaznaczone albumy do albumu „%s”?", + "MOVE_ALBUMS": "Przenieś albumy", + "NOT_MOVE_ALBUMS": "Anuluj", + "ROOT": "Albumy", + "ALBUM_REUSE": "Prawo do wykorzystania", + "ALBUM_LICENSE": "Licencja", + "ALBUM_SET_LICENSE": "Zapisz", + "ALBUM_LICENSE_HELP": "Potrzebujesz pomocy?", + "ALBUM_LICENSE_NONE": "Brak", + "ALBUM_RESERVED": "Wszelkie prawa zastrzeżone", + "ALBUM_SET_ORDER": "Zapisz", + "ALBUM_ORDERING": "Sortowanie", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "Informacje o zdjęciu", + "PHOTO_BASICS": "Informacje podstawowe", + "PHOTO_TITLE": "Tytuł", + "PHOTO_NEW_TITLE": "Wpisz nowy tytuł:", + "PHOTO_SET_TITLE": "Ustaw tytuł", + "PHOTO_UPLOADED": "Wgrany", + "PHOTO_DESCRIPTION": "Opis", + "PHOTO_NEW_DESCRIPTION": "Wpisz nowy opis:", + "PHOTO_SET_DESCRIPTION": "Ustaw opis", + "PHOTO_NEW_LICENSE": "Dodaj licencję", + "PHOTO_SET_LICENSE": "Ustaw licencję", + "PHOTO_LICENSE": "Licencja", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Ponowne wykorzystanie", + "PHOTO_LICENSE_NONE": "Brak", + "PHOTO_RESERVED": "Wszelkie prawa zastrzeżone", + "PHOTO_LATITUDE": "Długość geograficzna", + "PHOTO_LONGITUDE": "Szerokość geograficzna", + "PHOTO_ALTITUDE": "Wysokość", + "PHOTO_IMGDIRECTION": "Kierunek", + "PHOTO_LOCATION": "Lokalizacja", + "PHOTO_IMAGE": "Zdjęcie", + "PHOTO_VIDEO": "Film", + "PHOTO_SIZE": "Rozmiar", + "PHOTO_FORMAT": "Format", + "PHOTO_RESOLUTION": "Rozdzielczość", + "PHOTO_DURATION": "Czas trwania", + "PHOTO_FPS": "Przepustowość klatek\/sek", + "PHOTO_TAGS": "Tagi", + "PHOTO_NOTAGS": "Brak Tagów", + "PHOTO_NEW_TAGS": "Wpisz tagi rozdzielając je przecinkiem:", + "PHOTOS_NEW_TAGS": "Wpisz tagi dla %d zaznaczonych zdjęć. Istniejące tagi zostaną nadpisane. Możesz wpisać więcej tagów rozdzielając je przecinkiem:", + "PHOTO_SET_TAGS": "Zapisz", + "PHOTO_CAMERA": "Aparat", + "PHOTO_CAPTURED": "Zrzut", + "PHOTO_MAKE": "Marka", + "PHOTO_TYPE": "Typ\/Model", + "PHOTO_LENS": "Obiektyw", + "PHOTO_SHUTTER": "Szybkość migawki", + "PHOTO_APERTURE": "Przysłona", + "PHOTO_FOCAL": "Ogniskowa", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Udostępnianie", + "PHOTO_DELETE": "Usuń Zdjęcie", + "PHOTO_KEEP": "Anuluj", + "PHOTO_DELETE_CONFIRMATION": "Czy na pewno usunąć zdjęcie „%s”? Akcja jest nieodwracalna!", + "PHOTO_DELETE_ALL": "Czy na pewno usunąć %d zaznaczone zdjęcia? Akcja jest nieodwracalna!", + "PHOTOS_NEW_TITLE": "Wpisz tytuł dla %d zaznaczonych zdjęć:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Zdjęcie znajduje się w albumie publicznym. Aby ustawić je jako prywatne\/publiczne, edytuj ustawienie widoczności w albumie, w którym zdjęcie się znajduje.", + "PHOTO_SHOW_ALBUM": "Pokaż album", + "PHOTO_PUBLIC": "Publiczne", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Originalne zdjęcia", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Ukryty", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Pobieranie", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Udostępnianie", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Zabezpieczony", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "Ustawienia udostępniania tego zdjęcia zostaną zmienione na następujące:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Ponieważ zdjęcie znajduje się w albumie publicznym, dzieli jego ustawienia widoczności. Aktualna wartość widoczna jest poniżej (tylko informacyjnie).", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "Widoczność zdjęcia można dostosować używając globalnych ustawień Lychee. Aktualna wartość widoczna jest poniżej (tylko informacyjnie).", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Wczytywanie", + "ERROR": "Błąd", + "ERROR_TEXT": "Ups, wygląda na to że coś poszło nie tak. Odśwież stronę i spróbuj ponownie!", + "ERROR_UNKNOWN": "Wystąpił nieoczekiwany błąd. Spróbuj ponownie i sprawdź swoją instalację oraz serwer. Przejrzyj plik README dla bardziej szczegółowych informacji.", + "ERROR_MAP_DEACTIVATED": "Funkcja mapy została wyłączona w ustawieniach.", + "ERROR_SEARCH_DEACTIVATED": "Funkcja wyszkukiwania została wyłączona w ustawieniach.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Ponów", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Zaktualizowano informacje o loginie.", + "SETTINGS_SUCCESS_SORT": "Zaktualizowano kolejność sortowania.", + "SETTINGS_SUCCESS_DROPBOX": "Zaktualizowano klucz Dropbox.", + "SETTINGS_SUCCESS_LANG": "Zaktualizowano język", + "SETTINGS_SUCCESS_LAYOUT": "Zaktualizowano układ", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "EXIF Overlay setting updated", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Zaktualizowano publiczne wyszukiwanie", + "SETTINGS_SUCCESS_LICENSE": "Zaktualizowano domyślną licencję", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Zaktualizowano ustawienia wyświetlania mapy", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Zaktualizowano ustawienia wyświetlania mapy dla albumów publicznych", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Zaktualizowano ustawienia dostawcy map", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "Brak obsługi U2F. Przepraszamy.", + "U2F_NOT_SECURE": "Środowisko nie zostało zabezpieczone. U2F nie jest dostępne.", + "U2F_REGISTER_KEY": "Zarejestruj nowe urządzenie.", + "U2F_REGISTRATION_SUCCESS": "Rejestracja pomyślna!", + "U2F_AUTHENTIFICATION_SUCCESS": "Autoryzacja pomyślna!", + "U2F_CREDENTIALS": "Dane uwierzytelniające", + "U2F_CREDENTIALS_DELETED": "Usunięto dane uwierzytelniające!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Nowa nazwa użytkownika", + "LOGIN_PASSWORD": "Nowe hasło", + "LOGIN_PASSWORD_CONFIRM": "Potwierdź nowe hasło", + "PASSWORD_TITLE": "Wpisz aktualne dane dostępowe:", + "PASSWORD_CURRENT": "Aktualne hasło", + "PASSWORD_TEXT": "Twoja nazwa użytkownika oraz hasło zostaną zmienione na następujące:", + "PASSWORD_CHANGE": "Zmień login", + "EDIT_SHARING_TITLE": "Edytuj udostępnianie", + "EDIT_SHARING_TEXT": "Ustawienia udostępniania zostaną zmienione na następujące:", + "SHARE_ALBUM_TEXT": "Album zostanie udostępniony z następującymi ustawieniami:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Sortuj albumy według pola %1$s w kolejności %2$s", + "SORT_ALBUM_SELECT_1": "data utworzenia", + "SORT_ALBUM_SELECT_2": "tytuł", + "SORT_ALBUM_SELECT_3": "opis", + "SORT_ALBUM_SELECT_5": "Latest Take Date", + "SORT_ALBUM_SELECT_6": "Oldest Take Date", + "SORT_PHOTO_BY": "Sortuj zdjęcia według pola %1$s w kolejności %2$s", + "SORT_PHOTO_SELECT_1": "data dodania", + "SORT_PHOTO_SELECT_2": "Take Date", + "SORT_PHOTO_SELECT_3": "tytuł", + "SORT_PHOTO_SELECT_4": "opis", + "SORT_PHOTO_SELECT_6": "oznaczony", + "SORT_PHOTO_SELECT_7": "format", + "SORT_ASCENDING": "rosnącej", + "SORT_DESCENDING": "malejącej", + "SORT_CHANGE": "Zmień sortowanie", + "DROPBOX_TITLE": "Ustaw klucz Dropbox", + "DROPBOX_TEXT": "In order to import photos from your Dropbox, you need a valid drop-ins app key from their website<\/a>. Generate yourself a personal key and enter it below:", + "LANG_TEXT": "Zmień język na:", + "LANG_TITLE": "Zmień język", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Public search allowed:", + "OVERLAY_TYPE": "Photo overlay:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "EXIF data", + "OVERLAY_DESCRIPTION": "Description", + "OVERLAY_DATE": "Date taken", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Enable maps (provided by OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Enable maps for public albums (provided by OpenStreetMap):", + "MAP_PROVIDER": "Provider of OpenStreetMap tiles:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (no HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (no HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (no HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (only HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Include photos of subalbums on map:", + "LOCATION_DECODING": "Decode GPS data into location name", + "LOCATION_SHOW": "Pokaż lokalizację", + "LOCATION_SHOW_PUBLIC": "Show location name for public mode", + "LAYOUT_TYPE": "Układ zdjęć:", + "LAYOUT_SQUARES": "Kwadratowe miniaturki", + "LAYOUT_JUSTIFIED": "Aspekt, wyrównane", + "LAYOUT_MASONRY": "Aspekt, masonry", + "LAYOUT_GRID": "Aspekt, grid", + "LAYOUT_UNJUSTIFIED": "Aspekt, bez wyrównania", + "SET_LAYOUT": "Zmień układ", + "NSFW_VISIBLE_TEXT_1": "Ustaw poufne albumy domyślnie widoczne.", + "NSFW_VISIBLE_TEXT_2": "Jeśli album jest publiczny, wciąż jest dostępny, jedynie został ukryty do przeglądania i może zostać pokazany poprzez naciśnięcie H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Domyślne ustawienie dotyczące widoczności albumów poufnych ostało zaktualizowane.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Brak wyników", + "VIEW_NO_PUBLIC_ALBUMS": "Brak albumów publicznych", + "VIEW_NO_CONFIGURATION": "Brak konfiguracji", + "VIEW_PHOTO_NOT_FOUND": "Zdjęcie nie zostało znalezione", + "NO_TAGS": "Brak tagów", + "UPLOAD_MANAGE_NEW_PHOTOS": "Możesz już zarządzać nowymi zdjęciami.", + "UPLOAD_COMPLETE": "Zakońcozno wgrywanie", + "UPLOAD_COMPLETE_FAILED": "Nie udało się wgrać jednego lub więcej plików.", + "UPLOAD_IMPORTING": "Importowanie", + "UPLOAD_IMPORTING_URL": "Importowanie URL", + "UPLOAD_UPLOADING": "Wgrywanie", + "UPLOAD_FINISHED": "Ukończono", + "UPLOAD_PROCESSING": "Przetwarzanie", + "UPLOAD_FAILED": "Nie udało się", + "UPLOAD_FAILED_ERROR": "Wgrywanie nie powiodło się. Serwer zwrócił błąd!", + "UPLOAD_FAILED_WARNING": "Wgrywanie nie powiodło się. Serwer zwrócił ostrzeżenie!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "Pominięto", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "Proszę przejrzeć konsolę błędów przeglądarki aby spradzić szczegóły.", + "UPLOAD_UNKNOWN": "Server returned an unknown response. Please take a look at the console of your browser for further details.", + "UPLOAD_ERROR_UNKNOWN": "Wgrywanie nie powiodło się. Server returned an unkown error!", + "UPLOAD_ERROR_POSTSIZE": "Wgrywanie nie powiodło się. Wartość post_max_size w PHP jest zbyt niska!", + "UPLOAD_ERROR_FILESIZE": "Wgrywanie nie powiodło się. Wartość upload_max_filesize w PHP jest zbyt niska!", + "UPLOAD_IN_PROGRESS": "Lychee jest w trakcie wgrywania!", + "UPLOAD_IMPORT_WARN_ERR": "The import has been finished, but returned warnings or errors. Please take a look at the log (Settings -> Show Log) for further details.", + "UPLOAD_IMPORT_COMPLETE": "Import complete", + "UPLOAD_IMPORT_INSTR": "Please enter the direct link to a photo to import it:", + "UPLOAD_IMPORT": "Import", + "UPLOAD_IMPORT_SERVER": "Importing from server", + "UPLOAD_IMPORT_SERVER_FOLD": "Folder empty or no readable files to process. Please take a look at the log (Settings -> Show Log) for further details.", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Could not start import because the folder was empty!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Delete originals", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Original files will be deleted after the import when possible.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "The import process on the server is approaching the memory limit and may end up being terminated prematurely.", + "UPLOAD_WARNING": "Warning", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "The given path is not a readable directory!", + "UPLOAD_IMPORT_PATH_RESERVED": "The given path is a reserved path of Lychee!", + "UPLOAD_IMPORT_FAILED": "Could not import the file!", + "UPLOAD_IMPORT_UNSUPPORTED": "Unsupported file type!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Self-hosted photo-management done right", + "ABOUT_DESCRIPTION": "Lychee<\/a> is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.", + "FOOTER_COPYRIGHT": "All images on this website are subject to copyright by %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Hosted with Lychee", + "URL_COPY_TO_CLIPBOARD": "Kopiuj do schowka", + "URL_COPIED_TO_CLIPBOARD": "Skopiowano URL do schowka!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Direct links to image files:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": " Średnie", + "PHOTO_MEDIUM_HIDPI": "Medium HiDPI", + "PHOTO_SMALL": "Miniaturka", + "PHOTO_SMALL_HIDPI": "Thumb HiDPI", + "PHOTO_THUMB": "Kwadratowa miniaturka", + "PHOTO_THUMB_HIDPI": "Square thumb HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Video part of live-photo", + "PHOTO_VIEW": "Lychee Photo View:", + "PHOTO_EDIT_ROTATECWISE": "Obróć w prawo", + "PHOTO_EDIT_ROTATECCWISE": "Obróć w lewo", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/pt.json b/lang/pt.json new file mode 100644 index 00000000000..f6aac109c4c --- /dev/null +++ b/lang/pt.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Nome de utilizador", + "PASSWORD": "Password", + "ENTER": "Inserir", + "CANCEL": "Cancelar", + "CONFIRM": "Confirm", + "SIGN_IN": "Iniciar Sessão", + "CLOSE": "Fechar", + "SETTINGS": "Configurações", + "SEARCH": "Pesquisar …", + "MORE": "Mais", + "DEFAULT": "Predefinição", + "GALLERY": "Gallery", + "USERS": "Utilizadores", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Partilha", + "CHANGE_LOGIN": "Alterar Login", + "CHANGE_SORTING": "Alterar Ordenação", + "SET_DROPBOX": "Escolher Dropbox", + "ABOUT_LYCHEE": "Acerca do Lychee", + "DIAGNOSTICS": "Diagnosticos", + "DIAGNOSTICS_GET_SIZE": "Pedir utilização de espaço", + "JOBS": "Show job history", + "LOGS": "Mostrar Logs", + "SIGN_OUT": "Terminar Sessão", + "UPDATE_AVAILABLE": "Atualização disponível!", + "MIGRATION_AVAILABLE": "Migração disponível!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Default licença for new uploads:", + "SET_LICENSE": "Escolher Licença", + "SET_OVERLAY_TYPE": "Escolher Overlay", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Escolher OpenStreetMap tiles provider", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Smart álbums", + "SHARED_ALBUMS": "Álbums partilhados", + "ALBUMS": "Álbums", + "PHOTOS": "Fotos", + "SEARCH_RESULTS": "Resultados da pesquisa", + "RENAME": "Renomear", + "RENAME_ALL": "Renomear Seleção", + "MERGE": "Unir", + "MERGE_ALL": "Unir Seleção", + "MAKE_PUBLIC": "Tornar Público", + "SHARE_ALBUM": "Partilhar Álbum", + "SHARE_PHOTO": "Partilhar Fotografia", + "VISIBILITY_ALBUM": "Visibilidade do Álbum", + "VISIBILITY_PHOTO": "Visibilidade da Fotografia", + "DOWNLOAD_ALBUM": "Transferir Álbum", + "ABOUT_ALBUM": "Acerca do Álbum", + "DELETE_ALBUM": "Eliminar Álbum", + "MOVE_ALBUM": "Moverr Álbum", + "FULLSCREEN_ENTER": "Entrar em Tela Cheia", + "FULLSCREEN_EXIT": "Sair da Tela Cheia", + "SHARING_ALBUM_USERS": "Partilhar este álbum com utilizadores", + "WAIT_FETCH_DATA": "Por favor aguarde enquanto transferimos os dados …", + "SHARING_ALBUM_USERS_NO_USERS": "Não há utilizadores com quem partilhar o álbum", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Selecione os utilizadores com quem quer partilhar este álbum", + "DELETE_ALBUM_QUESTION": "Eliminar Álbum e Fotos", + "KEEP_ALBUM": "Manter Álbum", + "DELETE_ALBUM_CONFIRMATION": "De certeza que quer eliminar o álbum “%s” e todas as fotografias contidas? Esta ação não pode ser desfeita!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album “%s” (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Eliminar Álbums e Fotos", + "KEEP_ALBUMS": "Manter Álbums", + "DELETE_ALBUMS_CONFIRMATION": "De certeza que quer eliminar todos %d os álbums e todas as fotografias neles contidas? Esta ação não pode ser desfeita!", + "DELETE_UNSORTED_CONFIRM": "De certeza que quer eliminar todas as fotografias de “Desordenadas”? Esta ação não pode ser desfeita!", + "CLEAR_UNSORTED": "Limpar Desordenadas", + "KEEP_UNSORTED": "Manter Desordenadas", + "EDIT_SHARING": "Editar Sharing", + "MAKE_PRIVATE": "Tornar Privado", + "CLOSE_ALBUM": "Fechar Álbum", + "CLOSE_PHOTO": "Fechar Fotografia", + "CLOSE_MAP": "Fechar Mapa", + "ADD": "Adicionar", + "MOVE": "Mover", + "MOVE_ALL": "Mover Selecionadas", + "DUPLICATE": "Duplicar", + "DUPLICATE_ALL": "Duplicar Selecionadas", + "COPY_TO": "Copiar para …", + "COPY_ALL_TO": "Copiar Selecionadas para …", + "DELETE": "Eliminar", + "SAVE": "Save", + "DELETE_ALL": "Eliminar Selecionadas", + "DOWNLOAD": "Transferir", + "DOWNLOAD_ALL": "Transferir Selecionadas", + "UPLOAD_PHOTO": "Enviar Fotografia", + "IMPORT_LINK": "Importar a partir de um Link", + "IMPORT_DROPBOX": "Importar do Dropbox", + "IMPORT_SERVER": "Importar de um Servidor", + "NEW_ALBUM": "Novo Álbum", + "NEW_TAG_ALBUM": "Nova Etiqueta de Álbum", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Insira um título para o novo álbum:", + "UNTITLED": "Sem Título", + "UNSORTED": "Desordenadas", + "STARRED": "Favoritas", + "RECENT": "Recentes", + "PUBLIC": "Públicas", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "Fotografias", + "CREATE_ALBUM": "Criar Álbum", + "CREATE_TAG_ALBUM": "Criar Etiqueta Álbum", + "STAR_PHOTO": "Marcar como Favorita", + "STAR": "Favorita", + "UNSTAR": "Unstar", + "STAR_ALL": "Marcar Selecionadas como Favoritas", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "Etiqueta", + "TAG_ALL": "Etiquetar Selecionadas", + "UNSTAR_PHOTO": "Desmarcar como Favorita", + "SET_COVER": "Escolher para Capa de Álbum", + "REMOVE_COVER": "Remover Capa de Álbum", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Abrir Original", + "ABOUT_PHOTO": "Acerca da Fotografia", + "DISPLAY_FULL_MAP": "Mapa", + "DIRECT_LINK": "Link Direto", + "DIRECT_LINKS": "Links Diretos", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "Acerca de", + "ALBUM_BASICS": "Básicos", + "ALBUM_TITLE": "Título", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Inserir novo título para este álbum:", + "ALBUMS_NEW_TITLE": "Inserir um título para todos %d álbums selecionados:", + "ALBUM_SET_TITLE": "Escolher Título", + "ALBUM_DESCRIPTION": "Descrição", + "ALBUM_SHOW_TAGS": "Etiquetas para mostrar", + "ALBUM_NEW_DESCRIPTION": "Inserir uma nova descrição para este álbum:", + "ALBUM_SET_DESCRIPTION": "Escolher Descrição", + "ALBUM_NEW_SHOWTAGS": "Inserir etiquetas de fotografias que irão ficar visíveis neste álbum:", + "ALBUM_SET_SHOWTAGS": "Escolher etiquetas a mostrar", + "ALBUM_ALBUM": "Álbum", + "ALBUM_CREATED": "Criado", + "ALBUM_IMAGES": "Imagens", + "ALBUM_VIDEOS": "Videos", + "ALBUM_SUBALBUMS": "Subálbums", + "ALBUM_SHARING": "Partilhar", + "ALBUM_SHR_YES": "SIM", + "ALBUM_SHR_NO": "Não", + "ALBUM_PUBLIC": "Público", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Original", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Oculto", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Marcar álbum como sensível", + "ALBUM_UNMARK_NSFW": "Desmarcar álbum como sensível", + "ALBUM_NSFW": "Sensível", + "ALBUM_NSFW_EXPL": "Álbum está marcado como contendo conteúdo sensível.", + "ALBUM_DOWNLOADABLE": "Transferível", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Botão Partilhar está visível", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "ALBUM_PASSWORD": "Password", + "ALBUM_PASSWORD_PROT": "Protegido por password", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Este álbum está protegido por password. Inserir a password para ver as fotografias deste álbum:", + "ALBUM_MERGE": "De certeza que quer fundir o álbum “%1$s” com o álbum “%2$s”?", + "ALBUMS_MERGE": "De certeza que quer fundir todos os álbums selecionados com o álbum “%s”?", + "MERGE_ALBUM": "Fundir Álbums", + "DONT_MERGE": "Não Fundir", + "ALBUM_MOVE": "De certeza que quer mover o álbum “%1$s” para o álbum “%2$s”?", + "ALBUMS_MOVE": "De certeza que quer mover todos os álbums selecionados para o álbum “%s”?", + "MOVE_ALBUMS": "Mover Álbums", + "NOT_MOVE_ALBUMS": "Não Mover", + "ROOT": "Álbums", + "ALBUM_REUSE": "Reutilizar", + "ALBUM_LICENSE": "Licença", + "ALBUM_SET_LICENSE": "Escolher Licença", + "ALBUM_LICENSE_HELP": "Precisa de ajuda para escolher?", + "ALBUM_LICENSE_NONE": "Nenhuma", + "ALBUM_RESERVED": "Todos os Direitos Reservados", + "ALBUM_SET_ORDER": "Escolher Ordem", + "ALBUM_ORDERING": "Ordenar por", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "Acerca de", + "PHOTO_BASICS": "Básicos", + "PHOTO_TITLE": "Título", + "PHOTO_NEW_TITLE": "Inserir um novo título para esta fotografia:", + "PHOTO_SET_TITLE": "Escolher Título", + "PHOTO_UPLOADED": "Enviada", + "PHOTO_DESCRIPTION": "Descrição", + "PHOTO_NEW_DESCRIPTION": "Inserir uma nova descrição para esta fotografia:", + "PHOTO_SET_DESCRIPTION": "Escolher Descrição", + "PHOTO_NEW_LICENSE": "Adicionar uma Licença", + "PHOTO_SET_LICENSE": "Escolher Licença", + "PHOTO_LICENSE": "Licença", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Reutilizar", + "PHOTO_LICENSE_NONE": "Nenhuma", + "PHOTO_RESERVED": "Todos os Direitos Reservados", + "PHOTO_LATITUDE": "Latitude", + "PHOTO_LONGITUDE": "Longitude", + "PHOTO_ALTITUDE": "Altitude", + "PHOTO_IMGDIRECTION": "Direção", + "PHOTO_LOCATION": "Localização", + "PHOTO_IMAGE": "Imagem", + "PHOTO_VIDEO": "Vídeo", + "PHOTO_SIZE": "Tamanho", + "PHOTO_FORMAT": "Formato", + "PHOTO_RESOLUTION": "Resolução", + "PHOTO_DURATION": "Duração", + "PHOTO_FPS": "Frame rate", + "PHOTO_TAGS": "Etiquetas", + "PHOTO_NOTAGS": "Sem Etiquetas", + "PHOTO_NEW_TAGS": "Inserir as suas etiquetas para esta fotografia. Pode adicionar várias etiquetas separando-as com uma vírgula:", + "PHOTOS_NEW_TAGS": "Inserir as suas etiquetas para todas %d as fotografias selecionadas. Etiquetas existentes vão ser substituídas. Pode adicionar várias etiquetas separando-as com uma vírgula:", + "PHOTO_SET_TAGS": "Escolher Etiquetas", + "PHOTO_CAMERA": "Camera", + "PHOTO_CAPTURED": "Capturada", + "PHOTO_MAKE": "Criada", + "PHOTO_TYPE": "Tipo\/Modelo", + "PHOTO_LENS": "Lente", + "PHOTO_SHUTTER": "Velocidade do Obturador", + "PHOTO_APERTURE": "Abertura", + "PHOTO_FOCAL": "Distância Focal", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Partilhada", + "PHOTO_DELETE": "Eliminar Fotografia", + "PHOTO_KEEP": "Manter Fotografia", + "PHOTO_DELETE_CONFIRMATION": "De certeza que quer eliminar a fotografia “%s”? Esta ação não pode ser desfeita!", + "PHOTO_DELETE_ALL": "De certeza que quer eliminar todas %d as fotografias selecionadas? Esta ação não pode ser desfeita!", + "PHOTOS_NEW_TITLE": "Inserir um título para todas %d as fotografias selecionadas:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Esta fotografia está localizada num álbum público. Para tornar esta fotografia privada ou pública, edite a visibilidade do álbum associado.", + "PHOTO_SHOW_ALBUM": "Mostrar Álbum", + "PHOTO_PUBLIC": "Público", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Original", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Oculta", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Transferível", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Botão Partilhar está visível", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Protegido por password", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "As propriedades de partilha desta fotografia vão ser alteradas para o seguinte:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Porque esta fotografia está localizada num álbum público, herda as configurações de visibilidade desse álbum. A sua visibilidade atual é mostrada abaixo apenas como informação.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "A visibilidade desta fotografia pode ser afinada através das configurações globais do Lychee. A sua visibilidade atual é mostrada abaixo apenas como informação.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "A carregar", + "ERROR": "Erro", + "ERROR_TEXT": "Whoops, parece que algo de errado aconteceu. Por favor, atualize a página e tente de novo!", + "ERROR_UNKNOWN": "Algo de inesperado aconteceu. Por favor tente de novo e verifique a sua instalação e servidor. Dê uma vista de olhos ao readme para mais informação.", + "ERROR_MAP_DEACTIVATED": "A funcionalidade do mapa foi desativada nas configurações.", + "ERROR_SEARCH_DEACTIVATED": "A funcionalidade de procura foi desativada nas configurações.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Tentar de novo", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Informação de Login atualizada.", + "SETTINGS_SUCCESS_SORT": "Ordenação atualizada.", + "SETTINGS_SUCCESS_DROPBOX": "Dropbox Key atualizada.", + "SETTINGS_SUCCESS_LANG": "Linguagem atualizada", + "SETTINGS_SUCCESS_LAYOUT": "Layout atualizado", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "Configuração de Overlay EXIF atualizada", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Pesquisa pública atualizada", + "SETTINGS_SUCCESS_LICENSE": "licença predefinida atualizada", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Configuração da janela do mapa atualizada", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Configuração da janela do mapa para álbums públicos atualizada", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Provider do mapa atualizado", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F não suportado. Desculpe.", + "U2F_NOT_SECURE": "Ambiente não seguro. U2F não disponível.", + "U2F_REGISTER_KEY": "Registar novo dispositivo.", + "U2F_REGISTRATION_SUCCESS": "Registo bem-sucedido!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authenticação bem-sucedida!", + "U2F_CREDENTIALS": "Credenciais", + "U2F_CREDENTIALS_DELETED": "Credenciais eliminadas!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Novo Nome de Utilizador", + "LOGIN_PASSWORD": "Nova Password", + "LOGIN_PASSWORD_CONFIRM": "Confirmar Password", + "PASSWORD_TITLE": "Inserir a sua password atual:", + "PASSWORD_CURRENT": "Password Atual", + "PASSWORD_TEXT": "O seu nome de utilizador e password vão ser alterados para o seguinte:", + "PASSWORD_CHANGE": "Alterar Login", + "EDIT_SHARING_TITLE": "Editar Partilha", + "EDIT_SHARING_TEXT": "As propriedades de partilha deste álbum vão ser alteradas para o seguinte:", + "SHARE_ALBUM_TEXT": "Este álbum vai ser partilhado com as seguintes propriedades:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Ordenar álbums por %1$s numa %2$s ordem.", + "SORT_ALBUM_SELECT_1": "Hora de Criação", + "SORT_ALBUM_SELECT_2": "Título", + "SORT_ALBUM_SELECT_3": "Descrição", + "SORT_ALBUM_SELECT_5": "Data da Modificação Mais Recente", + "SORT_ALBUM_SELECT_6": "Data da Modificação Mais Antiga", + "SORT_PHOTO_BY": "Ordenar fotografias por %1$s numa %2$s ordem.", + "SORT_PHOTO_SELECT_1": "Hora de Envio", + "SORT_PHOTO_SELECT_2": "Data de Modificação", + "SORT_PHOTO_SELECT_3": "Título", + "SORT_PHOTO_SELECT_4": "Descrição", + "SORT_PHOTO_SELECT_6": "Favorito", + "SORT_PHOTO_SELECT_7": "Formato da Fotografia", + "SORT_ASCENDING": "Ascendente", + "SORT_DESCENDING": "Descendente", + "SORT_CHANGE": "Alterar Ordenação", + "DROPBOX_TITLE": "Escolher a Dropbox Key", + "DROPBOX_TEXT": "Para importar fotografias do seu Dropbox, precisa de uma key válida de drop-in do website deles<\/a>. Crie uma key pessoal e insira-a abaixo:", + "LANG_TEXT": "Alterar língua do Lychee para:", + "LANG_TITLE": "Alterar Linguagem", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Pesquisa pública permitida:", + "OVERLAY_TYPE": "Data a usar no overlay da imagem:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "Informação EXIF da fotografia", + "OVERLAY_DESCRIPTION": "Descrição da fotografia", + "OVERLAY_DATE": "Data da Fotografia", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Ligar mapas (fornecidos por OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Permitir mapas para álbums públicos (fornecidos por OpenStreetMap):", + "MAP_PROVIDER": "Fornecedor das janelas OpenStreetMap:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (sem HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (sem HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (sem HiDPI)", + "MAP_PROVIDER_RRZE": "Universidade de Erlangen, Alemanha (apenas HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Incluír fotografias de subálbums no mapa:", + "LOCATION_DECODING": "Transformar a informação GPS no nome da localização", + "LOCATION_SHOW": "Mostrar nome da localização", + "LOCATION_SHOW_PUBLIC": "Mostrar nome da localização no modo público", + "LAYOUT_TYPE": "Disposição das fotografias:", + "LAYOUT_SQUARES": "Miniaturas quadradas", + "LAYOUT_JUSTIFIED": "Com formatação, justificada", + "LAYOUT_MASONRY": "Com formatação, masonry", + "LAYOUT_GRID": "Com formatação, grid", + "LAYOUT_UNJUSTIFIED": "Com formatação, não justificada", + "SET_LAYOUT": "Alterar disposição", + "NSFW_VISIBLE_TEXT_1": "Tornar Sensível os álbums visíveis por defeito.", + "NSFW_VISIBLE_TEXT_2": "Se o álbum é público, continua acessível, apenas ocultado da visualização e pode ser mostrado pressionando H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Sensibilidade predefinida do álbum visível atualizada com sucesso.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Sem resultados", + "VIEW_NO_PUBLIC_ALBUMS": "Sem álbums públicos", + "VIEW_NO_CONFIGURATION": "Sem configuração", + "VIEW_PHOTO_NOT_FOUND": "Fotografia não encontrada", + "NO_TAGS": "Sem Etiquetas", + "UPLOAD_MANAGE_NEW_PHOTOS": "Pode agora gerir a(s) sua(s) nova(s) fotografia(s).", + "UPLOAD_COMPLETE": "Envio completo", + "UPLOAD_COMPLETE_FAILED": "Falha ao enviar uma ou mais fotografias.", + "UPLOAD_IMPORTING": "A importar", + "UPLOAD_IMPORTING_URL": "A importar URL", + "UPLOAD_UPLOADING": "A enviar", + "UPLOAD_FINISHED": "Acabado", + "UPLOAD_PROCESSING": "A processar", + "UPLOAD_FAILED": "Falhado", + "UPLOAD_FAILED_ERROR": "Envio falhado. O servidor respondeu com um erro!", + "UPLOAD_FAILED_WARNING": "Envio falhado. O servidor respondeu com um aviso!", + "UPLOAD_CANCELLED": "Cancelado", + "UPLOAD_SKIPPED": "Saltado", + "UPLOAD_UPDATED": "Ignorado", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "Esta fotografia foi ignorada porque já está na sua livraria.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "Esta fotografia foi ignorada porque já está na sua livraria, mas os seus metadados foram atualizados.", + "UPLOAD_ERROR_CONSOLE": "Por favor dá uma vista de olhos na consola do teu navegador para mais detalhes.", + "UPLOAD_UNKNOWN": "O servidor respondeu com uma mensagem desconhecida. Por favor dá uma vista de olhos na consola do teu navegador para mais detalhes.", + "UPLOAD_ERROR_UNKNOWN": "Envio falhado. O servidor respondeu com um erro desconhecido!", + "UPLOAD_ERROR_POSTSIZE": "Envio falhado. O limite post_max_size do PHP é demasiado pequeno!", + "UPLOAD_ERROR_FILESIZE": "Envio falhado. O limite upload_max_filesize do PHP é demasiado pequeno!", + "UPLOAD_IN_PROGRESS": "O Lychee está a enviar ficheiros de momento!", + "UPLOAD_IMPORT_WARN_ERR": "A importação acabou, mas foi respondida com avisos ou erros. Por favor, dá uma vista de olhos no log (Configurações -> Mostrar Log) para mais detalhes.", + "UPLOAD_IMPORT_COMPLETE": "Importação completa", + "UPLOAD_IMPORT_INSTR": "Por favor insere o link direto da fotografia para a importar:", + "UPLOAD_IMPORT": "Importar", + "UPLOAD_IMPORT_SERVER": "A importar do servidor", + "UPLOAD_IMPORT_SERVER_FOLD": "Pasta vazia ou sem ficheiros legíveis para processar. Por favor, dá uma vista de olhos no log (Configurações -> Mostrar Log) para mais detalhes.", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Não foi conseguido iniciar a importação porque a pasta estava vazia!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Eliminar originais", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Ficheiros originais vão ser eliminados depois da importação assim que possível.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Links Simbólicos", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Importar ficheiros utilizando links simbólicos dos links originais.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Saltar duplicados", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Ficheiros de multimédia existentes serão ignorados.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sincronizar metadados", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Atualizar metadados dos ficheiros multimédia existentes.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "O processo de importação no servidor está a chegar ao limite de memória e pode acabar por ser terminado de forma permatura.", + "UPLOAD_WARNING": "Aviso", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "O caminho indicado não é um diretório legível!", + "UPLOAD_IMPORT_PATH_RESERVED": "O caminho indicado é um caminho reservado pelo Lychee!", + "UPLOAD_IMPORT_FAILED": "Não foi conseguido importar o ficheiro!", + "UPLOAD_IMPORT_UNSUPPORTED": "Tipo de ficheiro não suportado!", + "UPLOAD_IMPORT_CANCELLED": "Importação cancelada", + "ABOUT_SUBTITLE": "Gestão de fotografias auto-hospedada e bem feita", + "ABOUT_DESCRIPTION": "Lychee<\/a> é uma ferramenta gratuita de gestão de fotografias, que corre no teu servidor ou espaço web. A instalação demora segundos. Enviar, gerir e partilhar fotografias como uma aplicação nativa. O Lychee vem com tudo o que precisas e todas as tuas fotografias são guardadas de forma segura.", + "FOOTER_COPYRIGHT": "Todas as imagens neste website estão sujeitas a direitos autorais por %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Hospedado com Lychee", + "URL_COPY_TO_CLIPBOARD": "Copiar para o clipboard", + "URL_COPIED_TO_CLIPBOARD": "URL copiado para o clipboard!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Links diretos para os ficheiros de imagem:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Média", + "PHOTO_MEDIUM_HIDPI": "Média HiDPI", + "PHOTO_SMALL": "Pequena", + "PHOTO_SMALL_HIDPI": "Pequena HiDPI", + "PHOTO_THUMB": "Quadrada pequena", + "PHOTO_THUMB_HIDPI": "Quadrada pequena HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Video parte de fotografia ao vivo", + "PHOTO_VIEW": "Vista de Fotografia Lychee:", + "PHOTO_EDIT_ROTATECWISE": "Rodar no sentido dos ponteiros do relógio", + "PHOTO_EDIT_ROTATECCWISE": "Rodar contra o sentido dos ponteiros do relógio", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/ru.json b/lang/ru.json new file mode 100644 index 00000000000..cf93b819d49 --- /dev/null +++ b/lang/ru.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Логин", + "PASSWORD": "Пароль", + "ENTER": "Enter", + "CANCEL": "Отмена", + "CONFIRM": "Confirm", + "SIGN_IN": "Вход", + "CLOSE": "Закрыть", + "SETTINGS": "Параметры", + "SEARCH": "Search …", + "MORE": "More", + "DEFAULT": "Default", + "GALLERY": "Gallery", + "USERS": "Пользователи", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Поделиться", + "CHANGE_LOGIN": "Изменить логин", + "CHANGE_SORTING": "Порядок сортировки", + "SET_DROPBOX": "Подключить Dropbox", + "ABOUT_LYCHEE": "О Lychee", + "DIAGNOSTICS": "Диагностика", + "DIAGNOSTICS_GET_SIZE": "Request space usage", + "JOBS": "Show job history", + "LOGS": "Логи", + "SIGN_OUT": "Выход", + "UPDATE_AVAILABLE": "Доступно обновление!", + "MIGRATION_AVAILABLE": "Migration available!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Лицензия для новых загрузок:", + "SET_LICENSE": "Установить лицензию", + "SET_OVERLAY_TYPE": "Установить оверлей", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Set OpenStreetMap tiles provider", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Метаальбомы", + "SHARED_ALBUMS": "Общие альбомы", + "ALBUMS": "Альбомы", + "PHOTOS": "Фотографии", + "SEARCH_RESULTS": "Search results", + "RENAME": "Переименовать", + "RENAME_ALL": "Переименовать все", + "MERGE": "Объединить", + "MERGE_ALL": "Объединить все", + "MAKE_PUBLIC": "Сделать публичным", + "SHARE_ALBUM": "Поделиться альбомом", + "SHARE_PHOTO": "Поделиться фото", + "VISIBILITY_ALBUM": "Album Visibility", + "VISIBILITY_PHOTO": "Photo Visibility", + "DOWNLOAD_ALBUM": "Скачать альбом", + "ABOUT_ALBUM": "Об альбоме", + "DELETE_ALBUM": "Удалить альбом", + "MOVE_ALBUM": "Move Album", + "FULLSCREEN_ENTER": "Полный экран", + "FULLSCREEN_EXIT": "Оконный режим", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "Удалить альбом и все фото", + "KEEP_ALBUM": "Сохранить альбом", + "DELETE_ALBUM_CONFIRMATION": "Вы точно хотите удалить альбом «%s» со всеми фотографиями? Это действие необратимо!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album «%s» (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Удалить альбом и фотографии", + "KEEP_ALBUMS": "Сохранить альбомы", + "DELETE_ALBUMS_CONFIRMATION": "Вы точно хотите удалить альбомы %d со всеми фотографиями? Это действие необратимо!", + "DELETE_UNSORTED_CONFIRM": "Вы точно хотите удалить все фото из «Не отсортированные»? Это действие необратимо!", + "CLEAR_UNSORTED": "Очистить «Не отсортированные»", + "KEEP_UNSORTED": "Сохранить «Не отсортированные»", + "EDIT_SHARING": "Доступ", + "MAKE_PRIVATE": "Сделать личным", + "CLOSE_ALBUM": "Закрыть альбом", + "CLOSE_PHOTO": "Закрыть фото", + "CLOSE_MAP": "Close Map", + "ADD": "Добавить", + "MOVE": "Переместить", + "MOVE_ALL": "Переместить все", + "DUPLICATE": "Скопировать", + "DUPLICATE_ALL": "Скопировать все", + "COPY_TO": "Скопировать в …", + "COPY_ALL_TO": "Скопировать все в …", + "DELETE": "Удалить", + "SAVE": "Save", + "DELETE_ALL": "Удалить все", + "DOWNLOAD": "Скачать", + "DOWNLOAD_ALL": "Download Selected", + "UPLOAD_PHOTO": "Загрузить фото", + "IMPORT_LINK": "Загрузить по ссылке", + "IMPORT_DROPBOX": "Импортировать из Dropbox", + "IMPORT_SERVER": "Импортировать с сервера", + "NEW_ALBUM": "Создать альбом", + "NEW_TAG_ALBUM": "New Tag Album", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Название нового альбома:", + "UNTITLED": "Безымянный", + "UNSORTED": "Не отсортированные", + "STARRED": "Отмеченные", + "RECENT": "Последние", + "PUBLIC": "Общие", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "фотографий", + "CREATE_ALBUM": "Создать альбом", + "CREATE_TAG_ALBUM": "Create Tag Album", + "STAR_PHOTO": "Отметить фото", + "STAR": "Отметить", + "UNSTAR": "Unstar", + "STAR_ALL": "Отметить все", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "Теги", + "TAG_ALL": "теги для всех", + "UNSTAR_PHOTO": "Снять отметку", + "SET_COVER": "Set Album Cover", + "REMOVE_COVER": "Remove Album Cover", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Полный размер", + "ABOUT_PHOTO": "О фотографии", + "DISPLAY_FULL_MAP": "Map", + "DIRECT_LINK": "Прямая ссылка", + "DIRECT_LINKS": "Direct Links", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "Об альбоме", + "ALBUM_BASICS": "Основное", + "ALBUM_TITLE": "Заголовок", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Новый заголовок альбома:", + "ALBUMS_NEW_TITLE": "Введите заголовок для всех %d выбранных альбомов:", + "ALBUM_SET_TITLE": "Сохранить заголовок", + "ALBUM_DESCRIPTION": "Описание", + "ALBUM_SHOW_TAGS": "Tags to show", + "ALBUM_NEW_DESCRIPTION": "Введите описание этого альбома:", + "ALBUM_SET_DESCRIPTION": "Сохранить описание", + "ALBUM_NEW_SHOWTAGS": "Enter tags of photos that will be visible in this album:", + "ALBUM_SET_SHOWTAGS": "Set tags to show", + "ALBUM_ALBUM": "Альбом", + "ALBUM_CREATED": "Создано", + "ALBUM_IMAGES": "Фотографий", + "ALBUM_VIDEOS": "Videos", + "ALBUM_SUBALBUMS": "Subalbums", + "ALBUM_SHARING": "Общее", + "ALBUM_SHR_YES": "Да", + "ALBUM_SHR_NO": "Нет", + "ALBUM_PUBLIC": "Доступ", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Original", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Скрытый", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Mark album as sensitive", + "ALBUM_UNMARK_NSFW": "Unmark album as sensitive", + "ALBUM_NSFW": "Sensitive", + "ALBUM_NSFW_EXPL": "Album is marked to contain sensitive content.", + "ALBUM_DOWNLOADABLE": "Скачивание разрешено", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Share button is visible", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "ALBUM_PASSWORD": "Пароль", + "ALBUM_PASSWORD_PROT": "Защищено паролем", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Этот альбом защищён паролем. Введите пароль для его просмотра:", + "ALBUM_MERGE": "Вы точно хотите объединить альбом «%1$s» с альбомом «%2$s»?", + "ALBUMS_MERGE": "Вы точно хотите объединить все выбранные альбомы в альбом «%s»?", + "MERGE_ALBUM": "Объединить альбомы", + "DONT_MERGE": "Не объединять", + "ALBUM_MOVE": "Вы точно хотите переместить альбом «%1$s» в альбом «%2$s»?", + "ALBUMS_MOVE": "Вы точно хотите объединить все выбранные альбомы в альбом «%s»?", + "MOVE_ALBUMS": "Переместить альбомы", + "NOT_MOVE_ALBUMS": "Не перемещать", + "ROOT": "Root", + "ALBUM_REUSE": "Авторские права", + "ALBUM_LICENSE": "Лицензия", + "ALBUM_SET_LICENSE": "Установить лицензию", + "ALBUM_LICENSE_HELP": "Помочь выбрать?", + "ALBUM_LICENSE_NONE": "Нет", + "ALBUM_RESERVED": "Все права защищены", + "ALBUM_SET_ORDER": "Set Order", + "ALBUM_ORDERING": "Order by", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "Описание", + "PHOTO_BASICS": "Основное", + "PHOTO_TITLE": "Заголовок", + "PHOTO_NEW_TITLE": "Введите новый заголовок для этого фото:", + "PHOTO_SET_TITLE": "Сохранить заголовок", + "PHOTO_UPLOADED": "Загружено", + "PHOTO_DESCRIPTION": "Описание", + "PHOTO_NEW_DESCRIPTION": "Введите описание для этого фото:", + "PHOTO_SET_DESCRIPTION": "Сохранить описание", + "PHOTO_NEW_LICENSE": "Добавить лицензию", + "PHOTO_SET_LICENSE": "Сохранить лицензию", + "PHOTO_LICENSE": "Лицензия", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Авторские права", + "PHOTO_LICENSE_NONE": "Нет", + "PHOTO_RESERVED": "Все права защищены", + "PHOTO_LATITUDE": "Latitude", + "PHOTO_LONGITUDE": "Longitude", + "PHOTO_ALTITUDE": "Altitude", + "PHOTO_IMGDIRECTION": "Direction", + "PHOTO_LOCATION": "Location", + "PHOTO_IMAGE": "Изображение", + "PHOTO_VIDEO": "Video", + "PHOTO_SIZE": "Размер", + "PHOTO_FORMAT": "Формат", + "PHOTO_RESOLUTION": "Разрешение", + "PHOTO_DURATION": "Duration", + "PHOTO_FPS": "Frame rate", + "PHOTO_TAGS": "Теги", + "PHOTO_NOTAGS": "Тегов нет", + "PHOTO_NEW_TAGS": "Укажите теги для этого фото. Можно добавить несколько тегов, разделяя их запятыми:", + "PHOTOS_NEW_TAGS": "Введите теги для всех %d выбранных фотографий. Имеющиеся теги будут перезаписаны. Вы можете добавить несколько тегов, разделяя их запятыми:", + "PHOTO_SET_TAGS": "Сохранить теги", + "PHOTO_CAMERA": "Камера", + "PHOTO_CAPTURED": "Дата съёмки", + "PHOTO_MAKE": "Производитель", + "PHOTO_TYPE": "Тип\/Модель", + "PHOTO_LENS": "Оптика", + "PHOTO_SHUTTER": "Скорость затвора", + "PHOTO_APERTURE": "Диафрагма", + "PHOTO_FOCAL": "Фокусное расстояние", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Доступность", + "PHOTO_DELETE": "Удалить фото", + "PHOTO_KEEP": "Сохранить фото", + "PHOTO_DELETE_CONFIRMATION": "Вы точно хотите удалить фото «%s»? Это действие необратимо!", + "PHOTO_DELETE_ALL": "Вы точно хотите удалить все %d выбранные фото? Это действие необратимо!", + "PHOTOS_NEW_TITLE": "Введите заголовок для всех %d выбранных фото:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Это фото находится в публичном альбоме. Чтобы сделать его личным или общедоступным, измените параметры альбома.", + "PHOTO_SHOW_ALBUM": "Перейти к альбому", + "PHOTO_PUBLIC": "Public", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Original", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Hidden", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Downloadable", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Share button is visible", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Password protected", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "The sharing properties of this photo will be changed to the following:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Because this photo is located in a public album, it inherits that album’s visibility settings. Its current visibility is shown below for informational purposes only.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "The visibility of this photo can be fine-tuned using global Lychee settings. Its current visibility is shown below for informational purposes only.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Загрузка", + "ERROR": "Ошибка", + "ERROR_TEXT": "Ой, что-то пошло не так … Пожалуйста, обновите страницу и попробуйте повторить.", + "ERROR_UNKNOWN": "Произошло нечто неожиданное … Пожалуйста, повторите и проверьте папку установки и параметры сервера. За подробной информацией обратитесь к readme.", + "ERROR_MAP_DEACTIVATED": "Map functionality has been deactivated under settings.", + "ERROR_SEARCH_DEACTIVATED": "Search functionality has been deactivated under settings.", + "SUCCESS": "Ок", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Повторить", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Учётные данные обновлены.", + "SETTINGS_SUCCESS_SORT": "Порядок сортировки обновлён.", + "SETTINGS_SUCCESS_DROPBOX": "Ключ Dropbox обновлён.", + "SETTINGS_SUCCESS_LANG": "Язык изменён", + "SETTINGS_SUCCESS_LAYOUT": "Компоновка обновлена", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "Данные наложения обновлены", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Public search updated", + "SETTINGS_SUCCESS_LICENSE": "Лицензия по умолчанию установлена", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Map display settings updated", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Map display settings for public albums updated", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Map provider settings updated", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F not supported. Sorry.", + "U2F_NOT_SECURE": "Environment not secured. U2F not available.", + "U2F_REGISTER_KEY": "Register new device.", + "U2F_REGISTRATION_SUCCESS": "Registration successful!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentication successful!", + "U2F_CREDENTIALS": "Credentials", + "U2F_CREDENTIALS_DELETED": "Credentials deleted!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Новый логин", + "LOGIN_PASSWORD": "Новый пароль", + "LOGIN_PASSWORD_CONFIRM": "Повторите пароль", + "PASSWORD_TITLE": "Введите текущий пароль:", + "PASSWORD_CURRENT": "Текущий пароль", + "PASSWORD_TEXT": "Ваши логин и пароль будут изменены на следующие:", + "PASSWORD_CHANGE": "Изменить данные", + "EDIT_SHARING_TITLE": "Параметры доступа", + "EDIT_SHARING_TEXT": "Параметры доступа к выбранному альбому будут изменены на следующие:", + "SHARE_ALBUM_TEXT": "Этот альбом будет доступен со следующими условиями:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Сортировать альбомы %1$s в порядке %2$s.", + "SORT_ALBUM_SELECT_1": "даты создания", + "SORT_ALBUM_SELECT_2": "заголовка", + "SORT_ALBUM_SELECT_3": "описания", + "SORT_ALBUM_SELECT_5": "свежайшего фото", + "SORT_ALBUM_SELECT_6": "старейшего фото", + "SORT_PHOTO_BY": "Сортировать фотографии %1$s в порядке %2$s.", + "SORT_PHOTO_SELECT_1": "загрузки", + "SORT_PHOTO_SELECT_2": "съёмки", + "SORT_PHOTO_SELECT_3": "заголовка", + "SORT_PHOTO_SELECT_4": "описания", + "SORT_PHOTO_SELECT_6": "отметки", + "SORT_PHOTO_SELECT_7": "формата", + "SORT_ASCENDING": "По возрастанию", + "SORT_DESCENDING": "По убыванию", + "SORT_CHANGE": "Сменить сортировку", + "DROPBOX_TITLE": "Задать ключ Dropbox", + "DROPBOX_TEXT": "Для загрузки фото из Dropbox Вам нужен ключ, который можно получить на специальной странице<\/a>. Создайте личный ключ и вставьте здесь:", + "LANG_TEXT": "Change Lychee language to:", + "LANG_TITLE": "Change Language", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Разрешить публичный поиск:", + "OVERLAY_TYPE": "Данные для наложения:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "EXIF данные", + "OVERLAY_DESCRIPTION": "Описание фото", + "OVERLAY_DATE": "Дата съёмки", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Enable maps (provided by OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Enable maps for public albums (provided by OpenStreetMap):", + "MAP_PROVIDER": "Provider of OpenStreetMap tiles:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (no HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (no HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (no HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (only HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Include photos of subalbums on map:", + "LOCATION_DECODING": "Decode GPS data into location name", + "LOCATION_SHOW": "Show location name", + "LOCATION_SHOW_PUBLIC": "Show location name for public mode", + "LAYOUT_TYPE": "Компоновка фото:", + "LAYOUT_SQUARES": "Квадратные превью", + "LAYOUT_JUSTIFIED": "По формату, выровнять", + "LAYOUT_MASONRY": "По формату, masonry", + "LAYOUT_GRID": "По формату, grid", + "LAYOUT_UNJUSTIFIED": "По формату, не выравнивать", + "SET_LAYOUT": "Изменить компоновку", + "NSFW_VISIBLE_TEXT_1": "Make Sensitive albums visible by default.", + "NSFW_VISIBLE_TEXT_2": "If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Default sensitive album visibility updated with success.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Не найдено", + "VIEW_NO_PUBLIC_ALBUMS": "Нет публичных альбомов", + "VIEW_NO_CONFIGURATION": "Не настроено", + "VIEW_PHOTO_NOT_FOUND": "Фото не найдено", + "NO_TAGS": "Тегов нет", + "UPLOAD_MANAGE_NEW_PHOTOS": "Теперь вы можете управлять новыми фото.", + "UPLOAD_COMPLETE": "Загрузка завершена", + "UPLOAD_COMPLETE_FAILED": "Ошибка загрузки одного или более фото.", + "UPLOAD_IMPORTING": "Импорт", + "UPLOAD_IMPORTING_URL": "импорт по URL", + "UPLOAD_UPLOADING": "Выгрузка", + "UPLOAD_FINISHED": "Завершено", + "UPLOAD_PROCESSING": "Выполняется", + "UPLOAD_FAILED": "Ошибка", + "UPLOAD_FAILED_ERROR": "Загрузка не удалась: сервер вернул ошибку.", + "UPLOAD_FAILED_WARNING": "Загрузка не удалась, сервер вернул предупреждение.", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "Пропущено", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "Подробности смотрите в консоли браузера.", + "UPLOAD_UNKNOWN": "Сервер вернул непонятный ответ. Проверьте консоль браузера.", + "UPLOAD_ERROR_UNKNOWN": "Загрузка не удалась: сервер вернул что-то непонятное!", + "UPLOAD_ERROR_POSTSIZE": "Upload failed. The PHP post_max_size may be too small! Otherwise check the FAQ.", + "UPLOAD_ERROR_FILESIZE": "Upload failed. The PHP upload_max_filesize may be too small! Otherwise check the FAQ.", + "UPLOAD_IN_PROGRESS": "Lychee выполняет выгрузку.", + "UPLOAD_IMPORT_WARN_ERR": "Импорт был завершён, но обнаружены ошибки или предупреждения. Пожалуйста, проверьте лог (Settings -> Логи).", + "UPLOAD_IMPORT_COMPLETE": "Импорт завершён", + "UPLOAD_IMPORT_INSTR": "Укажите прямую ссылку на фото для импорта:", + "UPLOAD_IMPORT": "Импорт", + "UPLOAD_IMPORT_SERVER": "Загрузка с сервера", + "UPLOAD_IMPORT_SERVER_FOLD": "Каталог пуст или не содержит файлов, которые можно обработать. Пожалуйста, проверьте лог (Settings -> Логи).", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Не могу импортировать: указанный каталог пуст!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Delete originals", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Original files will be deleted after the import when possible.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "The import process on the server is approaching the memory limit and may end up being terminated prematurely.", + "UPLOAD_WARNING": "Warning", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "The given path is not a readable directory!", + "UPLOAD_IMPORT_PATH_RESERVED": "The given path is a reserved path of Lychee!", + "UPLOAD_IMPORT_FAILED": "Could not import the file!", + "UPLOAD_IMPORT_UNSUPPORTED": "Unsupported file type!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Self-hosted photo-management done right", + "ABOUT_DESCRIPTION": "Lychee<\/a> - это бесплатный фотоменеджер для Вашего сервера или хостинга. Установка занимает считанные секунды. Загружайте, редактируйте и делитесь фотографиями как в любимом приложении! Lychee обеспечит Вас всем необходимым, включая безопасность хранения Ваших фотографий! На русский язык перевёл Евгений Лебедев.", + "FOOTER_COPYRIGHT": "All images on this website are subject to copyright by %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Hosted with Lychee", + "URL_COPY_TO_CLIPBOARD": "Copy to clipboard", + "URL_COPIED_TO_CLIPBOARD": "Copied URL to clipboard!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Direct links to image files:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Medium", + "PHOTO_MEDIUM_HIDPI": "Medium HiDPI", + "PHOTO_SMALL": "Thumb", + "PHOTO_SMALL_HIDPI": "Thumb HiDPI", + "PHOTO_THUMB": "Square thumb", + "PHOTO_THUMB_HIDPI": "Square thumb HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Video part of live-photo", + "PHOTO_VIEW": "Lychee Photo View:", + "PHOTO_EDIT_ROTATECWISE": "Rotate clockwise", + "PHOTO_EDIT_ROTATECCWISE": "Rotate counter-clockwise", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/sk.json b/lang/sk.json new file mode 100644 index 00000000000..a489171e32d --- /dev/null +++ b/lang/sk.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Meno užívateľa", + "PASSWORD": "Heslo", + "ENTER": "Zadať", + "CANCEL": "Prerušiť", + "CONFIRM": "Confirm", + "SIGN_IN": "Prihlásiť", + "CLOSE": "Zatvoriť", + "SETTINGS": "Nastavenia", + "SEARCH": "Hľadaj …", + "MORE": "Viac", + "DEFAULT": "Default", + "GALLERY": "Gallery", + "USERS": "Užívatelia", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Zdieľanie", + "CHANGE_LOGIN": "Zmena prihlásenia", + "CHANGE_SORTING": "Zmena zoraďovania", + "SET_DROPBOX": "Dropbox nastaviť", + "ABOUT_LYCHEE": "O Lychee", + "DIAGNOSTICS": "Diagnostika", + "DIAGNOSTICS_GET_SIZE": "Request space usage", + "JOBS": "Show job history", + "LOGS": "Protokoly", + "SIGN_OUT": "Odhlásiť", + "UPDATE_AVAILABLE": "Update je k dispozícii!", + "MIGRATION_AVAILABLE": "Migration available!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Predvolená licencia pre nové", + "SET_LICENSE": "Použiť licenciu", + "SET_OVERLAY_TYPE": "Nastaviť typ overlay", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Set OpenStreetMap tiles provider", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Inteligentné albumy", + "SHARED_ALBUMS": "Zdieľané albumy", + "ALBUMS": "Albumy", + "PHOTOS": "Obrázky", + "SEARCH_RESULTS": "Search results", + "RENAME": "Premenovať", + "RENAME_ALL": "Premenovať vybrané", + "MERGE": "Zlúčiť", + "MERGE_ALL": "Zlúčiť vybrané", + "MAKE_PUBLIC": "Publikovať", + "SHARE_ALBUM": "Album zdieľať", + "SHARE_PHOTO": "Foto zdieľať", + "VISIBILITY_ALBUM": "Album Visibility", + "VISIBILITY_PHOTO": "Photo Visibility", + "DOWNLOAD_ALBUM": "Album stiahnuť", + "ABOUT_ALBUM": "O Albume", + "DELETE_ALBUM": "Album zmazať", + "MOVE_ALBUM": "Album presunúť", + "FULLSCREEN_ENTER": "Celá obrazovka", + "FULLSCREEN_EXIT": "Opustiť celú obrazovku", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "Album a obrázky zmazať", + "KEEP_ALBUM": "Album ponechať", + "DELETE_ALBUM_CONFIRMATION": "Ste si istý, že chcete album „%s“ a všetky obrázky v ňom zmazať? Táto akcia je nevratná!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album „%s“ (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Všetky albumy a obrázky zmazať", + "KEEP_ALBUMS": "Albumy ponechať", + "DELETE_ALBUMS_CONFIRMATION": "Ste si istý, že chcete všetky %d vybrané albumy a všetky obrázky v nich zmazať? Táto akcia je nevratná!", + "DELETE_UNSORTED_CONFIRM": "Ste si istý, že chcete všetky obrázky z „Netriedené“ zmazať? Táto akcia je nevratná!", + "CLEAR_UNSORTED": "Netriedené zmazať", + "KEEP_UNSORTED": "Netriedené ponechať", + "EDIT_SHARING": "Upraviť zdieľanie", + "MAKE_PRIVATE": "Súkromné", + "CLOSE_ALBUM": "Album zavrieť", + "CLOSE_PHOTO": "Foto Zavrieť", + "CLOSE_MAP": "Close Map", + "ADD": "Pridať", + "MOVE": "Presunúť", + "MOVE_ALL": "Presunúť vybrané", + "DUPLICATE": "Duplikovať", + "DUPLICATE_ALL": "Duplikovať vybrané", + "COPY_TO": "Kopírovať do …", + "COPY_ALL_TO": "Kopírovať vybrané do …", + "DELETE": "Zmazať", + "SAVE": "Save", + "DELETE_ALL": "Zmazať vybrané", + "DOWNLOAD": "Stiahnuť", + "DOWNLOAD_ALL": "Stiahnuť vybrané", + "UPLOAD_PHOTO": "Foto nahrať", + "IMPORT_LINK": "Importovať z linku", + "IMPORT_DROPBOX": "Importovať z Dropbox", + "IMPORT_SERVER": "Importovať zo servera", + "NEW_ALBUM": "Nový album", + "NEW_TAG_ALBUM": "New Tag Album", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Zadajte názov pre nový album:", + "UNTITLED": "Bez názvu", + "UNSORTED": "Netriedený", + "STARRED": "Obľúbený", + "RECENT": "Naposledy použitý", + "PUBLIC": "Verejný", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "obrázkov", + "CREATE_ALBUM": "Album vytvoriť", + "CREATE_TAG_ALBUM": "Create Tag Album", + "STAR_PHOTO": "Obrázok označiť ako obľúbený", + "STAR": "označiť ako obľúbené", + "UNSTAR": "Unstar", + "STAR_ALL": "všetky označiť ako obľúbené", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "Štítky", + "TAG_ALL": "Štítky pre všetky", + "UNSTAR_PHOTO": "Obrázok odstrániť z obľúbených", + "SET_COVER": "Set Album Cover", + "REMOVE_COVER": "Remove Album Cover", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Otvoriť originál", + "ABOUT_PHOTO": "O tomto obrázku", + "DISPLAY_FULL_MAP": "Map", + "DIRECT_LINK": "Priamy link", + "DIRECT_LINKS": "Priame linky", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "O albume", + "ALBUM_BASICS": "Základné informácie", + "ALBUM_TITLE": "Názov", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Zadajte nový názov pre tento album:", + "ALBUMS_NEW_TITLE": "Zadajte názov pre všetky %d vybrané albumy:", + "ALBUM_SET_TITLE": "Názov uložiť", + "ALBUM_DESCRIPTION": "Popis", + "ALBUM_SHOW_TAGS": "Tags to show", + "ALBUM_NEW_DESCRIPTION": "Zadajte nový popis pre tento album:", + "ALBUM_SET_DESCRIPTION": "Popis uložiť", + "ALBUM_NEW_SHOWTAGS": "Enter tags of photos that will be visible in this album:", + "ALBUM_SET_SHOWTAGS": "Set tags to show", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Vytvorené", + "ALBUM_IMAGES": "Obrázky", + "ALBUM_VIDEOS": "Videá", + "ALBUM_SUBALBUMS": "Subalbumy", + "ALBUM_SHARING": "Zdieľanie", + "ALBUM_SHR_YES": "Áno", + "ALBUM_SHR_NO": "Nie", + "ALBUM_PUBLIC": "Verejný", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Originál", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Skrytý", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Mark album as sensitive", + "ALBUM_UNMARK_NSFW": "Unmark album as sensitive", + "ALBUM_NSFW": "Sensitive", + "ALBUM_NSFW_EXPL": "Album is marked to contain sensitive content.", + "ALBUM_DOWNLOADABLE": "Stiahnuteľný", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Share button is visible", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "ALBUM_PASSWORD": "Heslo", + "ALBUM_PASSWORD_PROT": "Chránené heslom", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Tento album je chránený heslom. Zadajte heslo:", + "ALBUM_MERGE": "Ste si istý, že chcete album „%1$s“ s týmto albumom zlúčiť „%2$s“?", + "ALBUMS_MERGE": "Ste si istý, že chcete všetky vybrané albumy s týmto albumom zlúčiť „%s“?", + "MERGE_ALBUM": "Albumy zlúčiť", + "DONT_MERGE": "Nezlučovať", + "ALBUM_MOVE": "Ste si istý, že chcete album „%1$s“ presunúť do nasledujúceho albumu „%2$s“?", + "ALBUMS_MOVE": "Ste si istý, že chcete všetky vybrané albumy presunúť do nasledovného albumu „%s“?", + "MOVE_ALBUMS": "Albumy presunúť", + "NOT_MOVE_ALBUMS": "Nepresúvať", + "ROOT": "Albumy", + "ALBUM_REUSE": "Použiť znova", + "ALBUM_LICENSE": "Licencia", + "ALBUM_SET_LICENSE": "Licenciu určiť", + "ALBUM_LICENSE_HELP": "Potrebujete pomoc pri výbere?", + "ALBUM_LICENSE_NONE": "Žiadna", + "ALBUM_RESERVED": "Všetky práva vyhradené", + "ALBUM_SET_ORDER": "Set Order", + "ALBUM_ORDERING": "Order by", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "O obrázku", + "PHOTO_BASICS": "Základné informácie", + "PHOTO_TITLE": "Názov", + "PHOTO_NEW_TITLE": "Zadajte nový názov pre tento obrázok:", + "PHOTO_SET_TITLE": "Názov uložiť", + "PHOTO_UPLOADED": "Nahratie", + "PHOTO_DESCRIPTION": "Popis", + "PHOTO_NEW_DESCRIPTION": "Zadajte nový popis pre tento obrázok:", + "PHOTO_SET_DESCRIPTION": "Popis uložiť", + "PHOTO_NEW_LICENSE": "Pridať novú licenciu", + "PHOTO_SET_LICENSE": "Určiť licenciu", + "PHOTO_LICENSE": "Licencia", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Opakované použitie", + "PHOTO_LICENSE_NONE": "žiadne", + "PHOTO_RESERVED": "Všetky práva vyhradené", + "PHOTO_LATITUDE": "Zemepisná šírka", + "PHOTO_LONGITUDE": "Zemepisná dĺžka", + "PHOTO_ALTITUDE": "Nadmorská výška", + "PHOTO_IMGDIRECTION": "Smer", + "PHOTO_LOCATION": "Location", + "PHOTO_IMAGE": "Obrázok", + "PHOTO_VIDEO": "Video", + "PHOTO_SIZE": "Veľkosť", + "PHOTO_FORMAT": "Formát", + "PHOTO_RESOLUTION": "Rozlíšenie", + "PHOTO_DURATION": "Trvanie", + "PHOTO_FPS": "Počet snímkov\/s", + "PHOTO_TAGS": "Štítky", + "PHOTO_NOTAGS": "Žiadne štítky", + "PHOTO_NEW_TAGS": "Zadajte štítky pre tento obrázok. Jednotlivé štítky oddeľte čiarkou:", + "PHOTOS_NEW_TAGS": "Zadajte štítky pre všetky %d vybrané obrázky. Doterajšie štítky budú prepísané.Jednotlivé štítky oddeľte čiarkou:", + "PHOTO_SET_TAGS": "Štítky uložiť", + "PHOTO_CAMERA": "Kamera", + "PHOTO_CAPTURED": "Zosnímané", + "PHOTO_MAKE": "Značka", + "PHOTO_TYPE": "Typ\/Model", + "PHOTO_LENS": "Objektív", + "PHOTO_SHUTTER": "Uzávierka", + "PHOTO_APERTURE": "Clona", + "PHOTO_FOCAL": "Fokus", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Zdieľať", + "PHOTO_DELETE": "Zmazať obrázok", + "PHOTO_KEEP": "Obrázok ponechať", + "PHOTO_DELETE_CONFIRMATION": "Ste si istý, že chcete obrázok „%s“ zmazať? Táto akcia je nevratná!", + "PHOTO_DELETE_ALL": "Ste si istý, že chcete všetky %d vybrané obrázky zmazať? Táto akcia je nevratná!", + "PHOTOS_NEW_TITLE": "Zadaje nový názov pre všetky %d vybrané obrázky:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Tento obrázok sa nachádza vo verejnom albume. Označenie obrázku ako verejný alebo súkromný musíte nastaviť na albume, v ktorom sa nachádza.", + "PHOTO_SHOW_ALBUM": "Album zobraziť", + "PHOTO_PUBLIC": "Verejný", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Originál", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Skrytý", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Stiahnuteľný", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Share button is visible", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Chránené heslom", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "Vlastnosti zdieľania tejto fotografie sa zmenia na nasledujúce:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Pretože je táto fotografia umiestnená vo verejnom albume, zdedí nastavenie viditeľnosti daného albumu. Jeho aktuálna viditeľnosť je uvedená len na informačné účely.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "Viditeľnosť tejto fotografie je možné doladiť pomocou globálnych nastavení. Jeho aktuálna viditeľnosť je uvedená len na informačné účely.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Nahráva sa", + "ERROR": "Chyba", + "ERROR_TEXT": "Asi sa niečo pokazilo. Obnovte stránku a skúste znova!", + "ERROR_UNKNOWN": "Vyskytla sa neočakávaná chyba. Skúste to znova a skontrolujte inštaláciu na vašom serveri. Ďalšie informácie nájdete v súbore README.", + "ERROR_MAP_DEACTIVATED": "Map functionality has been deactivated under settings.", + "ERROR_SEARCH_DEACTIVATED": "Search functionality has been deactivated under settings.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Opakovať", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Užívateľské dáta aktualizované", + "SETTINGS_SUCCESS_SORT": "Triedenie aktualizované", + "SETTINGS_SUCCESS_DROPBOX": "Kľúč Dropbox aktualizovaný", + "SETTINGS_SUCCESS_LANG": "Jazyk aktualizovaný", + "SETTINGS_SUCCESS_LAYOUT": "Layout aktualizovaný", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "EXIF-Overlay nastavenia aktualizované", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Verejné vyhľadávanie bolo aktualizované", + "SETTINGS_SUCCESS_LICENSE": "Prednastavená licencia aktualizovaná", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Nastavenie zobrazenia mapy aktualizované", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Map display settings for public albums updated", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Map provider settings updated", + "SETTINGS_SUCCESS_CSS": "CSS aktualizované", + "SETTINGS_SUCCESS_JS": "JS aktualizované", + "SETTINGS_SUCCESS_UPDATE": "Nastavenia úspešne aktualizované", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Zmena rozšírených nastavení môže mať negatívny vplyv na stabilitu, bezpečnosť a rýchlosť tejto aplikácie. Upravujte len to, o čom presne viete, čo robíte.", + "SETTINGS_ADVANCED_SAVE": "Zmeny uložiť, riziko je známe!", + "U2F_NOT_SUPPORTED": "U2F not supported. Sorry.", + "U2F_NOT_SECURE": "Environment not secured. U2F not available.", + "U2F_REGISTER_KEY": "Register new device.", + "U2F_REGISTRATION_SUCCESS": "Registration successful!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentication successful!", + "U2F_CREDENTIALS": "Credentials", + "U2F_CREDENTIALS_DELETED": "Credentials deleted!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Nový užívateľ", + "LOGIN_PASSWORD": "Nové heslo", + "LOGIN_PASSWORD_CONFIRM": "Heslo potvrdiť", + "PASSWORD_TITLE": "Zadajte vaše heslo:", + "PASSWORD_CURRENT": "Vaše pôvodné heslo", + "PASSWORD_TEXT": "Vaše meno a heslo bolo zmenené nasledovne:", + "PASSWORD_CHANGE": "Prihlásenie zmeniť", + "EDIT_SHARING_TITLE": "Zdieľanie spracovať", + "EDIT_SHARING_TEXT": "Nastavenie zdieľania pre tento album bolo zmenené nasledovne:", + "SHARE_ALBUM_TEXT": "Tento album bude zdieľaný s nasledovnými vlastnosťami:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Triediť albumy podľa %1$s v %2$s rade.", + "SORT_ALBUM_SELECT_1": "Čas vytvorenia", + "SORT_ALBUM_SELECT_2": "Titul", + "SORT_ALBUM_SELECT_3": "Popis", + "SORT_ALBUM_SELECT_5": "Najnovšia zmena", + "SORT_ALBUM_SELECT_6": "Najstaršia zmena", + "SORT_PHOTO_BY": "Obrázky triediť podľa %1$s v %2$s rade.", + "SORT_PHOTO_SELECT_1": "Čas nahratia", + "SORT_PHOTO_SELECT_2": "čas snímku", + "SORT_PHOTO_SELECT_3": "Titul", + "SORT_PHOTO_SELECT_4": "Popis", + "SORT_PHOTO_SELECT_6": "Obľúbený", + "SORT_PHOTO_SELECT_7": "Formát", + "SORT_ASCENDING": "vzostupnej", + "SORT_DESCENDING": "zostupnej", + "SORT_CHANGE": "Zmeniť triedenie", + "DROPBOX_TITLE": "Nastaviť kľúč Dropbox", + "DROPBOX_TEXT": "Aby ste mohli importovať obrázky z Dropbox, potrebujete platný API-Key zo stránky Dropbox<\/a>. Vytvorte personal key a zadajte ho:", + "LANG_TEXT": "Zmeniť jazyk Lychee na:", + "LANG_TITLE": "Zmena jazyka", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Vlastné CSS:", + "CSS_TITLE": "CSS zmeniť", + "JS_TEXT": "Vlastné JS:", + "JS_TITLE": "JS zmeniť", + "PUBLIC_SEARCH_TEXT": "Verejné vyhľadávanie povolené:", + "OVERLAY_TYPE": "Dáta použité pre overlay:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "EXIF dáta obrázku", + "OVERLAY_DESCRIPTION": "Popis obrázku", + "OVERLAY_DATE": "Obrázok snímaný dňa", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Enable maps (provided by OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Enable maps for public albums (provided by OpenStreetMap):", + "MAP_PROVIDER": "Provider of OpenStreetMap tiles:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (no HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (no HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (no HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (only HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Include photos of subalbums on map:", + "LOCATION_DECODING": "Decode GPS data into location name", + "LOCATION_SHOW": "Show location name", + "LOCATION_SHOW_PUBLIC": "Show location name for public mode", + "LAYOUT_TYPE": "Rozmiestnenie obrázkov:", + "LAYOUT_SQUARES": "Štvorcové náhľady", + "LAYOUT_JUSTIFIED": "Zachovaný pomer strán, zarovnané", + "LAYOUT_MASONRY": "Zachovaný pomer strán, masonry", + "LAYOUT_GRID": "Zachovaný pomer strán, grid", + "LAYOUT_UNJUSTIFIED": "Zachovaný pomer strán, nezarovnané", + "SET_LAYOUT": "Zmeniť rozmiestnenie", + "NSFW_VISIBLE_TEXT_1": "Make Sensitive albums visible by default.", + "NSFW_VISIBLE_TEXT_2": "If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Default sensitive album visibility updated with success.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Žiadny výsledok", + "VIEW_NO_PUBLIC_ALBUMS": "Žiadne verejné albumy", + "VIEW_NO_CONFIGURATION": "Žiadna konfigurácia", + "VIEW_PHOTO_NOT_FOUND": "Žiadny obrázok", + "NO_TAGS": "Žiadne štítky", + "UPLOAD_MANAGE_NEW_PHOTOS": "Môžete spravovať vaše nové obrázky.", + "UPLOAD_COMPLETE": "Nahrávanie ukončené", + "UPLOAD_COMPLETE_FAILED": "Chyba pri nahrávaní jedného alebo viacerých obrázkov.", + "UPLOAD_IMPORTING": "Importovať", + "UPLOAD_IMPORTING_URL": "Importovať URL", + "UPLOAD_UPLOADING": "Nahrať", + "UPLOAD_FINISHED": "Ukončené", + "UPLOAD_PROCESSING": "Spracováva sa", + "UPLOAD_FAILED": "Zlyhanie", + "UPLOAD_FAILED_ERROR": "Nahrávanie zlyhalo. Server ohlásil chybu!", + "UPLOAD_FAILED_WARNING": "Nahrávanie zlyhalo. Server ohlásil varovanie!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "Preskočiť", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "Skontrolujte konzolu prehliadača, pre zistenie ďalších podrobností.", + "UPLOAD_UNKNOWN": "Server vrátil neznámu odpoveď.Skontrolujte konzolu prehliadača, pre zistenie ďalších podrobností.", + "UPLOAD_ERROR_UNKNOWN": "Nahrávanie zlyhalo. Server ohlásil neznámu chybu!", + "UPLOAD_ERROR_POSTSIZE": "Upload failed. The PHP post_max_size may be too small! Otherwise check the FAQ.", + "UPLOAD_ERROR_FILESIZE": "Upload failed. The PHP upload_max_filesize may be too small! Otherwise check the FAQ.", + "UPLOAD_IN_PROGRESS": "Lychee práve nahráva!", + "UPLOAD_IMPORT_WARN_ERR": "Import je hotový, vyskytli sa ale chyby alebo varovania. Skontrolujte protokoly (Nastavenia\/ Protokoly).", + "UPLOAD_IMPORT_COMPLETE": "Import hotový", + "UPLOAD_IMPORT_INSTR": "Pre import zadajte priamy link:", + "UPLOAD_IMPORT": "Import", + "UPLOAD_IMPORT_SERVER": "Import zo servera", + "UPLOAD_IMPORT_SERVER_FOLD": "Priečinok je prázdny alebo obsahuje nečitateľný obsah pre spracovanie. Skontrolujte protokoly (Nastavenia\/ Protokoly) pre zistenie ďalších podrobností.", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Import sa nedá spustiť, priečinok je prázdny.", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Zmazať originály", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Ak je možné, budú pôvodné súbory po importe zmazané.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "Proces importu na serveri sa blíži k limitu pamäte a môže skončiť predčasným ukončením.", + "UPLOAD_WARNING": "Varovanie", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "Adresaár nie je čitateľný!", + "UPLOAD_IMPORT_PATH_RESERVED": "Zadaná cesta je rezervovaná pre Lychee!", + "UPLOAD_IMPORT_FAILED": "Súbor sa nedá naimportovať!", + "UPLOAD_IMPORT_UNSUPPORTED": "Nepodporovaný typ súboru!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Vlastný hostovaný manažment obrázkov!", + "ABOUT_DESCRIPTION": "Lychee<\/a> je open-source nástroj, bežiaci na vašom vlastnom serveri alebo v cloude. Inštalácia je otázkou sekúnd. Nahrať, spravovať a zdieľať obrázky ako v natívnej aplikácii. Lychee ponúka všetko čo potrebujete vy a vaše obrázky pre bezpečné uloženie.", + "FOOTER_COPYRIGHT": "Všetky obrázky na tejto webovej stránke sú chránené autorským právom %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Hostované s Lychee", + "URL_COPY_TO_CLIPBOARD": "Skopírovať do schránky", + "URL_COPIED_TO_CLIPBOARD": "URL skopírované do schránky!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Priame linky k súborom obrázkov:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Medium", + "PHOTO_MEDIUM_HIDPI": "Medium HiDPI", + "PHOTO_SMALL": "Náhľad", + "PHOTO_SMALL_HIDPI": "Náhľad HiDPI", + "PHOTO_THUMB": "Štvorcový náhľad", + "PHOTO_THUMB_HIDPI": "Štvorcový náhľad HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Video part of live-photo", + "PHOTO_VIEW": "Zobrazenie foto Lychee:", + "PHOTO_EDIT_ROTATECWISE": "Rotate clockwise", + "PHOTO_EDIT_ROTATECCWISE": "Rotate counter-clockwise", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/sv.json b/lang/sv.json new file mode 100644 index 00000000000..8609b6b5fea --- /dev/null +++ b/lang/sv.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Användarnamn", + "PASSWORD": "Lösenord", + "ENTER": "Stig in", + "CANCEL": "Avbryt", + "CONFIRM": "Confirm", + "SIGN_IN": "Logga in", + "CLOSE": "Stäng", + "SETTINGS": "Settings", + "SEARCH": "Search …", + "MORE": "More", + "DEFAULT": "Default", + "GALLERY": "Gallery", + "USERS": "Users", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "Sharing", + "CHANGE_LOGIN": "Ändra inloggning", + "CHANGE_SORTING": "Ändra sortering", + "SET_DROPBOX": "Ställ in Dropbox", + "ABOUT_LYCHEE": "Om Lychee", + "DIAGNOSTICS": "Diagnostik", + "DIAGNOSTICS_GET_SIZE": "Request space usage", + "JOBS": "Show job history", + "LOGS": "Visa logfilen", + "SIGN_OUT": "Logga ut", + "UPDATE_AVAILABLE": "En uppdatering finns!", + "MIGRATION_AVAILABLE": "Migration available!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Default license for new uploads:", + "SET_LICENSE": "Set License", + "SET_OVERLAY_TYPE": "Set Overlay", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Set OpenStreetMap tiles provider", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Smarta album", + "SHARED_ALBUMS": "Shared albums", + "ALBUMS": "Album", + "PHOTOS": "Pictures", + "SEARCH_RESULTS": "Search results", + "RENAME": "Ändra namnet", + "RENAME_ALL": "Byt namn på vald", + "MERGE": "Slå ihop", + "MERGE_ALL": "Sammanfoga vald", + "MAKE_PUBLIC": "Gör publika", + "SHARE_ALBUM": "Dela album", + "SHARE_PHOTO": "Dela fotografi", + "VISIBILITY_ALBUM": "Album Visibility", + "VISIBILITY_PHOTO": "Photo Visibility", + "DOWNLOAD_ALBUM": "Ladda ner album", + "ABOUT_ALBUM": "Om albumet", + "DELETE_ALBUM": "Radera albumet", + "MOVE_ALBUM": "Move Album", + "FULLSCREEN_ENTER": "Enter Fullscreen", + "FULLSCREEN_EXIT": "Exit Fullscreen", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "Radera album och fotografier", + "KEEP_ALBUM": "Behåll albumet", + "DELETE_ALBUM_CONFIRMATION": "Är du säker på att du vill radera albumet “%s” och alla fotografier det innehåller? Raderingen går inte att ångra!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album “%s” (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "Radera album och fotografier", + "KEEP_ALBUMS": "Behåll album", + "DELETE_ALBUMS_CONFIRMATION": "Är du säker på att du vill radera alla %d valda album och alla fotografier de innehåller? Raderingen går inte att ångra!", + "DELETE_UNSORTED_CONFIRM": "Är du säker på att du vill radera alla fotografier från “Osorterat”? Det här går inte att ångra!", + "CLEAR_UNSORTED": "Rensa osorterade", + "KEEP_UNSORTED": "Behåll osorterade", + "EDIT_SHARING": "Redrigera delning", + "MAKE_PRIVATE": "Gör privat", + "CLOSE_ALBUM": "Stäng albumet", + "CLOSE_PHOTO": "Stäng fotografiet", + "CLOSE_MAP": "Close Map", + "ADD": "Lägg till", + "MOVE": "Flytta", + "MOVE_ALL": "Flytta valda", + "DUPLICATE": "Kopiera", + "DUPLICATE_ALL": "Kopiera valda", + "COPY_TO": "Kopiera till …", + "COPY_ALL_TO": "Valda kopia till …", + "DELETE": "Radera", + "SAVE": "Save", + "DELETE_ALL": "Radera vald", + "DOWNLOAD": "Ladda ner", + "DOWNLOAD_ALL": "Download Selected", + "UPLOAD_PHOTO": "Ladda upp fotografi", + "IMPORT_LINK": "Importera från länk", + "IMPORT_DROPBOX": "Importera från Dropbox", + "IMPORT_SERVER": "Importera från server", + "NEW_ALBUM": "Nytt album", + "NEW_TAG_ALBUM": "New Tag Album", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "Skriv en titel för det nya albumet:", + "UNTITLED": "Saknar titel", + "UNSORTED": "Osorterat", + "STARRED": "Stjärnmärkta", + "RECENT": "Nyligen", + "PUBLIC": "Publika", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "Fotografier", + "CREATE_ALBUM": "Skapa album", + "CREATE_TAG_ALBUM": "Create Tag Album", + "STAR_PHOTO": "Stjärnmärk fotografi", + "STAR": "Stjärnmärk", + "UNSTAR": "Unstar", + "STAR_ALL": "Markera valda som favoriter", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "Tag", + "TAG_ALL": "Vald taggen", + "UNSTAR_PHOTO": "Ta bort stjärnmärke", + "SET_COVER": "Set Album Cover", + "REMOVE_COVER": "Remove Album Cover", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Originalfotografi", + "ABOUT_PHOTO": "Om fotografiet", + "DISPLAY_FULL_MAP": "Map", + "DIRECT_LINK": "Direktlänk", + "DIRECT_LINKS": "Direct Links", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "Om", + "ALBUM_BASICS": "Grundläggande", + "ALBUM_TITLE": "Titel", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Skriv en ny titel för det här albumet:", + "ALBUMS_NEW_TITLE": "Skriv en ny titel för alla %d valda album:", + "ALBUM_SET_TITLE": "Spara titel", + "ALBUM_DESCRIPTION": "Beskrivning", + "ALBUM_SHOW_TAGS": "Tags to show", + "ALBUM_NEW_DESCRIPTION": "Ny beskrivning för detta album:", + "ALBUM_SET_DESCRIPTION": "Spara beskrivningen", + "ALBUM_NEW_SHOWTAGS": "Enter tags of photos that will be visible in this album:", + "ALBUM_SET_SHOWTAGS": "Set tags to show", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Skapad", + "ALBUM_IMAGES": "Fotografier", + "ALBUM_VIDEOS": "Videos", + "ALBUM_SUBALBUMS": "Subalbums", + "ALBUM_SHARING": "Dela", + "ALBUM_SHR_YES": "Ja", + "ALBUM_SHR_NO": "Nej", + "ALBUM_PUBLIC": "Publikt", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Original", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Dold", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Mark album as sensitive", + "ALBUM_UNMARK_NSFW": "Unmark album as sensitive", + "ALBUM_NSFW": "Sensitive", + "ALBUM_NSFW_EXPL": "Album is marked to contain sensitive content.", + "ALBUM_DOWNLOADABLE": "Nedladdningsbart", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Share button is visible", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "ALBUM_PASSWORD": "Lösenord", + "ALBUM_PASSWORD_PROT": "Lösenordsskyddad", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Albumet är skyddat med ett lösenord. Ange lösenordet nedan för att se fotografierna i albumet:", + "ALBUM_MERGE": "Är du säker på att du vill sammanfoga albumet “%1$s” med albumet “%2$s”?", + "ALBUMS_MERGE": "Är du säker på att du vill sammanfoga samtliga valda album till albumet “%s”?", + "MERGE_ALBUM": "Sammanfoga album", + "DONT_MERGE": "Sammanfoga inte", + "ALBUM_MOVE": "Are you sure you want to move the album “%1$s” into the album “%2$s”?", + "ALBUMS_MOVE": "Are you sure you want to move all selected albums into the album “%s”?", + "MOVE_ALBUMS": "Move Albums", + "NOT_MOVE_ALBUMS": "Don't Move", + "ROOT": "Album", + "ALBUM_REUSE": "Reuse", + "ALBUM_LICENSE": "License", + "ALBUM_SET_LICENSE": "Set License", + "ALBUM_LICENSE_HELP": "Need help choosing?", + "ALBUM_LICENSE_NONE": "None", + "ALBUM_RESERVED": "All Rights Reserved", + "ALBUM_SET_ORDER": "Set Order", + "ALBUM_ORDERING": "Order by", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "Om", + "PHOTO_BASICS": "Grundläggande", + "PHOTO_TITLE": "Titel", + "PHOTO_NEW_TITLE": "Skriv in en ny tital för det hör fotografiet:", + "PHOTO_SET_TITLE": "Spara titeln", + "PHOTO_UPLOADED": "Uppladdat", + "PHOTO_DESCRIPTION": "Beskrivning", + "PHOTO_NEW_DESCRIPTION": "Skriv en ny beskrivning för detta fotografi:", + "PHOTO_SET_DESCRIPTION": "Spara beskrivningen", + "PHOTO_NEW_LICENSE": "Add a License", + "PHOTO_SET_LICENSE": "Set License", + "PHOTO_LICENSE": "License", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "Reuse", + "PHOTO_LICENSE_NONE": "None", + "PHOTO_RESERVED": "All Rights Reserved", + "PHOTO_LATITUDE": "Latitude", + "PHOTO_LONGITUDE": "Longitude", + "PHOTO_ALTITUDE": "Altitude", + "PHOTO_IMGDIRECTION": "Direction", + "PHOTO_LOCATION": "Location", + "PHOTO_IMAGE": "Fotografi", + "PHOTO_VIDEO": "Video", + "PHOTO_SIZE": "Storlek", + "PHOTO_FORMAT": "Filformat", + "PHOTO_DURATION": "Duration", + "PHOTO_FPS": "Frame rate", + "PHOTO_RESOLUTION": "Mått", + "PHOTO_TAGS": "Kategori", + "PHOTO_NOTAGS": "Inga kategorier", + "PHOTO_NEW_TAGS": "Skriv in din kategori för det här fotografier. Du kan ange flera kategori genom att separera dem med ett kommatecken:", + "PHOTOS_NEW_TAGS": "Ange kategori för samtliga valda bilder %d Befintliga kategorier kommer att raderas. Du kan lägga till nya kategorier genom att separera dem med kommatecken:", + "PHOTO_SET_TAGS": "Spara kategori", + "PHOTO_CAMERA": "Kamera", + "PHOTO_CAPTURED": "Digitaliserad", + "PHOTO_MAKE": "Tillverkare", + "PHOTO_TYPE": "Typ\/Modell", + "PHOTO_LENS": "Lens", + "PHOTO_SHUTTER": "Slutartid", + "PHOTO_APERTURE": "Bländartal", + "PHOTO_FOCAL": "Brännvidd", + "PHOTO_ISO": "ISO %s", + "PHOTO_SHARING": "Delning", + "PHOTO_DELETE": "Radera fotografi", + "PHOTO_KEEP": "Spara fotografi", + "PHOTO_DELETE_CONFIRMATION": "Är du säker på att du vill radera det här fotografiet “%s”? Raderingen går inte att ångra!", + "PHOTO_DELETE_ALL": "Är du säker på att du vill radera alla %d valda fotografier? Raderingen går inte att ångra!", + "PHOTOS_NEW_TITLE": "Ange en tital för alla %d valda fotografier:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Det här fotografier finns i ett publikt album. Du kan ändra fotografiets synlighet genom att redigera egenskapen för albumet.", + "PHOTO_SHOW_ALBUM": "Visa album", + "PHOTO_PUBLIC": "Public", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "Original", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Hidden", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Downloadable", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Share button is visible", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Password protected", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "The sharing properties of this photo will be changed to the following:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Because this photo is located in a public album, it inherits that album’s visibility settings. Its current visibility is shown below for informational purposes only.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "The visibility of this photo can be fine-tuned using global Lychee settings. Its current visibility is shown below for informational purposes only.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Laddar", + "ERROR": "Fel", + "ERROR_TEXT": "Ojsan, något verkar ha gått lite fel. Prova att ladda om sidan och försök igen!", + "ERROR_UNKNOWN": "Något oväntat inträffade. Vänligen försök igen och kontrollera installationen av Lychee och din server. För mera information läs dokumentet readme<\/b>.", + "ERROR_MAP_DEACTIVATED": "Map functionality has been deactivated under settings.", + "ERROR_SEARCH_DEACTIVATED": "Search functionality has been deactivated under settings.", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Försök igen", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Login Info updated.", + "SETTINGS_SUCCESS_SORT": "Sorting order updated.", + "SETTINGS_SUCCESS_DROPBOX": "Dropbox Key updated.", + "SETTINGS_SUCCESS_LANG": "Language updated", + "SETTINGS_SUCCESS_LAYOUT": "Layout updated", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "EXIF Overlay setting updated", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Offentlig sökning uppdaterad", + "SETTINGS_SUCCESS_LICENSE": "Default license updated", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Map display settings updated", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Map display settings for public albums updated", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Map provider settings updated", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F not supported. Sorry.", + "U2F_NOT_SECURE": "Environment not secured. U2F not available.", + "U2F_REGISTER_KEY": "Register new device.", + "U2F_REGISTRATION_SUCCESS": "Registration successful!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentication successful!", + "U2F_CREDENTIALS": "Credentials", + "U2F_CREDENTIALS_DELETED": "Credentials deleted!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "Nytt användarnamn", + "LOGIN_PASSWORD": "Nytt lösenord", + "LOGIN_PASSWORD_CONFIRM": "Confirm Password", + "PASSWORD_TITLE": "Ange dina befintliga inloggningsuppgifter:", + "PASSWORD_CURRENT": "Befintligt lösenord", + "PASSWORD_TEXT": "Ditt inloggningsuppgifter kommer att ändras till:", + "PASSWORD_CHANGE": "Spara ändringar av inloggningsuppgifter", + "EDIT_SHARING_TITLE": "Redigera delning", + "EDIT_SHARING_TEXT": "Albumets egenskaper för delning kommer att ändras till:", + "SHARE_ALBUM_TEXT": "Det här albumet kommer att delas ut med dessa egenskaper::", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Sortera album efter %1$s i en %2$s ordning.", + "SORT_ALBUM_SELECT_1": "skapelsetid", + "SORT_ALBUM_SELECT_2": "titel", + "SORT_ALBUM_SELECT_3": "beskrivning", + "SORT_ALBUM_SELECT_5": "senaste datum", + "SORT_ALBUM_SELECT_6": "äldsta datum", + "SORT_PHOTO_BY": "Sortera fotografier efter %1$s i en %2$s ordning.", + "SORT_PHOTO_SELECT_1": "Uppladdningstid", + "SORT_PHOTO_SELECT_2": "Fotograferingsdatum", + "SORT_PHOTO_SELECT_3": "Titel", + "SORT_PHOTO_SELECT_4": "Beskrivning", + "SORT_PHOTO_SELECT_6": "Stjärnmärkning", + "SORT_PHOTO_SELECT_7": "Bildformat", + "SORT_ASCENDING": "stigande", + "SORT_DESCENDING": "fallande", + "SORT_CHANGE": "Spara ändringar av sorteringsföljden", + "DROPBOX_TITLE": "Spara nyckeln för Dropbox", + "DROPBOX_TEXT": "För att kunna importera fotografier från ditt Dropboxkonto behöver du en godkänd applikationsnyckel från Dropbox<\/a>.\n Skapa en personlig nyckel och ange den sedan här nedan:", + "LANG_TEXT": "Ändra språket i Lychee till:", + "LANG_TITLE": "Spara ändringen av språket", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Offentlig sökning tillåts:", + "OVERLAY_TYPE": "Photo overlay:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "EXIF data", + "OVERLAY_DESCRIPTION": "Description", + "OVERLAY_DATE": "Date taken", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Enable maps (provided by OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Enable maps for public albums (provided by OpenStreetMap):", + "MAP_PROVIDER": "Provider of OpenStreetMap tiles:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (no HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (no HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (no HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (only HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Include photos of subalbums on map:", + "LOCATION_DECODING": "Decode GPS data into location name", + "LOCATION_SHOW": "Show location name", + "LOCATION_SHOW_PUBLIC": "Show location name for public mode", + "LAYOUT_TYPE": "Layout of photos:", + "LAYOUT_SQUARES": "Square thumbnails", + "LAYOUT_JUSTIFIED": "With aspect, justified", + "LAYOUT_MASONRY": "With aspect, masonry", + "LAYOUT_GRID": "With aspect, grid", + "LAYOUT_UNJUSTIFIED": "With aspect, unjustified", + "SET_LAYOUT": "Change layout", + "NSFW_VISIBLE_TEXT_1": "Make Sensitive albums visible by default.", + "NSFW_VISIBLE_TEXT_2": "If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Default sensitive album visibility updated with success.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Inget resultat", + "VIEW_NO_PUBLIC_ALBUMS": "Inga publika album", + "VIEW_NO_CONFIGURATION": "Ingen konfigurering", + "VIEW_PHOTO_NOT_FOUND": "Fotografiet hittade inte", + "NO_TAGS": "Inga kategorier", + "UPLOAD_MANAGE_NEW_PHOTOS": "Du kan nu hantera de nya bilderna.", + "UPLOAD_COMPLETE": "Uppladdning klar", + "UPLOAD_COMPLETE_FAILED": "Kunde inte ladda upp en eller flera bilder.", + "UPLOAD_IMPORTING": "Importering", + "UPLOAD_IMPORTING_URL": "Adress för importering", + "UPLOAD_UPLOADING": "Uppladdning", + "UPLOAD_FINISHED": "Klar", + "UPLOAD_PROCESSING": "Bearbetning", + "UPLOAD_FAILED": "Misslyckades", + "UPLOAD_FAILED_ERROR": "Uppladdning misslyckades. Servern svarade med ett felmeddelande!", + "UPLOAD_FAILED_WARNING": "Uppladdning misslyckades. Servern svarade med en varning!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "Ignorerade", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "Kontrollera din webbläsares konsoll för ytterligare information.", + "UPLOAD_UNKNOWN": "Servern returnerade ett oklart svar. Kontrollera din webbläsares konsoll för ytterligare information.", + "UPLOAD_ERROR_UNKNOWN": "Uppladdning misslyckades. Servern returnerade ett oklart fel!", + "UPLOAD_ERROR_POSTSIZE": "Upload failed. The PHP post_max_size may be too small! Otherwise check the FAQ.", + "UPLOAD_ERROR_FILESIZE": "Upload failed. The PHP upload_max_filesize may be too small! Otherwise check the FAQ.", + "UPLOAD_IN_PROGRESS": "Lychee laddar för tillfället upp material!", + "UPLOAD_IMPORT_WARN_ERR": "Importeringen är avslutad, men processen gav felmeddelanden. Kontrollera logfilen (Inställningar -> Visa logfilen) för ytterligare detaljer.", + "UPLOAD_IMPORT_COMPLETE": "Importeringen klar", + "UPLOAD_IMPORT_INSTR": "Ange den exakta länken till fotografiet du vill importera.", + "UPLOAD_IMPORT": "Importera", + "UPLOAD_IMPORT_SERVER": "Importera från server", + "UPLOAD_IMPORT_SERVER_FOLD": "Mappen du angav var tom eller saknade läsbara filer. Kontrollera logfilen (Inställningar -> Visa logfilen) för ytterligare detaljer", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Kunde inte påbörja importeringen då mappen saknade innehåll!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Delete originals", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Originalfotografierna kommer att raderas efter att importering genomförts.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "The import process on the server is approaching the memory limit and may end up being terminated prematurely.", + "UPLOAD_WARNING": "Warning", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "The given path is not a readable directory!", + "UPLOAD_IMPORT_PATH_RESERVED": "The given path is a reserved path of Lychee!", + "UPLOAD_IMPORT_FAILED": "Could not import the file!", + "UPLOAD_IMPORT_UNSUPPORTED": "Unsupported file type!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Self-hosted photo-management done right", + "ABOUT_DESCRIPTION": "Lychee<\/a> is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.", + "FOOTER_COPYRIGHT": "Alla bilder på denna webbplats är föremål för upphovsrätt från %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Hosted with Lychee", + "URL_COPY_TO_CLIPBOARD": "Copy to clipboard", + "URL_COPIED_TO_CLIPBOARD": "Copied URL to clipboard!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Direct links to image files:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Medium", + "PHOTO_MEDIUM_HIDPI": "Medium HiDPI", + "PHOTO_SMALL": "Thumb", + "PHOTO_SMALL_HIDPI": "Thumb HiDPI", + "PHOTO_THUMB": "Square thumb", + "PHOTO_THUMB_HIDPI": "Square thumb HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "Video part of live-photo", + "PHOTO_VIEW": "Lychee Photo View:", + "PHOTO_EDIT_ROTATECWISE": "Rotate clockwise", + "PHOTO_EDIT_ROTATECCWISE": "Rotate counter-clockwise", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/vi.json b/lang/vi.json new file mode 100644 index 00000000000..bf6c13e4990 --- /dev/null +++ b/lang/vi.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "Tên đăng nhập", + "PASSWORD": "Mật khẩu", + "ENTER": "Ok", + "CANCEL": "Bỏ", + "CONFIRM": "Confirm", + "SIGN_IN": "Đăng nhập", + "CLOSE": "Đóng", + "SETTINGS": "Cài đặt", + "SEARCH": "Tìm kiếm …", + "MORE": "Xem thêm", + "DEFAULT": "Mặc định", + "GALLERY": "Gallery", + "USERS": "Người dùng", + "PROFILE": "Profile", + "CREATE": "Tạo", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "Xác minh 2 Bước", + "NOTIFICATIONS": "Thông báo", + "SHARING": "Chia sẻ", + "CHANGE_LOGIN": "Thay đổi thông tin đăng nhập", + "CHANGE_SORTING": "Thay đổi cách sắp xếp", + "SET_DROPBOX": "Chỉnh Dropbox", + "ABOUT_LYCHEE": "Giới thiệu Lychee", + "DIAGNOSTICS": "Thông tin hệ thống", + "DIAGNOSTICS_GET_SIZE": "Xem dung lượng đã dùng", + "JOBS": "Show job history", + "LOGS": "Xem nhật ký thay đổi", + "SIGN_OUT": "Thoát", + "UPDATE_AVAILABLE": "Có phiên bản mới!", + "MIGRATION_AVAILABLE": "Có thể sang chuyển hệ thống được rồi!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "Bản quyền mặc định cho hình ảnh video tải lên:", + "SET_LICENSE": "Cài đặt bản quyền", + "SET_OVERLAY_TYPE": "Cài đặt thông tin hiển thị trên hình", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "Cài đặt nhà cung cấp ô bản đồ OpenStreetMap", + "FULL_SETTINGS": "Toàn bộ cài đặt", + "UPDATE": "Cập nhật", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "Những album thông minh", + "SHARED_ALBUMS": "Những album được chia sẻ", + "ALBUMS": "Album", + "PHOTOS": "Hình ảnh", + "SEARCH_RESULTS": "Kết quả tìm kiếm", + "RENAME": "Đổi tên", + "RENAME_ALL": "Đổi tên mục được chọn", + "MERGE": "Gộp chung", + "MERGE_ALL": "Gộp chung mục được chọn", + "MAKE_PUBLIC": "Chia sẻ công cộng", + "SHARE_ALBUM": "Chia sẻ album", + "SHARE_PHOTO": "Chia sẻ hình ảnh", + "VISIBILITY_ALBUM": "Chế độ hiển thị album", + "VISIBILITY_PHOTO": "Chế độ hiển thị hình ảnh", + "DOWNLOAD_ALBUM": "Tải album về máy", + "ABOUT_ALBUM": "Giới thiệu về album", + "DELETE_ALBUM": "Xóa album", + "MOVE_ALBUM": "Di chuyển album", + "FULLSCREEN_ENTER": "Vào xem toàn màn hình", + "FULLSCREEN_EXIT": "Thoát chế độ xem toàn màn hình", + "SHARING_ALBUM_USERS": "Chia sẻ album này với những người dùng khác", + "WAIT_FETCH_DATA": "Vui lòng chờ khi chúng tôi lấy dữ liệu …", + "SHARING_ALBUM_USERS_NO_USERS": "Không có người dùng hiện hữu để chia sẻ album cùng với", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Chọn những người dùng để chia sẻ album cùng", + "DELETE_ALBUM_QUESTION": "Xóa album và hình ảnh", + "KEEP_ALBUM": "Giữ lại album", + "DELETE_ALBUM_CONFIRMATION": "Bạn có chắc là bạn muốn xóa album này không “%s” và tất cả những hình ảnh chứa trong đó? Thao tác này sẽ không được phục hồi lại!", + "DELETE_TAG_ALBUM_QUESTION": "Xóa album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Bạn có chắc là bạn muốn xóa album này không “%s” (những hình ảnh bên trong album sẽ không bị xóa đi)? Thao tác này sẽ không được phục hồi lại!", + "DELETE_ALBUMS_QUESTION": "Xóa nhiều album và hình ảnh", + "KEEP_ALBUMS": "Giữ lại các album này", + "DELETE_ALBUMS_CONFIRMATION": "Bạn có chắc chắn là muốn xóa hết tất cả %d các album được chọn và cả những hình ảnh chứa trong đó? Thao tác này sẽ không được phục hồi lại!", + "DELETE_UNSORTED_CONFIRM": "Bạn có chắc là muốn xóa hết tất cả hình ảnh trong album “Chưa được phân loại”? Thao tác này sẽ không được phục hồi!", + "CLEAR_UNSORTED": "Dọn trống album Chưa phân loại", + "KEEP_UNSORTED": "Giữ nguyên hình trong album Chưa phân loại", + "EDIT_SHARING": "Chỉnh sửa mục Chia sẻ", + "MAKE_PRIVATE": "Để ở chế độ riêng tư", + "CLOSE_ALBUM": "Đóng album", + "CLOSE_PHOTO": "Đóng hình ảnh", + "CLOSE_MAP": "Đóng bản đồ", + "ADD": "Thêm vào", + "MOVE": "Di chuyển", + "MOVE_ALL": "Di chuyển phần được chọn", + "DUPLICATE": "Tạo 1 bản nữa", + "DUPLICATE_ALL": "Tạo 1 bản nữa cho phần được chọn", + "COPY_TO": "Sao chép đến …", + "COPY_ALL_TO": "Sao chép phần được chọn đến …", + "DELETE": "Xóa", + "SAVE": "Lưu", + "DELETE_ALL": "Xóa phần được chọn", + "DOWNLOAD": "Tải về máy", + "DOWNLOAD_ALL": "Tải phần được chọn về máy", + "UPLOAD_PHOTO": "Đăng hình lên", + "IMPORT_LINK": "Nhập hình vào từ đường link", + "IMPORT_DROPBOX": "Nhập hình vào từ Dropbox", + "IMPORT_SERVER": "Nhập hình vào từ máy chủ", + "NEW_ALBUM": "Tạo album mới", + "NEW_TAG_ALBUM": "Tạo album mới có thẻ tag", + "UPLOAD_TRACK": "Tải track lên", + "DELETE_TRACK": "Xóa track", + "TITLE_NEW_ALBUM": "Đặt tên cho album mới:", + "UNTITLED": "Chưa có tên", + "UNSORTED": "Chưa được sắp xếp", + "STARRED": "Được dánh dấu sao", + "RECENT": "Gần đây", + "PUBLIC": "Công cộng", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "Hình ảnh", + "CREATE_ALBUM": "Tạo album", + "CREATE_TAG_ALBUM": "Tạo album có thẻ tag", + "STAR_PHOTO": "Đánh dấu sao hình ảnh", + "STAR": "Đánh dấu sao", + "UNSTAR": "Gỡ dấu sao", + "STAR_ALL": "Đánh dấu sao mục được chọn", + "UNSTAR_ALL": "Gỡ dấu sao mục được chọn", + "TAG": "Đánh dấu tag", + "TAG_ALL": "Đánh dấu tag mục được chọn", + "UNSTAR_PHOTO": "Gỡ dấu sao hình ảnh", + "SET_COVER": "Cài hình ảnh nền cho album", + "REMOVE_COVER": "Xóa hình ảnh nền album", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "Xem hình ảnh gốc", + "ABOUT_PHOTO": "Giới thiệu về tấm ảnh", + "DISPLAY_FULL_MAP": "Bản đồ", + "DIRECT_LINK": "Đường link trực tiếp đến hình", + "DIRECT_LINKS": "Những đường link trực tiếp đến hình", + "QR_CODE": "Mã QR", + "ALBUM_ABOUT": "Giới thiệu", + "ALBUM_BASICS": "Những phần cơ bản", + "ALBUM_TITLE": "Tên album", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "Đặt tên mới cho album này:", + "ALBUMS_NEW_TITLE": "Đặt tên cho tất cả %d những album được chọn:", + "ALBUM_SET_TITLE": "Đặt tên", + "ALBUM_DESCRIPTION": "Mô tả", + "ALBUM_SHOW_TAGS": "Những thẻ tag nào được hiển thị", + "ALBUM_NEW_DESCRIPTION": "Nhập một mô tả mới giới thiệu về album này:", + "ALBUM_SET_DESCRIPTION": "Đặt mô tả", + "ALBUM_NEW_SHOWTAGS": "Nhập những thẻ tag của những hình ảnh sẽ được hiển thị trong album:", + "ALBUM_SET_SHOWTAGS": "Đặt những thẻ tag được hiển thị", + "ALBUM_ALBUM": "Album", + "ALBUM_CREATED": "Đã được tạo", + "ALBUM_IMAGES": "Hình ảnh", + "ALBUM_VIDEOS": "Video", + "ALBUM_SUBALBUMS": "Album con", + "ALBUM_SHARING": "Chia sẻ", + "ALBUM_SHR_YES": "Có", + "ALBUM_SHR_NO": "Không", + "ALBUM_PUBLIC": "Công cộng", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "Hình ảnh gốc", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "Đã ẩn", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Đánh dấu đây là album nhạy cảm", + "ALBUM_UNMARK_NSFW": "Gỡ đánh dấu đây là album nhạy cảm", + "ALBUM_NSFW": "Nhạy cảm", + "ALBUM_NSFW_EXPL": "Album được đánh dấu là chứa hình ảnh nhạy cảm.", + "ALBUM_DOWNLOADABLE": "Có thể tải về máy", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "Nút chia sẻ được bật", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Hiển thị những đường link chia sẻ lên mạng xã hội.", + "ALBUM_PASSWORD": "Mật khẩu", + "ALBUM_PASSWORD_PROT": "Có mật khẩu mới xem được", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "Album này phải có mật khẩu mới xem được. Bạn hãy nhập mật khẩu vào bên dưới để xem hình ảnh trong album nhé:", + "ALBUM_MERGE": "Bạn có chắc chắn là muốn gộp chung album “%1$s” vào album “%2$s”?", + "ALBUMS_MERGE": "Bạn có chắc là muốn gộp hết tất cả những album được chọn vào trong cùng album “%s”?", + "MERGE_ALBUM": "Gộp những album lại với nhau", + "DONT_MERGE": "Không gộp", + "ALBUM_MOVE": "Bạn có chắc là muốn di chuyển album “%1$s” qua album “%2$s”?", + "ALBUMS_MOVE": "Bạn có chắc là muốn di chuyển tất cả những album được chọn vào trong album “%s”?", + "MOVE_ALBUMS": "Di chuyển những album này", + "NOT_MOVE_ALBUMS": "Không di chuyển", + "ROOT": "Albums", + "ALBUM_REUSE": "Cho phép dùng hình ảnh", + "ALBUM_LICENSE": "Bản quyền", + "ALBUM_SET_LICENSE": "Cài đặt bản quyền", + "ALBUM_LICENSE_HELP": "Cần hỗ trợ lựa chọn?", + "ALBUM_LICENSE_NONE": "Không bản quyền", + "ALBUM_RESERVED": "Toàn Quyền Bảo Lưu", + "ALBUM_SET_ORDER": "Chỉnh thứ tự", + "ALBUM_ORDERING": "Sắp xếp thứ tự hình ảnh", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Chủ sở hữu", + "PHOTO_ABOUT": "Giới thiệu", + "PHOTO_BASICS": "Những phần cơ bản", + "PHOTO_TITLE": "Tên hình", + "PHOTO_NEW_TITLE": "Đặt tên mới cho tấm hình này:", + "PHOTO_SET_TITLE": "Đặt tên", + "PHOTO_UPLOADED": "Đăng lên lúc", + "PHOTO_DESCRIPTION": "Mô tả", + "PHOTO_NEW_DESCRIPTION": "Nhập một mô tả mới cho tấm hình này:", + "PHOTO_SET_DESCRIPTION": "Đặt mô tả", + "PHOTO_NEW_LICENSE": "Thêm loại bản quyền", + "PHOTO_SET_LICENSE": "Đặt bản quyền", + "PHOTO_LICENSE": "Bản quyền", + "PHOTO_LICENSE_HELP": "Cần hỗ trợ lựa chọn?", + "PHOTO_REUSE": "Cho phép dùng hình ảnh", + "PHOTO_LICENSE_NONE": "Không bản quyền", + "PHOTO_RESERVED": "Toàn Quyền Bảo Lưu", + "PHOTO_LATITUDE": "Vĩ độ", + "PHOTO_LONGITUDE": "Kinh độ", + "PHOTO_ALTITUDE": "Cao độ", + "PHOTO_IMGDIRECTION": "Hướng hình chụp", + "PHOTO_LOCATION": "Địa điểm", + "PHOTO_IMAGE": "Hình ảnh", + "PHOTO_VIDEO": "Video", + "PHOTO_SIZE": "Kích cỡ", + "PHOTO_FORMAT": "Định dạnh", + "PHOTO_RESOLUTION": "Độ phân giải", + "PHOTO_DURATION": "Thời lượng", + "PHOTO_FPS": "Tốc độ khung hình trong video", + "PHOTO_TAGS": "Thẻ tag", + "PHOTO_NOTAGS": "Không có thẻ tag nào", + "PHOTO_NEW_TAGS": "Nhập thẻ tag cho tấm hình này. Bạn có thể thêm vào nhiều tag cách ra bởi dấu phẩy:", + "PHOTOS_NEW_TAGS": "Nhập thẻ tag của bạn cho tất cả %d những hình ảnh được chọn. Những thẻ tag đang có sẽ được cập nhật. Bạn có thể thêm vào nhiều tag cách ra bởi dấu phẩy:", + "PHOTO_SET_TAGS": "Đặt thẻ tag", + "PHOTO_CAMERA": "Máy ảnh", + "PHOTO_CAPTURED": "Chụp lúc", + "PHOTO_MAKE": "Hãng sản xuất", + "PHOTO_TYPE": "Loại\/Đời", + "PHOTO_LENS": "Ống kính", + "PHOTO_SHUTTER": "Tốc độ màn trập", + "PHOTO_APERTURE": "Khẩu độ", + "PHOTO_FOCAL": "Tiêu cự", + "PHOTO_ISO": "Độ nhạy sáng %s", + "PHOTO_SHARING": "Chia sẻ", + "PHOTO_DELETE": "Xóa hình ảnh", + "PHOTO_KEEP": "Giữ hình ảnh", + "PHOTO_DELETE_CONFIRMATION": "Bạn có chắc là bạn muốn xóa hình ảnh này “%s”? Thao tác này sẽ không được khôi phục lại!", + "PHOTO_DELETE_ALL": "Bạn có chắc là bạn muốn xóa tất cả %d hình ảnh được chọn? Thao tác này sẽ không khôi phục lại được!", + "PHOTOS_NEW_TITLE": "Nhập tên cho tất cả %d những hình ảnh được chọn:", + "PHOTO_MAKE_PRIVATE_ALBUM": "Tấm hình này đang có ở trong một album công cộng. Để chỉnh hình lại thành chế độ riêng tư, hãy chỉnh sửa chế độ hiển thị của album liên quan.", + "PHOTO_SHOW_ALBUM": "Hiển thị album", + "PHOTO_PUBLIC": "Chia sẻ công cộng", + "PHOTO_PUBLIC_EXPL": "Người khác có thể xem tấm hình này, với những hạn chế bên dưới.", + "PHOTO_FULL": "Hình ảnh gốc", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "Đã ẩn", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "Có thể tải về máy", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "Nút chia sẻ được bật", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "Có mật khẩu mới xem được", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "Những đặc điểm chia sẻ của tấm hình này sẽ được thay đổi thành như sau:", + "PHOTO_NO_EDIT_SHARING_TEXT": "Vì tấm hình này đang có trong một album công cộng, nó có chế độ hiển thị công cộng giống như cài đặt hiển thị của album. Chế độ hiển thị hiện tại của hình được hiển thị bên dưới để người dùng biết thêm thông tin.", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "Chế độ hiển thị của tấm hình này có thể được chỉnh chỉ tiết hơn với cài đặt tổng của Lychee. Chế độ hiển thị hiện thời của tấm hình được hiển thị để người dùng biết thêm thông tin.", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "Đang tải", + "ERROR": "Bị lỗi", + "ERROR_TEXT": "Èo, hình như có trục trặc gì đó xảy ra. Xin hãy thử tải lại trang và thử lại nhé!", + "ERROR_UNKNOWN": "Có sự cố bất ngờ nào đó đã xảy ra. Xin hãy thử lại và kiểm tra phần cài đặt hệ thống và máy chủ của bạn. Hãy đọc phần readme để biết thêm thông tin chi tiết.", + "ERROR_MAP_DEACTIVATED": "Tính năng hiển thị bản đồ đã tắt trong phần cài đặt.", + "ERROR_SEARCH_DEACTIVATED": "Tính năng tìm kiếm đã tắt trong phần cài đặt", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "Thử lại", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "Thông tin đăng nhập đã được cập nhật.", + "SETTINGS_SUCCESS_SORT": "Thứ tự sắp xếp đã được cập nhật.", + "SETTINGS_SUCCESS_DROPBOX": "Mã Dropbox đã được cập nhật.", + "SETTINGS_SUCCESS_LANG": "Ngôn ngữ đã được cập nhật", + "SETTINGS_SUCCESS_LAYOUT": "Cách bày trí đã được cập nhật", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "Phần cài đặt thông tin EXIF hiển thị trên hình đã được cập nhật", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "Đã cập nhật tính năng tìm kiếm công cộng", + "SETTINGS_SUCCESS_LICENSE": "Đã cập nhật bản quyền sử dụng hình ảnh mặc định", + "SETTINGS_SUCCESS_MAP_DISPLAY": "Đã cập nhật cài đặt hiển thị bản đồ", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "Đã cập nhật cài đặt hiển thị bản đồ cho những album chia sẻ công cộng", + "SETTINGS_SUCCESS_MAP_PROVIDER": "Đã cập nhật cài đặt nhà cung cấp bản đồ", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Mã API Dropbox", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "Xác minh 2 Bước chưa được hỗ trợ. Thật xin lỗi nha.", + "U2F_NOT_SECURE": "Môi trường đăng tải chưa được bảo mật. Xác minh 2 Bước chưa được cài đặt.", + "U2F_REGISTER_KEY": "Đăng ký một thiết bị mới.", + "U2F_REGISTRATION_SUCCESS": "Đã đăng ký thiết bị mới thành công!", + "U2F_AUTHENTIFICATION_SUCCESS": "Xác minh thành công!", + "U2F_CREDENTIALS": "Tên và Mật mã", + "U2F_CREDENTIALS_DELETED": "Tên và mật mã đã được xóa!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Gửi email thông báo đăng hình ảnh mới.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "Thông báo đăng hình mới được cập nhật", + "USER_EMAIL_INSTRUCTION": "Thêm email của bạn vào bên dưới để nhận được thông báo qua email. Để ngưng nhận email, bạn chỉ cần xóa email của bạn ở bên dưới.", + "LOGIN_USERNAME": "Tên đăng nhập mới", + "LOGIN_PASSWORD": "Mật khẩu mới", + "LOGIN_PASSWORD_CONFIRM": "Xác nhận mật khẩu", + "PASSWORD_TITLE": "Nhập mật khẩu cũ của bạn:", + "PASSWORD_CURRENT": "Mật khẩu cũ", + "PASSWORD_TEXT": "Tên đăng nhập và mật khẩu của bạn sẽ được thay đổi thành như sau:", + "PASSWORD_CHANGE": "Thay đổi thông tin đăng nhập", + "EDIT_SHARING_TITLE": "Chỉnh sửa chế độ chia sẻ", + "EDIT_SHARING_TEXT": "Những đặc điểm chia sẻ của tấm hình này sẽ được thay đổi thành như sau:", + "SHARE_ALBUM_TEXT": "Album này sẽ được chia sẻ với những đặc điểm sau:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "Sắp xếp album theo %1$s một %2$s thứ tự.", + "SORT_ALBUM_SELECT_1": "Lúc tạo album", + "SORT_ALBUM_SELECT_2": "Tên", + "SORT_ALBUM_SELECT_3": "Mô tả", + "SORT_ALBUM_SELECT_5": "Lần chụp gần nhất", + "SORT_ALBUM_SELECT_6": "Lần chụp lâu nhất", + "SORT_PHOTO_BY": "Sắp xếp hình ảnh theo %1$s một %2$s thứ tự.", + "SORT_PHOTO_SELECT_1": "Lúc hình được đăng", + "SORT_PHOTO_SELECT_2": "Ngày chụp", + "SORT_PHOTO_SELECT_3": "Tên", + "SORT_PHOTO_SELECT_4": "Mô tả", + "SORT_PHOTO_SELECT_6": "Được đánh dấu sao", + "SORT_PHOTO_SELECT_7": "Định dạng hình ảnh", + "SORT_ASCENDING": "Tăng dần (A-Z, cũ-mới)", + "SORT_DESCENDING": "Giảm dần (Z-A, mới-cũ)", + "SORT_CHANGE": "Thay đổi cách sắp xếp", + "DROPBOX_TITLE": "Đặt mã Dropbox", + "DROPBOX_TEXT": "Để nhập hình ảnh của bạn vào từ Dropbox, bạn cần một mã nhập vào hợp lệ từ trang web của họ<\/a>. Hãy tạo một mã cá nhân cho mình và nhập mã vào bên dưới nhé:", + "LANG_TEXT": "Thay đổi ngôn ngữ trên Lychee cho:", + "LANG_TITLE": "Thay đổi ngôn ngữ", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "Cho phép tìm kiếm công cộng:", + "OVERLAY_TYPE": "Thông tin hiển thị trên hình:", + "OVERLAY_NONE": "Không hiển thị gì cả", + "OVERLAY_EXIF": "Hiển thị dữ liệu EXIF", + "OVERLAY_DESCRIPTION": "Hiển thị mô tả hình ảnh", + "OVERLAY_DATE": "Hiển thị ngày chụp", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "Bật chế độ bản đồ (nhà cung cấp OpenStreetMap):", + "MAP_DISPLAY_PUBLIC_TEXT": "Bật chế độ bản đồ cho những album chia sẻ công cộng (nhà cung cấp OpenStreetMap):", + "MAP_PROVIDER": "Nhà cung cấp của những ô bản đồ OpenStreetMap:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (không có độ phân giải cao HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (không có độ phân giải cao HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (không có độ phân giải cao HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany (chỉ có HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "Hiển thị hình ảnh của album con trên bản đồ:", + "LOCATION_DECODING": "Giải mã dữ liệu GPS thành tên địa điểm", + "LOCATION_SHOW": "Hiển thị tên địa điểm", + "LOCATION_SHOW_PUBLIC": "Hiển thị tên địa điểm cho chế độ chia sẻ công cộng", + "LAYOUT_TYPE": "Cách trình bày hình ảnh:", + "LAYOUT_SQUARES": "Ô vuông hình nhỏ", + "LAYOUT_JUSTIFIED": "Theo tỷ lệ hình, canh đều hai bên", + "LAYOUT_MASONRY": "Theo tỷ lệ hình, masonry", + "LAYOUT_GRID": "Theo tỷ lệ hình, grid", + "LAYOUT_UNJUSTIFIED": "Theo tỷ lệ hình, không canh đều hai bên", + "SET_LAYOUT": "Thay đổi cách trình bày", + "NSFW_VISIBLE_TEXT_1": "Tự động cho hiển thị những album nhạy cảm.", + "NSFW_VISIBLE_TEXT_2": "Nếu album được chia sẻ công cộng, album nhạy cảm vẫn có thể được truy cập, chỉ là tạm làm mờ khỏi tầm nhìn và có thể được hiện rõ ra bằng cách bấm phím H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Chế độ hiển thị album nhạy cảm được cập nhật thành công.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "Không có kết quả nào", + "VIEW_NO_PUBLIC_ALBUMS": "Chưa có album chia sẻ công cộng nào", + "VIEW_NO_CONFIGURATION": "Chưa có thiết lập", + "VIEW_PHOTO_NOT_FOUND": "Không tìm thấy hình ảnh", + "NO_TAGS": "Không có thẻ tag", + "UPLOAD_MANAGE_NEW_PHOTOS": "Giờ bạn có thể quản lý những hình ảnh mới của bạn rồi đó.", + "UPLOAD_COMPLETE": "Đã tải hình lên xong", + "UPLOAD_COMPLETE_FAILED": "Không thể tải một trong số các tấm hình lên", + "UPLOAD_IMPORTING": "Đang nhập hình vào", + "UPLOAD_IMPORTING_URL": "Đang nhập đường link vào", + "UPLOAD_UPLOADING": "Đang tải lên", + "UPLOAD_FINISHED": "Đã xong", + "UPLOAD_PROCESSING": "Đang xử lý", + "UPLOAD_FAILED": "Thất bại rồi", + "UPLOAD_FAILED_ERROR": "Không thể tải hình lên được. Hệ thống báo lỗi!", + "UPLOAD_FAILED_WARNING": "Không thể tải hình lên được. Hệ thống hiển thị một cảnh báo!", + "UPLOAD_CANCELLED": "Đã hủy bỏ", + "UPLOAD_SKIPPED": "Đã bỏ qua", + "UPLOAD_UPDATED": "Đã cập nhật", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "Hình ảnh này đã được bỏ qua vì nó đã có ở trong album ảnh của bạn rồi.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "Hình ảnh này đã được bỏ qua vì nó đã có ở trong album ảnh của bạn rồi, nhưng thông tin meta về hình ảnh đã được cập nhật.", + "UPLOAD_ERROR_CONSOLE": "Xin hãy xem qua thử bảng console ở trong trình duyệt của bạn để biết thêm thông tin chi tiết.", + "UPLOAD_UNKNOWN": "Hệ thống báo một phản hồi chưa xác định. Xin hãy xem qua thử bảng console ở trong trình duyệt của bạn để biết thêm thông tin chi tiết.", + "UPLOAD_ERROR_UNKNOWN": "Không thể tải hình lên được. Hệ thống báo lỗi chưa xác định!", + "UPLOAD_ERROR_POSTSIZE": "Không thể tải hình lên được. Kích cỡ hình ảnh cho phép của PHP post_max_size có thể là quá nhỏ! Nếu không bạn hãy xem thử phần Câu hỏi thường gặp.", + "UPLOAD_ERROR_FILESIZE": "Không thể tải hình lên được. Kích cỡ hình ảnh cho phép của PHP upload_max_filesize có thể là quá nhỏ! Nếu không bạn hãy xem thử phần Câu hỏi thường gặp. ", + "UPLOAD_IN_PROGRESS": "Lychee hiện đang tải hình lên!", + "UPLOAD_IMPORT_WARN_ERR": "Nhập hình vào đã xong, nhưng hệ thống trả kết quả cảnh báo hoặc có lỗi. Xin hãy xem phần nhật ký thay đổi (Cài đặ -> Hiển thị nhật ký thay đổi) để biết thêm thông tin chi tiết.", + "UPLOAD_IMPORT_COMPLETE": "Đã nhập hình vào xong", + "UPLOAD_IMPORT_INSTR": "Xin thả vào đây đường link trực tiếp của hình để nhập nó vào:", + "UPLOAD_IMPORT": "Nhập hình", + "UPLOAD_IMPORT_SERVER": "Nhập hình từ máy chủ", + "UPLOAD_IMPORT_SERVER_FOLD": "Thư mục đang trống hoặc không có tập tin nào có thể đọc được để xử lý. Xin hãy xem phần nhật ký thay đổi (Cài đặ -> Hiển thị nhật ký thay đổi) để biết thêm thông tin chi tiết.", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "Không thể bắt đầu nhập hình vì thư mục không có hình ảnh gì cả!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "Xóa hình ảnh gốc", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "Những tập tin hình ảnh gốc sẽ được xóa đi sau lúc nhập hình khi có thể.", + "UPLOAD_IMPORT_VIA_SYMLINK": "Đường link biểu trưng", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Nhập hình vào bằng đường link biểu trưng đến hình ảnh gốc.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Bỏ qua những tấm hình bị trùng", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Những tấm hình đã có trong album rồi sẽ được bỏ qua.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Đồng bộ lại thông tin meta", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Cập nhật thông tin meta của những tập tin hình ảnh đang có trong album.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "Quá trình nhập hình trên hệ thống đang đến giới hạn bộ nhớ và có thể dừng bất thình lình bất cứ lúc nào.", + "UPLOAD_WARNING": "Cảnh báo", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "Đường dẫn bỏ vào không phải là một thư mục có thể đọc được!", + "UPLOAD_IMPORT_PATH_RESERVED": "Đường dẫn bỏ vào là một đường dẫn dành riêng cho Lychee!", + "UPLOAD_IMPORT_FAILED": "Không thể nhập tập tin hình ảnh vào!", + "UPLOAD_IMPORT_UNSUPPORTED": "Định dạng hình ảnh không được hỗ trợ!", + "UPLOAD_IMPORT_CANCELLED": "Quá trình nhập hình đã được hủy bỏ", + "ABOUT_SUBTITLE": "Phần mềm tự chạy quản lý hình ảnh đúng chuẩn", + "ABOUT_DESCRIPTION": "Lychee<\/a> là công cụ quản lý ảnh miễn phí, chạy trên chính hệ thống máy của bạn hoặc không gian web của bạn. Cài đặt nó chỉ mất vài giây. Tải hình lên, quản lý và chia sẻ hình ảnh như ứng dụng chính chủ của bạn. Lychee mang đến tất cả những gì bạn cần và những hình ảnh của bạn được lưu giữ một cách an toàn nhất có thể.", + "FOOTER_COPYRIGHT": "Tất cả hình ảnh trên trang web này thuộc Bản quyền của %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "Được chạy bởi Lychee", + "URL_COPY_TO_CLIPBOARD": "Sao chép vào bộ nhớ tạm thời", + "URL_COPIED_TO_CLIPBOARD": "Đã sao chép vào bộ nhớ tạm thời!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "Đường link trực tiếp đến tập tin hình ảnh:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "Vừa", + "PHOTO_MEDIUM_HIDPI": "Độ phân giải cho hình vừa HiDPI", + "PHOTO_SMALL": "Nhỏ", + "PHOTO_SMALL_HIDPI": "Độ phân giải cho hình nhỏ HiDPI", + "PHOTO_THUMB": "Ô vuông nhỏ", + "PHOTO_THUMB_HIDPI": "Độ phân giải cho hình ô vuông nhỏ HiDPI", + "PHOTO_THUMBNAIL": "Hình thu nhỏ của hình ảnh gốc", + "PHOTO_LIVE_VIDEO": "Phần video của hình động live-photo", + "PHOTO_VIEW": "Khung hiển thị hình ảnh Lychee:", + "PHOTO_EDIT_ROTATECWISE": "Xoay thuận chiều kim đồng hồ", + "PHOTO_EDIT_ROTATECCWISE": "Xoay ngược chiều kim đồng hồ", + "ERROR_GPX": "Có lỗi khi tải tập tin GPX: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Cho phép đăng hình ảnh video", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/zh_CN.json b/lang/zh_CN.json new file mode 100644 index 00000000000..c8b72dce5bf --- /dev/null +++ b/lang/zh_CN.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "用户名", + "PASSWORD": "密码", + "ENTER": "确定", + "CANCEL": "取消", + "CONFIRM": "Confirm", + "SIGN_IN": "登录", + "CLOSE": "关闭", + "SETTINGS": "设置", + "SEARCH": "搜索 …", + "MORE": "更多", + "DEFAULT": "默认", + "GALLERY": "Gallery", + "USERS": "用户", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "通用两步验证(U2F)", + "NOTIFICATIONS": "Notifications", + "SHARING": "共享", + "CHANGE_LOGIN": "修改登录信息", + "CHANGE_SORTING": "修改排序", + "SET_DROPBOX": "设置 Dropbox", + "ABOUT_LYCHEE": "关于 Lychee", + "DIAGNOSTICS": "诊断", + "DIAGNOSTICS_GET_SIZE": "请求空间占用信息", + "JOBS": "Show job history", + "LOGS": "查看日志", + "SIGN_OUT": "注销登录", + "UPDATE_AVAILABLE": "可用更新!", + "MIGRATION_AVAILABLE": "可用迁移!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "为新上传设置默认许可证:", + "SET_LICENSE": "设置许可证", + "SET_OVERLAY_TYPE": "设置叠层", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "设置 OpenStreetMap 图层提供者", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "智能相册", + "SHARED_ALBUMS": "已共享的相册", + "ALBUMS": "相册", + "PHOTOS": "照片", + "SEARCH_RESULTS": "搜索结果", + "RENAME": "重命名", + "RENAME_ALL": "重命名已选中", + "MERGE": "合并", + "MERGE_ALL": "合并选中", + "MAKE_PUBLIC": "设为公开", + "SHARE_ALBUM": "分享相册", + "SHARE_PHOTO": "分享照片", + "VISIBILITY_ALBUM": "相册可见性", + "VISIBILITY_PHOTO": "照片可见性", + "DOWNLOAD_ALBUM": "下载相册", + "ABOUT_ALBUM": "关于相册", + "DELETE_ALBUM": "删除相册", + "MOVE_ALBUM": "移动相册", + "FULLSCREEN_ENTER": "进入全屏幕", + "FULLSCREEN_EXIT": "退出全屏幕", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "删除相册和照片", + "KEEP_ALBUM": "保留相册", + "DELETE_ALBUM_CONFIRMATION": "是否确认删除相册《%s》以及相册中包含的所有照片?操作后不可恢复!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album《%s》(any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "删除相册和照片", + "KEEP_ALBUMS": "保留相册", + "DELETE_ALBUMS_CONFIRMATION": "是否确认删除全部 %d 选中的相册和其中的所有照片?操作后不可恢复!", + "DELETE_UNSORTED_CONFIRM": "是否确认删除《未分类》的所有照片?操作后不可恢复!", + "CLEAR_UNSORTED": "清除未分类", + "KEEP_UNSORTED": "保留未分类", + "EDIT_SHARING": "编辑共享", + "MAKE_PRIVATE": "设为私有", + "CLOSE_ALBUM": "关闭相册", + "CLOSE_PHOTO": "关闭照片", + "CLOSE_MAP": "关闭地图", + "ADD": "添加", + "MOVE": "移动", + "MOVE_ALL": "移动选中", + "DUPLICATE": "创建副本", + "DUPLICATE_ALL": "复制选定的", + "COPY_TO": "复制到 …", + "COPY_ALL_TO": "选定副本到 …", + "DELETE": "删除", + "SAVE": "Save", + "DELETE_ALL": "删除已选中", + "DOWNLOAD": "下载", + "DOWNLOAD_ALL": "下载已选中", + "UPLOAD_PHOTO": "上传相片", + "IMPORT_LINK": "从链接导入", + "IMPORT_DROPBOX": "从 Dropbox 导入", + "IMPORT_SERVER": "从服务器导入", + "NEW_ALBUM": "新建相册", + "NEW_TAG_ALBUM": "新建标签相册", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "输入新相册的标题:", + "UNTITLED": "未命名", + "UNSORTED": "未分类", + "STARRED": "星标", + "RECENT": "最新", + "PUBLIC": "公开", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "照片", + "CREATE_ALBUM": "创建相册", + "CREATE_TAG_ALBUM": "创建标签相册", + "STAR_PHOTO": "星标此照片", + "STAR": "星标", + "UNSTAR": "Unstar", + "STAR_ALL": "为所选照片加星标", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "标签", + "TAG_ALL": "为所选照片打标签", + "UNSTAR_PHOTO": "取消星标", + "SET_COVER": "设置为相册封面", + "REMOVE_COVER": "取消设置为相册封面", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "打开原图", + "ABOUT_PHOTO": "关于照片", + "DISPLAY_FULL_MAP": "地图", + "DIRECT_LINK": "直链", + "DIRECT_LINKS": "直链", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "关于", + "ALBUM_BASICS": "基本信息", + "ALBUM_TITLE": "标题", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "输入新的相册标题:", + "ALBUMS_NEW_TITLE": "设置标题为 %d 已选择的相册:", + "ALBUM_SET_TITLE": "设置标题", + "ALBUM_DESCRIPTION": "描述", + "ALBUM_SHOW_TAGS": "要显示的标签", + "ALBUM_NEW_DESCRIPTION": "输入新的相册描述:", + "ALBUM_SET_DESCRIPTION": "设置描述", + "ALBUM_NEW_SHOWTAGS": "输入将在此相册中可见的照片的标签:", + "ALBUM_SET_SHOWTAGS": "设置要显示的标签", + "ALBUM_ALBUM": "相册", + "ALBUM_CREATED": "创建时间", + "ALBUM_IMAGES": "图片数", + "ALBUM_VIDEOS": "视频数", + "ALBUM_SUBALBUMS": "子相册数", + "ALBUM_SHARING": "共享", + "ALBUM_SHR_YES": "是", + "ALBUM_SHR_NO": "否", + "ALBUM_PUBLIC": "公开", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "原始图像", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "隐藏", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "将相册标记为敏感内容", + "ALBUM_UNMARK_NSFW": "取消相册的敏感内容标记", + "ALBUM_NSFW": "敏感内容", + "ALBUM_NSFW_EXPL": "相册被标记为包含敏感内容。", + "ALBUM_DOWNLOADABLE": "可下载", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "分享按钮可见", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users see social media sharing links.", + "ALBUM_PASSWORD": "密码", + "ALBUM_PASSWORD_PROT": "受到密码保护", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "此相册受到密码保护。请在下方输入密码以查看相册内的照片:", + "ALBUM_MERGE": "你确定要合并相册《%1$s》到相册《%2$s》?", + "ALBUMS_MERGE": "你确定要合并所有已选择的相册到相册《%s》?", + "MERGE_ALBUM": "合并相册", + "DONT_MERGE": "不要合并", + "ALBUM_MOVE": "你确定要移动相册《%1$s》到相册《%2$s》?", + "ALBUMS_MOVE": "你确定要移动所有已选择的相册到相册《%s》?", + "MOVE_ALBUMS": "移动相册", + "NOT_MOVE_ALBUMS": "不要移动", + "ROOT": "相册", + "ALBUM_REUSE": "重用", + "ALBUM_LICENSE": "许可证", + "ALBUM_SET_LICENSE": "设置许可证", + "ALBUM_LICENSE_HELP": "需要有关选择的帮助吗?", + "ALBUM_LICENSE_NONE": "无", + "ALBUM_RESERVED": "所有权利保留", + "ALBUM_SET_ORDER": "设置排序", + "ALBUM_ORDERING": "排序依据", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "关于", + "PHOTO_BASICS": "基本信息", + "PHOTO_TITLE": "标题", + "PHOTO_NEW_TITLE": "输入新的照片标题:", + "PHOTO_SET_TITLE": "设置标题", + "PHOTO_UPLOADED": "已上传", + "PHOTO_DESCRIPTION": "描述", + "PHOTO_NEW_DESCRIPTION": "输入新的照片描述", + "PHOTO_SET_DESCRIPTION": "设置描述", + "PHOTO_NEW_LICENSE": "添加许可证", + "PHOTO_SET_LICENSE": "设置许可证", + "PHOTO_LICENSE": "许可证", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "重用", + "PHOTO_LICENSE_NONE": "无", + "PHOTO_RESERVED": "所有权利保留", + "PHOTO_LATITUDE": "纬度", + "PHOTO_LONGITUDE": "经度", + "PHOTO_ALTITUDE": "海拔", + "PHOTO_IMGDIRECTION": "方向", + "PHOTO_LOCATION": "地点", + "PHOTO_IMAGE": "图片信息", + "PHOTO_VIDEO": "视频", + "PHOTO_SIZE": "大小", + "PHOTO_FORMAT": "格式", + "PHOTO_RESOLUTION": "分辨率", + "PHOTO_DURATION": "时长", + "PHOTO_FPS": "帧率", + "PHOTO_TAGS": "标签", + "PHOTO_NOTAGS": "无标签", + "PHOTO_NEW_TAGS": "为该照片添加标签。你可以用逗号分隔多个标签:", + "PHOTOS_NEW_TAGS": "设置你的标签于 %d 已选择的照片。已存在的标签会被覆盖。你可以用逗号分隔多个标签:", + "PHOTO_SET_TAGS": "设置标签", + "PHOTO_CAMERA": "相机信息", + "PHOTO_CAPTURED": "拍摄时间", + "PHOTO_MAKE": "设备", + "PHOTO_TYPE": "类型\/型号", + "PHOTO_LENS": "镜头", + "PHOTO_SHUTTER": "快门速度", + "PHOTO_APERTURE": "光圈", + "PHOTO_FOCAL": "焦距", + "PHOTO_ISO": "感光度 %s", + "PHOTO_SHARING": "共享", + "PHOTO_DELETE": "删除照片", + "PHOTO_KEEP": "保留照片", + "PHOTO_DELETE_CONFIRMATION": "是否要删除照片《%s》?此操作不可恢复!", + "PHOTO_DELETE_ALL": "是否要删除全部 %d 已选择的照片?此操作不可恢复!", + "PHOTOS_NEW_TITLE": "设置照片标题于 %d 已选择的照片:", + "PHOTO_MAKE_PRIVATE_ALBUM": "此照片位于公开相册中。要使其私有或公开,请编辑所在相册的可见性。", + "PHOTO_SHOW_ALBUM": "显示相册", + "PHOTO_PUBLIC": "公开", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "原始图像", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "隐藏", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "可下载", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "分享按钮可见", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "受到密码保护", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "此照片的共享属性将被修改为:", + "PHOTO_NO_EDIT_SHARING_TEXT": "因为此照片位于一个公开相册中,其继承了相册的可见性设置。其当前的可见性仅在下方作为提示的作用而显示。", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "此照片的可见性可以使用全局的 Lychee 设置进行更细致的调整。其当前的可见性仅在下方作为提示的作用而显示。", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "载入中", + "ERROR": "错误", + "ERROR_TEXT": "噢,似乎出了一些问题。请刷新页面后再试!", + "ERROR_UNKNOWN": "发生未知问题。请再试一次,检查您的安装和服务器。请查看自述文件以获取更多信息。", + "ERROR_MAP_DEACTIVATED": "地图功能已在设置中停用。", + "ERROR_SEARCH_DEACTIVATED": "搜索功能已在设置中停用。", + "SUCCESS": "OK", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "重试", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "登录信息已更新.", + "SETTINGS_SUCCESS_SORT": "排序顺序已更新。", + "SETTINGS_SUCCESS_DROPBOX": "Dropbox 密钥已更新。", + "SETTINGS_SUCCESS_LANG": "语言已更新。", + "SETTINGS_SUCCESS_LAYOUT": "布局已更新", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "EXIF 叠层设置已更新", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "公开搜索已更新", + "SETTINGS_SUCCESS_LICENSE": "默认许可证已更新", + "SETTINGS_SUCCESS_MAP_DISPLAY": "地图显示设置已更新", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "公开相册的地图显示设置已更新", + "SETTINGS_SUCCESS_MAP_PROVIDER": "地图供应商设置已更新", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F 不被支持。 抱歉。", + "U2F_NOT_SECURE": "环境不安全。U2F 不可用", + "U2F_REGISTER_KEY": "注册新设备。", + "U2F_REGISTRATION_SUCCESS": "注册成功!", + "U2F_AUTHENTIFICATION_SUCCESS": "认证成功!", + "U2F_CREDENTIALS": "认证信息", + "U2F_CREDENTIALS_DELETED": "认证信息已删除!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "新用户名", + "LOGIN_PASSWORD": "新密码", + "LOGIN_PASSWORD_CONFIRM": "确认密码", + "PASSWORD_TITLE": "输入您当前的密码:", + "PASSWORD_CURRENT": "当前密码", + "PASSWORD_TEXT": "您的用户名和密码将被修改为:", + "PASSWORD_CHANGE": "修改登录信息", + "EDIT_SHARING_TITLE": "编辑共享", + "EDIT_SHARING_TEXT": "此相册的共享属性将被修改为:", + "SHARE_ALBUM_TEXT": "此相册将会以下列的属性共享:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "相册排序:根据 %1$s 的 %2$s 排序。", + "SORT_ALBUM_SELECT_1": "创建时间", + "SORT_ALBUM_SELECT_2": "标题", + "SORT_ALBUM_SELECT_3": "描述", + "SORT_ALBUM_SELECT_5": "最新", + "SORT_ALBUM_SELECT_6": "最老", + "SORT_PHOTO_BY": "照片排序:根据 %1$s 的 %2$s 排序。", + "SORT_PHOTO_SELECT_1": "上传时间", + "SORT_PHOTO_SELECT_2": "创建时间", + "SORT_PHOTO_SELECT_3": "标题", + "SORT_PHOTO_SELECT_4": "描述", + "SORT_PHOTO_SELECT_6": "喜欢", + "SORT_PHOTO_SELECT_7": "照片格式", + "SORT_ASCENDING": "升序", + "SORT_DESCENDING": "降序", + "SORT_CHANGE": "修改排序", + "DROPBOX_TITLE": "设置 Dropbox 密钥", + "DROPBOX_TEXT": "要从 Dropbox 导入照片,您需要一个有效的插件应用密钥,请转到 他们的网站<\/a>。为你自己生成个人密钥并输入到下面:", + "LANG_TEXT": "将 Lychee 的语言修改为:", + "LANG_TITLE": "修改语言", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "允许公共搜索:", + "OVERLAY_TYPE": "用于图像叠层中的数据:", + "OVERLAY_NONE": "No overlay", + "OVERLAY_EXIF": "照片 EXIF 数据", + "OVERLAY_DESCRIPTION": "照片描述", + "OVERLAY_DATE": "照片拍摄日期", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "启用地图(由 OpenStreetMap 提供):", + "MAP_DISPLAY_PUBLIC_TEXT": "为公共相册启用地图(由 OpenStreetMap 提供):", + "MAP_PROVIDER": "OpenStreetMap 图层提供者:", + "MAP_PROVIDER_WIKIMEDIA": "Wikimedia", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org(无 HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de(无 HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr(无 HiDPI)", + "MAP_PROVIDER_RRZE": "University of Erlangen, Germany(仅 HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "在地图上包含子相册的图片:", + "LOCATION_DECODING": "将 GPS 数据解码为地点名称", + "LOCATION_SHOW": "显示地点名称", + "LOCATION_SHOW_PUBLIC": "为公开模式显示地点名称", + "LAYOUT_TYPE": "照片布局:", + "LAYOUT_SQUARES": "方形缩略图", + "LAYOUT_JUSTIFIED": "保持长宽比,两端对齐", + "LAYOUT_MASONRY": "保持长宽比, masonry", + "LAYOUT_GRID": "保持长宽比, grid", + "LAYOUT_UNJUSTIFIED": "保持长宽比,不对齐", + "SET_LAYOUT": "更改布局", + "NSFW_VISIBLE_TEXT_1": "使敏感相册默认可见。", + "NSFW_VISIBLE_TEXT_2": "如果相册是公开的,其将仍然可以访问,只是会从视图中隐藏并可以通过按下H<\/kbd>键来显示<\/b>。", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "敏感相册的默认可见性成功更新。", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "无结果", + "VIEW_NO_PUBLIC_ALBUMS": "没有公开相册", + "VIEW_NO_CONFIGURATION": "没有配置", + "VIEW_PHOTO_NOT_FOUND": "照片未找到", + "NO_TAGS": "没有标签", + "UPLOAD_MANAGE_NEW_PHOTOS": "您现在可以管理您的新照片了。", + "UPLOAD_COMPLETE": "上传完成", + "UPLOAD_COMPLETE_FAILED": "有一个或多个照片上传失败。", + "UPLOAD_IMPORTING": "导入", + "UPLOAD_IMPORTING_URL": "导入 URL", + "UPLOAD_UPLOADING": "上传中", + "UPLOAD_FINISHED": "已完成", + "UPLOAD_PROCESSING": "处理中", + "UPLOAD_FAILED": "失败", + "UPLOAD_FAILED_ERROR": "上传失败。服务器返回了一个错误!", + "UPLOAD_FAILED_WARNING": "上传失败。服务器返回了一个警告!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "已跳过", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "请查看浏览器控制台获取详细信息。", + "UPLOAD_UNKNOWN": "服务器返回未知响应。请查看浏览器控制台获取详细信息。", + "UPLOAD_ERROR_UNKNOWN": "上传失败。服务器返回了一个未知错误!", + "UPLOAD_ERROR_POSTSIZE": "上传失败。PHP 的 post_max_size 限制过小!", + "UPLOAD_ERROR_FILESIZE": "上传失败。PHP 的 upload_max_filesize 限制过小!", + "UPLOAD_IN_PROGRESS": "Lychee 当前正在上传!", + "UPLOAD_IMPORT_WARN_ERR": "导入已完成,但返回了警告或错误。请查看日志(设置->显示日志)以获取详细信息。", + "UPLOAD_IMPORT_COMPLETE": "导入完成", + "UPLOAD_IMPORT_INSTR": "输入照片的直链以导入:", + "UPLOAD_IMPORT": "导入", + "UPLOAD_IMPORT_SERVER": "从服务器导入", + "UPLOAD_IMPORT_SERVER_FOLD": "文件夹为空或其中没有可读的文件。请查看日志(设置->显示日志)以获取详细信息。", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "无法导入空文件夹!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "删除原始图像", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "原始图像将在导入后尝试删除。", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "此服务器上的导入进程已经接近内存上限并可能过早地被中断。", + "UPLOAD_WARNING": "警告", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "指定的路径不是一个可读的目录!", + "UPLOAD_IMPORT_PATH_RESERVED": "指定的路径是 Lychee 的保留目录!", + "UPLOAD_IMPORT_FAILED": "不能导入文件!", + "UPLOAD_IMPORT_UNSUPPORTED": "不支持的文件类型!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "自托管照片管理的正确之选", + "ABOUT_DESCRIPTION": "Lychee<\/a> 是一个自由的照片管理工具,其其运行于您的服务器或Web空间。仅需几分钟即可安装。Lychee 为您提供了像原生应用那样上传、管理和分享照片所需的一切,您的所有照片都将安全地存储。", + "FOOTER_COPYRIGHT": "本网站上的所有图像均受制于版权 %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "由 Lychee 托管", + "URL_COPY_TO_CLIPBOARD": "复制到剪贴板", + "URL_COPIED_TO_CLIPBOARD": "URL 已经复制到剪贴板!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "图像文件的直链:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "中等尺寸", + "PHOTO_MEDIUM_HIDPI": "中等尺寸 HiDPI", + "PHOTO_SMALL": "缩略图", + "PHOTO_SMALL_HIDPI": "缩略图 HiDPI", + "PHOTO_THUMB": "方形缩略图", + "PHOTO_THUMB_HIDPI": "方形缩略图 HiDPI", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "实况照片(Live-Photo)的视频部分", + "PHOTO_VIEW": "Lychee 照片查看:", + "PHOTO_EDIT_ROTATECWISE": "顺时针旋转", + "PHOTO_EDIT_ROTATECCWISE": "逆时针旋转", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/lang/zh_TW.json b/lang/zh_TW.json new file mode 100644 index 00000000000..cf077f2ae89 --- /dev/null +++ b/lang/zh_TW.json @@ -0,0 +1,654 @@ +{ + "aspect_ratio": { + "5by4": "5\/4 (instagram landscape)", + "4by5": "4\/5 (instagram portrait)", + "2by3": "2\/3 (portrait)", + "3by2": "3\/2 (landscape)", + "1by1": "square", + "1byx9": "16\/9 (landscape)" + }, + "lychee": { + "USERNAME": "帳號名稱", + "PASSWORD": "密碼", + "ENTER": "確定", + "CANCEL": "取消", + "CONFIRM": "Confirm", + "SIGN_IN": "登入", + "CLOSE": "關閉", + "SETTINGS": "設定", + "SEARCH": "搜尋 …", + "MORE": "更多", + "DEFAULT": "默認", + "GALLERY": "Gallery", + "USERS": "使用者", + "PROFILE": "Profile", + "CREATE": "Create", + "REMOVE": "Remove", + "SHARE": "Share", + "U2F": "U2F", + "NOTIFICATIONS": "Notifications", + "SHARING": "分享", + "CHANGE_LOGIN": "修改登入訊息", + "CHANGE_SORTING": "修改排序", + "SET_DROPBOX": "設定Dropbox", + "ABOUT_LYCHEE": "關於Lychee", + "DIAGNOSTICS": "診斷", + "DIAGNOSTICS_GET_SIZE": "請求空間使用", + "JOBS": "Show job history", + "LOGS": "查看日誌", + "SIGN_OUT": "登出", + "UPDATE_AVAILABLE": "可用更新!", + "MIGRATION_AVAILABLE": "可進行轉移!", + "CHECK_FOR_UPDATE": "Check for updates", + "DEFAULT_LICENSE": "新上傳的默認許可證:", + "SET_LICENSE": "設置許可證", + "SET_OVERLAY_TYPE": "設置疊加", + "SET_ALBUM_DECORATION": "Set album decorations", + "SET_MAP_PROVIDER": "設置OpenStreetMap圖層提供者", + "FULL_SETTINGS": "Full Settings", + "UPDATE": "Update", + "RESET": "Reset", + "DISABLE_TOKEN_TOOLTIP": "Disable", + "ENABLE_TOKEN": "Enable API token", + "DISABLED_TOKEN_STATUS_MSG": "Disabled", + "TOKEN_BUTTON": "API Token ...", + "TOKEN_NOT_AVAILABLE": "You have already viewed this token.", + "TOKEN_WAIT": "Wait ...", + "SMART_ALBUMS": "智能相簿", + "SHARED_ALBUMS": "共享的相簿", + "ALBUMS": "相簿", + "PHOTOS": "照片", + "SEARCH_RESULTS": "搜索結果", + "RENAME": "重新命名", + "RENAME_ALL": "重新命名成功", + "MERGE": "合併", + "MERGE_ALL": "合併成功", + "MAKE_PUBLIC": "設為公開", + "SHARE_ALBUM": "分享相簿", + "SHARE_PHOTO": "分享照片", + "VISIBILITY_ALBUM": "相冊隱私設定", + "VISIBILITY_PHOTO": "照片隱私設定", + "DOWNLOAD_ALBUM": "下載相簿", + "ABOUT_ALBUM": "關於相簿", + "DELETE_ALBUM": "刪除相簿", + "MOVE_ALBUM": "移動相簿", + "FULLSCREEN_ENTER": "全螢幕模式", + "FULLSCREEN_EXIT": "結束全螢幕模式", + "SHARING_ALBUM_USERS": "Share this album with users", + "WAIT_FETCH_DATA": "Please wait while we get the data …", + "SHARING_ALBUM_USERS_NO_USERS": "There are no users to share the album with", + "SHARING_ALBUM_USERS_LONG_MESSAGE": "Select the users to share this album with", + "DELETE_ALBUM_QUESTION": "刪除相簿和照片", + "KEEP_ALBUM": "保留相簿", + "DELETE_ALBUM_CONFIRMATION": "確定要刪除相簿《%s》以及相簿內包含的所有照片?此動作無法還原!", + "DELETE_TAG_ALBUM_QUESTION": "Delete Album", + "DELETE_TAG_ALBUM_CONFIRMATION": "Are you sure you want to delete the album “%s” (any photos inside will not be deleted)? This action can’t be undone!", + "DELETE_ALBUMS_QUESTION": "刪除相簿和照片", + "KEEP_ALBUMS": "保留相簿", + "DELETE_ALBUMS_CONFIRMATION": "確定要刪除全部照片 %d 選取的相簿和其中的所有照片?此動作無法還原!", + "DELETE_UNSORTED_CONFIRM": "確定刪除《未分類》的所有照片?此動作無法還原!", + "CLEAR_UNSORTED": "清除未分類", + "KEEP_UNSORTED": "保留未分類", + "EDIT_SHARING": "編輯共享", + "MAKE_PRIVATE": "設為私人", + "CLOSE_ALBUM": "關閉相簿", + "CLOSE_PHOTO": "關閉照片", + "CLOSE_MAP": "關閉地圖", + "ADD": "添加", + "MOVE": "移動", + "MOVE_ALL": "移動已選項目", + "DUPLICATE": "創建副本", + "DUPLICATE_ALL": "複製已選項目", + "COPY_TO": "複製到 …", + "COPY_ALL_TO": "複製到 …", + "DELETE": "刪除", + "SAVE": "Save", + "DELETE_ALL": "删除已選項目", + "DOWNLOAD": "下載", + "DOWNLOAD_ALL": "下載已選項目", + "UPLOAD_PHOTO": "上傳照片", + "IMPORT_LINK": "從連結導入", + "IMPORT_DROPBOX": "從Dropbox導入", + "IMPORT_SERVER": "從伺服器導入", + "NEW_ALBUM": "創建新相簿", + "NEW_TAG_ALBUM": "新的標籤相簿", + "UPLOAD_TRACK": "Upload track", + "DELETE_TRACK": "Delete track", + "TITLE_NEW_ALBUM": "輸入相簿標題:", + "UNTITLED": "未命名", + "UNSORTED": "未分類", + "STARRED": "我的最愛", + "RECENT": "最新", + "PUBLIC": "公開", + "ON_THIS_DAY": "On This Day", + "NUM_PHOTOS": "照片", + "CREATE_ALBUM": "創建相簿", + "CREATE_TAG_ALBUM": "創建標籤相簿", + "STAR_PHOTO": "加入我的最愛", + "STAR": "我的最愛", + "UNSTAR": "Unstar", + "STAR_ALL": "將已選的標記為收藏夾", + "UNSTAR_ALL": "Unstar Selected", + "TAG": "標籤", + "TAG_ALL": "批量標籤", + "UNSTAR_PHOTO": "從我的最愛中移除", + "SET_COVER": "Set Album Cover", + "REMOVE_COVER": "Remove Album Cover", + "SET_HEADER": "Set Album Header", + "REMOVE_HEADER": "Remove Album Header", + "SET_COMPACT_HEADER": "Use Compact Header", + "FULL_PHOTO": "打開原圖", + "ABOUT_PHOTO": "照片資訊", + "DISPLAY_FULL_MAP": "地圖", + "DIRECT_LINK": "外部連結", + "DIRECT_LINKS": "內部連結", + "QR_CODE": "QR Code", + "ALBUM_ABOUT": "關於", + "ALBUM_BASICS": "基本資訊", + "ALBUM_TITLE": "標題", + "ALBUM_COPYRIGHT": "Copyright", + "ALBUM_SET_COPYRIGHT": "Set copyright", + "ALBUM_NEW_TITLE": "輸入新的相簿標題:", + "ALBUMS_NEW_TITLE": "設定標題為 %d 已選擇的所有相簿:", + "ALBUM_SET_TITLE": "設定標題", + "ALBUM_DESCRIPTION": "描述", + "ALBUM_SHOW_TAGS": "顯示標籤", + "ALBUM_NEW_DESCRIPTION": "輸入新的相簿描述:", + "ALBUM_SET_DESCRIPTION": "編輯描述", + "ALBUM_NEW_SHOWTAGS": "輸入將在此相冊中顯示的照片標籤:", + "ALBUM_SET_SHOWTAGS": "設定顯示標籤", + "ALBUM_ALBUM": "相簿", + "ALBUM_CREATED": "創建時間", + "ALBUM_IMAGES": "圖片資訊", + "ALBUM_VIDEOS": "影片", + "ALBUM_SUBALBUMS": "子相簿", + "ALBUM_SHARING": "分享", + "ALBUM_SHR_YES": "是", + "ALBUM_SHR_NO": "否", + "ALBUM_PUBLIC": "公開", + "ALBUM_PUBLIC_EXPL": "Anonymous users can access this album, subject to the restrictions below.", + "ALBUM_FULL": "原圖", + "ALBUM_FULL_EXPL": "Anonymous users can behold full-resolution photos.", + "ALBUM_HIDDEN": "隱藏", + "ALBUM_HIDDEN_EXPL": "Anonymous users need a direct link to access this album.", + "ALBUM_MARK_NSFW": "Mark album as sensitive", + "ALBUM_UNMARK_NSFW": "Unmark album as sensitive", + "ALBUM_NSFW": "Sensitive", + "ALBUM_NSFW_EXPL": "Album is marked to contain sensitive content.", + "ALBUM_DOWNLOADABLE": "下載", + "ALBUM_DOWNLOADABLE_EXPL": "Anonymous users can download this album.", + "ALBUM_SHARE_BUTTON_VISIBLE": "顯示分享按鈕", + "ALBUM_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users see social media sharing links.", + "ALBUM_PASSWORD": "密碼", + "ALBUM_PASSWORD_PROT": "密碼保護", + "ALBUM_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to access this album.", + "ALBUM_PASSWORD_REQUIRED": "此相簿設有密碼保護。請輸入密碼:", + "ALBUM_MERGE": "你確定要合併相簿《%1$s》到該相簿《%2$s》?", + "ALBUMS_MERGE": "你確定要合併所有已選擇的相簿到該相簿《%s》?", + "MERGE_ALBUM": "合併相簿", + "DONT_MERGE": "不要合併", + "ALBUM_MOVE": "您確定要移動相簿《%1$s》到該相簿《%2$s》?", + "ALBUMS_MOVE": "你確定要合併所有已選擇的相簿到該相簿?《%s》?", + "MOVE_ALBUMS": "相簿移動", + "NOT_MOVE_ALBUMS": "不要移動", + "ROOT": "相簿", + "ALBUM_REUSE": "重複利用", + "ALBUM_LICENSE": "許可證", + "ALBUM_SET_LICENSE": "設定許可證", + "ALBUM_LICENSE_HELP": "需要選擇幫助嗎?", + "ALBUM_LICENSE_NONE": "不須", + "ALBUM_RESERVED": "版權所有", + "ALBUM_SET_ORDER": "設定排序方式", + "ALBUM_ORDERING": "排序方式", + "ALBUM_PHOTO_ORDERING": "Order photos by", + "ALBUM_CHILDREN_ORDERING": "Order albums by", + "ALBUM_OWNER": "Owner", + "PHOTO_ABOUT": "關於", + "PHOTO_BASICS": "基本資訊", + "PHOTO_TITLE": "標題", + "PHOTO_NEW_TITLE": "輸入新的相片標題:", + "PHOTO_SET_TITLE": "設定標題", + "PHOTO_UPLOADED": "已上傳", + "PHOTO_DESCRIPTION": "描述", + "PHOTO_NEW_DESCRIPTION": "輸入新的照片描述", + "PHOTO_SET_DESCRIPTION": "編輯描述", + "PHOTO_NEW_LICENSE": "新增許可證", + "PHOTO_SET_LICENSE": "設定許可證", + "PHOTO_LICENSE": "許可證", + "PHOTO_LICENSE_HELP": "Need help choosing?", + "PHOTO_REUSE": "重複利用", + "PHOTO_LICENSE_NONE": "無", + "PHOTO_RESERVED": "版權所有", + "PHOTO_LATITUDE": "緯度", + "PHOTO_LONGITUDE": "經度", + "PHOTO_ALTITUDE": "高度", + "PHOTO_IMGDIRECTION": "方向", + "PHOTO_LOCATION": "位置", + "PHOTO_IMAGE": "照片資訊", + "PHOTO_VIDEO": "影片", + "PHOTO_SIZE": "大小", + "PHOTO_FORMAT": "格式", + "PHOTO_RESOLUTION": "解析度", + "PHOTO_DURATION": "持續時間", + "PHOTO_FPS": "影格速率", + "PHOTO_TAGS": "標籤", + "PHOTO_NOTAGS": "無標籤", + "PHOTO_NEW_TAGS": "為該照片添加標籤(用逗號分隔):", + "PHOTOS_NEW_TAGS": "大量標籤 %d 標籤已選照片(已存在的標籤會被覆蓋;用逗號分隔):", + "PHOTO_SET_TAGS": "設定標籤", + "PHOTO_CAMERA": "相機資訊", + "PHOTO_CAPTURED": "拍攝時間", + "PHOTO_MAKE": "設備", + "PHOTO_TYPE": "類型\/型號", + "PHOTO_LENS": "鏡片", + "PHOTO_SHUTTER": "快門速度", + "PHOTO_APERTURE": "光圈", + "PHOTO_FOCAL": "焦距", + "PHOTO_ISO": "ISO感光度 %s", + "PHOTO_SHARING": "共享", + "PHOTO_DELETE": "刪除照片", + "PHOTO_KEEP": "保留照片", + "PHOTO_DELETE_CONFIRMATION": "是否要刪除照片《%s》?此動作無法還原!", + "PHOTO_DELETE_ALL": "是否要刪除除所有 %d 已選擇的照片?此動作無法還原!", + "PHOTOS_NEW_TITLE": "批量編輯照片標題 %d 已選的照片:", + "PHOTO_MAKE_PRIVATE_ALBUM": "此照片位於公開相簿中。編輯所在相簿的隱私設定,將其設置為公開或私有。", + "PHOTO_SHOW_ALBUM": "顯示相簿", + "PHOTO_PUBLIC": "公開", + "PHOTO_PUBLIC_EXPL": "Anonymous users can view this photo, subject to the restrictions below.", + "PHOTO_FULL": "原圖", + "PHOTO_FULL_EXPL": "Anonymous users can behold full-resolution photo.", + "PHOTO_HIDDEN": "隱藏", + "PHOTO_HIDDEN_EXPL": "Anonymous users need a direct link to view this photo.", + "PHOTO_DOWNLOADABLE": "允許下載", + "PHOTO_DOWNLOADABLE_EXPL": "Anonymous users may download this photo.", + "PHOTO_SHARE_BUTTON_VISIBLE": "顯示分享按鈕", + "PHOTO_SHARE_BUTTON_VISIBLE_EXPL": "Anonymous users can see social media sharing links.", + "PHOTO_PASSWORD_PROT": "密碼保護", + "PHOTO_PASSWORD_PROT_EXPL": "Anonymous users need a shared password to view this photo.", + "PHOTO_EDIT_SHARING_TEXT": "此照片的共享屬性將更改為以下內容:", + "PHOTO_NO_EDIT_SHARING_TEXT": "由於此照片位於公開相簿中,因此它會繼承該相冊的公開範圍設置。 下面顯示了它的當前可見性,僅供參考。", + "PHOTO_EDIT_GLOBAL_SHARING_TEXT": "可以使用全局Lychee設置微調這張照片的可見性。 下面顯示了它的當前可見性,僅供參考。", + "PHOTO_NEW_CREATED_AT": "Enter the upload date for this photo. mm\/dd\/yyyy, hh{mm} [am\/pm]", + "PHOTO_SET_CREATED_AT": "Set upload date", + "LOADING": "載入中", + "ERROR": "錯誤", + "ERROR_TEXT": "噢,似乎出了一些問題。請重整頁面後再試一次!", + "ERROR_UNKNOWN": "發生未知問題!請再試一次,檢查您的安裝和伺服器。請查看自述文件以獲取更多信息。", + "ERROR_MAP_DEACTIVATED": "地圖功能已被設為停用。", + "ERROR_SEARCH_DEACTIVATED": "搜索功能已在設為停用。", + "SUCCESS": "好", + "CHANGE_SUCCESS": "Change successful.", + "RETRY": "重試", + "OVERRIDE": "Override", + "TAGS_OVERRIDE_INFO": "If this is unchecked, the tags will be added to the existing tags of the photo.", + "SETTINGS_SUCCESS_LOGIN": "登錄信息已更新", + "SETTINGS_SUCCESS_SORT": "排序順序已更新。", + "SETTINGS_SUCCESS_DROPBOX": "Dropbox密鑰已更新", + "SETTINGS_SUCCESS_LANG": "語言已更新", + "SETTINGS_SUCCESS_LAYOUT": "佈局已更新", + "SETTINGS_SUCCESS_IMAGE_OVERLAY": "EXIF覆蓋設置已更新", + "SETTINGS_SUCCESS_PUBLIC_SEARCH": "公開搜尋已更新", + "SETTINGS_SUCCESS_LICENSE": "默認許可證已更新", + "SETTINGS_SUCCESS_MAP_DISPLAY": "地圖顯示設置已更新", + "SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC": "公開相簿的地圖顯示設置已更新", + "SETTINGS_SUCCESS_MAP_PROVIDER": "地圖提供商設置已更新", + "SETTINGS_SUCCESS_CSS": "Stylesheets updated", + "SETTINGS_SUCCESS_JS": "JS updated", + "SETTINGS_SUCCESS_UPDATE": "Settings updated successfully", + "SETTINGS_DROPBOX_KEY": "Dropbox API Key", + "SETTINGS_ADVANCED_WARNING_EXPL": "Changing these advanced settings can be harmful to the stability, security and performance of this application. You should only modify them if you are sure of what you are doing.", + "SETTINGS_ADVANCED_SAVE": "Save my modifications, I accept the risk!", + "U2F_NOT_SUPPORTED": "U2F not supported. Sorry.", + "U2F_NOT_SECURE": "Environment not secured. U2F not available.", + "U2F_REGISTER_KEY": "Register new device.", + "U2F_REGISTRATION_SUCCESS": "Registration successful!", + "U2F_AUTHENTIFICATION_SUCCESS": "Authentication successful!", + "U2F_CREDENTIALS": "Credentials", + "U2F_CREDENTIALS_DELETED": "Credentials deleted!", + "U2F_LOGIN": "Log in with WebAuthn", + "NEW_PHOTOS_NOTIFICATION": "Send new photos notification emails.", + "SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION": "New photos notification updated", + "USER_EMAIL_INSTRUCTION": "Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.", + "LOGIN_USERNAME": "新用戶名", + "LOGIN_PASSWORD": "新密碼", + "LOGIN_PASSWORD_CONFIRM": "確認密碼", + "PASSWORD_TITLE": "當前密碼", + "PASSWORD_CURRENT": "當前密碼", + "PASSWORD_TEXT": "用戶名和密碼將被修改為:", + "PASSWORD_CHANGE": "修改登入訊息", + "EDIT_SHARING_TITLE": "編輯共享", + "EDIT_SHARING_TEXT": "相簿的共享屬性將被修改為:", + "SHARE_ALBUM_TEXT": "該相簿的共享屬性:", + "SORT_DIALOG_ATTRIBUTE_LABEL": "Attribute", + "SORT_DIALOG_ORDER_LABEL": "Order", + "SORT_ALBUM_BY": "相簿排序 %1$s 在一個 %2$s 排序", + "SORT_ALBUM_SELECT_1": "創建時間", + "SORT_ALBUM_SELECT_2": "標題", + "SORT_ALBUM_SELECT_3": "描述", + "SORT_ALBUM_SELECT_5": "最新", + "SORT_ALBUM_SELECT_6": "最老", + "SORT_PHOTO_BY": "照片排序 %1$s 在一個 %2$s 排序", + "SORT_PHOTO_SELECT_1": "發佈時間", + "SORT_PHOTO_SELECT_2": "創建時間", + "SORT_PHOTO_SELECT_3": "標題", + "SORT_PHOTO_SELECT_4": "描述", + "SORT_PHOTO_SELECT_6": "喜歡", + "SORT_PHOTO_SELECT_7": "照片格式", + "SORT_ASCENDING": "升序", + "SORT_DESCENDING": "降序", + "SORT_CHANGE": "修改排序", + "DROPBOX_TITLE": "設置Dropbox私鑰", + "DROPBOX_TEXT": "要從Dropbox導入照片,需要一個有效的應用私鑰,請到官網獲取<\/a>。輸入你自己生成的私鑰:", + "LANG_TEXT": "將Lychee語言更改為:", + "LANG_TITLE": "改變語言", + "SETTING_RECENT_PUBLIC_TEXT": "Make \"Recent\" smart album accessible to anonymous users", + "SETTING_STARRED_PUBLIC_TEXT": "Make \"Starred\" smart album accessible to anonymous users", + "SETTING_ONTHISDAY_PUBLIC_TEXT": "Make \"On This Day\" smart album accessible to anonymous users", + "CSS_TEXT": "Personalize CSS:", + "CSS_TITLE": "Change CSS", + "JS_TEXT": "Custom JS:", + "JS_TITLE": "Change JS", + "PUBLIC_SEARCH_TEXT": "允許公共搜索:", + "OVERLAY_TYPE": "圖像疊加中要使用的數據:", + "OVERLAY_NONE": "None", + "OVERLAY_EXIF": "照片EXIF數據", + "OVERLAY_DESCRIPTION": "照片說明", + "OVERLAY_DATE": "拍攝日期", + "ALBUM_DECORATION": "Album decorations:", + "ALBUM_DECORATION_NONE": "None", + "ALBUM_DECORATION_ORIGINAL": "Sub-album marker", + "ALBUM_DECORATION_ALBUM": "Number of sub-albums", + "ALBUM_DECORATION_PHOTO": "Number of photos", + "ALBUM_DECORATION_ALL": "Number of sub-albums and photos", + "ALBUM_DECORATION_ORIENTATION": "Orientation of album decorations:", + "ALBUM_DECORATION_ORIENTATION_ROW": "Horizontal (photos, albums)", + "ALBUM_DECORATION_ORIENTATION_ROW_REVERSE": "Horizontal (albums, photos)", + "ALBUM_DECORATION_ORIENTATION_COLUMN": "Vertical (top photos, albums)", + "ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE": "Vertical (top albums, photos)", + "MAP_DISPLAY_TEXT": "啟用地圖(由OpenStreetMap提供):", + "MAP_DISPLAY_PUBLIC_TEXT": "為公開相冊啟用地圖(由OpenStreetMap提供):", + "MAP_PROVIDER": "地圖的提供者:", + "MAP_PROVIDER_WIKIMEDIA": "維基媒體", + "MAP_PROVIDER_OSM_ORG": "OpenStreetMap.org (無 HiDPI)", + "MAP_PROVIDER_OSM_DE": "OpenStreetMap.de (無 HiDPI)", + "MAP_PROVIDER_OSM_FR": "OpenStreetMap.fr (無 HiDPI)", + "MAP_PROVIDER_RRZE": "德國埃爾蘭根大學 (只有 HiDPI)", + "MAP_INCLUDE_SUBALBUMS_TEXT": "在地圖上包括子相冊的照片:", + "LOCATION_DECODING": "將GPS數據解碼為位置名稱", + "LOCATION_SHOW": "顯示地點名稱", + "LOCATION_SHOW_PUBLIC": "顯示公共模式的位置名稱", + "LAYOUT_TYPE": "照片佈局:", + "LAYOUT_SQUARES": "方形縮略圖", + "LAYOUT_JUSTIFIED": "有方面,有道理", + "LAYOUT_MASONRY": "有方面, masonry", + "LAYOUT_GRID": "有方面, grid", + "LAYOUT_UNJUSTIFIED": "有方面,沒有道理", + "SET_LAYOUT": "變更版面", + "NSFW_VISIBLE_TEXT_1": "Make Sensitive albums visible by default.", + "NSFW_VISIBLE_TEXT_2": "If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H<\/kbd><\/b>.", + "SETTINGS_SUCCESS_NSFW_VISIBLE": "Default sensitive album visibility updated with success.", + "NSFW_BANNER": "

Sensitive content<\/h1>

This album contains sensitive content which some people may find offensive or disturbing.<\/p>

Tap to consent.<\/p>", + "NSFW_HEADER": "Sensitive content", + "NSFW_EXPLANATION": "This album contains sensitive content which some people may find offensive or disturbing.", + "TAP_CONSENT": "Tap to consent.", + "VIEW_NO_RESULT": "無結果", + "VIEW_NO_PUBLIC_ALBUMS": "沒有公開相簿", + "VIEW_NO_CONFIGURATION": "没有配置", + "VIEW_PHOTO_NOT_FOUND": "没找到照片", + "NO_TAGS": "沒有標籤", + "UPLOAD_MANAGE_NEW_PHOTOS": "現在可以管理你的新照片了", + "UPLOAD_COMPLETE": "上傳完成", + "UPLOAD_COMPLETE_FAILED": "有幾個照片上傳失敗了", + "UPLOAD_IMPORTING": "導入", + "UPLOAD_IMPORTING_URL": "導入 URL", + "UPLOAD_UPLOADING": "上傳中", + "UPLOAD_FINISHED": "已完成", + "UPLOAD_PROCESSING": "處理中", + "UPLOAD_FAILED": "失敗", + "UPLOAD_FAILED_ERROR": "上傳失敗。伺服器傳回了一個錯誤!", + "UPLOAD_FAILED_WARNING": "上傳失敗。伺服器傳回了一個警告!", + "UPLOAD_CANCELLED": "Cancelled", + "UPLOAD_SKIPPED": "已跳過", + "UPLOAD_UPDATED": "Updated", + "UPLOAD_GENERAL": "General", + "UPLOAD_IMPORT_SKIPPED_DUPLICATE": "This photo has been skipped because it’s already in your library.", + "UPLOAD_IMPORT_RESYNCED_DUPLICATE": "This photo has been skipped because it’s already in your library, but its metadata has been updated.", + "UPLOAD_ERROR_CONSOLE": "請查看瀏覽器控制台獲取詳細信息。", + "UPLOAD_UNKNOWN": "伺服器傳回了未知響應。請查看瀏覽器控制台獲取詳細信息。", + "UPLOAD_ERROR_UNKNOWN": "上傳失敗。伺服器回傳了一個未知錯誤!", + "UPLOAD_ERROR_POSTSIZE": "Upload failed. The PHP post_max_size may be too small! Otherwise check the FAQ.", + "UPLOAD_ERROR_FILESIZE": "Upload failed. The PHP upload_max_filesize may be too small! Otherwise check the FAQ.", + "UPLOAD_IN_PROGRESS": "Lychee當前正在上傳!", + "UPLOAD_IMPORT_WARN_ERR": "導入成功,但返回了的警告或錯誤。請查看日誌(設置->顯示日誌)以獲取詳細信息。", + "UPLOAD_IMPORT_COMPLETE": "導入完成", + "UPLOAD_IMPORT_INSTR": "輸入照片鏈接直接導入:", + "UPLOAD_IMPORT": "導入", + "UPLOAD_IMPORT_SERVER": "從伺服器導入", + "UPLOAD_IMPORT_SERVER_FOLD": "文件夾中沒有可讀的文件。請查看日誌(設置->顯示日誌)以獲取詳細信息。", + "UPLOAD_IMPORT_SERVER_INSTR": "Import all photos, folders and sub-folders located in the folders with the following absolute paths (on server). Paths are space separated, use \\ to escape a space in a path.", + "UPLOAD_ABSOLUTE_PATH": "Absolute path to directories, space separated", + "UPLOAD_IMPORT_SERVER_EMPT": "無法導入空文件夾!", + "UPLOAD_IMPORT_DELETE_ORIGINALS": "刪除原件", + "UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL": "如果可能,原始文件將在導入後刪除。", + "UPLOAD_IMPORT_VIA_SYMLINK": "Symbolic links", + "UPLOAD_IMPORT_VIA_SYMLINK_EXPL": "Import files using symbolic links to originals.", + "UPLOAD_IMPORT_SKIP_DUPLICATES": "Skip duplicates", + "UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL": "Existing media files are skipped.", + "UPLOAD_IMPORT_RESYNC_METADATA": "Re-sync metadata", + "UPLOAD_IMPORT_RESYNC_METADATA_EXPL": "Update metadata of existing media files.", + "UPLOAD_IMPORT_LOW_MEMORY_EXPL": "伺服器上的導入過程已接近內存限制,並可能最終被提前終止。", + "UPLOAD_WARNING": "警告", + "UPLOAD_IMPORT_NOT_A_DIRECTORY": "給定的路徑不是可讀目錄!", + "UPLOAD_IMPORT_PATH_RESERVED": "給定的路徑是Lychee的保留路徑!", + "UPLOAD_IMPORT_FAILED": "無法導入文件!", + "UPLOAD_IMPORT_UNSUPPORTED": "不支援的文件類型!", + "UPLOAD_IMPORT_CANCELLED": "Import cancelled", + "ABOUT_SUBTITLE": "Lychee自主託管的照片管理程序", + "ABOUT_DESCRIPTION": "Lychee<\/a> 是一個免費的照片管理工具,可在您的伺服器或網站空間上運行。安裝僅需幾秒鐘。上傳,管理和分享照片(例如從本機應用程序)。Lychee提供您所需的一切,所有照片均安全存儲。", + "FOOTER_COPYRIGHT": "本網站的照片均受版權所有 %1$s © %2$s", + "HOSTED_WITH_LYCHEE": "使用Lychee託管照片(繁中由CYL翻譯)", + "URL_COPY_TO_CLIPBOARD": "複製到剪貼板", + "URL_COPIED_TO_CLIPBOARD": "複製到剪貼板的URL!", + "PHOTO_DIRECT_LINKS_TO_IMAGES": "指向圖像文件的直接鏈接:", + "PHOTO_ORIGINAL": "Original", + "PHOTO_MEDIUM": "中等", + "PHOTO_MEDIUM_HIDPI": "中等解析度", + "PHOTO_SMALL": "低", + "PHOTO_SMALL_HIDPI": "低解析度", + "PHOTO_THUMB": "方形圖", + "PHOTO_THUMB_HIDPI": "方形解析度", + "PHOTO_THUMBNAIL": "Photo thumbnail", + "PHOTO_LIVE_VIDEO": "實時照片的視頻部分", + "PHOTO_VIEW": "Lychee照片瀏覽:", + "PHOTO_EDIT_ROTATECWISE": "順時針旋轉", + "PHOTO_EDIT_ROTATECCWISE": "逆時針旋轉", + "ERROR_GPX": "Error loading GPX file: ", + "ERROR_EITHER_ALBUMS_OR_PHOTOS": "Please select either albums or photos!", + "ERROR_COULD_NOT_FIND": "Could not find what you want.", + "ERROR_INVALID_EMAIL": "Not a valid email address.", + "EMAIL_SUCCESS": "Email updated!", + "ERROR_PHOTO_NOT_FOUND": "Error: photo %s not found !", + "ERROR_EMPTY_USERNAME": "new username cannot be empty.", + "ERROR_PASSWORD_DOES_NOT_MATCH": "new password does not match.", + "ERROR_EMPTY_PASSWORD": "new password cannot be empty.", + "ERROR_SELECT_ALBUM": "Select an album to share!", + "ERROR_SELECT_USER": "Select a user to share with!", + "ERROR_SELECT_SHARING": "Select a sharing to remove!", + "SHARING_SUCCESS": "Sharing updated!", + "SHARING_REMOVED": "Sharing removed!", + "USER_CREATED": "User created!", + "USER_DELETED": "User deleted!", + "USER_UPDATED": "User updated!", + "ENTER_EMAIL": "Enter your email address:", + "ERROR_ALBUM_JSON_NOT_FOUND": "Error: Album json not found!", + "ERROR_ALBUM_NOT_FOUND": "Error: album %s not found", + "ERROR_DROPBOX_KEY": "Error: Dropbox key not set", + "ERROR_SESSION": "Session expired.", + "CAMERA_DATE": "Camera date", + "NEW_PASSWORD": "new password", + "ALLOW_UPLOADS": "Allow uploads", + "ALLOW_USER_SELF_EDIT": "Allow self-management of user account", + "OSM_CONTRIBUTORS": "OpenStreetMap contributors" + }, + "maintenance": { + "title": "Maintenance", + "description": "You will find on this page, all the required actions to keep your Lychee installation running smooth and nicely.", + "cleaning": { + "title": "Cleaning %s", + "result": "%s deleted.", + "description": "Remove all contents from %s<\/span>", + "button": "Clean" + }, + "fix-jobs": { + "title": "Fixing Jobs History", + "description": "Mark jobs with status %s<\/span> or %s<\/span> as %s<\/span>.", + "button": "Fix job history" + }, + "gen-sizevariants": { + "title": "Missing %s", + "description": "Found %d %s that could be generated.", + "button": "Generate!", + "success": "Successfully generated %d %s." + }, + "fill-filesize-sizevariants": { + "title": "File sizes missing", + "description": "Found %d small variants without file size.", + "button": "Fetch data!", + "success": "Successfully computed sizes of %d small variants." + }, + "fix-tree": { + "title": "Tree statistics", + "Oddness": "Oddness", + "Duplicates": "Duplicates", + "Wrong parents": "Wrong parents", + "Missing parents": "Missing parents", + "button": "Fix tree" + }, + "optimize": { + "title": "Optimize Database", + "description": "If you notice slowdown in your installation, it may be because your database does not\n\t\thave all its needed index.", + "button": "Optimize Database" + }, + "update": { + "title": "Updates", + "check-button": "Check for updates", + "update-button": "Update", + "no-pending-updates": "No pending update." + } + }, + "oauth": { + "NOT_AVAILABLE": "Oauth is not available.", + "SET_UP_CREDENTIALS": "Set up the credentials in your .env", + "SET_UP_OAUTH": "Set up Oauth authentication", + "SET_UP": "Set up %s", + "TOKEN_REGISTERED": "%s token registered.", + "RESET": "reset" + }, + "validation": { + "accepted": "The {attribute} must be accepted.", + "active_url": "The {attribute} is not a valid URL.", + "after": "The {attribute} must be a date after {date}.", + "after_or_equal": "The {attribute} must be a date after or equal to {date}.", + "alpha": "The {attribute} may only contain letters.", + "alpha_dash": "The {attribute} may only contain letters, numbers, and dashes.", + "alpha_num": "The {attribute} may only contain letters and numbers.", + "array": "The {attribute} must be an array.", + "before": "The {attribute} must be a date before {date}.", + "before_or_equal": "The {attribute} must be a date before or equal to {date}.", + "between": { + "numeric": "The {attribute} must be between {min} and {max}.", + "file": "The {attribute} must be between {min} and {max} kilobytes.", + "string": "The {attribute} must be between {min} and {max} characters.", + "array": "The {attribute} must have between {min} and {max} items." + }, + "boolean": "The {attribute} field must be true or false.", + "confirmed": "The {attribute} confirmation does not match.", + "date": "The {attribute} is not a valid date.", + "date_format": "The {attribute} does not match the format {format}.", + "different": "The {attribute} and {other} must be different.", + "digits": "The {attribute} must be {digits} digits.", + "digits_between": "The {attribute} must be between {min} and {max} digits.", + "dimensions": "The {attribute} has invalid image dimensions.", + "distinct": "The {attribute} field has a duplicate value.", + "email": "The {attribute} must be a valid email address.", + "exists": "The selected {attribute} is invalid.", + "file": "The {attribute} must be a file.", + "filled": "The {attribute} field must have a value.", + "gt": { + "numeric": "The {attribute} must be greater than {value}.", + "file": "The {attribute} must be greater than {value} kilobytes.", + "string": "The {attribute} must be greater than {value} characters.", + "array": "The {attribute} must have more than {value} items." + }, + "gte": { + "numeric": "The {attribute} must be greater than or equal {value}.", + "file": "The {attribute} must be greater than or equal {value} kilobytes.", + "string": "The {attribute} must be greater than or equal {value} characters.", + "array": "The {attribute} must have {value} items or more." + }, + "image": "The {attribute} must be an image.", + "in": "The selected {attribute} is invalid.", + "in_array": "The {attribute} field does not exist in {other}.", + "integer": "The {attribute} must be an integer.", + "ip": "The {attribute} must be a valid IP address.", + "ipv4": "The {attribute} must be a valid IPv4 address.", + "ipv6": "The {attribute} must be a valid IPv6 address.", + "json": "The {attribute} must be a valid JSON string.", + "lt": { + "numeric": "The {attribute} must be less than {value}.", + "file": "The {attribute} must be less than {value} kilobytes.", + "string": "The {attribute} must be less than {value} characters.", + "array": "The {attribute} must have less than {value} items." + }, + "lte": { + "numeric": "The {attribute} must be less than or equal {value}.", + "file": "The {attribute} must be less than or equal {value} kilobytes.", + "string": "The {attribute} must be less than or equal {value} characters.", + "array": "The {attribute} must not have more than {value} items." + }, + "max": { + "numeric": "The {attribute} may not be greater than {max}.", + "file": "The {attribute} may not be greater than {max} kilobytes.", + "string": "The {attribute} may not be greater than {max} characters.", + "array": "The {attribute} may not have more than {max} items." + }, + "mimes": "The {attribute} must be a file of type: {values}.", + "mimetypes": "The {attribute} must be a file of type: {values}.", + "min": { + "numeric": "The {attribute} must be at least {min}.", + "file": "The {attribute} must be at least {min} kilobytes.", + "string": "The {attribute} must be at least {min} characters.", + "array": "The {attribute} must have at least {min} items." + }, + "not_in": "The selected {attribute} is invalid.", + "not_regex": "The {attribute} format is invalid.", + "numeric": "The {attribute} must be a number.", + "present": "The {attribute} field must be present.", + "regex": "The {attribute} format is invalid.", + "required": "The {attribute} field is required.", + "required_if": "The {attribute} field is required when {other} is {value}.", + "required_unless": "The {attribute} field is required unless {other} is in {values}.", + "required_with": "The {attribute} field is required when {values} is present.", + "required_with_all": "The {attribute} field is required when {values} is present.", + "required_without": "The {attribute} field is required when {values} is not present.", + "required_without_all": "The {attribute} field is required when none of {values} are present.", + "same": "The {attribute} and {other} must match.", + "size": { + "numeric": "The {attribute} must be {size}.", + "file": "The {attribute} must be {size} kilobytes.", + "string": "The {attribute} must be {size} characters.", + "array": "The {attribute} must contain {size} items." + }, + "string": "The {attribute} must be a string.", + "timezone": "The {attribute} must be a valid zone.", + "unique": "The {attribute} has already been taken.", + "uploaded": "The {attribute} failed to upload.", + "url": "The {attribute} format is invalid.", + "custom": { + "attribute-name": { + "rule-name": "custom-message" + } + }, + "attributes": [] + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b8f39b10652..09880834c35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,36 +6,53 @@ "": { "dependencies": { "@fortawesome/fontawesome-free": "^6.5.1", + "@primevue/themes": "^4.0.0-rc.2", "@types/justified-layout": "^4.1.4", "autoprefixer": "^10.4.17", + "axios": "^1.7.2", "is-mobile": "^4.0.0", "justified-layout": "^4.1.0", "laravel-vite-plugin": "^1.0.1", - "lazysizes": "^5.3.2", + "laravel-vue-i18n": "^2.7.7", "leaflet": "^1.9.4", "leaflet-gpx": "^1.7.0", "leaflet-rotatedmarker": "^0.2.0", "leaflet.markercluster": "^1.5.3", + "pinia": "^2.1.7", "postcss": "^8.4.33", "prettier": "^3.2.4", + "primeicons": "^7.0.0", + "primevue": "^4.0.0-rc.2", "qrcode": "^1.5.3", + "sprintf-js": "^1.1.3", "tailwindcss": "^3.4.1", + "tailwindcss-primeui": "^0.3.4", "tinygesture": "^3.0.0", "ts-loader": "^9.5.1", "typescript": "^5.3.3", "vite": "^5.4.6", - "vite-plugin-commonjs": "^0.10.1" + "vite-plugin-commonjs": "^0.10.1", + "vue": "^3.2.37", + "vue-collapsed": "^1.3.3", + "vue-i18n": "^9.2.0", + "vue-router": "^4.4.0" }, "devDependencies": { "@lychee-org/leaflet.photo": "^1.0.0", + "@popperjs/core": "^2.11.6", "@tailwindcss/typography": "^0.5.12", "@types/alpinejs": "^3.13.6", "@types/leaflet": "^1.9.8", "@types/leaflet-rotatedmarker": "^0.2.5", "@types/leaflet.markercluster": "^1.5.4", "@types/mousetrap": "^1.6.15", + "@types/node": "^20.14.9", "@types/photoswipe": "^4.1.6", - "@types/qrcode": "^1.5.5" + "@types/qrcode": "^1.5.5", + "@types/sprintf-js": "^1.1.4", + "@vitejs/plugin-vue": "^4.5.0", + "sass": "^1.77.6", + "vue-tsc": "^2.0.24" } }, "node_modules/@alloc/quick-lru": { @@ -49,6 +66,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", + "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "dependencies": { + "@babel/types": "^7.25.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", + "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "dependencies": { + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -395,14 +455,54 @@ } }, "node_modules/@fortawesome/fontawesome-free": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.2.tgz", - "integrity": "sha512-hRILoInAx8GNT5IMkrtIt9blOdrqHOnPBH+k70aWUAqPZPgopb9G5EQJFpaBx/S8zp2fC+mPW349Bziuk1o28Q==", - "hasInstallScript": true, + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz", + "integrity": "sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==", "engines": { "node": ">=6" } }, + "node_modules/@intlify/core-base": { + "version": "9.14.1", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.14.1.tgz", + "integrity": "sha512-rG5/hlNW6Qfve41go37szEf0mVLcfhYuOu83JcY0jZKasnwsrcZYYWDzebCcuO5I/6Sy1JFWo9p+nvkQS1Dy+w==", + "dependencies": { + "@intlify/message-compiler": "9.14.1", + "@intlify/shared": "9.14.1" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "9.14.1", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.1.tgz", + "integrity": "sha512-MY8hwukJBnXvGAncVKlHsqKDQ5ZcQx4peqEmI8wBUTXn4pezrtTGYXNoz81cLyEEHB+L/zlKWVBSh5TiX4gYoQ==", + "dependencies": { + "@intlify/shared": "9.14.1", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/shared": { + "version": "9.14.1", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.1.tgz", + "integrity": "sha512-XjHu6PEQup9MnP1x0W9y0nXXfq9jFftAYSfV11hryjtH4XqXP8HrzMvXI+ZVifF+jZLszaTzIhvukllplxTQTg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -459,9 +559,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", @@ -510,6 +610,279 @@ "node": ">= 8" } }, + "node_modules/@parcel/watcher": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "devOptional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -519,10 +892,77 @@ "node": ">=14" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@primeuix/styled": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@primeuix/styled/-/styled-0.2.0.tgz", + "integrity": "sha512-3Q6bDrmwTW88tzJsFIFenC0VyXLj0+/wYw+TZnJ/4CCDfehR4WfTs4EZdpuFtYqvmbpJ6zWXAiwSCNdSYTZkyA==", + "dependencies": { + "@primeuix/utils": "^0.2.0" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@primeuix/utils": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@primeuix/utils/-/utils-0.2.0.tgz", + "integrity": "sha512-AaDIeRFlsbkVTk2s0mlEjnGSLi31X669NVwo+n+AVAnBdDiQznjipNTpHbOobVBtjOKZize74PChK6uoaSBRUw==", + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@primevue/core": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@primevue/core/-/core-4.1.1.tgz", + "integrity": "sha512-jUDrTh3g0FskTdD6rCCsoWfxKky0R7959p7vnaNYI6wMLreaTL3yC3nzYlEniIpb+F51Sm3KJ1eSJBN6DnSB8Q==", + "dependencies": { + "@primeuix/styled": "^0.2.0", + "@primeuix/utils": "^0.2.0" + }, + "engines": { + "node": ">=12.11.0" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@primevue/icons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@primevue/icons/-/icons-4.1.1.tgz", + "integrity": "sha512-Ybeb+AHUsVybITuYNwS7goqWcXLLgCDSiCPoymyYwYkzn5qLakvJbQH1EX8lGOsrvqK0hG+s+n7Wm2MHJ8A72w==", + "dependencies": { + "@primeuix/utils": "^0.2.0", + "@primevue/core": "4.1.1" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@primevue/themes": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@primevue/themes/-/themes-4.1.1.tgz", + "integrity": "sha512-ec2gBN2vP0ydGtGAzC0nYCFqYN7CzvXxnlJqcvcPIo3rP/pcdj+FkzAe3y2DMG3OorYtqdzoyGtBefQrx3v5ag==", + "dependencies": { + "@primeuix/styled": "^0.2.0" + }, + "engines": { + "node": ">=12.11.0" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", - "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", "cpu": [ "arm" ], @@ -532,9 +972,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", - "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", "cpu": [ "arm64" ], @@ -544,9 +984,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", - "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", "cpu": [ "arm64" ], @@ -556,9 +996,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", - "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", "cpu": [ "x64" ], @@ -568,9 +1008,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", - "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", "cpu": [ "arm" ], @@ -580,9 +1020,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", - "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", "cpu": [ "arm" ], @@ -592,9 +1032,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", - "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", "cpu": [ "arm64" ], @@ -604,9 +1044,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", - "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", "cpu": [ "arm64" ], @@ -616,9 +1056,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", - "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", "cpu": [ "ppc64" ], @@ -628,9 +1068,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", - "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", "cpu": [ "riscv64" ], @@ -640,9 +1080,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", - "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", "cpu": [ "s390x" ], @@ -652,9 +1092,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", - "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", "cpu": [ "x64" ], @@ -664,9 +1104,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", - "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", "cpu": [ "x64" ], @@ -676,9 +1116,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", - "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", "cpu": [ "arm64" ], @@ -688,9 +1128,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", - "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", "cpu": [ "ia32" ], @@ -700,9 +1140,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", - "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", "cpu": [ "x64" ], @@ -712,9 +1152,9 @@ ] }, "node_modules/@tailwindcss/typography": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.13.tgz", - "integrity": "sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.15.tgz", + "integrity": "sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==", "dev": true, "dependencies": { "lodash.castarray": "^4.4.0", @@ -723,7 +1163,7 @@ "postcss-selector-parser": "6.0.10" }, "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders" + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20" } }, "node_modules/@types/alpinejs": { @@ -733,9 +1173,9 @@ "dev": true }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" }, "node_modules/@types/geojson": { "version": "7946.0.14", @@ -788,11 +1228,11 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/photoswipe": { @@ -810,6 +1250,181 @@ "@types/node": "*" } }, + "node_modules/@types/sprintf-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/sprintf-js/-/sprintf-js-1.1.4.tgz", + "integrity": "sha512-aWK1reDYWxcjgcIIPmQi3u+OQDuYa9b+lr6eIsGWrekJ9vr1NSjr4Eab8oQ1iKuH1ltFHpXGyerAv1a3FMKxzQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.6.tgz", + "integrity": "sha512-FxUfxaB8sCqvY46YjyAAV6c3mMIq/NWQMVvJ+uS4yxr1KzOvyg61gAuOnNvgCvO4TZ7HcLExBEsWcDu4+K4E8A==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.4.6" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.6.tgz", + "integrity": "sha512-Nsh7UW2ruK+uURIPzjJgF0YRGP5CX9nQHypA2OMqdM2FKy7rh+uv3XgPnWPw30JADbKvZ5HuBzG4gSbVDYVtiw==", + "dev": true + }, + "node_modules/@volar/typescript": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.6.tgz", + "integrity": "sha512-NMIrA7y5OOqddL9VtngPWYmdQU03htNKFtAYidbYfWA0TOhyGVd9tfcP4TsLWQ+RBWDZCbBqsr8xzU0ZOxYTCQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.6", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz", + "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.12", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz", + "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==", + "dependencies": { + "@vue/compiler-core": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", + "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.12", + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.47", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz", + "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==", + "dependencies": { + "@vue/compiler-dom": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" + }, + "node_modules/@vue/language-core": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.1.6.tgz", + "integrity": "sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==", + "dev": true, + "dependencies": { + "@volar/language-core": "~2.4.1", + "@vue/compiler-dom": "^3.4.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz", + "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==", + "dependencies": { + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz", + "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==", + "dependencies": { + "@vue/reactivity": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz", + "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==", + "dependencies": { + "@vue/reactivity": "3.5.12", + "@vue/runtime-core": "3.5.12", + "@vue/shared": "3.5.12", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz", + "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==", + "dependencies": { + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12" + }, + "peerDependencies": { + "vue": "3.5.12" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz", + "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", @@ -969,9 +1584,9 @@ "peer": true }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "bin": { "acorn": "bin/acorn" }, @@ -1014,9 +1629,9 @@ } }, "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "engines": { "node": ">=12" }, @@ -1060,10 +1675,15 @@ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/autoprefixer": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "funding": [ { "type": "opencollective", @@ -1079,11 +1699,11 @@ } ], "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -1096,6 +1716,16 @@ "postcss": "^8.1.0" } }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1132,9 +1762,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "funding": [ { "type": "opencollective", @@ -1150,10 +1780,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -1185,9 +1815,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001628", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001628.tgz", - "integrity": "sha512-S3BnR4Kh26TBxbi5t5kpbcUlLJb9lhtDXISDPwOfI+JoC+ik0QksvkZtUVyikw3hjnkgkMPSJ8oIM9yMm9vflA==", + "version": "1.0.30001669", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", "funding": [ { "type": "opencollective", @@ -1219,37 +1849,18 @@ } }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "devOptional": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" } }, "node_modules/chrome-trace-event": { @@ -1337,6 +1948,17 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -1345,6 +1967,12 @@ "node": ">= 6" } }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1369,6 +1997,17 @@ "node": ">=4" } }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -1377,6 +2016,26 @@ "node": ">=0.10.0" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "devOptional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -1398,20 +2057,15 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/electron-to-chromium": { - "version": "1.4.790", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.790.tgz", - "integrity": "sha512-eVGeQxpaBYbomDBa/Mehrs28MdvCXfJmEFzaMFsv8jH/MJDLIylJN81eTJ5kvx7B7p18OiPK0BkC06lydEy63A==" + "version": "1.5.39", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.39.tgz", + "integrity": "sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" - }, "node_modules/enhanced-resolve": { "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", @@ -1424,10 +2078,21 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/es-module-lexer": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", - "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==" + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" }, "node_modules/esbuild": { "version": "0.21.5", @@ -1467,9 +2132,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "engines": { "node": ">=6" } @@ -1517,6 +2182,11 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -1595,10 +2265,29 @@ "node": ">=8" } }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -1610,6 +2299,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -1652,22 +2354,20 @@ } }, "node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -1713,6 +2413,21 @@ "node": ">= 0.4" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "devOptional": true + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1725,11 +2440,14 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1781,15 +2499,12 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -1827,9 +2542,9 @@ } }, "node_modules/jiti": { - "version": "1.21.3", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.3.tgz", - "integrity": "sha512-uy2bNX5zQ+tESe+TiC7ilGRz8AtRGmnJH55NC5S0nSUjvvvM2hJHmefHErugGXN4pNv4Qx7vLsnNw9qJ9mtIsw==", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "bin": { "jiti": "bin/jiti.js" } @@ -1852,9 +2567,9 @@ "integrity": "sha512-M5FimNMXgiOYerVRGsXZ2YK9YNCaTtwtYp7Hb2308U1Q9TXXHx5G0p08mcVR5O53qf8bWY4NJcPBxE6zuayXSg==" }, "node_modules/laravel-vite-plugin": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-1.0.4.tgz", - "integrity": "sha512-dEj8Q/Fsn0kKbOQ55bl/NmyJL+dD6OxnVaM/nNByw5XV4b00ky6FzXKVuHLDr4BvSJKH1y6oaOcEG5wKpCZ5+A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-1.0.5.tgz", + "integrity": "sha512-Zv+to82YLBknDCZ6g3iwOv9wZ7f6EWStb9pjSm7MGe9Mfoy5ynT2ssZbGsMr1udU6rDg9HOoYEVGw5Qf+p9zbw==", "dependencies": { "picocolors": "^1.0.0", "vite-plugin-full-reload": "^1.1.0" @@ -1869,10 +2584,14 @@ "vite": "^5.0.0" } }, - "node_modules/lazysizes": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/lazysizes/-/lazysizes-5.3.2.tgz", - "integrity": "sha512-22UzWP+Vedi/sMeOr8O7FWimRVtiNJV2HCa+V8+peZOw6QbswN9k58VUhd7i6iK5bw5QkYrF01LJbeJe0PV8jg==" + "node_modules/laravel-vue-i18n": { + "version": "2.7.7", + "resolved": "https://registry.npmjs.org/laravel-vue-i18n/-/laravel-vue-i18n-2.7.7.tgz", + "integrity": "sha512-rvjRTUY0eYEduEYgyxqNno/5A0ryUQfT+70qYvubMPUxWhmucitUfjDQAQUjvD7WNaUbG5iroAUt3UqBBc5qDw==", + "dependencies": { + "php-parser": "3.1.3", + "vue": "^3.2.45" + } }, "node_modules/leaflet": { "version": "1.9.4", @@ -1949,19 +2668,16 @@ "dev": true }, "node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/merge-stream": { @@ -1994,7 +2710,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "peer": true, "engines": { "node": ">= 0.6" } @@ -2003,7 +2718,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -2012,9 +2726,9 @@ } }, "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2033,6 +2747,12 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -2066,10 +2786,16 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "peer": true }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "devOptional": true + }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -2136,6 +2862,17 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -2172,10 +2909,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/php-parser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/php-parser/-/php-parser-3.1.3.tgz", + "integrity": "sha512-hPvBmnRYPqWEtMfIFOlyjQv1q75UUtxt4U+YscKIQViGmEE2Xa4BuS1B1/cZdjy7MVcwtnr0WkEsr915LgRKOw==" + }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -2196,6 +2938,56 @@ "node": ">=0.10.0" } }, + "node_modules/pinia": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.2.4.tgz", + "integrity": "sha512-K7ZhpMY9iJ9ShTC0cR2+PnxdQRuwVIsXDO/WIEV/RnMC/vmSoKDTKW/exNQYPI+4ij10UjXqdNiEHwn47McANQ==", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", @@ -2308,9 +3100,9 @@ } }, "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", - "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "engines": { "node": ">=14" }, @@ -2319,27 +3111,33 @@ } }, "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "postcss-selector-parser": "^6.0.11" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": ">=12.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.2.14" } }, "node_modules/postcss-nested/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2367,9 +3165,9 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.1.tgz", - "integrity": "sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "bin": { "prettier": "bin/prettier.cjs" }, @@ -2380,6 +3178,30 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/primeicons": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-7.0.0.tgz", + "integrity": "sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==" + }, + "node_modules/primevue": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/primevue/-/primevue-4.1.1.tgz", + "integrity": "sha512-FeJkv7FhfePfUBoApW0qAhid6Znq18VgbGFZdmhUcxvOD49Y2Eo/k2Yn7ypPhRbRApWiaSRN0v/2G1I4AMj3xg==", + "dependencies": { + "@primeuix/styled": "^0.2.0", + "@primeuix/utils": "^0.2.0", + "@primevue/core": "4.1.1", + "@primevue/icons": "4.1.1" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2390,12 +3212,11 @@ } }, "node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", "dependencies": { "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", "pngjs": "^5.0.0", "yargs": "^15.3.1" }, @@ -2443,14 +3264,16 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "devOptional": true, "engines": { - "node": ">=8.10.0" + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/require-directory": { @@ -2492,11 +3315,11 @@ } }, "node_modules/rollup": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", - "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", + "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -2506,22 +3329,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.4", - "@rollup/rollup-android-arm64": "4.22.4", - "@rollup/rollup-darwin-arm64": "4.22.4", - "@rollup/rollup-darwin-x64": "4.22.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", - "@rollup/rollup-linux-arm-musleabihf": "4.22.4", - "@rollup/rollup-linux-arm64-gnu": "4.22.4", - "@rollup/rollup-linux-arm64-musl": "4.22.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", - "@rollup/rollup-linux-riscv64-gnu": "4.22.4", - "@rollup/rollup-linux-s390x-gnu": "4.22.4", - "@rollup/rollup-linux-x64-gnu": "4.22.4", - "@rollup/rollup-linux-x64-musl": "4.22.4", - "@rollup/rollup-win32-arm64-msvc": "4.22.4", - "@rollup/rollup-win32-ia32-msvc": "4.22.4", - "@rollup/rollup-win32-x64-msvc": "4.22.4", + "@rollup/rollup-android-arm-eabi": "4.24.0", + "@rollup/rollup-android-arm64": "4.24.0", + "@rollup/rollup-darwin-arm64": "4.24.0", + "@rollup/rollup-darwin-x64": "4.24.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", + "@rollup/rollup-linux-arm-musleabihf": "4.24.0", + "@rollup/rollup-linux-arm64-gnu": "4.24.0", + "@rollup/rollup-linux-arm64-musl": "4.24.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", + "@rollup/rollup-linux-riscv64-gnu": "4.24.0", + "@rollup/rollup-linux-s390x-gnu": "4.24.0", + "@rollup/rollup-linux-x64-gnu": "4.24.0", + "@rollup/rollup-linux-x64-musl": "4.24.0", + "@rollup/rollup-win32-arm64-msvc": "4.24.0", + "@rollup/rollup-win32-ia32-msvc": "4.24.0", + "@rollup/rollup-win32-x64-msvc": "4.24.0", "fsevents": "~2.3.2" } }, @@ -2567,6 +3390,24 @@ ], "peer": true }, + "node_modules/sass": { + "version": "1.79.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.5.tgz", + "integrity": "sha512-W1h5kp6bdhqFh2tk3DsI771MoEJjvrSY/2ihJRJS4pjIyfJCw0nTsxqhnrUzaLMOJjFchj8rOvraI/YUVjtx5g==", + "devOptional": true, + "dependencies": { + "@parcel/watcher": "^2.4.1", + "chokidar": "^4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -2586,9 +3427,9 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -2675,6 +3516,11 @@ "node": ">=0.10.0" } }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -2807,9 +3653,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", - "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "version": "3.4.14", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz", + "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -2842,10 +3688,52 @@ "node": ">=14.0.0" } }, + "node_modules/tailwindcss-primeui": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tailwindcss-primeui/-/tailwindcss-primeui-0.3.4.tgz", + "integrity": "sha512-5+Qfoe5Kpq2Iwrd6umBUb3rQH6b7+pL4jxJUId0Su5agUM6TwCyH5Pyl9R0y3QQB3IRuTxBNmeS11B41f+30zw==", + "peerDependencies": { + "tailwindcss": ">=3.1.0" + } + }, + "node_modules/tailwindcss/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2854,6 +3742,17 @@ "node": ">=4" } }, + "node_modules/tailwindcss/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -2863,9 +3762,9 @@ } }, "node_modules/terser": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", - "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -2944,6 +3843,14 @@ "resolved": "https://registry.npmjs.org/tinygesture/-/tinygesture-3.0.0.tgz", "integrity": "sha512-UawUggtPCHy+N65ULpR/i6VLH8AzB7jWVvTNoXRFTJNh+ub6lP/SJCxzV/Ua7sJbCt9U9I79wKkKk3wbjcLdbQ==" }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2980,9 +3887,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2992,14 +3899,14 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "funding": [ { "type": "opencollective", @@ -3015,8 +3922,8 @@ } ], "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -3040,9 +3947,9 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/vite": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz", - "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==", + "version": "5.4.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.9.tgz", + "integrity": "sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -3098,40 +4005,120 @@ } }, "node_modules/vite-plugin-commonjs": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/vite-plugin-commonjs/-/vite-plugin-commonjs-0.10.1.tgz", - "integrity": "sha512-taP8R9kYGlCW5OzkVR0UIWRCnG6rSxeWWuA7tnU5b9t5MniibOnDY219NhisTeDhJAeGT8cEnrhVWZ9A5yD+vg==", + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/vite-plugin-commonjs/-/vite-plugin-commonjs-0.10.3.tgz", + "integrity": "sha512-trtH4dfAqrbqwiUhSKcqrfjnlXnqLHdIbYuUy943y34JnDjIX8qlpExP0nFN+kE2s6/BS6r9d1cAHS0KtiF4yQ==", "dependencies": { - "acorn": "^8.8.2", - "fast-glob": "^3.2.12", - "magic-string": "^0.30.1", - "vite-plugin-dynamic-import": "^1.5.0" + "acorn": "^8.12.1", + "magic-string": "^0.30.11", + "vite-plugin-dynamic-import": "^1.6.0" } }, "node_modules/vite-plugin-dynamic-import": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/vite-plugin-dynamic-import/-/vite-plugin-dynamic-import-1.5.0.tgz", - "integrity": "sha512-Qp85c+AVJmLa8MLni74U4BDiWpUeFNx7NJqbGZyR2XJOU7mgW0cb7nwlAMucFyM4arEd92Nfxp4j44xPi6Fu7g==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vite-plugin-dynamic-import/-/vite-plugin-dynamic-import-1.6.0.tgz", + "integrity": "sha512-TM0sz70wfzTIo9YCxVFwS8OA9lNREsh+0vMHGSkWDTZ7bgd1Yjs5RV8EgB634l/91IsXJReg0xtmuQqP0mf+rg==", "dependencies": { - "acorn": "^8.8.2", - "es-module-lexer": "^1.2.1", - "fast-glob": "^3.2.12", - "magic-string": "^0.30.1" + "acorn": "^8.12.1", + "es-module-lexer": "^1.5.4", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.11" } }, "node_modules/vite-plugin-full-reload": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.1.0.tgz", - "integrity": "sha512-3cObNDzX6DdfhD9E7kf6w2mNunFpD7drxyNgHLw+XwIYAgb+Xt16SEXo0Up4VH+TMf3n+DSVJZtW2POBGcBYAA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.2.0.tgz", + "integrity": "sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA==", "dependencies": { "picocolors": "^1.0.0", "picomatch": "^2.3.1" } }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true + }, + "node_modules/vue": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz", + "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", + "dependencies": { + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-sfc": "3.5.12", + "@vue/runtime-dom": "3.5.12", + "@vue/server-renderer": "3.5.12", + "@vue/shared": "3.5.12" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-collapsed": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/vue-collapsed/-/vue-collapsed-1.3.4.tgz", + "integrity": "sha512-W92b+QT3n5iTrfrH6kyvx3TsriYPfy/Ymsb6DaanjeMkJYMdVl1S4wzKRYVDsxWQPDxiC+5m+UwPwT/8YAYodA==" + }, + "node_modules/vue-i18n": { + "version": "9.14.1", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.1.tgz", + "integrity": "sha512-xjxV0LYc1xQ8TbAVfIyZiOSS8qoU1R0YwV7V5I8I6Fd64+zvsTsdPgtylPsie3Vdt9wekeYhr+smKDeaK6RBuA==", + "dependencies": { + "@intlify/core-base": "9.14.1", + "@intlify/shared": "9.14.1", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.5.tgz", + "integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.1.6.tgz", + "integrity": "sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==", + "dev": true, + "dependencies": { + "@volar/typescript": "~2.4.1", + "@vue/language-core": "2.1.6", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -3142,9 +4129,9 @@ } }, "node_modules/webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "version": "5.95.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", + "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", "peer": true, "dependencies": { "@types/estree": "^1.0.5", @@ -3302,9 +4289,9 @@ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "node_modules/yaml": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.3.tgz", - "integrity": "sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", "bin": { "yaml": "bin.mjs" }, diff --git a/package.json b/package.json index efee3847408..0eaaf1eeef7 100644 --- a/package.json +++ b/package.json @@ -2,44 +2,61 @@ "private": true, "type": "module", "scripts": { - "check": "tsc --noEmit", + "check": "vue-tsc --noEmit -p tsconfig.json --composite false --skipLibCheck", "dev": "vite", "build": "vite build", - "check-formatting": "prettier --check resources/js/ resources/css/", - "format": "prettier --write resources/js/ resources/css/" + "check-formatting": "prettier --check resources/js/ resources/sass/", + "format": "prettier --write resources/js/ resources/sass/" }, "devDependencies": { "@lychee-org/leaflet.photo": "^1.0.0", + "@popperjs/core": "^2.11.6", "@tailwindcss/typography": "^0.5.12", "@types/alpinejs": "^3.13.6", "@types/leaflet": "^1.9.8", "@types/leaflet-rotatedmarker": "^0.2.5", "@types/leaflet.markercluster": "^1.5.4", "@types/mousetrap": "^1.6.15", + "@types/node": "^20.14.9", "@types/photoswipe": "^4.1.6", - "@types/qrcode": "^1.5.5" + "@types/qrcode": "^1.5.5", + "@types/sprintf-js": "^1.1.4", + "@vitejs/plugin-vue": "^4.5.0", + "sass": "^1.77.6", + "vue-tsc": "^2.0.24" }, "dependencies": { "@fortawesome/fontawesome-free": "^6.5.1", + "@primevue/themes": "^4.0.0-rc.2", "@types/justified-layout": "^4.1.4", "autoprefixer": "^10.4.17", + "axios": "^1.7.2", "is-mobile": "^4.0.0", "justified-layout": "^4.1.0", "laravel-vite-plugin": "^1.0.1", - "lazysizes": "^5.3.2", + "laravel-vue-i18n": "^2.7.7", "leaflet": "^1.9.4", "leaflet-gpx": "^1.7.0", "leaflet-rotatedmarker": "^0.2.0", "leaflet.markercluster": "^1.5.3", + "pinia": "^2.1.7", "postcss": "^8.4.33", "prettier": "^3.2.4", + "primeicons": "^7.0.0", + "primevue": "^4.0.0-rc.2", "qrcode": "^1.5.3", + "sprintf-js": "^1.1.3", "tailwindcss": "^3.4.1", + "tailwindcss-primeui": "^0.3.4", "tinygesture": "^3.0.0", "ts-loader": "^9.5.1", "typescript": "^5.3.3", "vite": "^5.4.6", - "vite-plugin-commonjs": "^0.10.1" + "vite-plugin-commonjs": "^0.10.1", + "vue": "^3.2.37", + "vue-collapsed": "^1.3.3", + "vue-i18n": "^9.2.0", + "vue-router": "^4.4.0" }, "browserslist": [ "defaults and fully supports es6-module" diff --git a/phpstan.neon b/phpstan.neon index 7538b50fea1..efc2cc724c0 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -62,12 +62,9 @@ parameters: - app/Eloquent/FixedQueryBuilderTrait.php - '#Parameter \#1 \$models .* of method .*::initRelation\(\) should be contravariant with parameter \$models .* of method .*::initRelation\(\)#' - '#Parameter \#(1|2) \$(models|albums|photos|results) .* of method .*::(match|addEagerConstraints)\(\) should be contravariant with parameter \$(models|albums|photos|results) .* of method .*::(match|addEagerConstraints)\(\)#' - # - '#Parameter .* of method .*::partition\(\) expects \(callable\(.*\): bool\)\|Illuminate\\Database\\Eloquent\\Model\|string, Closure\(.*\): bool given.#' - - '#Parameter .* of method .*::performInsert\(\) should be contravariant with parameter .* of method .*::performInsert\(\)#' - '#Parameter .* of method .*::replicate\(\) should be contravariant with parameter .* of method .*::replicate\(\)#' - '#Parameter .* of method .*::save\(\) should be contravariant with parameter .* of method .*::save\(\)#' - '#Parameter .* of method .*::newEloquentBuilder\(\) should be contravariant with parameter .* of method Kalnoy\\Nestedset\\Node<.*>::newEloquentBuilder\(\)#' - - '#Parameter .* of method .*::performUpdate\(\) should be contravariant with parameter .* of method .*::performUpdate\(\)#' - '#Parameter .* of method .*::isDirty\(\) should be contravariant with parameter .* of method .*::isDirty\(\)#' - '#Call to an undefined( static)? method Kalnoy\\Nestedset\\.*::(whereIn|select|join|leftJoin|orderBy|addSelect|without)\(\)#' @@ -120,14 +117,14 @@ parameters: message: '#no value type specified in iterable type array.#' paths: - tests - - - message: '#Dynamic call to static method Illuminate\\Testing\\TestResponse::assert(Forbidden|ViewIs|Unauthorized|Ok|Status)#' - paths: - - tests - - - message: '#Call to an undefined method Illuminate\\Testing\\TestResponse::(assert)?(SeeLivewire|dispatch|call|Set|Count)#' - paths: - - tests + # - + # message: '#Dynamic call to static method Illuminate\\Testing\\TestResponse::assert(Forbidden|ViewIs|Unauthorized|Ok|Status)#' + # paths: + # - tests + # - + # message: '#Call to an undefined method Illuminate\\Testing\\TestResponse::(assert)?(SeeLivewire|dispatch|call|Set|Count)#' + # paths: + # - tests - message: '#Dynamic call to static method PHPUnit\\Framework\\Assert::assert(Is)?(Not)?(True|False|Equals|Int|Null|Empty|Count)\(\)#' paths: diff --git a/phpunit.xml b/phpunit.xml index 075a4bed1ee..d77ebe6fed7 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -19,9 +19,10 @@ ./tests/Feature_v1/LibUnitTests/SharingUnitTest.php ./tests/Feature_v1/LibUnitTests/UsersUnitTest.php - - ./tests/Livewire - ./tests/Livewire/Base/BaseLivewireTest.php + + ./tests/Feature_v2 + ./tests/Feature_v2/Base/BaseApiV2Test.php + ./tests/Feature_v2/Base/BaseV2Test.php diff --git a/resources/css/app.css b/resources/css/app.css deleted file mode 100644 index 3652a391904..00000000000 --- a/resources/css/app.css +++ /dev/null @@ -1,145 +0,0 @@ -@import "./fonts.css"; -@import "@fortawesome/fontawesome-free/css/all.css"; - -@tailwind base; -/* also contains normalize */ -@tailwind components; -@tailwind utilities; - -@layer base { - :root { - --primary-200: #bae6fd; - --primary-300: #7dd3fc; - --primary-400: #38bdf8; - --primary-500: #0ea5e9; - --primary-600: #0284c7; - --primary-700: #0369a1; - - --text-main-0: #ffffff; - --text-main-100: #e5e5e5; - --text-main-200: #d4d4d4; - --text-main-300: #c0c0c0; - --text-main-400: #a3a3a3; - --text-main-800: #262626; - --text-hover: #ffffff; - - --bg-50: #e0e0e0; - --bg-100: #c0c0c0; - --bg-200: #a0a0a0; - --bg-300: #404040; - --bg-400: #383838; - --bg-500: #313131; - --bg-600: #292929; - --bg-700: #212121; - --bg-800: #1a1a1a; - --bg-900: #121212; - --bg-950: #0e0e0e; - - --danger: #dc2626; - --danger-dark: #b91c1c; - --danger-darker: #991b1b; - - --success: #22c55e; - - --create: #16a34a; - --create-dark: #15803d; - - --ready: #fbbf24; - - --warning: #fb923c; - --warning-dark: #ea580c; - } - - html { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - input:focus, - textarea:focus, - select:focus { - outline: none; - } - - /* Remove all ugly outlines */ - * { - outline: 2px solid transparent; - outline-offset: 2px; - } - - [x-cloak] { - display: none !important; - } - - .filter-shadow { - filter: drop-shadow(0 0 0.5rem black); - } - - .menu-shadow { - box-shadow: 3px 3px 8px -2px rgba(0, 0, 0, 0.7); - } - - .box-shadow { - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); - } - - .text-shadow { - text-shadow: 1px 1px 2px #000; - } - - .text-shadow-sm { - text-shadow: 0 1px 3px #00000066; - } - - .max-wh-full-56 { - max-width: calc(100% - 56px); - max-height: calc(100% - 56px); - } - - input:checked + .slider:before { - transform: translateX(20px); - background-color: #fff; - } - - input:checked + .slider { - background-color: rgb(14 165 233); - } - - input:checked ~ .checkbox svg { - opacity: 1; - -ms-transform: scale(1); - -webkit-transform: scale(1); - transform: scale(1); - } - - .markdown a { - text-underline-offset: 0.2rem; - text-decoration: underline dashed; - } - - /* Trick to change the calendar picker color in chrome */ - ::-webkit-calendar-picker-indicator { - filter: invert(54%) sepia(85%) saturate(2054%) hue-rotate(166deg) brightness(93%) contrast(97%); - } - - .drop-shadow-black { - --tw-drop-shadow: drop-shadow(0 0 1px rgba(0, 0, 0, 0.3)) drop-shadow(0 0 10px rgba(0, 0, 0, 0.3)); - } - - .blurred span { - overflow: hidden; - } - - .blurred img { - /* Safari 6.0 - 9.0 */ - -webkit-filter: blur(5px); - filter: blur(5px); - } - - .aspect-2x3 { - aspect-ratio: 2/3; - } - - .aspect-3x2 { - aspect-ratio: 3/2; - } -} diff --git a/resources/js/app.ts b/resources/js/app.ts index a861ddcf394..8f94f819f6c 100644 --- a/resources/js/app.ts +++ b/resources/js/app.ts @@ -1,20 +1,89 @@ -import "lazysizes"; +/** + * First we will load all of this project's JavaScript dependencies which + * includes Vue and other libraries. It is a great starting point when + * building robust, powerful web applications using Vue and Laravel. + */ +import axios from "axios"; +import { createApp } from "vue"; +import { createPinia } from "pinia"; +import PrimeVue from "primevue/config"; +import Ripple from "primevue/ripple"; +import { createRouter, createWebHistory } from "vue-router"; +import { routes } from "@/router/routes"; +import Aura from "@primevue/themes/aura"; +import { i18nVue } from "laravel-vue-i18n"; +import ToastService from "primevue/toastservice"; +import AxiosConfig from "@/config/axios-config"; +import AppComponent from "@/views/App.vue"; +import { definePreset } from "@primevue/themes"; +import LycheePrimeVueConfig from "./style/preset"; +import FocusTrap from "primevue/focustrap"; -import { webauthn } from "./data/webauthn"; -import { views } from "./data/views"; -import { panels } from "./data/panel"; -import { qrBuilder } from "./data/qrcode/qrBuilder"; +// @ts-expect-error +window.axios = axios; +// @ts-expect-error +window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"; -// suggested in the Alpine docs: -// make Alpine on window available for better DX -window.Alpine = Alpine; +const router = createRouter({ + history: createWebHistory(), + routes, +}); + +const LycheePreset = definePreset(Aura, LycheePrimeVueConfig); + +const pinia = createPinia(); + +/** + * Next, we will create a fresh Vue application instance. You may then begin + * registering components with the application instance so they are ready + * to use in your application's views. An example is included for you. + */ +const app = createApp({}); +app.config.globalProperties.window = window; +app.use(pinia); +app.use(PrimeVue, { + ripple: true, + theme: { + preset: LycheePreset, + options: { + cssLayer: { + name: "primevue", + order: "tailwind-base, primevue, tailwind-utilities", + }, + darkModeSelector: ".lychee-dark", + }, + }, +}); +app.directive("ripple", Ripple); +app.directive("focustrap", FocusTrap); + +app.component("app", AppComponent); +app.use(router); +app.use(ToastService); -document.addEventListener("alpine:init", () => { - [...webauthn, ...views, ...panels].forEach(Alpine.plugin); - Alpine.plugin(qrBuilder); +/** + * The following block of code may be used to automatically register your + * Vue components. It will recursively scan this directory for the Vue + * components and automatically register them with their "basename". + * + * Eg. ./components/ExampleComponent.vue -> + */ - Alpine.store("photo", undefined); - Alpine.store("photos", []); - Alpine.store("photoIDs", []); - Alpine.store("albumIDs", []); +// Object.entries(import.meta.glob('./**/*.vue', { eager: true })).forEach(([path, definition]) => { +// app.component(path.split('/').pop().replace(/\.\w+$/, ''), definition.default); +// }); +app.use(i18nVue, { + resolve: async (lang: string) => { + // @ts-expect-error + const langs = import.meta.glob("../../lang/*.json"); + return await langs[`../../lang/${lang}.json`](); + }, }); + +/** + * Finally, we will attach the application instance to a HTML element with + * an "id" attribute of "app". + */ +app.mount("#app"); + +AxiosConfig.axiosSetUp(); diff --git a/resources/js/components/drawers/AlbumEdit.vue b/resources/js/components/drawers/AlbumEdit.vue new file mode 100644 index 00000000000..a340dabe5f1 --- /dev/null +++ b/resources/js/components/drawers/AlbumEdit.vue @@ -0,0 +1,85 @@ + + diff --git a/resources/js/components/drawers/PhotoDetails.vue b/resources/js/components/drawers/PhotoDetails.vue new file mode 100644 index 00000000000..bb92b6adbaa --- /dev/null +++ b/resources/js/components/drawers/PhotoDetails.vue @@ -0,0 +1,134 @@ + + diff --git a/resources/js/components/footers/GalleryFooter.vue b/resources/js/components/footers/GalleryFooter.vue new file mode 100644 index 00000000000..09dbdce2c07 --- /dev/null +++ b/resources/js/components/footers/GalleryFooter.vue @@ -0,0 +1,41 @@ + + diff --git a/resources/js/components/footers/LandingFooter.vue b/resources/js/components/footers/LandingFooter.vue new file mode 100644 index 00000000000..d7e55baace6 --- /dev/null +++ b/resources/js/components/footers/LandingFooter.vue @@ -0,0 +1,85 @@ + + diff --git a/resources/js/components/forms/album/AlbumProperties.vue b/resources/js/components/forms/album/AlbumProperties.vue new file mode 100644 index 00000000000..6705980caef --- /dev/null +++ b/resources/js/components/forms/album/AlbumProperties.vue @@ -0,0 +1,271 @@ +