diff --git a/app/Actions/Album/ListAlbums.php b/app/Actions/Album/ListAlbums.php index 30d0d2eb2f4..e7b9ec5a2f7 100644 --- a/app/Actions/Album/ListAlbums.php +++ b/app/Actions/Album/ListAlbums.php @@ -57,9 +57,9 @@ function ($q) use ($albumsFiltering) { $flat_tree, [ 'id' => null, - 'title' => __('lychee.ROOT'), - 'original' => __('lychee.ROOT'), - 'short_title' => __('lychee.ROOT'), + 'title' => __('gallery.root'), + 'original' => __('gallery.root'), + 'short_title' => __('gallery.root'), 'thumb' => URL::asset('img/no_images.svg'), ] ); diff --git a/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php b/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php index 2bd2c8dcbd2..b5282ce7d48 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php @@ -33,7 +33,7 @@ public function handle(array &$data, \Closure $next): array ->get(); foreach ($photos as $photo) { - $data[] = 'Error: Photo without Original found -- ' . $photo->title . ' in ' . ($photo->album?->title ?? __('lychee.UNSORTED')); + $data[] = 'Error: Photo without Original found -- ' . $photo->title . ' in ' . ($photo->album?->title ?? __('gallery.smart_album.unsorted')); } return $next($data); diff --git a/app/Enum/LicenseType.php b/app/Enum/LicenseType.php index 94ede45654f..52a028741d8 100644 --- a/app/Enum/LicenseType.php +++ b/app/Enum/LicenseType.php @@ -54,7 +54,7 @@ public static function localized(): array { return [ self::NONE->value => 'None', - self::RESERVED->value => __('lychee.ALBUM_RESERVED'), + self::RESERVED->value => __('gallery.album_reserved'), self::CC0->value => 'CC0 - Public Domain', self::CC_BY_1_0->value => 'CC Attribution 1.0', self::CC_BY_2_0->value => 'CC Attribution 2.0', diff --git a/app/Enum/MapProviders.php b/app/Enum/MapProviders.php index 943e4107343..b8c9f5e3813 100644 --- a/app/Enum/MapProviders.php +++ b/app/Enum/MapProviders.php @@ -29,10 +29,10 @@ public function getAtributionHtml(): string { return match ($this) { self::Wikimedia => 'Wikimedia', - self::OpenStreetMapOrg => '© ' . __('lychee.OSM_CONTRIBUTORS') . '', - self::OpenStreetMapDe => '© ' . __('lychee.OSM_CONTRIBUTORS') . '', - self::OpenStreetMapFr => '© ' . __('lychee.OSM_CONTRIBUTORS') . '', - self::RRZE => '© ' . __('lychee.OSM_CONTRIBUTORS') . '', + self::OpenStreetMapOrg => '© ' . __('gallery.map.osm_contributors') . '', + self::OpenStreetMapDe => '© ' . __('gallery.map.osm_contributors') . '', + self::OpenStreetMapFr => '© ' . __('gallery.map.osm_contributors') . '', + self::RRZE => '© ' . __('gallery.map.osm_contributors') . '', }; } } diff --git a/app/Enum/SizeVariantType.php b/app/Enum/SizeVariantType.php index 9c8d457cada..fc7079c00bf 100644 --- a/app/Enum/SizeVariantType.php +++ b/app/Enum/SizeVariantType.php @@ -45,14 +45,14 @@ public function name(): string public function localization(): string { return match ($this) { - self::PLACEHOLDER => __('lychee.PHOTO_PLACEHOLDER'), - self::THUMB => __('lychee.PHOTO_THUMB'), - self::THUMB2X => __('lychee.PHOTO_THUMB_HIDPI'), - self::SMALL => __('lychee.PHOTO_SMALL'), - self::SMALL2X => __('lychee.PHOTO_SMALL_HIDPI'), - self::MEDIUM => __('lychee.PHOTO_MEDIUM'), - self::MEDIUM2X => __('lychee.PHOTO_MEDIUM_HIDPI'), - self::ORIGINAL => __('lychee.PHOTO_ORIGINAL'), + self::PLACEHOLDER => __('gallery.placeholder'), + self::THUMB => __('gallery.thumb'), + self::THUMB2X => __('gallery.thumb_hidpi'), + self::SMALL => __('gallery.small'), + self::SMALL2X => __('gallery.small_hidpi'), + self::MEDIUM => __('gallery.medium'), + self::MEDIUM2X => __('gallery.medium_hidpi'), + self::ORIGINAL => __('gallery.original'), }; } } \ No newline at end of file diff --git a/app/Http/Resources/GalleryConfigs/FooterConfig.php b/app/Http/Resources/GalleryConfigs/FooterConfig.php index d17fdd1fec3..137e564aaa3 100644 --- a/app/Http/Resources/GalleryConfigs/FooterConfig.php +++ b/app/Http/Resources/GalleryConfigs/FooterConfig.php @@ -38,6 +38,6 @@ public function __construct() $copy_right_year = $copy_right_year . '-' . $site_copyright_end; } - $this->copyright = $copy_right_year !== '' ? sprintf(__('lychee.FOOTER_COPYRIGHT'), $site_owner, $copy_right_year) : ''; + $this->copyright = $copy_right_year !== '' ? sprintf(__('landing.copyright'), $site_owner, $copy_right_year) : ''; } } diff --git a/app/Http/Resources/Models/Utils/PreformattedPhotoData.php b/app/Http/Resources/Models/Utils/PreformattedPhotoData.php index 3899b3a1143..f5fd4ca8d27 100644 --- a/app/Http/Resources/Models/Utils/PreformattedPhotoData.php +++ b/app/Http/Resources/Models/Utils/PreformattedPhotoData.php @@ -43,7 +43,7 @@ public function __construct(Photo $photo, ?SizeVariantResource $original = null) $this->shutter = str_replace('s', 'sec', $photo->shutter ?? ''); $this->aperture = str_replace('f/', '', $photo->aperture ?? ''); - $this->iso = sprintf(__('lychee.PHOTO_ISO'), $photo->iso); + $this->iso = sprintf(__('gallery.photo.details.iso'), $photo->iso); $this->lens = ($photo->lens === '' || $photo->lens === null) ? '' : sprintf('(%s)', $photo->lens); $this->duration = Helpers::secondsToHMS(intval($photo->aperture)); diff --git a/app/Jobs/ProcessImageJob.php b/app/Jobs/ProcessImageJob.php index cf14d0e7d15..126d2bda32b 100644 --- a/app/Jobs/ProcessImageJob.php +++ b/app/Jobs/ProcessImageJob.php @@ -52,7 +52,7 @@ public function __construct( $this->originalBaseName = $file->getOriginalBasename(); $this->albumID = null; - $album_name = __('lychee.UNSORTED'); + $album_name = __('gallery.smart_album.unsorted'); if ($album instanceof AbstractAlbum) { $this->albumID = $album->id; diff --git a/app/Legacy/V1/Resources/Models/PhotoResource.php b/app/Legacy/V1/Resources/Models/PhotoResource.php index 1454fe32e1e..5b4109e2732 100644 --- a/app/Legacy/V1/Resources/Models/PhotoResource.php +++ b/app/Legacy/V1/Resources/Models/PhotoResource.php @@ -127,7 +127,7 @@ private function preformatted(?SizeVariant $original): array 'shutter' => str_replace('s', 'sec', $this->resource->shutter ?? ''), 'aperture' => str_replace('f/', '', $this->resource->aperture ?? ''), - 'iso' => sprintf(__('lychee.PHOTO_ISO'), $this->resource->iso), + 'iso' => sprintf(__('gallery.photo.details.iso'), $this->resource->iso), 'lens' => ($this->resource->lens === '' || $this->resource->lens === null) ? '' : sprintf('(%s)', $this->resource->lens), 'duration' => Helpers::secondsToHMS(intval($this->resource->aperture)), diff --git a/app/SmartAlbums/BaseSmartAlbum.php b/app/SmartAlbums/BaseSmartAlbum.php index 0fb9d9068d6..f3cd79d0fe1 100644 --- a/app/SmartAlbums/BaseSmartAlbum.php +++ b/app/SmartAlbums/BaseSmartAlbum.php @@ -57,7 +57,7 @@ protected function __construct(SmartAlbumType $id, \Closure $smartCondition) try { $this->photoQueryPolicy = resolve(PhotoQueryPolicy::class); $this->id = $id->value; - $this->title = __('lychee.' . $id->name) ?? $id->name; + $this->title = __('gallery.smart_album.' . strtolower($id->name)) ?? $id->name; $this->smartPhotoCondition = $smartCondition; /** @var AccessPermission|null $perm */ $perm = AccessPermission::query()->where('base_album_id', '=', $id->value)->first(); diff --git a/lang/cz/diagnostics.php b/lang/cz/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/cz/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/cz/dialogs.php b/lang/cz/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/cz/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/cz/fix-tree.php b/lang/cz/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/cz/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/cz/gallery.php b/lang/cz/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/cz/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/cz/jobs.php b/lang/cz/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/cz/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/cz/landing.php b/lang/cz/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/cz/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/cz/left-menu.php b/lang/cz/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/cz/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/cz/oauth.php b/lang/cz/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/cz/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/cz/profile.php b/lang/cz/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/cz/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/cz/settings.php b/lang/cz/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/cz/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/cz/sharing.php b/lang/cz/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/cz/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/cz/statistics.php b/lang/cz/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/cz/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/cz/toasts.php b/lang/cz/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/cz/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/cz/users.php b/lang/cz/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/cz/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/cz/validation.php b/lang/cz/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/cz/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/de/diagnostics.php b/lang/de/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/de/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/de/dialogs.php b/lang/de/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/de/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/de/fix-tree.php b/lang/de/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/de/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/de/gallery.php b/lang/de/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/de/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/de/jobs.php b/lang/de/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/de/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/de/landing.php b/lang/de/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/de/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/de/left-menu.php b/lang/de/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/de/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/de/oauth.php b/lang/de/oauth.php deleted file mode 100644 index 418355fa27b..00000000000 --- a/lang/de/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/de/profile.php b/lang/de/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/de/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/de/settings.php b/lang/de/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/de/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/de/sharing.php b/lang/de/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/de/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/de/statistics.php b/lang/de/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/de/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/de/toasts.php b/lang/de/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/de/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/de/users.php b/lang/de/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/de/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/de/validation.php b/lang/de/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/de/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/el/diagnostics.php b/lang/el/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/el/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/el/dialogs.php b/lang/el/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/el/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/el/fix-tree.php b/lang/el/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/el/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/el/gallery.php b/lang/el/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/el/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/el/jobs.php b/lang/el/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/el/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/el/landing.php b/lang/el/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/el/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/el/left-menu.php b/lang/el/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/el/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/el/oauth.php b/lang/el/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/el/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/el/profile.php b/lang/el/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/el/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/el/settings.php b/lang/el/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/el/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/el/sharing.php b/lang/el/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/el/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/el/statistics.php b/lang/el/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/el/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/el/toasts.php b/lang/el/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/el/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/el/users.php b/lang/el/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/el/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/el/validation.php b/lang/el/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/el/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/en/diagnostics.php b/lang/en/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/en/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/en/dialogs.php b/lang/en/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/en/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/en/fix-tree.php b/lang/en/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/en/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/en/gallery.php b/lang/en/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/en/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/en/jobs.php b/lang/en/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/en/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/en/landing.php b/lang/en/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/en/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/en/left-menu.php b/lang/en/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/en/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/en/lychee.php b/lang/en/lychee.php index bae26d41f9c..0d4967a5f20 100644 --- a/lang/en/lychee.php +++ b/lang/en/lychee.php @@ -3,6 +3,13 @@ /** @noinspection SpellCheckingInspection */ return [ + /* + |-------------------------------------------------------------------------- + | Those a LEGACY values used in the v3/v4/v5 + | + | Do not use these values anymore. They will be removed in the future. + |-------------------------------------------------------------------------- + */ 'USERNAME' => 'Username', 'PASSWORD' => 'Password', 'ENTER' => 'Enter', diff --git a/lang/en/maintenance.php b/lang/en/maintenance.php index 391174f539d..818d977724c 100644 --- a/lang/en/maintenance.php +++ b/lang/en/maintenance.php @@ -3,7 +3,7 @@ return [ /* |-------------------------------------------------------------------------- - | Update Page + | Maintenance Page |-------------------------------------------------------------------------- */ 'title' => 'Maintenance', diff --git a/lang/en/oauth.php b/lang/en/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/en/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/en/pagination.php.bck b/lang/en/pagination.php.bck deleted file mode 100644 index 6f953a63317..00000000000 --- a/lang/en/pagination.php.bck +++ /dev/null @@ -1,17 +0,0 @@ - '« Previous', - 'next' => 'Next »', -]; diff --git a/lang/en/passwords.php.bck b/lang/en/passwords.php.bck deleted file mode 100644 index 42c70109be9..00000000000 --- a/lang/en/passwords.php.bck +++ /dev/null @@ -1,20 +0,0 @@ - '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.", -]; diff --git a/lang/en/profile.php b/lang/en/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/en/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/en/settings.php b/lang/en/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/en/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/en/sharing.php b/lang/en/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/en/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/en/statistics.php b/lang/en/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/en/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/en/toasts.php b/lang/en/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/en/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/en/users.php b/lang/en/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/en/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/en/validation.php b/lang/en/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/en/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/es/diagnostics.php b/lang/es/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/es/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/es/dialogs.php b/lang/es/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/es/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/es/fix-tree.php b/lang/es/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/es/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/es/gallery.php b/lang/es/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/es/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/es/jobs.php b/lang/es/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/es/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/es/landing.php b/lang/es/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/es/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/es/left-menu.php b/lang/es/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/es/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/es/oauth.php b/lang/es/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/es/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/es/profile.php b/lang/es/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/es/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/es/settings.php b/lang/es/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/es/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/es/sharing.php b/lang/es/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/es/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/es/statistics.php b/lang/es/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/es/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/es/toasts.php b/lang/es/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/es/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/es/users.php b/lang/es/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/es/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/es/validation.php b/lang/es/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/es/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/fr/diagnostics.php b/lang/fr/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/fr/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/fr/dialogs.php b/lang/fr/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/fr/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/fr/fix-tree.php b/lang/fr/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/fr/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/fr/gallery.php b/lang/fr/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/fr/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/fr/jobs.php b/lang/fr/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/fr/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/fr/landing.php b/lang/fr/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/fr/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/fr/left-menu.php b/lang/fr/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/fr/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/fr/oauth.php b/lang/fr/oauth.php deleted file mode 100644 index 8d4454dc1ec..00000000000 --- a/lang/fr/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/fr/profile.php b/lang/fr/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/fr/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/fr/settings.php b/lang/fr/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/fr/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/fr/sharing.php b/lang/fr/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/fr/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/fr/statistics.php b/lang/fr/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/fr/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/fr/toasts.php b/lang/fr/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/fr/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/fr/users.php b/lang/fr/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/fr/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/fr/validation.php b/lang/fr/validation.php deleted file mode 100644 index 9c3a675c228..00000000000 --- a/lang/fr/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/hu/diagnostics.php b/lang/hu/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/hu/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/hu/dialogs.php b/lang/hu/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/hu/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/hu/fix-tree.php b/lang/hu/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/hu/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/hu/gallery.php b/lang/hu/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/hu/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/hu/jobs.php b/lang/hu/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/hu/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/hu/landing.php b/lang/hu/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/hu/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/hu/left-menu.php b/lang/hu/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/hu/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/hu/oauth.php b/lang/hu/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/hu/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/hu/profile.php b/lang/hu/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/hu/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/hu/settings.php b/lang/hu/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/hu/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/hu/sharing.php b/lang/hu/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/hu/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/hu/statistics.php b/lang/hu/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/hu/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/hu/toasts.php b/lang/hu/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/hu/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/hu/users.php b/lang/hu/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/hu/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/hu/validation.php b/lang/hu/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/hu/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/it/diagnostics.php b/lang/it/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/it/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/it/dialogs.php b/lang/it/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/it/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/it/fix-tree.php b/lang/it/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/it/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/it/gallery.php b/lang/it/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/it/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/it/jobs.php b/lang/it/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/it/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/it/landing.php b/lang/it/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/it/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/it/left-menu.php b/lang/it/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/it/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/it/oauth.php b/lang/it/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/it/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/it/profile.php b/lang/it/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/it/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/it/settings.php b/lang/it/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/it/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/it/sharing.php b/lang/it/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/it/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/it/statistics.php b/lang/it/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/it/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/it/toasts.php b/lang/it/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/it/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/it/users.php b/lang/it/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/it/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/it/validation.php b/lang/it/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/it/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/ja/diagnostics.php b/lang/ja/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/ja/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/ja/dialogs.php b/lang/ja/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/ja/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/ja/fix-tree.php b/lang/ja/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/ja/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/ja/gallery.php b/lang/ja/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/ja/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/ja/jobs.php b/lang/ja/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/ja/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/ja/landing.php b/lang/ja/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/ja/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/ja/left-menu.php b/lang/ja/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/ja/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/ja/oauth.php b/lang/ja/oauth.php deleted file mode 100644 index 1a7e7ed0685..00000000000 --- a/lang/ja/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - 'Oauth は利用可能ではありません。', - 'SET_UP_CREDENTIALS' => '.env で資格情報を設定してください', - 'SET_UP_OAUTH' => 'Oauth 認証を設定する', - 'SET_UP' => '%s を設定する', - 'TOKEN_REGISTERED' => '%s トークンが登録されました。', - 'RESET' => 'リセット', -]; \ No newline at end of file diff --git a/lang/ja/profile.php b/lang/ja/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/ja/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/ja/settings.php b/lang/ja/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/ja/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/ja/sharing.php b/lang/ja/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/ja/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/ja/statistics.php b/lang/ja/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/ja/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/ja/toasts.php b/lang/ja/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/ja/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/ja/users.php b/lang/ja/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/ja/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/ja/validation.php b/lang/ja/validation.php deleted file mode 100644 index ca867db73fb..00000000000 --- a/lang/ja/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - ':attribute は承認される必要があります。', - 'active_url' => ':attribute は適切な URL ではありません。', - 'after' => ':attribute は :date より後の日付である必要があります。', - 'after_or_equal' => ':attribute は :date またはその後の日付である必要があります。', - 'alpha' => ':attribute には文字のみを含めることができます。', - 'alpha_dash' => ':attribute には、文字、数字、ダッシュのみを含めることができます。', - 'alpha_num' => ':attribute には文字と数字のみを含めることができます。', - 'array' => ':attribute は配列である必要があります。', - 'before' => ':attribute は :date より前の日付である必要があります。', - 'before_or_equal' => ':attribute は :date またはその前の日付である必要があります。', - 'between' => [ - 'numeric' => ':attribute は :min と :max の間になければなりません。', - 'file' => ':attribute は :min kB から :max kB までの範囲でなければなりません。', - 'string' => ':attribute は :min 文字から :max 文字までの範囲でなければなりません。', - 'array' => ':attribute には :min から :max までの項目が必要です。', - ], - 'boolean' => ':attribute フィールドは true または false である必要があります。', - 'confirmed' => ':attribute の確認が一致しません。', - 'date' => ':attribute は有効な日付ではありません。', - 'date_format' => ':attribute が形式 :format と一致しません。', - 'different' => ':attribute と :other は異なる必要があります。', - 'digits' => ':attribute は :digits 桁でなければなりません。', - 'digits_between' => ':attribute は :min 桁から :max 桁までの範囲でなければなりません。', - 'dimensions' => ':attribute の画像サイズが無効です。', - 'distinct' => ':attribute フィールドに重複した値があります。', - 'email' => ':attribute は有効なメールアドレスである必要があります。', - 'exists' => '選択された:attributeは無効です。', - 'file' => ':attribute はファイルである必要があります。', - 'filled' => ':attribute フィールドには値が必要です。', - 'gt' => [ - 'numeric' => ':attribute は :value より大きくなければなりません。', - 'file' => ':attribute は :value kB より大きくなければなりません。', - 'string' => ':attribute は :value 文字より大きくなければなりません。', - 'array' => ':attribute には :value より多い項目が必要です。', - ], - 'gte' => [ - 'numeric' => ':attribute は :value 以上である必要があります。', - 'file' => ':attribute は :value kB 以上である必要があります。', - 'string' => ':attribute は :value 文字以上である必要があります。', - 'array' => ':attribute には :value 項目以上が必要です。', - ], - 'image' => ':attribute は画像である必要があります。', - 'in' => '選択された:attributeは無効です。', - 'in_array' => ':attribute フィールドは :other に存在しません。', - 'integer' => ':attribute は整数である必要があります。', - 'ip' => ':attribute は有効な IP アドレスである必要があります。', - 'ipv4' => ':attribute は有効な IPv4 アドレスである必要があります。', - 'ipv6' => ':attribute は有効な IPv6 アドレスである必要があります。', - 'json' => ':attribute は有効な JSON 文字列である必要があります。', - 'lt' => [ - 'numeric' => ':attribute は :value より小さくなければなりません。', - 'file' => ':attribute は :value kB 未満である必要があります。', - 'string' => ':attribute は :value 文字未満である必要があります。', - 'array' => ':attribute には :value 項目未満が必要です。', - ], - 'lte' => [ - 'numeric' => ':attribute は :value 以下でなければなりません。', - 'file' => ':attribute は :value kB 以下である必要があります。', - 'string' => ':attribute は :value 文字以下でなければなりません。', - 'array' => ':attribute には :value 個を超える項目を含めることはできません。', - ], - 'max' => [ - 'numeric' => ':attribute は :max より大きくすることはできません。', - 'file' => ':attribute は :max kB を超えることはできません。', - 'string' => ':attribute は :max 文字数を超えることはできません。', - 'array' => ':attribute には :max 個を超える項目を含めることはできません。', - ], - 'mimes' => ':attribute は、 :values タイプのファイルである必要があります。', - 'mimetypes' => ':attribute は、 :values タイプファイルである必要があります。', - 'min' => [ - 'numeric' => ':attribute は少なくとも :min である必要があります。', - 'file' => ':attribute は少なくとも :min kB である必要があります。', - 'string' => ':attribute は少なくとも :min 文字である必要があります。', - 'array' => ':attribute には少なくとも :min 個の項目が必要です。', - ], - 'not_in' => '選択された:attributeは無効です。', - 'not_regex' => ':attribute 形式が無効です。', - 'numeric' => ':attribute は数値である必要があります。', - 'present' => ':attribute フィールドが存在する必要があります。', - 'regex' => ':attribute 形式が無効です。', - 'required' => ':attribute フィールドは必須です。', - 'required_if' => ':other が :value の場合、:attribute フィールドは必須です。', - 'required_unless' => ':other が :values に含まれていない限り、:attribute フィールドは必須です。', - 'required_with' => ':values が存在する場合、:attribute フィールドは必須です。', - 'required_with_all' => ':values が存在する場合、:attribute フィールドは必須です。', - 'required_without' => ':values が存在しない場合は、:attribute フィールドが必須です。', - 'required_without_all' => ':values がいずれも存在しない場合は、:attribute フィールドが必須です。', - 'same' => ':attribute と :other は一致する必要があります。', - 'size' => [ - 'numeric' => ':attribute は :size である必要があります。', - 'file' => ':attribute は :size kB である必要があります。', - 'string' => ':attribute は :size 文字である必要があります。', - 'array' => ':attribute には :size 項目が含まれている必要があります。', - ], - 'string' => ':attribute は文字列である必要があります。', - 'timezone' => ':attribute は有効なゾーンである必要があります。', - 'unique' => ':attribute はすでに使用されています。', - 'uploaded' => ':attribute のアップロードに失敗しました。', - 'url' => ':attribute 形式が無効です。', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/nl/diagnostics.php b/lang/nl/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/nl/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/nl/dialogs.php b/lang/nl/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/nl/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/nl/fix-tree.php b/lang/nl/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/nl/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/nl/gallery.php b/lang/nl/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/nl/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/nl/jobs.php b/lang/nl/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/nl/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/nl/landing.php b/lang/nl/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/nl/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/nl/left-menu.php b/lang/nl/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/nl/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/nl/oauth.php b/lang/nl/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/nl/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/nl/profile.php b/lang/nl/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/nl/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/nl/settings.php b/lang/nl/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/nl/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/nl/sharing.php b/lang/nl/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/nl/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/nl/statistics.php b/lang/nl/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/nl/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/nl/toasts.php b/lang/nl/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/nl/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/nl/users.php b/lang/nl/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/nl/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/nl/validation.php b/lang/nl/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/nl/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/no/diagnostics.php b/lang/no/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/no/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/no/dialogs.php b/lang/no/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/no/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/no/fix-tree.php b/lang/no/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/no/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/no/gallery.php b/lang/no/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/no/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/no/jobs.php b/lang/no/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/no/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/no/landing.php b/lang/no/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/no/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/no/left-menu.php b/lang/no/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/no/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/no/oauth.php b/lang/no/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/no/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/no/profile.php b/lang/no/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/no/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/no/settings.php b/lang/no/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/no/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/no/sharing.php b/lang/no/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/no/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/no/statistics.php b/lang/no/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/no/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/no/toasts.php b/lang/no/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/no/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/no/users.php b/lang/no/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/no/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/no/validation.php b/lang/no/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/no/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/pl/diagnostics.php b/lang/pl/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/pl/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/pl/dialogs.php b/lang/pl/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/pl/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/pl/fix-tree.php b/lang/pl/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/pl/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/pl/gallery.php b/lang/pl/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/pl/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/pl/jobs.php b/lang/pl/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/pl/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/pl/landing.php b/lang/pl/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/pl/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/pl/left-menu.php b/lang/pl/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/pl/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/pl/oauth.php b/lang/pl/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/pl/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/pl/profile.php b/lang/pl/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/pl/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/pl/settings.php b/lang/pl/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/pl/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/pl/sharing.php b/lang/pl/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/pl/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/pl/statistics.php b/lang/pl/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/pl/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/pl/toasts.php b/lang/pl/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/pl/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/pl/users.php b/lang/pl/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/pl/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/pl/validation.php b/lang/pl/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/pl/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/pt/diagnostics.php b/lang/pt/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/pt/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/pt/dialogs.php b/lang/pt/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/pt/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/pt/fix-tree.php b/lang/pt/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/pt/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/pt/gallery.php b/lang/pt/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/pt/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/pt/jobs.php b/lang/pt/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/pt/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/pt/landing.php b/lang/pt/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/pt/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/pt/left-menu.php b/lang/pt/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/pt/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/pt/oauth.php b/lang/pt/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/pt/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/pt/profile.php b/lang/pt/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/pt/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/pt/settings.php b/lang/pt/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/pt/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/pt/sharing.php b/lang/pt/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/pt/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/pt/statistics.php b/lang/pt/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/pt/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/pt/toasts.php b/lang/pt/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/pt/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/pt/users.php b/lang/pt/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/pt/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/pt/validation.php b/lang/pt/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/pt/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/ru/diagnostics.php b/lang/ru/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/ru/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/ru/dialogs.php b/lang/ru/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/ru/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/ru/fix-tree.php b/lang/ru/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/ru/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/ru/gallery.php b/lang/ru/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/ru/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/ru/jobs.php b/lang/ru/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/ru/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/ru/landing.php b/lang/ru/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/ru/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/ru/left-menu.php b/lang/ru/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/ru/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/ru/oauth.php b/lang/ru/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/ru/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/ru/profile.php b/lang/ru/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/ru/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/ru/settings.php b/lang/ru/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/ru/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/ru/sharing.php b/lang/ru/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/ru/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/ru/statistics.php b/lang/ru/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/ru/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/ru/toasts.php b/lang/ru/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/ru/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/ru/users.php b/lang/ru/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/ru/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/ru/validation.php b/lang/ru/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/ru/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/sk/diagnostics.php b/lang/sk/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/sk/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/sk/dialogs.php b/lang/sk/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/sk/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/sk/fix-tree.php b/lang/sk/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/sk/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/sk/gallery.php b/lang/sk/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/sk/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/sk/jobs.php b/lang/sk/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/sk/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/sk/landing.php b/lang/sk/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/sk/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/sk/left-menu.php b/lang/sk/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/sk/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/sk/oauth.php b/lang/sk/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/sk/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/sk/profile.php b/lang/sk/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/sk/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/sk/settings.php b/lang/sk/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/sk/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/sk/sharing.php b/lang/sk/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/sk/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/sk/statistics.php b/lang/sk/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/sk/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/sk/toasts.php b/lang/sk/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/sk/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/sk/users.php b/lang/sk/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/sk/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/sk/validation.php b/lang/sk/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/sk/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/sv/diagnostics.php b/lang/sv/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/sv/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/sv/dialogs.php b/lang/sv/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/sv/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/sv/fix-tree.php b/lang/sv/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/sv/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/sv/gallery.php b/lang/sv/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/sv/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/sv/jobs.php b/lang/sv/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/sv/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/sv/landing.php b/lang/sv/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/sv/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/sv/left-menu.php b/lang/sv/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/sv/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/sv/oauth.php b/lang/sv/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/sv/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/sv/profile.php b/lang/sv/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/sv/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/sv/settings.php b/lang/sv/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/sv/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/sv/sharing.php b/lang/sv/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/sv/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/sv/statistics.php b/lang/sv/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/sv/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/sv/toasts.php b/lang/sv/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/sv/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/sv/users.php b/lang/sv/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/sv/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/sv/validation.php b/lang/sv/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/sv/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/vi/diagnostics.php b/lang/vi/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/vi/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/vi/dialogs.php b/lang/vi/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/vi/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/vi/fix-tree.php b/lang/vi/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/vi/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/vi/gallery.php b/lang/vi/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/vi/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/vi/jobs.php b/lang/vi/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/vi/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/vi/landing.php b/lang/vi/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/vi/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/vi/left-menu.php b/lang/vi/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/vi/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/vi/oauth.php b/lang/vi/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/vi/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/vi/profile.php b/lang/vi/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/vi/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/vi/settings.php b/lang/vi/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/vi/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/vi/sharing.php b/lang/vi/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/vi/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/vi/statistics.php b/lang/vi/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/vi/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/vi/toasts.php b/lang/vi/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/vi/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/vi/users.php b/lang/vi/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/vi/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/vi/validation.php b/lang/vi/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/vi/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/zh_CN/diagnostics.php b/lang/zh_CN/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/zh_CN/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/zh_CN/dialogs.php b/lang/zh_CN/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/zh_CN/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/zh_CN/fix-tree.php b/lang/zh_CN/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/zh_CN/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/zh_CN/gallery.php b/lang/zh_CN/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/zh_CN/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/zh_CN/jobs.php b/lang/zh_CN/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/zh_CN/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/zh_CN/landing.php b/lang/zh_CN/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/zh_CN/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/zh_CN/left-menu.php b/lang/zh_CN/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/zh_CN/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/zh_CN/oauth.php b/lang/zh_CN/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/zh_CN/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/zh_CN/profile.php b/lang/zh_CN/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/zh_CN/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/zh_CN/settings.php b/lang/zh_CN/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/zh_CN/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/zh_CN/sharing.php b/lang/zh_CN/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/zh_CN/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/zh_CN/statistics.php b/lang/zh_CN/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/zh_CN/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/zh_CN/toasts.php b/lang/zh_CN/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/zh_CN/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/zh_CN/users.php b/lang/zh_CN/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/zh_CN/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/zh_CN/validation.php b/lang/zh_CN/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/zh_CN/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/lang/zh_TW/diagnostics.php b/lang/zh_TW/diagnostics.php new file mode 100644 index 00000000000..dd09ee8e36e --- /dev/null +++ b/lang/zh_TW/diagnostics.php @@ -0,0 +1,24 @@ + 'Diagnostics', + + 'copy_to_clipboard' => 'Copy diagnostics to clipboard', + 'self-diagnosis' => 'Self-diagnosis', + 'info' => 'Info', + 'space' => 'Space', + 'load_space' => 'Load space usage.', + 'configuration' => 'Configuration', + 'loading' => 'Loading...', + 'identical_content' => 'Identical content', + + 'toast' => [ + 'info' => 'Info', + 'copy' => 'Diagnostics copied to clipboard!', + ], +]; \ No newline at end of file diff --git a/lang/zh_TW/dialogs.php b/lang/zh_TW/dialogs.php new file mode 100644 index 00000000000..e6f9e133d57 --- /dev/null +++ b/lang/zh_TW/dialogs.php @@ -0,0 +1,209 @@ + [ + 'close' => 'Close', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'delete' => 'Delete', + 'move' => 'Move', + ], + 'about' => [ + 'subtitle' => 'Self-hosted photo-management done right', + 'description' => 'Lychee 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.', + 'update_available' => 'Update available!', + 'thank_you' => 'Thank you for your support!', + 'get_supporter_or_register' => 'Get exclusive features and support the development of Lychee.
Unlock the Supporter Edition or register your License key', + 'here' => 'here', + ], + 'dropbox' => [ + 'not_configured' => 'Dropbox is not configured.', + ], + 'import_from_link' => [ + 'instructions' => 'Please enter the direct link to a photo to import it:', + 'import' => 'Import', + ], + 'keybindings' => [ + 'don_t_show_again' => 'Don\'t show this again', + 'side_wide' => 'Site-wide Shortcuts', + 'back_cancel' => 'Back/Cancel', + 'confirm' => 'Confirm', + 'login' => 'Login', + 'toggle_full_screen' => 'Toggle Full Screen', + 'toggle_sensitive_albums' => 'Toggle Sensitive Albums', + + 'albums' => 'Albums Shortcuts', + 'new_album' => 'New Album', + 'upload_photos' => 'Upload Photos', + 'search' => 'Search', + 'show_this_modal' => 'Show this modal', + 'select_all' => 'Select All', + 'move_selection' => 'Move Selection', + 'delete_selection' => 'Delete Selection', + + 'album' => 'Album Shortcuts', + 'slideshow' => 'Start/Stop Slideshow', + 'toggle' => 'Toggle panel', + + 'photo' => 'Photo Shortcuts', + 'previous' => 'Previous photo', + 'next' => 'Next photo', + 'cycle' => 'Cycle overlay mode', + 'star' => 'Star the photo', + 'move' => 'Move the photo', + 'delete' => 'Delete the photo', + 'edit' => 'Edit information', + 'show_hide_meta' => 'Show information', + + 'keep_hidden' => 'We will keep it hidden.', + ], + 'login' => [ + 'username' => 'Username', + 'password' => 'Password', + 'unknown_invalid' => 'Unknown user or invalid password.', + 'signin' => 'Sign-In', + ], + 'register' => [ + 'enter_license' => 'Enter your license key below:', + 'license_key' => 'License key', + 'invalid_license' => 'Invalid license key.', + 'register' => 'Register', + ], + 'share_album' => [ + 'url_copied' => 'Copied URL to clipboard!', + ], + 'upload' => [ + 'completed' => 'Completed', + 'uploaded' => 'Uploaded:', + 'release' => 'Release file to upload!', + 'select' => 'Click here to select files to upload', + 'drag' => '(Or drag files to the page)', + 'loading' => 'Loading', + 'resume' => 'Resume', + 'uploading' => 'Uploading', + 'finished' => 'Finished', + 'failed_error' => 'Upload failed. The server returned an error!', + ], + 'visibility' => [ + 'public' => 'Public', + 'public_expl' => 'Anonymous users can access this album, subject to the restrictions below.', + 'full' => 'Original', + 'full_expl' => 'Anonymous users can view full-resolution photos.', + 'hidden' => 'Hidden', + 'hidden_expl' => 'Anonymous users need a direct link to access this album.', + 'downloadable' => 'Downloadable', + 'downloadable_expl' => 'Anonymous users can download this album.', + 'password' => 'Password', + 'password_prot' => 'Password protected', + 'password_prot_expl' => 'Anonymous users need a shared password to access this album.', + 'nsfw' => 'Sensitive', + 'nsfw_expl' => 'Album contains sensitive content.', + 'visibility_updated' => 'Visibility updated.', + ], + 'move_album' => [ + 'confirm_single' => 'Are you sure you want to move the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to move all selected albums into the album “%s”?', + 'move_single' => 'Move Album', + 'move_to' => 'Move to', + 'move_to_single' => 'Move %s to:', + 'move_to_multiple' => 'Move %d albums to:', + 'no_album_target' => 'No album to move to', + 'moved_single' => 'Album moved!', + 'moved_single_details' => '%1$s moved to %2$s', + 'moved_details' => 'Album(s) moved to %s', + ], + 'new_album' => [ + 'menu' => 'Create Album', + 'info' => 'Enter a title for the new album:', + 'title' => 'title', + 'create' => 'Create Album', + ], + 'new_tag_album' => [ + 'menu' => 'Create Tag Album', + 'info' => 'Enter a title for the new tag album:', + 'title' => 'title', + 'set_tags' => 'Set tags to show', + 'warn' => 'Make sure to press enter after each tag', + 'create' => 'Create Tag Album', + ], + 'delete_album' => [ + 'confirmation' => 'Are you sure you want to delete the album “%s” and all of the photos it contains?', + 'confirmation_multiple' => 'Are you sure you want to delete all %d selected albums and all of the photos they contain?', + 'warning' => 'This action can not be undone!', + 'delete' => 'Delete Album and Photos', + ], + 'transfer' => [ + 'query' => 'Transfer ownership of album to', + 'confirmation' => 'Are you sure you want to transfer the ownership of album “%s” and all the photos it contains to "%s"?', + 'lost_access_warning' => 'Your access to this album will be lost.', + 'warning' => 'This action can not be undone!', + 'transfer' => 'Transfer ownership of album and photos', + ], + 'rename' => [ + 'photo' => 'Enter a new title for this photo:', + 'album' => 'Enter a new title for this album:', + 'rename' => 'Rename', + ], + 'merge' => [ + 'merge_to' => 'Merge %s to:', + 'merge_to_multiple' => 'Merge %d albums to:', + 'no_albums' => 'No albums to merge to.', + 'confirm' => 'Are you sure you want to merge the album “%1$s” into the album “%2$s”?', + 'confirm_multiple' => 'Are you sure you want to merge all selected albums into the album “%s”?', + 'merge' => 'Merge Albums', + 'merged' => 'Album(s) merged to %s!', + ], + 'unlock' => [ + 'password_required' => 'This album is protected by a password. Enter the password below to view the photos of this album:', + 'password' => 'Password', + 'unlock' => 'Unlock', + ], + 'photo_tags' => [ + 'question' => 'Enter your tags for this photo.', + 'question_multiple' => 'Enter your tags for all %d selected photos. Existing tags will be overwritten.', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'updated' => 'Tags updated!', + 'tags_override_info' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', + ], + 'photo_copy' => [ + 'no_albums' => 'No albums to copy to', + 'copy_to' => 'Copy %s to:', + 'copy_to_multiple' => 'Copy %d photos to:', + 'confirm' => 'Copy %s to %s.', + 'confirm_multiple' => 'Copy %d photos to %s.', + 'copy' => 'Copy', + 'copied' => 'Photo(s) copied!', + ], + 'photo_delete' => [ + 'confirm' => 'Are you sure you want to delete the photo “%s”?', + 'confirm_multiple' => 'Are you sure you want to delete all %d selected photos?', + 'deleted' => 'Photo(s) deleted!', + ], + 'move_photo' => [ + 'move_single' => 'Move %s to:', + 'move_multiple' => 'Move %d photos to:', + 'confirm' => 'Move %s to %s.', + 'confirm_multiple' => 'Move %d photos to %s.', + 'moved' => 'Photo(s) moved to %s!', + ], + 'target_user' => [ + 'placeholder' => 'Select user', + ], + 'target_album' => [ + 'placeholder' => 'Select album', + ], + 'webauthn' => [ + 'u2f' => 'U2F', + 'success' => 'Authentication successful!', + 'error' => 'Whoops, it looks like something went wrong. Please reload the site and try again!', + ], + 'se' => [ + 'available' => 'Available in the Supporter Edition', + ], +]; \ No newline at end of file diff --git a/lang/zh_TW/fix-tree.php b/lang/zh_TW/fix-tree.php new file mode 100644 index 00000000000..1ede4afea9b --- /dev/null +++ b/lang/zh_TW/fix-tree.php @@ -0,0 +1,49 @@ + 'Maintenance', + 'intro' => 'This page allows you to re-order and fix your albums manually.
Before any modifications, we strongly recommend you to read about Nested Set tree structures.', + 'warning' => 'You can really break your Lychee installation here, modify values at your own risks.', + + 'help' => [ + 'header' => 'Help', + 'hover' => 'Hover ids or titles to highlight related albums.', + 'left' => 'Left', + 'right' => 'Right', + 'convenience' => 'For your convenience, the and buttons allow you to change the values of %s and %s by respectively +1 and -1 with propagation.', + 'left-right-warn' => 'The and indicates that the value of %s (and respectively %s) is duplicated somewhere.', + 'parent-marked' => 'Marked Parent Id indicates that the %s and %s do not satisfy the Nest Set tree structures. Edit either the Parent Id or the %s/%s values.', + 'slowness' => 'This page will be slow with a large number of albums.', + ], + + 'buttons' => [ + 'reset' => 'Reset', + 'check' => 'Check', + 'apply' => 'Apply', + ], + + 'table' => [ + 'title' => 'Title', + 'left' => 'Left', + 'right' => 'Right', + 'id' => 'Id', + 'parent' => 'Parent Id', + ], + + 'errors' => [ + 'invalid' => 'Invalid tree!', + 'invalid_details' => 'We are not applying this as it is guaranteed to be a broken state.', + 'invalid_left' => 'Album %s has an invalid left value.', + 'invalid_right' => 'Album %s has an invalid right value.', + 'invalid_left_right' => 'Album %s has an invalid left/right values. Left should be strictly smaller than right: %s < %s.', + 'duplicate_left' => 'Album %s has a duplicate left value %s.', + 'duplicate_right' => 'Album %s has a duplicate right value %s.', + 'parent' => 'Album %s has an unexpected parent id %s.', + 'unknown' => 'Album %s has an unknown error.', + ], +]; \ No newline at end of file diff --git a/lang/zh_TW/gallery.php b/lang/zh_TW/gallery.php new file mode 100644 index 00000000000..f6c1013bca7 --- /dev/null +++ b/lang/zh_TW/gallery.php @@ -0,0 +1,235 @@ + 'Gallery', + + 'smart_albums' => 'Smart albums', + 'albums' => 'Albums', + 'root' => 'Albums', + + 'original' => 'Original', + 'medium' => 'Medium', + 'medium_hidpi' => 'Medium HiDPI', + 'small' => 'Thumb', + 'small_hidpi' => 'Thumb HiDPI', + 'thumb' => 'Square thumb', + 'thumb_hidpi' => 'Square thumb HiDPI', + 'placeholder' => 'Low Quality Image Placeholder', + 'thumbnail' => 'Photo thumbnail', + 'live_video' => 'Video part of live-photo', + + 'camera_data' => 'Camera date', + 'album_reserved' => 'All Rights Reserved', + + 'map' => [ + 'error_gpx' => 'Error loading GPX file', + 'osm_contributors' => 'OpenStreetMap contributors', + ], + + 'search' => [ + 'title' => 'Search', + 'searching' => 'Searching…', + 'no_results' => 'Nothing matches your search query.', + 'searchbox' => 'Search…', + 'minimum_chars' => 'Minimum %s characters required.', + 'photos' => 'Photos (%s)', + 'albums' => 'Albums (%s)', + ], + + 'smart_album' => [ + 'unsorted' => 'Unsorted', + 'starred' => 'Starred', + 'recent' => 'Recent', + 'public' => 'Public', + 'on_this_day' => 'On This Day', + ], + + 'layout' => [ + 'squares' => 'Square thumbnails', + 'justified' => 'With aspect, justified', + 'masonry' => 'With aspect, masonry', + 'grid' => 'With aspect, grid', + ], + + 'overlay' => [ + 'none' => 'None', + 'exif' => 'EXIF data', + 'description' => 'Description', + 'date' => 'Date taken', + ], + + 'timeline' => [ + 'default' => 'default', + 'disabled' => 'disabled', + 'year' => 'Year', + 'month' => 'Month', + 'day' => 'Day', + 'hour' => 'Hour', + ], + + 'album' => [ + 'header_albums' => 'Albums', + 'header_photos' => 'Photos', + 'no_results' => 'Nothing to see here', + 'upload' => 'Upload photos', + + 'tabs' => [ + 'about' => 'About Album', + 'share' => 'Share Album', + 'move' => 'Move Album', + 'danger' => 'DANGER ZONE', + ], + + 'hero' => [ + 'created' => 'Created', + 'copyright' => 'Copyright', + 'subalbums' => 'Subalbums', + 'images' => 'Photos', + 'download' => 'Download Album', + 'share' => 'Share Album', + 'stats_only_se' => 'Statistics available in the Supporter Edition', + ], + + 'stats' => [ + 'lens' => 'Lens', + 'shutter' => 'Shutter speed', + 'iso' => 'ISO', + 'model' => 'Model', + 'aperture' => 'Aperture', + 'no_data' => 'No data', + ], + + 'properties' => [ + 'title' => 'Title', + 'description' => 'Description', + 'photo_ordering' => 'Order photos by', + 'children_ordering' => 'Order albums by', + 'asc/desc' => 'asc/desc', + 'header' => 'Set album header', + 'compact_header' => 'Use compact header', + 'license' => 'Set license', + 'copyright' => 'Set copyright', + 'aspect_ratio' => 'Set album thumbs aspect ratio', + 'album_timeline' => 'Set album timeline mode', + 'photo_timeline' => 'Set photo timeline mode', + 'layout' => 'Set photo layout', + 'show_tags' => 'Set tags to show', + 'tags_required' => 'Tags are required.', + ], + ], + + 'photo' => [ + 'actions' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'set_album_header' => 'Set as album header', + 'move' => 'Move', + 'delete' => 'Delete', + 'header_set' => 'Header set', + ], + + 'details' => [ + 'about' => 'About', + 'basics' => 'Basics', + 'title' => 'Title', + 'uploaded' => 'Uploaded', + 'description' => 'Description', + 'license' => 'License', + 'reuse' => 'Reuse', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'altitude' => 'Altitude', + 'location' => 'Location', + 'image' => 'Image', + 'video' => 'Video', + 'size' => 'Size', + 'format' => 'Format', + 'resolution' => 'Resolution', + 'duration' => 'Duration', + 'fps' => 'Frame rate', + 'tags' => 'Tags', + 'camera' => 'Camera', + 'captured' => 'Captured', + 'make' => 'Make', + 'type' => 'Type/Model', + 'lens' => 'Lens', + 'shutter' => 'Shutter Speed', + 'aperture' => 'Aperture', + 'focal' => 'Focal Length', + 'iso' => 'ISO %s', + ], + + 'edit' => [ + 'set_title' => 'Set Title', + 'set_description' => 'Set Description', + 'set_license' => 'Set License', + 'no_tags' => 'No Tags', + 'set_tags' => 'Set Tags', + 'set_created_at' => 'Set Upload Date', + ], + ], + + 'nsfw' => [ + 'header' => 'Sensitive content', + 'description' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'consent' => 'Tap to consent.', + ], + + 'menus' => [ + 'star' => 'Star', + 'unstar' => 'Unstar', + 'star_all' => 'Star Selected', + 'unstar_all' => 'Unstar Selected', + 'tag' => 'Tag', + 'tag_all' => 'Tag Selected', + 'set_cover' => 'Set Album Cover', + 'remove_header' => 'Remove Album Header', + 'set_header' => 'Set Album Header', + 'copy_to' => 'Copy to …', + 'copy_all_to' => 'Copy Selected to …', + 'rename' => 'Rename', + 'move' => 'Move', + 'move_all' => 'Move Selected', + 'delete' => 'Delete', + 'delete_all' => 'Delete Selected', + 'download' => 'Download', + 'download_all' => 'Download Selected', + 'merge' => 'Merge', + 'merge_all' => 'Merge Selected', + + 'upload_photo' => 'Upload Photo', + 'import_link' => 'Import from Link', + 'import_dropbox' => 'Import from Dropbox', + 'new_album' => 'New Album', + 'new_tag_album' => 'New Tag Album', + 'upload_track' => 'Upload track', + 'delete_track' => 'Delete track', + ], + + 'sort' => [ + 'photo_select_1' => 'Upload Time', + 'photo_select_2' => 'Take Date', + 'photo_select_3' => 'Title', + 'photo_select_4' => 'Description', + 'photo_select_6' => 'Star', + 'photo_select_7' => 'Photo Format', + 'ascending' => 'Ascending', + 'descending' => 'Descending', + 'album_select_1' => 'Creation Time', + 'album_select_2' => 'Title', + 'album_select_3' => 'Description', + 'album_select_5' => 'Latest Take Date', + 'album_select_6' => 'Oldest Take Date', + ], + + 'albums_protection' => [ + 'private' => 'private', + 'public' => 'public', + 'inherit_from_parent' => 'inherit from parent', + ], +]; \ No newline at end of file diff --git a/lang/zh_TW/jobs.php b/lang/zh_TW/jobs.php new file mode 100644 index 00000000000..d31ff03a514 --- /dev/null +++ b/lang/zh_TW/jobs.php @@ -0,0 +1,12 @@ + 'Jobs', + + 'no_data' => 'No Jobs have been executed yet.', +]; \ No newline at end of file diff --git a/lang/zh_TW/landing.php b/lang/zh_TW/landing.php new file mode 100644 index 00000000000..38e776aa7e6 --- /dev/null +++ b/lang/zh_TW/landing.php @@ -0,0 +1,13 @@ + 'Gallery', + 'access_gallery' => 'Access the gallery', + 'hosted_with_lychee' => 'Hosted with Lychee', + 'copyright' => 'All images on this website are subject to copyright by %1$s © %2$s', +]; \ No newline at end of file diff --git a/lang/zh_TW/left-menu.php b/lang/zh_TW/left-menu.php new file mode 100644 index 00000000000..f174b4166f4 --- /dev/null +++ b/lang/zh_TW/left-menu.php @@ -0,0 +1,23 @@ + 'Back to Gallery', + + 'admin' => 'Admin', + 'clockwork' => 'Clockwork App', + 'logs' => 'Show Logs', + 'jobs' => 'Show Job History', + 'user' => 'User', + + 'sign_out' => 'Sign Out', + + 'about' => 'About', + 'api' => 'API Documentation', + 'source_code' => 'Source Code', + 'support' => 'Support', +]; \ No newline at end of file diff --git a/lang/zh_TW/oauth.php b/lang/zh_TW/oauth.php deleted file mode 100644 index d338d47c26c..00000000000 --- a/lang/zh_TW/oauth.php +++ /dev/null @@ -1,12 +0,0 @@ - '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', -]; \ No newline at end of file diff --git a/lang/zh_TW/profile.php b/lang/zh_TW/profile.php new file mode 100644 index 00000000000..7639588294e --- /dev/null +++ b/lang/zh_TW/profile.php @@ -0,0 +1,58 @@ + 'Profile', + + 'login' => [ + 'header' => 'Profile', + 'enter_current_password' => 'Enter your current password:', + 'current_password' => 'Current password', + 'credentials_update' => 'Your credentials will be changed to the following:', + 'username' => 'Username', + 'new_password' => 'New password', + 'confirm_new_password' => 'Confirm new password', + 'email_instruction' => 'Add your email below to enable receiving email notifications. To stop receiving emails, simply remove your email below.', + 'email' => 'Email', + 'change' => 'Change Login', + 'api_token' => 'API Token ...', + + 'missing_fields' => 'Missing fields', + ], + + 'token' => [ + 'unavailable' => 'You have already viewed this token.', + 'no_data' => 'No token API have been generated.', + 'disable' => 'Disable', + 'disabled' => 'Token disabled', + 'warning' => 'This token will not be displayed again. Copy it and keep it in a safe place.', + 'reset' => 'Reset the token', + 'create' => 'Create a new token', + ], + + 'oauth' => [ + 'header' => 'OAuth', + 'header_not_available' => 'OAuth is not available', + 'setup_env' => 'Set up the credentials in your .env', + 'token_registered' => '%s token registered.', + 'setup' => 'Set up %s', + 'reset' => 'reset', + 'credential_deleted' => 'Credential deleted!', + ], + + 'u2f' => [ + 'header' => 'Passkey/MFA/2FA', + 'info' => 'This only provides the ability to use WebAuthn to authenticate instead of username & password.', + 'empty' => 'Credentials list is empty!', + 'not_secure' => 'Environment not secured. U2F not available.', + 'new' => 'Register new device.', + 'credential_deleted' => 'Credential deleted!', + 'credential_updated' => 'Credential updated!', + 'credential_registred' => 'Registration successful!', + '5_chars' => 'At least 5 chars.', + ], +]; \ No newline at end of file diff --git a/lang/zh_TW/settings.php b/lang/zh_TW/settings.php new file mode 100644 index 00000000000..c131c1bcc30 --- /dev/null +++ b/lang/zh_TW/settings.php @@ -0,0 +1,86 @@ + 'Settings', + 'small_screen' => 'For better a experience on the Settings page,
we recommend you use a larger screen.', + 'tabs' => [ + 'basic' => 'Basic', + 'all_settings' => 'All settings', + ], + 'toasts' => [ + 'change_saved' => 'Change saved!', + 'details' => 'Settings have been modified as per request', + 'error' => 'Error!', + 'error_load_css' => 'Could not load dist/user.css', + 'error_load_js' => 'Could not load dist/custom.js', + 'error_save_css' => 'Could not save CSS', + 'error_save_js' => 'Could not save JS', + 'thank_you' => 'Thank you for your support.', + 'reload' => 'Reload your page for full functionalities.', + ], + 'system' => [ + 'header' => 'System', + 'use_dark_mode' => 'Use dark mode for Lychee', + 'language' => 'Language used by Lychee', + 'nsfw_album_visibility' => 'Make Sensitive albums visible by default.', + 'nsfw_album_explanation' => 'If the album is public, it is still accessible, just hidden from the view and can be revealed by pressing H.', + ], + 'lychee_se' => [ + 'header' => 'Lychee SE', + 'call4action' => 'Get exclusive features and support the development of Lychee. Unlock the SE edition.', + 'preview' => 'Enable preview of Lychee SE features', + 'hide_call4action' => 'Hide this Lychee SE registration form. I am happy with Lychee as-is. :)', + 'hide_warning' => 'If enabled, the only way to register your license key will be via the More tab above. Changes are applied on page reload.', + ], + 'dropbox' => [ + 'header' => 'Dropbox', + 'instruction' => 'In order to import photos from your Dropbox, you need a valid drop-ins app key from their website.', + 'api_key' => 'Dropbox API Key', + 'set_key' => 'Set Dropbox Key', + ], + 'gallery' => [ + 'header' => 'Gallery', + 'photo_order_column' => 'Default column used for sorting photos', + 'photo_order_direction' => 'Default order used for sorting photos', + 'album_order_column' => 'Default column used for sorting albums', + 'album_order_direction' => 'Default order used for sorting albums', + 'aspect_ratio' => 'Default aspect ratio for album thumbs', + 'photo_layout' => 'Layout for pictures', + 'album_decoration' => 'Show decorations on album cover (sub-album and/or photo count)', + 'album_decoration_direction' => 'Align album decorations horizontally or vertically', + 'photo_overlay' => 'Default image overlay information', + 'license_default' => 'Default license used for albums', + 'license_help' => 'Need help choosing?', + ], + 'geolocation' => [ + 'header' => 'Geo-location', + 'map_display' => 'Display the map given GPS coordinates', + 'map_display_public' => 'Allow anonymous users to access the map', + 'map_provider' => 'Defines the map provider', + 'map_include_subalbums' => 'Includes pictures of the sub albums on the map', + 'location_decoding' => 'Use GPS location decoding', + 'location_show' => 'Show location extracted from GPS coordinates', + 'location_show_public' => 'Anonymous users can access the extracted location from GPS coordinates', + ], + 'advanced' => [ + 'header' => 'Advanced Customization', + 'change_css' => 'Change CSS', + 'change_js' => 'Change JS', + ], + 'all' => [ + 'old_setting_style' => 'Old setting style', + 'change_detected' => 'Some settings changed.', + 'save' => 'Save', + ], + + 'tool_option' => [ + 'disabled' => 'disabled', + 'enabled' => 'enabled', + 'discover' => 'discover', + ], +]; \ No newline at end of file diff --git a/lang/zh_TW/sharing.php b/lang/zh_TW/sharing.php new file mode 100644 index 00000000000..4f1653c2c62 --- /dev/null +++ b/lang/zh_TW/sharing.php @@ -0,0 +1,27 @@ + 'Sharing', + + 'info' => 'This page gives an overview of and the ability to edit the sharing rights associated with albums.', + 'album_title' => 'Album title', + 'username' => 'Username', + 'no_data' => 'Sharing list is empty.', + 'share' => 'Share', + 'permission_deleted' => 'Permission deleted!', + 'permission_created' => 'Permission created!', + + 'grants' => [ + 'read' => 'Grants read access', + 'original' => 'Grants access to original photo', + 'download' => 'Grants download', + 'upload' => 'Grants upload', + 'edit' => 'Grants edit', + 'delete' => 'Grants delete', + ], +]; \ No newline at end of file diff --git a/lang/zh_TW/statistics.php b/lang/zh_TW/statistics.php new file mode 100644 index 00000000000..bc601a6c9e5 --- /dev/null +++ b/lang/zh_TW/statistics.php @@ -0,0 +1,28 @@ + 'Statistics', + + 'preview_text' => 'This is a preview of the statistics page available in Lychee SE.
The data shown here are randomly generated and do not reflect your server.', + 'no_data' => 'User does not have data on server.', + 'collapse' => 'Collapse albums sizes', + + 'total' => [ + 'total' => 'Total', + 'albums' => 'Albums', + 'photos' => 'Photos', + 'size' => 'Size', + ], + 'table' => [ + 'username' => 'Owner', + 'title' => 'Title', + 'photos' => 'Photos', + 'descendants' => 'Children', + 'size' => 'Size', + ], +]; \ No newline at end of file diff --git a/lang/zh_TW/toasts.php b/lang/zh_TW/toasts.php new file mode 100644 index 00000000000..ed9974ed991 --- /dev/null +++ b/lang/zh_TW/toasts.php @@ -0,0 +1,11 @@ + 'Error', + 'success' => 'Success', +]; \ No newline at end of file diff --git a/lang/zh_TW/users.php b/lang/zh_TW/users.php new file mode 100644 index 00000000000..d26df77df17 --- /dev/null +++ b/lang/zh_TW/users.php @@ -0,0 +1,38 @@ + 'Users', + 'description' => 'Here you can manage the users of your Lychee installation. You can create, edit and delete users.', + 'create' => 'Create a new user', + 'username' => 'Username', + 'password' => 'Password', + 'legend' => 'Legend', + 'upload_rights' => 'When selected, the user can upload content.', + 'edit_rights' => 'When selected, the user can modify their profile (username, password).', + 'quota' => 'When set, the user has a space quota for pictures (in kB).', + + 'user_deleted' => 'User deleted', + 'user_created' => 'User created', + 'user_updated' => 'User updated', + 'change_saved' => 'Change saved!', + + 'create_edit' => [ + 'upload_rights' => 'User can upload content.', + 'edit_rights' => 'User can modify their profile (username, password).', + 'quota' => 'User has quota limit.', + 'quota_kb' => 'quota in kB (0 for default)', + 'note' => 'Admin note (not publically visible)', + 'create' => 'Create', + 'edit' => 'Edit', + ], + 'line' => [ + 'admin' => 'admin user', + 'edit' => 'Edit', + 'delete' => 'Delete', + ], +]; \ No newline at end of file diff --git a/lang/zh_TW/validation.php b/lang/zh_TW/validation.php deleted file mode 100644 index 3009ff07f6d..00000000000 --- a/lang/zh_TW/validation.php +++ /dev/null @@ -1,144 +0,0 @@ - '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 Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/resources/js/components/diagnostics/ConfigurationsDiagnostics.vue b/resources/js/components/diagnostics/ConfigurationsDiagnostics.vue index a36dbf1883a..6bd934aa030 100644 --- a/resources/js/components/diagnostics/ConfigurationsDiagnostics.vue +++ b/resources/js/components/diagnostics/ConfigurationsDiagnostics.vue @@ -1,5 +1,5 @@