Merge branch 'development' into release
This commit is contained in:
commit
63ec079b7b
|
@ -327,3 +327,5 @@ H.-H. Peng (Hsins) :: Chinese Traditional
|
|||
Mosi Wang (mosiwang) :: Chinese Traditional
|
||||
骆言 (LawssssCat) :: Chinese Simplified
|
||||
Stickers Gaming Shøw (StickerSGSHOW) :: French
|
||||
Le Van Chinh (Chino) (lvanchinh86) :: Vietnamese
|
||||
Rubens nagios (rubenix) :: Catalan
|
||||
|
|
|
@ -14,7 +14,8 @@ class UpdateUrl extends Command
|
|||
*/
|
||||
protected $signature = 'bookstack:update-url
|
||||
{oldUrl : URL to replace}
|
||||
{newUrl : URL to use as the replacement}';
|
||||
{newUrl : URL to use as the replacement}
|
||||
{--force : Force the operation to run, ignoring confirmations}';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
|
@ -23,25 +24,12 @@ class UpdateUrl extends Command
|
|||
*/
|
||||
protected $description = 'Find and replace the given URLs in your BookStack database';
|
||||
|
||||
protected $db;
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Connection $db)
|
||||
{
|
||||
$this->db = $db;
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
public function handle(Connection $db)
|
||||
{
|
||||
$oldUrl = str_replace("'", '', $this->argument('oldUrl'));
|
||||
$newUrl = str_replace("'", '', $this->argument('newUrl'));
|
||||
|
@ -67,7 +55,7 @@ class UpdateUrl extends Command
|
|||
|
||||
foreach ($columnsToUpdateByTable as $table => $columns) {
|
||||
foreach ($columns as $column) {
|
||||
$changeCount = $this->replaceValueInTable($table, $column, $oldUrl, $newUrl);
|
||||
$changeCount = $this->replaceValueInTable($db, $table, $column, $oldUrl, $newUrl);
|
||||
$this->info("Updated {$changeCount} rows in {$table}->{$column}");
|
||||
}
|
||||
}
|
||||
|
@ -80,7 +68,7 @@ class UpdateUrl extends Command
|
|||
foreach ($columns as $column) {
|
||||
$oldJson = trim(json_encode($oldUrl), '"');
|
||||
$newJson = trim(json_encode($newUrl), '"');
|
||||
$changeCount = $this->replaceValueInTable($table, $column, $oldJson, $newJson);
|
||||
$changeCount = $this->replaceValueInTable($db, $table, $column, $oldJson, $newJson);
|
||||
$this->info("Updated {$changeCount} JSON encoded rows in {$table}->{$column}");
|
||||
}
|
||||
}
|
||||
|
@ -97,13 +85,18 @@ class UpdateUrl extends Command
|
|||
* Perform a find+replace operations in the provided table and column.
|
||||
* Returns the count of rows changed.
|
||||
*/
|
||||
protected function replaceValueInTable(string $table, string $column, string $oldUrl, string $newUrl): int
|
||||
{
|
||||
$oldQuoted = $this->db->getPdo()->quote($oldUrl);
|
||||
$newQuoted = $this->db->getPdo()->quote($newUrl);
|
||||
protected function replaceValueInTable(
|
||||
Connection $db,
|
||||
string $table,
|
||||
string $column,
|
||||
string $oldUrl,
|
||||
string $newUrl
|
||||
): int {
|
||||
$oldQuoted = $db->getPdo()->quote($oldUrl);
|
||||
$newQuoted = $db->getPdo()->quote($newUrl);
|
||||
|
||||
return $this->db->table($table)->update([
|
||||
$column => $this->db->raw("REPLACE({$column}, {$oldQuoted}, {$newQuoted})"),
|
||||
return $db->table($table)->update([
|
||||
$column => $db->raw("REPLACE({$column}, {$oldQuoted}, {$newQuoted})"),
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -113,6 +106,10 @@ class UpdateUrl extends Command
|
|||
*/
|
||||
protected function checkUserOkayToProceed(string $oldUrl, string $newUrl): bool
|
||||
{
|
||||
if ($this->option('force')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$dangerWarning = "This will search for \"{$oldUrl}\" in your database and replace it with \"{$newUrl}\".\n";
|
||||
$dangerWarning .= 'Are you sure you want to proceed?';
|
||||
$backupConfirmation = 'This operation could cause issues if used incorrectly. Have you made a backup of your existing database?';
|
||||
|
|
Binary file not shown.
|
@ -2531,19 +2531,20 @@
|
|||
},
|
||||
{
|
||||
"name": "league/flysystem",
|
||||
"version": "3.14.0",
|
||||
"version": "3.15.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/flysystem.git",
|
||||
"reference": "e2a279d7f47d9098e479e8b21f7fb8b8de230158"
|
||||
"reference": "a141d430414fcb8bf797a18716b09f759a385bed"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e2a279d7f47d9098e479e8b21f7fb8b8de230158",
|
||||
"reference": "e2a279d7f47d9098e479e8b21f7fb8b8de230158",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a141d430414fcb8bf797a18716b09f759a385bed",
|
||||
"reference": "a141d430414fcb8bf797a18716b09f759a385bed",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"league/flysystem-local": "^3.0.0",
|
||||
"league/mime-type-detection": "^1.0.0",
|
||||
"php": "^8.0.2"
|
||||
},
|
||||
|
@ -2602,7 +2603,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/flysystem/issues",
|
||||
"source": "https://github.com/thephpleague/flysystem/tree/3.14.0"
|
||||
"source": "https://github.com/thephpleague/flysystem/tree/3.15.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2614,20 +2615,20 @@
|
|||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-11T18:11:47+00:00"
|
||||
"time": "2023-05-04T09:04:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem-aws-s3-v3",
|
||||
"version": "3.13.0",
|
||||
"version": "3.15.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git",
|
||||
"reference": "8e04cbb403d4dfd5b73a2f8685f1df395bd177eb"
|
||||
"reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/8e04cbb403d4dfd5b73a2f8685f1df395bd177eb",
|
||||
"reference": "8e04cbb403d4dfd5b73a2f8685f1df395bd177eb",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/d8de61ee10b6a607e7996cff388c5a3a663e8c8a",
|
||||
"reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -2668,7 +2669,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues",
|
||||
"source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.13.0"
|
||||
"source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.15.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2680,7 +2681,67 @@
|
|||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-16T14:29:01+00:00"
|
||||
"time": "2023-05-02T20:02:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem-local",
|
||||
"version": "3.15.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/flysystem-local.git",
|
||||
"reference": "543f64c397fefdf9cfeac443ffb6beff602796b3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/543f64c397fefdf9cfeac443ffb6beff602796b3",
|
||||
"reference": "543f64c397fefdf9cfeac443ffb6beff602796b3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-fileinfo": "*",
|
||||
"league/flysystem": "^3.0.0",
|
||||
"league/mime-type-detection": "^1.0.0",
|
||||
"php": "^8.0.2"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"League\\Flysystem\\Local\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Frank de Jonge",
|
||||
"email": "info@frankdejonge.nl"
|
||||
}
|
||||
],
|
||||
"description": "Local filesystem adapter for Flysystem.",
|
||||
"keywords": [
|
||||
"Flysystem",
|
||||
"file",
|
||||
"files",
|
||||
"filesystem",
|
||||
"local"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/flysystem-local/issues",
|
||||
"source": "https://github.com/thephpleague/flysystem-local/tree/3.15.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://ecologi.com/frankdejonge",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/frankdejonge",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-02T20:02:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/html-to-markdown",
|
||||
|
@ -4569,16 +4630,16 @@
|
|||
},
|
||||
{
|
||||
"name": "psy/psysh",
|
||||
"version": "v0.11.16",
|
||||
"version": "v0.11.17",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/bobthecow/psysh.git",
|
||||
"reference": "151b145906804eea8e5d71fea23bfb470c904bfb"
|
||||
"reference": "3dc5d4018dabd80bceb8fe1e3191ba8460569f0a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/151b145906804eea8e5d71fea23bfb470c904bfb",
|
||||
"reference": "151b145906804eea8e5d71fea23bfb470c904bfb",
|
||||
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/3dc5d4018dabd80bceb8fe1e3191ba8460569f0a",
|
||||
"reference": "3dc5d4018dabd80bceb8fe1e3191ba8460569f0a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -4639,9 +4700,9 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/bobthecow/psysh/issues",
|
||||
"source": "https://github.com/bobthecow/psysh/tree/v0.11.16"
|
||||
"source": "https://github.com/bobthecow/psysh/tree/v0.11.17"
|
||||
},
|
||||
"time": "2023-04-26T12:53:57+00:00"
|
||||
"time": "2023-05-05T20:02:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ralouphie/getallheaders",
|
||||
|
@ -9509,16 +9570,16 @@
|
|||
},
|
||||
{
|
||||
"name": "sebastian/diff",
|
||||
"version": "4.0.4",
|
||||
"version": "4.0.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/diff.git",
|
||||
"reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
|
||||
"reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
|
||||
"reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
|
||||
"reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -9563,7 +9624,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/diff/issues",
|
||||
"source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
|
||||
"source": "https://github.com/sebastianbergmann/diff/tree/4.0.5"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -9571,7 +9632,7 @@
|
|||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2020-10-26T13:10:38+00:00"
|
||||
"time": "2023-05-07T05:35:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/environment",
|
||||
|
|
|
@ -7,27 +7,27 @@ return [
|
|||
|
||||
// Pages
|
||||
'page_create' => 'ha creat la pàgina',
|
||||
'page_create_notification' => 'Page successfully created',
|
||||
'page_create_notification' => 'Pàgina creada correctament',
|
||||
'page_update' => 'ha actualitzat la pàgina',
|
||||
'page_update_notification' => 'Page successfully updated',
|
||||
'page_update_notification' => 'Pàgina actualitzada correctament',
|
||||
'page_delete' => 'ha suprimit una pàgina',
|
||||
'page_delete_notification' => 'Page successfully deleted',
|
||||
'page_delete_notification' => 'Imatge esborrada correctament',
|
||||
'page_restore' => 'ha restaurat la pàgina',
|
||||
'page_restore_notification' => 'Page successfully restored',
|
||||
'page_restore_notification' => 'Pàgina restaurada correctament',
|
||||
'page_move' => 'ha mogut la pàgina',
|
||||
|
||||
// Chapters
|
||||
'chapter_create' => 'ha creat el capítol',
|
||||
'chapter_create_notification' => 'Chapter successfully created',
|
||||
'chapter_create_notification' => 'Capítol creat correctament',
|
||||
'chapter_update' => 'ha actualitzat el capítol',
|
||||
'chapter_update_notification' => 'Chapter successfully updated',
|
||||
'chapter_update_notification' => 'Capítol actualitzat correctament',
|
||||
'chapter_delete' => 'ha suprimit un capítol',
|
||||
'chapter_delete_notification' => 'Chapter successfully deleted',
|
||||
'chapter_delete_notification' => 'Capítol esborrat correctament',
|
||||
'chapter_move' => 'ha mogut el capítol',
|
||||
|
||||
// Books
|
||||
'book_create' => 'ha creat el llibre',
|
||||
'book_create_notification' => 'Book successfully created',
|
||||
'book_create_notification' => 'Llibre creat correctament',
|
||||
'book_create_from_chapter' => 'converted chapter to book',
|
||||
'book_create_from_chapter_notification' => 'Chapter successfully converted to a book',
|
||||
'book_update' => 'ha actualitzat el llibre',
|
||||
|
|
|
@ -6,9 +6,9 @@ return [
|
|||
|
||||
// Image Manager
|
||||
'image_select' => 'Sélectionner une image',
|
||||
'image_upload' => 'Upload Image',
|
||||
'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
|
||||
'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
|
||||
'image_upload' => 'Téléverser une image',
|
||||
'image_intro' => 'Ici, vous pouvez sélectionner et gérer les images qui ont été précédemment téléversées sur le système.',
|
||||
'image_intro_upload' => 'Téléverser une nouvelle image en glissant un fichier image dans cette fenêtre, ou en utilisant le bouton "Téléverser une image" ci-dessus.',
|
||||
'image_all' => 'Toutes',
|
||||
'image_all_title' => 'Voir toutes les images',
|
||||
'image_book_title' => 'Voir les images ajoutées à ce livre',
|
||||
|
@ -21,7 +21,7 @@ return [
|
|||
'image_delete_confirm_text' => 'Êtes-vous sûr de vouloir supprimer cette image ?',
|
||||
'image_select_image' => 'Sélectionner l\'image',
|
||||
'image_dropzone' => 'Glissez les images ici ou cliquez pour les ajouter',
|
||||
'image_dropzone_drop' => 'Drop images here to upload',
|
||||
'image_dropzone_drop' => 'Déposer des images ici pour les téléverser',
|
||||
'images_deleted' => 'Images supprimées',
|
||||
'image_preview' => 'Prévisualiser l\'image',
|
||||
'image_upload_success' => 'Image ajoutée avec succès',
|
||||
|
|
|
@ -309,16 +309,16 @@ return [
|
|||
'tags_view_existing_tags' => 'Voir les mots-clés existants',
|
||||
'tags_list_empty_hint' => 'Les mots-clés peuvent être assignés via la barre latérale de l\'éditeur de page ou lors de l\'édition des détails d\'un livre, d\'un chapitre ou d\'une étagère.',
|
||||
'attachments' => 'Fichiers joints',
|
||||
'attachments_explain' => 'Ajouter des fichiers ou des liens pour les afficher sur votre page. Ils seront affichés dans la barre latérale',
|
||||
'attachments_explain' => 'Ajouter des fichiers ou des liens pour les afficher sur votre page. Ils seront affichés dans la barre latérale.',
|
||||
'attachments_explain_instant_save' => 'Ces changements sont enregistrés immédiatement.',
|
||||
'attachments_upload' => 'Uploader un fichier',
|
||||
'attachments_upload' => 'Téléverser un fichier',
|
||||
'attachments_link' => 'Attacher un lien',
|
||||
'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
|
||||
'attachments_upload_drop' => 'Vous pouvez également glisser-déposer un fichier ici pour le téléverser en tant que pièce jointe.',
|
||||
'attachments_set_link' => 'Définir un lien',
|
||||
'attachments_delete' => 'Êtes-vous sûr de vouloir supprimer la pièce jointe ?',
|
||||
'attachments_dropzone' => 'Drop files here to upload',
|
||||
'attachments_dropzone' => 'Déposer des fichiers ici pour les téléverser',
|
||||
'attachments_no_files' => 'Aucun fichier ajouté',
|
||||
'attachments_explain_link' => 'Vous pouvez ajouter un lien si vous ne souhaitez pas uploader un fichier.',
|
||||
'attachments_explain_link' => 'Vous pouvez ajouter un lien si vous ne souhaitez pas téléverser un fichier.',
|
||||
'attachments_link_name' => 'Nom du lien',
|
||||
'attachment_link' => 'Lien de l\'attachement',
|
||||
'attachments_link_url' => 'Lien sur un fichier',
|
||||
|
|
|
@ -53,7 +53,7 @@ return [
|
|||
|
||||
// Attachments
|
||||
'attachment_not_found' => 'Fichier joint non trouvé',
|
||||
'attachment_upload_error' => 'An error occurred uploading the attachment file',
|
||||
'attachment_upload_error' => 'Une erreur s\'est produite avec le téléversement du fichier joint',
|
||||
|
||||
// Pages
|
||||
'page_draft_autosave_fail' => 'Le brouillon n\'a pas pu être enregistré. Vérifiez votre connexion internet',
|
||||
|
|
|
@ -6,9 +6,9 @@ return [
|
|||
|
||||
// Image Manager
|
||||
'image_select' => 'Selezione Immagine',
|
||||
'image_upload' => 'Upload Image',
|
||||
'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
|
||||
'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
|
||||
'image_upload' => 'Carica Immagine',
|
||||
'image_intro' => 'Qui è possibile selezionare e gestire le immagini che sono state precedentemente caricate nel sistema.',
|
||||
'image_intro_upload' => 'Carica una nuova immagine trascinando un file immagine in questa finestra oppure utilizzando il pulsante "Carica immagine" in alto.',
|
||||
'image_all' => 'Tutte',
|
||||
'image_all_title' => 'Visualizza tutte le immagini',
|
||||
'image_book_title' => 'Visualizza immagini caricate in questo libro',
|
||||
|
@ -21,7 +21,7 @@ return [
|
|||
'image_delete_confirm_text' => 'Sei sicuro di voler eliminare questa immagine?',
|
||||
'image_select_image' => 'Seleziona Immagine',
|
||||
'image_dropzone' => 'Rilascia immagini o clicca qui per caricarle',
|
||||
'image_dropzone_drop' => 'Drop images here to upload',
|
||||
'image_dropzone_drop' => 'Trascina qui le immagini da caricare',
|
||||
'images_deleted' => 'Immagini Eliminate',
|
||||
'image_preview' => 'Anteprima Immagine',
|
||||
'image_upload_success' => 'Immagine caricata correttamente',
|
||||
|
|
|
@ -313,10 +313,10 @@ return [
|
|||
'attachments_explain_instant_save' => 'I cambiamenti qui sono salvati istantaneamente.',
|
||||
'attachments_upload' => 'Carica File',
|
||||
'attachments_link' => 'Allega Link',
|
||||
'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
|
||||
'attachments_upload_drop' => 'In alternativa puoi trascinare un file qui per caricarlo come allegato.',
|
||||
'attachments_set_link' => 'Imposta Link',
|
||||
'attachments_delete' => 'Sei sicuro di voler eliminare questo allegato?',
|
||||
'attachments_dropzone' => 'Drop files here to upload',
|
||||
'attachments_dropzone' => 'Trascina qui i file da caricare',
|
||||
'attachments_no_files' => 'Nessun file è stato caricato',
|
||||
'attachments_explain_link' => 'Puoi allegare un link se preferisci non caricare un file. Questo può essere un link a un\'altra pagina o a un file nel cloud.',
|
||||
'attachments_link_name' => 'Nome Link',
|
||||
|
|
|
@ -53,7 +53,7 @@ return [
|
|||
|
||||
// Attachments
|
||||
'attachment_not_found' => 'Allegato non trovato',
|
||||
'attachment_upload_error' => 'An error occurred uploading the attachment file',
|
||||
'attachment_upload_error' => 'Si è verificato un errore durante il caricamento del file allegato',
|
||||
|
||||
// Pages
|
||||
'page_draft_autosave_fail' => 'Impossibile salvare la bozza. Controlla di essere connesso ad internet prima di salvare questa pagina',
|
||||
|
|
|
@ -68,7 +68,7 @@ return [
|
|||
'back_to_top' => '上に戻る',
|
||||
'skip_to_main_content' => 'メインコンテンツへスキップ',
|
||||
'toggle_details' => '概要の表示切替',
|
||||
'toggle_thumbnails' => 'Toggle Thumbnails',
|
||||
'toggle_thumbnails' => 'サムネイルの切り替え',
|
||||
'details' => '詳細',
|
||||
'grid_view' => 'グリッド形式',
|
||||
'list_view' => 'リスト形式',
|
||||
|
|
|
@ -6,9 +6,9 @@ return [
|
|||
|
||||
// Image Manager
|
||||
'image_select' => '画像を選択',
|
||||
'image_upload' => 'Upload Image',
|
||||
'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
|
||||
'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
|
||||
'image_upload' => '画像をアップロード',
|
||||
'image_intro' => 'ここでは、システムに以前アップロードされた画像を選択して管理できます。',
|
||||
'image_intro_upload' => 'このウィンドウに画像ファイルをドラッグするか、上の「画像をアップロード」ボタンを使用して新しい画像をアップロードします。',
|
||||
'image_all' => 'すべて',
|
||||
'image_all_title' => '全ての画像を表示',
|
||||
'image_book_title' => 'このブックにアップロードされた画像を表示',
|
||||
|
@ -21,7 +21,7 @@ return [
|
|||
'image_delete_confirm_text' => 'この画像を削除してもよろしいですか?',
|
||||
'image_select_image' => '画像を選択',
|
||||
'image_dropzone' => '画像をドロップするか、クリックしてアップロード',
|
||||
'image_dropzone_drop' => 'Drop images here to upload',
|
||||
'image_dropzone_drop' => 'アップロードする画像をここにドロップ',
|
||||
'images_deleted' => '画像を削除しました',
|
||||
'image_preview' => '画像プレビュー',
|
||||
'image_upload_success' => '画像がアップロードされました',
|
||||
|
|
|
@ -313,10 +313,10 @@ return [
|
|||
'attachments_explain_instant_save' => 'この変更は即座に保存されます。',
|
||||
'attachments_upload' => 'アップロード',
|
||||
'attachments_link' => 'リンクを添付',
|
||||
'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
|
||||
'attachments_upload_drop' => 'ファイルをここにドラッグアンドドロップして添付ファイルとしてアップロードすることもできます。',
|
||||
'attachments_set_link' => 'リンクを設定',
|
||||
'attachments_delete' => 'この添付ファイルを削除してよろしいですか?',
|
||||
'attachments_dropzone' => 'Drop files here to upload',
|
||||
'attachments_dropzone' => 'アップロードするファイルをここにドロップ',
|
||||
'attachments_no_files' => 'ファイルはアップロードされていません',
|
||||
'attachments_explain_link' => 'ファイルをアップロードしたくない場合、他のページやクラウド上のファイルへのリンクを添付できます。',
|
||||
'attachments_link_name' => 'リンク名',
|
||||
|
|
|
@ -53,7 +53,7 @@ return [
|
|||
|
||||
// Attachments
|
||||
'attachment_not_found' => '添付ファイルが見つかりません',
|
||||
'attachment_upload_error' => 'An error occurred uploading the attachment file',
|
||||
'attachment_upload_error' => '添付ファイルのアップロード中にエラーが発生しました',
|
||||
|
||||
// Pages
|
||||
'page_draft_autosave_fail' => '下書きの保存に失敗しました。インターネットへ接続してください。',
|
||||
|
|
|
@ -12,9 +12,9 @@ return [
|
|||
'page_update_notification' => 'Pagina succesvol bijgewerkt',
|
||||
'page_delete' => 'verwijderde pagina',
|
||||
'page_delete_notification' => 'Pagina succesvol verwijderd',
|
||||
'page_restore' => 'pagina hersteld',
|
||||
'page_restore' => 'herstelde pagina',
|
||||
'page_restore_notification' => 'Pagina succesvol hersteld',
|
||||
'page_move' => 'pagina verplaatst',
|
||||
'page_move' => 'verplaatste pagina',
|
||||
|
||||
// Chapters
|
||||
'chapter_create' => 'maakte hoofdstuk',
|
||||
|
@ -23,18 +23,18 @@ return [
|
|||
'chapter_update_notification' => 'Hoofdstuk succesvol bijgewerkt',
|
||||
'chapter_delete' => 'verwijderde hoofdstuk',
|
||||
'chapter_delete_notification' => 'Hoofdstuk succesvol verwijderd',
|
||||
'chapter_move' => 'hoofdstuk verplaatst',
|
||||
'chapter_move' => 'verplaatste hoofdstuk',
|
||||
|
||||
// Books
|
||||
'book_create' => 'maakte boek',
|
||||
'book_create_notification' => 'Boek succesvol aangemaakt',
|
||||
'book_create_from_chapter' => 'hoofdstuk omzetten naar boek',
|
||||
'book_create_from_chapter_notification' => 'Hoofdstuk is omgezet naar een boek',
|
||||
'book_create_from_chapter' => 'heeft hoofdstuk geconverteerd naar boek',
|
||||
'book_create_from_chapter_notification' => 'Hoofdstuk is succesvol geconverteerd naar boekenplank',
|
||||
'book_update' => 'wijzigde boek',
|
||||
'book_update_notification' => 'Boek succesvol bijgewerkt',
|
||||
'book_delete' => 'verwijderde boek',
|
||||
'book_delete_notification' => 'Boek succesvol verwijderd',
|
||||
'book_sort' => 'boek gesorteerd',
|
||||
'book_sort' => 'sorteerde boek',
|
||||
'book_sort_notification' => 'Boek succesvol opnieuw gesorteerd',
|
||||
|
||||
// Bookshelves
|
||||
|
|
|
@ -20,22 +20,22 @@ return [
|
|||
'username' => 'Gebruikersnaam',
|
||||
'email' => 'E-mail',
|
||||
'password' => 'Wachtwoord',
|
||||
'password_confirm' => 'Wachtwoord bevestigen',
|
||||
'password_confirm' => 'Wachtwoord Bevestigen',
|
||||
'password_hint' => 'Moet uit minstens 8 tekens bestaan',
|
||||
'forgot_password' => 'Wachtwoord vergeten?',
|
||||
'remember_me' => 'Mij onthouden',
|
||||
'ldap_email_hint' => 'Geef een emailadres op voor dit account.',
|
||||
'ldap_email_hint' => 'Geef een e-mailadres op voor dit account.',
|
||||
'create_account' => 'Account aanmaken',
|
||||
'already_have_account' => 'Heb je al een account?',
|
||||
'dont_have_account' => 'Nog geen account?',
|
||||
'social_login' => 'Aanmelden via een sociaal netwerk',
|
||||
'social_registration' => 'Social registratie',
|
||||
'social_registration' => 'Registratie via een sociaal netwerk',
|
||||
'social_registration_text' => 'Registreer en log in met een andere service.',
|
||||
|
||||
'register_thanks' => 'Bedankt voor het registreren!',
|
||||
'register_confirm' => 'Controleer je e-mail en bevestig je registratie om in te loggen op :appName.',
|
||||
'register_confirm' => 'Controleer je e-mail en klik op de bevestigingsknop om toegang te krijgen tot :appName.',
|
||||
'registrations_disabled' => 'Registratie is momenteel niet mogelijk',
|
||||
'registration_email_domain_invalid' => 'Dit e-maildomein is niet toegestaan',
|
||||
'registration_email_domain_invalid' => 'Dit e-maildomein wordt niet toegelaten tot deze applicatie',
|
||||
'register_success' => 'Bedankt voor het aanmelden! Je bent nu geregistreerd en aangemeld.',
|
||||
|
||||
// Login auto-initiation
|
||||
|
@ -45,22 +45,22 @@ return [
|
|||
|
||||
// Password Reset
|
||||
'reset_password' => 'Wachtwoord herstellen',
|
||||
'reset_password_send_instructions' => 'Geef je e-mail en we sturen je een link om je wachtwoord te herstellen',
|
||||
'reset_password_send_instructions' => 'Geef je e-mailadres op en er wordt een link gestuurd om je wachtwoord te herstellen.',
|
||||
'reset_password_send_button' => 'Link sturen',
|
||||
'reset_password_sent' => 'Een link om het wachtwoord te resetten zal verstuurd worden naar :email als dat e-mailadres in het systeem gevonden is.',
|
||||
'reset_password_success' => 'Je wachtwoord is succesvol hersteld.',
|
||||
'email_reset_subject' => 'Herstel je wachtwoord van :appName',
|
||||
'email_reset_text' => 'Je ontvangt deze e-mail omdat je een wachtwoord herstel verzoek had verzonden.',
|
||||
'email_reset_text' => 'Je ontvangt deze e-mail omdat we een wachtwoordresetverzoek voor uw account hebben ontvangen.',
|
||||
'email_reset_not_requested' => 'Als je geen wachtwoord herstel hebt aangevraagd, hoef je niets te doen.',
|
||||
|
||||
// Email Confirmation
|
||||
'email_confirm_subject' => 'Bevestig je e-mailadres op :appName',
|
||||
'email_confirm_greeting' => 'Bedankt voor je aanmelding op :appName!',
|
||||
'email_confirm_text' => 'Bevestig je registratie door op onderstaande knop te drukken:',
|
||||
'email_confirm_text' => 'Bevestig je e-mailadres door op onderstaande knop te drukken:',
|
||||
'email_confirm_action' => 'Bevestig je e-mail',
|
||||
'email_confirm_send_error' => 'E-mail bevestiging is vereisd maar het systeem kon geen mail verzenden. Neem contact op met de beheerder.',
|
||||
'email_confirm_send_error' => 'Een e-mailbevestiging is vereist, maar het systeem kon de e-mail niet verzenden. Neem contact op met de beheerder.',
|
||||
'email_confirm_success' => 'Uw e-mailadres is bevestigd! U zou nu moeten kunnen inloggen met dit e-mailadres.',
|
||||
'email_confirm_resent' => 'De bevestigingse-mails is opnieuw verzonden. Controleer je inbox.',
|
||||
'email_confirm_resent' => 'Bevestigingsmail opnieuw verzonden, controleer je inbox.',
|
||||
'email_confirm_thanks' => 'Bedankt voor de bevestiging!',
|
||||
'email_confirm_thanks_desc' => 'Wacht even terwijl uw bevestiging wordt behandeld. Als u na 3 seconden niet wordt doorverwezen, drukt u op de onderstaande link "Doorgaan" om verder te gaan.',
|
||||
|
||||
|
|
|
@ -6,9 +6,9 @@ return [
|
|||
|
||||
// Image Manager
|
||||
'image_select' => 'Selecteer Afbeelding',
|
||||
'image_upload' => 'Upload Image',
|
||||
'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
|
||||
'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
|
||||
'image_upload' => 'Upload afbeelding',
|
||||
'image_intro' => 'Hier kan je eerder geüploade afbeeldingen selecteren en beheren.',
|
||||
'image_intro_upload' => 'Sleep een afbeeldingsbestand naar dit venster of gebruik de "Upload afbeelding"-knop om een afbeelding te uploaden.',
|
||||
'image_all' => 'Alles',
|
||||
'image_all_title' => 'Alle afbeeldingen weergeven',
|
||||
'image_book_title' => 'Bekijk afbeeldingen die naar dit boek zijn geüpload',
|
||||
|
@ -21,7 +21,7 @@ return [
|
|||
'image_delete_confirm_text' => 'Weet u zeker dat u deze afbeelding wilt verwijderen?',
|
||||
'image_select_image' => 'Kies afbeelding',
|
||||
'image_dropzone' => 'Sleep afbeeldingen naar hier of klik hier om te uploaden',
|
||||
'image_dropzone_drop' => 'Drop images here to upload',
|
||||
'image_dropzone_drop' => 'Sleep hier de afbeeldingen naar toe',
|
||||
'images_deleted' => 'Afbeeldingen verwijderd',
|
||||
'image_preview' => 'Afbeelding voorbeeld',
|
||||
'image_upload_success' => 'Afbeelding succesvol geüpload',
|
||||
|
|
|
@ -313,10 +313,10 @@ return [
|
|||
'attachments_explain_instant_save' => 'Wijzigingen worden meteen opgeslagen.',
|
||||
'attachments_upload' => 'Bestand uploaden',
|
||||
'attachments_link' => 'Link toevoegen',
|
||||
'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
|
||||
'attachments_upload_drop' => 'Of je kan een bestand hiernaartoe slepen om het als bijlage te uploaden.',
|
||||
'attachments_set_link' => 'Zet link',
|
||||
'attachments_delete' => 'Weet u zeker dat u deze bijlage wilt verwijderen?',
|
||||
'attachments_dropzone' => 'Drop files here to upload',
|
||||
'attachments_dropzone' => 'Sleep hier de bestanden naar toe',
|
||||
'attachments_no_files' => 'Er zijn geen bestanden geüpload',
|
||||
'attachments_explain_link' => 'Je kunt een hyperlink toevoegen als je geen bestanden wilt uploaden. Dit kan een link naar een andere pagina op deze website zijn, maar ook een link naar een andere website.',
|
||||
'attachments_link_name' => 'Link naam',
|
||||
|
|
|
@ -53,7 +53,7 @@ return [
|
|||
|
||||
// Attachments
|
||||
'attachment_not_found' => 'Bijlage niet gevonden',
|
||||
'attachment_upload_error' => 'An error occurred uploading the attachment file',
|
||||
'attachment_upload_error' => 'Er is een fout opgetreden bij het uploaden van het bestand',
|
||||
|
||||
// Pages
|
||||
'page_draft_autosave_fail' => 'Kon het concept niet opslaan. Zorg ervoor dat je een werkende internetverbinding hebt',
|
||||
|
|
|
@ -6,9 +6,9 @@ return [
|
|||
|
||||
// Image Manager
|
||||
'image_select' => 'Wybór obrazka',
|
||||
'image_upload' => 'Upload Image',
|
||||
'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
|
||||
'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
|
||||
'image_upload' => 'Prześlij obraz',
|
||||
'image_intro' => 'Tutaj możesz wybrać i zarządzać obrazami, które zostały wcześniej przesłane do systemu.',
|
||||
'image_intro_upload' => 'Prześlij nowy obraz przeciągając plik obrazu do tego okna lub używając przycisku "Prześlij obraz" powyżej.',
|
||||
'image_all' => 'Wszystkie',
|
||||
'image_all_title' => 'Zobacz wszystkie obrazki',
|
||||
'image_book_title' => 'Zobacz obrazki zapisane w tej książce',
|
||||
|
@ -21,7 +21,7 @@ return [
|
|||
'image_delete_confirm_text' => 'Czy na pewno chcesz usunąć ten obraz?',
|
||||
'image_select_image' => 'Wybierz obrazek',
|
||||
'image_dropzone' => 'Upuść obrazki tutaj lub kliknij by wybrać obrazki do przesłania',
|
||||
'image_dropzone_drop' => 'Drop images here to upload',
|
||||
'image_dropzone_drop' => 'Upuść obrazy tutaj, aby przesłać',
|
||||
'images_deleted' => 'Usunięte obrazki',
|
||||
'image_preview' => 'Podgląd obrazka',
|
||||
'image_upload_success' => 'Obrazek przesłany pomyślnie',
|
||||
|
|
|
@ -313,10 +313,10 @@ return [
|
|||
'attachments_explain_instant_save' => 'Zmiany są zapisywane natychmiastowo.',
|
||||
'attachments_upload' => 'Dodaj plik',
|
||||
'attachments_link' => 'Dodaj link',
|
||||
'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
|
||||
'attachments_upload_drop' => 'Alternatywnie możesz przeciągnąć i upuścić plik tutaj, aby przesłać go jako załącznik.',
|
||||
'attachments_set_link' => 'Ustaw link',
|
||||
'attachments_delete' => 'Jesteś pewien, że chcesz usunąć ten załącznik?',
|
||||
'attachments_dropzone' => 'Drop files here to upload',
|
||||
'attachments_dropzone' => 'Upuść pliki tutaj, aby przesłać',
|
||||
'attachments_no_files' => 'Nie przesłano żadnych plików',
|
||||
'attachments_explain_link' => 'Możesz załączyć link jeśli nie chcesz przesyłać pliku. Może być to link do innej strony lub link do pliku w chmurze.',
|
||||
'attachments_link_name' => 'Nazwa linku',
|
||||
|
|
|
@ -53,7 +53,7 @@ return [
|
|||
|
||||
// Attachments
|
||||
'attachment_not_found' => 'Nie znaleziono załącznika',
|
||||
'attachment_upload_error' => 'An error occurred uploading the attachment file',
|
||||
'attachment_upload_error' => 'Wystąpił błąd podczas przesyłania pliku załącznika',
|
||||
|
||||
// Pages
|
||||
'page_draft_autosave_fail' => 'Zapis wersji roboczej nie powiódł się. Upewnij się, że posiadasz połączenie z internetem.',
|
||||
|
|
|
@ -68,9 +68,9 @@ return [
|
|||
'user_delete_notification' => 'Người dùng đã được xóa thành công',
|
||||
|
||||
// Roles
|
||||
'role_create_notification' => 'Role successfully created',
|
||||
'role_update_notification' => 'Role successfully updated',
|
||||
'role_delete_notification' => 'Role successfully deleted',
|
||||
'role_create_notification' => 'Vai trò mới đã được tạo thành công',
|
||||
'role_update_notification' => 'Vai trò đã được cập nhật thành công',
|
||||
'role_delete_notification' => 'Vai trò đã được xóa thành công',
|
||||
|
||||
// Other
|
||||
'commented_on' => 'đã bình luận về',
|
||||
|
|
|
@ -17,7 +17,7 @@ return [
|
|||
// Form Labels
|
||||
'name' => 'Tên',
|
||||
'description' => 'Mô tả',
|
||||
'role' => 'Quyền',
|
||||
'role' => 'Vai trò',
|
||||
'cover_image' => 'Ảnh bìa',
|
||||
'cover_image_description' => 'Ảnh nên có kích thước 440x250px.',
|
||||
|
||||
|
|
|
@ -6,13 +6,13 @@ return [
|
|||
|
||||
// Image Manager
|
||||
'image_select' => 'Chọn Ảnh',
|
||||
'image_upload' => 'Upload Image',
|
||||
'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
|
||||
'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
|
||||
'image_upload' => 'Tải ảnh lên',
|
||||
'image_intro' => 'Bạn có thể lựa chọn và quản lý các hình ảnh đã được tải lên hệ thống từ trước ở đây.',
|
||||
'image_intro_upload' => 'Tải lên ảnh mới bằng cách kéo và thả nó vào cửa sổ này, hoặc sử dụng nút tải ảnh ở bên trên.',
|
||||
'image_all' => 'Tất cả',
|
||||
'image_all_title' => 'Xem tất cả các ảnh',
|
||||
'image_book_title' => 'Xem các ảnh đã được tải lên sách này',
|
||||
'image_page_title' => 'Xem các ảnh đã được tải lên trang này',
|
||||
'image_book_title' => 'Xem các ảnh đã được tải lên trong sách này',
|
||||
'image_page_title' => 'Xem các ảnh đã được tải lên trong trang này',
|
||||
'image_search_hint' => 'Tìm kiếm ảnh bằng tên',
|
||||
'image_uploaded' => 'Đã tải lên :uploadedDate',
|
||||
'image_load_more' => 'Hiện thêm',
|
||||
|
@ -21,7 +21,7 @@ return [
|
|||
'image_delete_confirm_text' => 'Bạn có chắc chắn muốn xóa hình ảnh này?',
|
||||
'image_select_image' => 'Chọn Ảnh',
|
||||
'image_dropzone' => 'Thả các ảnh hoặc bấm vào đây để tải lên',
|
||||
'image_dropzone_drop' => 'Drop images here to upload',
|
||||
'image_dropzone_drop' => 'Kéo các tệp vào đây để tải lên',
|
||||
'images_deleted' => 'Các ảnh đã được xóa',
|
||||
'image_preview' => 'Xem trước Ảnh',
|
||||
'image_upload_success' => 'Ảnh đã tải lên thành công',
|
||||
|
|
|
@ -62,58 +62,58 @@ return [
|
|||
'table' => 'Bảng',
|
||||
'insert_image' => 'Chèn hình ảnh',
|
||||
'insert_image_title' => 'Chèn/Sửa hình ảnh',
|
||||
'insert_link' => 'Insert/edit link',
|
||||
'insert_link_title' => 'Insert/Edit Link',
|
||||
'insert_horizontal_line' => 'Insert horizontal line',
|
||||
'insert_code_block' => 'Insert code block',
|
||||
'edit_code_block' => 'Edit code block',
|
||||
'insert_drawing' => 'Insert/edit drawing',
|
||||
'drawing_manager' => 'Drawing manager',
|
||||
'insert_media' => 'Insert/edit media',
|
||||
'insert_media_title' => 'Insert/Edit Media',
|
||||
'clear_formatting' => 'Clear formatting',
|
||||
'source_code' => 'Source code',
|
||||
'source_code_title' => 'Source Code',
|
||||
'fullscreen' => 'Fullscreen',
|
||||
'image_options' => 'Image options',
|
||||
'insert_link' => 'Chèn/sửa liên kết',
|
||||
'insert_link_title' => 'Chèn/sửa liên kết',
|
||||
'insert_horizontal_line' => 'Chèn đường ngang',
|
||||
'insert_code_block' => 'Chèn khối mã',
|
||||
'edit_code_block' => 'Chỉnh sửa khối mã',
|
||||
'insert_drawing' => 'Chèn/chỉnh sửa bản vẻ',
|
||||
'drawing_manager' => 'Quản lý hình vẽ',
|
||||
'insert_media' => 'Chèn/chỉnh sửa media',
|
||||
'insert_media_title' => 'Chèn/chỉnh sửa media',
|
||||
'clear_formatting' => 'Xóa định dạng',
|
||||
'source_code' => 'Mã nguồn',
|
||||
'source_code_title' => 'Mã Nguồn',
|
||||
'fullscreen' => 'Toàn màn hình',
|
||||
'image_options' => 'Tuỳ chọn hình ảnh',
|
||||
|
||||
// Tables
|
||||
'table_properties' => 'Table properties',
|
||||
'table_properties_title' => 'Table Properties',
|
||||
'delete_table' => 'Delete table',
|
||||
'insert_row_before' => 'Insert row before',
|
||||
'insert_row_after' => 'Insert row after',
|
||||
'delete_row' => 'Delete row',
|
||||
'insert_column_before' => 'Insert column before',
|
||||
'insert_column_after' => 'Insert column after',
|
||||
'delete_column' => 'Delete column',
|
||||
'table_cell' => 'Cell',
|
||||
'table_row' => 'Row',
|
||||
'table_column' => 'Column',
|
||||
'cell_properties' => 'Cell properties',
|
||||
'cell_properties_title' => 'Cell Properties',
|
||||
'cell_type' => 'Cell type',
|
||||
'cell_type_cell' => 'Cell',
|
||||
'cell_scope' => 'Scope',
|
||||
'cell_type_header' => 'Header cell',
|
||||
'merge_cells' => 'Merge cells',
|
||||
'split_cell' => 'Split cell',
|
||||
'table_row_group' => 'Row Group',
|
||||
'table_column_group' => 'Column Group',
|
||||
'horizontal_align' => 'Horizontal align',
|
||||
'vertical_align' => 'Vertical align',
|
||||
'border_width' => 'Border width',
|
||||
'border_style' => 'Border style',
|
||||
'border_color' => 'Border color',
|
||||
'row_properties' => 'Row properties',
|
||||
'row_properties_title' => 'Row Properties',
|
||||
'cut_row' => 'Cut row',
|
||||
'copy_row' => 'Copy row',
|
||||
'paste_row_before' => 'Paste row before',
|
||||
'paste_row_after' => 'Paste row after',
|
||||
'row_type' => 'Row type',
|
||||
'row_type_header' => 'Header',
|
||||
'row_type_body' => 'Body',
|
||||
'table_properties' => 'Thuộc tính bảng',
|
||||
'table_properties_title' => 'Thuộc tính bảng',
|
||||
'delete_table' => 'Xóa bảng',
|
||||
'insert_row_before' => 'Chèn thêm hàng ở trên',
|
||||
'insert_row_after' => 'Chèn thêm hàng ở dưới',
|
||||
'delete_row' => 'Xóa hàng',
|
||||
'insert_column_before' => 'Chèn cột mới vào bên trái',
|
||||
'insert_column_after' => 'Chèn cột mới vào bên phải',
|
||||
'delete_column' => 'Xóa cột',
|
||||
'table_cell' => 'Ô',
|
||||
'table_row' => 'Hàng',
|
||||
'table_column' => 'Cột',
|
||||
'cell_properties' => 'Đặt thuộc tính ô',
|
||||
'cell_properties_title' => 'Đặt thuộc tính ô',
|
||||
'cell_type' => 'Kiểu ô',
|
||||
'cell_type_cell' => 'Ô',
|
||||
'cell_scope' => 'Phạm vi',
|
||||
'cell_type_header' => 'Ô tiêu đề',
|
||||
'merge_cells' => 'Sát nhập các ô',
|
||||
'split_cell' => 'Chia tách ô',
|
||||
'table_row_group' => 'Nhóm hàng',
|
||||
'table_column_group' => 'Nhóm cột',
|
||||
'horizontal_align' => 'Căn chỉnh theo chiều ngang',
|
||||
'vertical_align' => 'Căn chỉnh theo chiều dọc',
|
||||
'border_width' => 'Chiều rộng viền',
|
||||
'border_style' => 'Kiểu đường viền',
|
||||
'border_color' => 'Màu viền',
|
||||
'row_properties' => 'Đặt thuộc tính hàng',
|
||||
'row_properties_title' => 'Đặt thuộc tính hàng',
|
||||
'cut_row' => 'Tách cột',
|
||||
'copy_row' => 'Sao chép cột',
|
||||
'paste_row_before' => 'Dán cột vào bên trái',
|
||||
'paste_row_after' => 'Dán cột vào bên phải',
|
||||
'row_type' => 'Kiểu hàng',
|
||||
'row_type_header' => 'Tiêu đề',
|
||||
'row_type_body' => 'Nội dung',
|
||||
'row_type_footer' => 'Cuối trang',
|
||||
'alignment' => 'Canh lề',
|
||||
'cut_column' => 'Cắt cột',
|
||||
|
@ -134,39 +134,39 @@ return [
|
|||
'cell_border_inset' => 'Inset',
|
||||
'cell_border_outset' => 'Outset',
|
||||
'cell_border_none' => 'None',
|
||||
'cell_border_hidden' => 'Hidden',
|
||||
'cell_border_hidden' => 'Ẩn',
|
||||
|
||||
// Images, links, details/summary & embed
|
||||
'source' => 'Source',
|
||||
'alt_desc' => 'Alternative description',
|
||||
'source' => 'Nguồn',
|
||||
'alt_desc' => 'Mô tả thay thế',
|
||||
'embed' => 'Mã nhúng',
|
||||
'paste_embed' => 'Paste your embed code below:',
|
||||
'paste_embed' => 'Dán mã đính kèm của bạn vào bên dưới:',
|
||||
'url' => 'Đường dẫn',
|
||||
'text_to_display' => 'Các văn bản hiển thị',
|
||||
'title' => 'Title',
|
||||
'open_link' => 'Open link',
|
||||
'open_link_in' => 'Open link in...',
|
||||
'open_link_current' => 'Current window',
|
||||
'open_link_new' => 'New window',
|
||||
'remove_link' => 'Remove link',
|
||||
'title' => 'Tiêu đề',
|
||||
'open_link' => 'Mở liên kết',
|
||||
'open_link_in' => 'Mở liên kết trong...',
|
||||
'open_link_current' => 'Cửa sổ hiện tại',
|
||||
'open_link_new' => 'Cửa sổ mới',
|
||||
'remove_link' => 'Loại bỏ liên kết',
|
||||
'insert_collapsible' => 'Insert collapsible block',
|
||||
'collapsible_unwrap' => 'Unwrap',
|
||||
'edit_label' => 'Edit label',
|
||||
'edit_label' => 'Chỉnh sửa nhãn',
|
||||
'toggle_open_closed' => 'Toggle open/closed',
|
||||
'collapsible_edit' => 'Edit collapsible block',
|
||||
'toggle_label' => 'Toggle label',
|
||||
|
||||
// About view
|
||||
'about' => 'About the editor',
|
||||
'about_title' => 'About the WYSIWYG Editor',
|
||||
'editor_license' => 'Editor License & Copyright',
|
||||
'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
|
||||
'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
|
||||
'save_continue' => 'Save Page & Continue',
|
||||
'about' => 'Giới thiệu về trình soạn thảo',
|
||||
'about_title' => 'Giới thiệu về trình soạn thảo WYSIWYG',
|
||||
'editor_license' => 'Giáy phép & Bản quyền của trình soạn thảo',
|
||||
'editor_tiny_license' => 'Trình soạn thảo này được xây dựng bằng các sử dụng :tinyLink theo giấy phép MIT.',
|
||||
'editor_tiny_license_link' => 'Chi tiết về bản quyền và giấy phép của TinyMCE có thể được tìm thấy tại đây.',
|
||||
'save_continue' => 'Lưu trang & Tiếp tục',
|
||||
'callouts_cycle' => '(Keep pressing to toggle through types)',
|
||||
'link_selector' => 'Link to content',
|
||||
'shortcuts' => 'Shortcuts',
|
||||
'shortcut' => 'Shortcut',
|
||||
'link_selector' => 'Liên kết đến nội dung',
|
||||
'shortcuts' => 'Phím tắt',
|
||||
'shortcut' => 'Phím tắt',
|
||||
'shortcuts_intro' => 'The following shortcuts are available in the editor:',
|
||||
'windows_linux' => '(Windows/Linux)',
|
||||
'mac' => '(Mac)',
|
||||
|
|
|
@ -313,10 +313,10 @@ return [
|
|||
'attachments_explain_instant_save' => '这里的更改将立即保存。',
|
||||
'attachments_upload' => '上传文件',
|
||||
'attachments_link' => '附加链接',
|
||||
'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
|
||||
'attachments_upload_drop' => '或者,您可以拖放一个文件到此处上传它作为附件。',
|
||||
'attachments_set_link' => '设置链接',
|
||||
'attachments_delete' => '您确定要删除此附件吗?',
|
||||
'attachments_dropzone' => 'Drop files here to upload',
|
||||
'attachments_dropzone' => '将文件拖放在此处上传',
|
||||
'attachments_no_files' => '尚未上传文件',
|
||||
'attachments_explain_link' => '如果您不想上传文件,则可以附加链接,这可以是指向其他页面的链接,也可以是指向云端文件的链接。',
|
||||
'attachments_link_name' => '链接名',
|
||||
|
|
|
@ -53,7 +53,7 @@ return [
|
|||
|
||||
// Attachments
|
||||
'attachment_not_found' => '找不到附件',
|
||||
'attachment_upload_error' => 'An error occurred uploading the attachment file',
|
||||
'attachment_upload_error' => '上传附件时出错',
|
||||
|
||||
// Pages
|
||||
'page_draft_autosave_fail' => '无法保存草稿,确保您在保存页面之前已经连接到互联网',
|
||||
|
|
|
@ -8,7 +8,15 @@ export class CodeEditor extends Component {
|
|||
*/
|
||||
editor = null;
|
||||
|
||||
callback = null;
|
||||
/**
|
||||
* @type {?Function}
|
||||
*/
|
||||
saveCallback = null;
|
||||
|
||||
/**
|
||||
* @type {?Function}
|
||||
*/
|
||||
cancelCallback = null;
|
||||
|
||||
history = {};
|
||||
|
||||
|
@ -115,15 +123,16 @@ export class CodeEditor extends Component {
|
|||
}
|
||||
|
||||
save() {
|
||||
if (this.callback) {
|
||||
this.callback(this.editor.getContent(), this.languageInput.value);
|
||||
if (this.saveCallback) {
|
||||
this.saveCallback(this.editor.getContent(), this.languageInput.value);
|
||||
}
|
||||
this.hide();
|
||||
}
|
||||
|
||||
async open(code, language, callback) {
|
||||
async open(code, language, saveCallback, cancelCallback) {
|
||||
this.languageInput.value = language;
|
||||
this.callback = callback;
|
||||
this.saveCallback = saveCallback;
|
||||
this.cancelCallback = cancelCallback;
|
||||
|
||||
await this.show();
|
||||
this.languageInputChange(language);
|
||||
|
@ -141,6 +150,9 @@ export class CodeEditor extends Component {
|
|||
this.editor.focus();
|
||||
}, () => {
|
||||
this.addHistory();
|
||||
if (this.cancelCallback) {
|
||||
this.cancelCallback();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ export class Shortcuts extends Component {
|
|||
|
||||
setupListeners() {
|
||||
window.addEventListener('keydown', event => {
|
||||
if (event.target.closest('input, select, textarea')) {
|
||||
if (event.target.closest('input, select, textarea, .cm-editor')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -268,7 +268,7 @@ export function build(options) {
|
|||
'-doc-root[doc-root|#text]',
|
||||
'-li[details]',
|
||||
'+code-block[pre]',
|
||||
'+doc-root[p|h1|h2|h3|h4|h5|h6|blockquote|code-block|div]',
|
||||
'+doc-root[p|h1|h2|h3|h4|h5|h6|blockquote|code-block|div|hr]',
|
||||
].join(','),
|
||||
plugins: gatherPlugins(options),
|
||||
contextmenu: false,
|
||||
|
|
|
@ -9,9 +9,16 @@ function elemIsCodeBlock(elem) {
|
|||
* @param {function(string, string)} callback (Receives (code: string,language: string)
|
||||
*/
|
||||
function showPopup(editor, code, language, callback) {
|
||||
window.$components.first('code-editor').open(code, language, (newCode, newLang) => {
|
||||
/** @var {CodeEditor} codeEditor * */
|
||||
const codeEditor = window.$components.first('code-editor');
|
||||
const bookMark = editor.selection.getBookmark();
|
||||
codeEditor.open(code, language, (newCode, newLang) => {
|
||||
callback(newCode, newLang);
|
||||
editor.focus();
|
||||
editor.selection.moveToBookmark(bookMark);
|
||||
}, () => {
|
||||
editor.focus();
|
||||
editor.selection.moveToBookmark(bookMark);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -46,8 +53,8 @@ function defineCodeBlockCustomElement(editor) {
|
|||
super();
|
||||
this.attachShadow({mode: 'open'});
|
||||
|
||||
const stylesToCopy = document.querySelectorAll('link[rel="stylesheet"]:not([media="print"])');
|
||||
const copiedStyles = Array.from(stylesToCopy).map(styleEl => styleEl.cloneNode(false));
|
||||
const stylesToCopy = document.head.querySelectorAll('link[rel="stylesheet"]:not([media="print"]),style');
|
||||
const copiedStyles = Array.from(stylesToCopy).map(styleEl => styleEl.cloneNode(true));
|
||||
|
||||
const cmContainer = document.createElement('div');
|
||||
cmContainer.style.pointerEvents = 'none';
|
||||
|
|
|
@ -14,4 +14,5 @@ export const blockElementTypes = [
|
|||
'ul',
|
||||
'ol',
|
||||
'table',
|
||||
'hr',
|
||||
];
|
||||
|
|
|
@ -202,7 +202,7 @@ pre {
|
|||
pre {
|
||||
padding-left: 12px;
|
||||
}
|
||||
pre:after {
|
||||
pre:before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ table {
|
|||
pre {
|
||||
padding-left: 12px;
|
||||
}
|
||||
pre:after {
|
||||
pre:before {
|
||||
display: none;
|
||||
}
|
||||
pre code {
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Tests\Commands;
|
||||
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Symfony\Component\Console\Exception\RuntimeException;
|
||||
use Tests\TestCase;
|
||||
|
||||
|
@ -34,6 +35,13 @@ class UpdateUrlCommandTest extends TestCase
|
|||
$this->artisan('bookstack:update-url https://cats.example.com');
|
||||
}
|
||||
|
||||
public function test_command_force_option_skips_prompt()
|
||||
{
|
||||
$this->artisan('bookstack:update-url --force https://cats.example.com/donkey https://cats.example.com/monkey')
|
||||
->expectsOutputToContain('URL update procedure complete')
|
||||
->assertSuccessful();
|
||||
}
|
||||
|
||||
public function test_command_updates_settings()
|
||||
{
|
||||
setting()->put('my-custom-item', 'https://example.com/donkey/cat');
|
||||
|
|
Loading…
Reference in New Issue