Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ ones are marked like "v1.0.0-fork".

### Fixed in Unreleased

* Confirmation prompts are now an in-app dialog that follows the theme and the
interface language, instead of the browser's, and prompts that were English
in every locale are translated. The browser's own dialog remains only as a
fallback, and for its warning when leaving a page with unsaved changes.
* Confirmations, alerts and text prompts are now in-app dialogs that follow the
theme and the interface language, instead of the browser's, and messages that
were English in every locale are translated. Entering an invalid tag shows
what is wrong without closing the dialog. The browser's own dialogs remain
only as a fallback, and for the warning when leaving a page with unsaved
changes.

* Cancelling a database restore no longer leaves the page showing "restoring".

Expand Down
30 changes: 29 additions & 1 deletion locale/ar/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,33 @@
"dialog.translation_exists": "يبدو أن «{text}» موجودة بالفعل كترجمة. هل تريد إدراجها على أي حال؟",
"dialog.records_affected": "السجلات المتأثرة: {count}",
"dialog.all_records_warning": "ينطبق هذا على كل السجلات في كل صفحات الاستعلام الحالي.",
"dialog.delete_table_set": "هل تريد حذف مجموعة الجداول «{name}»؟ ستُفقد كل بياناتها."
"dialog.delete_table_set": "هل تريد حذف مجموعة الجداول «{name}»؟ ستُفقد كل بياناتها.",
"dialog.ok": "موافق",
"dialog.error": "خطأ",
"dialog.enter_tag": "أدخل وسمًا واحدًا (20 حرفًا كحد أقصى، بدون مسافات أو فواصل).",
"dialog.tag_invalid": "يمكن أن يتكون الوسم من 20 حرفًا كحد أقصى، بدون مسافات أو فواصل.",
"dialog.mark_failed": "تعذّر وضع علامة على الكلمات. يُرجى المحاولة مرة أخرى.",
"dialog.delete_failed": "تعذّر الحذف. يُرجى المحاولة مرة أخرى.",
"dialog.action_failed": "فشل الإجراء. يُرجى المحاولة مرة أخرى.",
"dialog.save_failed": "تعذّر الحفظ. يُرجى المحاولة مرة أخرى.",
"dialog.delete_failed_reason": "فشل الحذف: {reason}",
"dialog.selection_too_long": "النص المحدد طويل جدًا.",
"dialog.no_speech": "لا يدعم متصفحك تحويل النص إلى كلام.",
"dialog.translation_not_copied": "تعذّر نسخ الترجمة.",
"dialog.text_field_empty": "حقل النص فارغ أو يحتوي على «*» فقط.",
"dialog.term_save_failed": "تعذّر حفظ تغييراتك. يُرجى إعادة تحميل الصفحة والمحاولة مرة أخرى. الخطأ: «{error}»",
"dialog.translation_update_failed": "تعذّر تحديث الترجمة. يُرجى إعادة تحميل الصفحة والمحاولة مرة أخرى.",
"dialog.translation_add_failed": "تعذّرت إضافة الترجمة. يُرجى إعادة تحميل الصفحة والمحاولة مرة أخرى.",
"dialog.language_exists": "اللغة «{name}» موجودة بالفعل. يُرجى اختيار اسم آخر.",
"dialog.table_prefix_invalid": "يجب أن يتكون اسم مجموعة الجداول من 1 إلى 20 حرفًا (0-9 وa-z وA-Z و_ فقط).",
"dialog.fields_empty": "الحقول المطلوبة الفارغة المميزة بـ *: {count}",
"dialog.field_url": "يجب أن يبدأ الحقل «{field}» بـ «http://» أو «https://».",
"dialog.field_max": "الحد الأقصى لقيمة الحقل «{field}» هو {max}.",
"dialog.field_dict_url": "يجب أن يكون الحقل «{field}» عنوان URL.",
"dialog.field_positive": "يجب أن يكون الحقل «{field}» عددًا صحيحًا أكبر من 0.",
"dialog.field_nonnegative": "يجب أن يكون الحقل «{field}» عددًا صحيحًا يساوي 0 أو أكبر.",
"dialog.field_too_long_chars": "النص في الحقل «{field}» طويل جدًا. الحد الأقصى: {max} حرفًا.",
"dialog.field_too_long_bytes": "النص في الحقل «{field}» طويل جدًا. الحد الأقصى: {max} بايت.",
"dialog.field_no_spaces": "يجب ألا يحتوي الحقل «{field}» على مسافات أو فواصل.",
"dialog.field_unsupported_char": "يحتوي الحقل «{field}» على حرف غير مدعوم، مثل رمز تعبيري: «{char}» في الموضع {position}. يُرجى إزالته والمحاولة مرة أخرى."
}
30 changes: 29 additions & 1 deletion locale/de/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,33 @@
"dialog.translation_exists": "„{text}“ scheint bereits eine Übersetzung zu sein. Trotzdem einfügen?",
"dialog.records_affected": "Betroffene Einträge: {count}",
"dialog.all_records_warning": "Dies gilt für alle Einträge auf allen Seiten der aktuellen Abfrage.",
"dialog.delete_table_set": "Tabellensatz „{name}“ löschen? Alle seine Daten gehen verloren."
"dialog.delete_table_set": "Tabellensatz „{name}“ löschen? Alle seine Daten gehen verloren.",
"dialog.ok": "OK",
"dialog.error": "Fehler",
"dialog.enter_tag": "Geben Sie ein Tag ein (höchstens 20 Zeichen, keine Leerzeichen oder Kommas).",
"dialog.tag_invalid": "Ein Tag darf höchstens 20 Zeichen haben, ohne Leerzeichen oder Kommas.",
"dialog.mark_failed": "Wörter konnten nicht markiert werden. Bitte versuchen Sie es erneut.",
"dialog.delete_failed": "Löschen fehlgeschlagen. Bitte versuchen Sie es erneut.",
"dialog.action_failed": "Aktion fehlgeschlagen. Bitte versuchen Sie es erneut.",
"dialog.save_failed": "Speichern fehlgeschlagen. Bitte versuchen Sie es erneut.",
"dialog.delete_failed_reason": "Löschen fehlgeschlagen: {reason}",
"dialog.selection_too_long": "Der ausgewählte Text ist zu lang.",
"dialog.no_speech": "Ihr Browser unterstützt keine Sprachausgabe.",
"dialog.translation_not_copied": "Die Übersetzung konnte nicht kopiert werden.",
"dialog.text_field_empty": "Das Textfeld ist leer oder enthält nur „*“.",
"dialog.term_save_failed": "Ihre Änderungen konnten nicht gespeichert werden. Bitte laden Sie die Seite neu und versuchen Sie es erneut. Fehler: „{error}“",
"dialog.translation_update_failed": "Die Übersetzung konnte nicht aktualisiert werden. Bitte laden Sie die Seite neu und versuchen Sie es erneut.",
"dialog.translation_add_failed": "Die Übersetzung konnte nicht hinzugefügt werden. Bitte laden Sie die Seite neu und versuchen Sie es erneut.",
"dialog.language_exists": "Die Sprache „{name}“ existiert bereits. Bitte wählen Sie einen anderen Namen.",
"dialog.table_prefix_invalid": "Der Tabellensatzname muss 1 bis 20 Zeichen haben (nur 0-9, a-z, A-Z und _).",
"dialog.fields_empty": "Leere Pflichtfelder (mit * markiert): {count}",
"dialog.field_url": "Das Feld „{field}“ muss mit „http://“ oder „https://“ beginnen.",
"dialog.field_max": "Der Höchstwert des Feldes „{field}“ ist {max}.",
"dialog.field_dict_url": "Das Feld „{field}“ muss eine URL sein.",
"dialog.field_positive": "Das Feld „{field}“ muss eine ganze Zahl größer als 0 sein.",
"dialog.field_nonnegative": "Das Feld „{field}“ muss eine ganze Zahl ab 0 sein.",
"dialog.field_too_long_chars": "Der Text im Feld „{field}“ ist zu lang. Maximum: {max} Zeichen.",
"dialog.field_too_long_bytes": "Der Text im Feld „{field}“ ist zu lang. Maximum: {max} Byte.",
"dialog.field_no_spaces": "Das Feld „{field}“ darf keine Leerzeichen oder Kommas enthalten.",
"dialog.field_unsupported_char": "Das Feld „{field}“ enthält ein nicht unterstütztes Zeichen, etwa ein Emoji: „{char}“ an Position {position}. Bitte entfernen Sie es und versuchen Sie es erneut."
}
30 changes: 29 additions & 1 deletion locale/en/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,33 @@
"dialog.translation_exists": "\"{text}\" already seems to be a translation. Insert it anyway?",
"dialog.records_affected": "Records affected: {count}",
"dialog.all_records_warning": "This applies to all records on all pages of the current query.",
"dialog.delete_table_set": "Delete table set \"{name}\"? All its data will be lost."
"dialog.delete_table_set": "Delete table set \"{name}\"? All its data will be lost.",
"dialog.ok": "OK",
"dialog.error": "Error",
"dialog.enter_tag": "Enter one tag (20 characters at most, no spaces or commas).",
"dialog.tag_invalid": "A tag can have 20 characters at most, with no spaces or commas.",
"dialog.mark_failed": "Failed to mark words. Please try again.",
"dialog.delete_failed": "Failed to delete. Please try again.",
"dialog.action_failed": "Action failed. Please try again.",
"dialog.save_failed": "Failed to save. Please try again.",
"dialog.delete_failed_reason": "Delete failed: {reason}",
"dialog.selection_too_long": "The selected text is too long.",
"dialog.no_speech": "Your browser does not support speech synthesis.",
"dialog.translation_not_copied": "The translation could not be copied.",
"dialog.text_field_empty": "The text field is empty or contains only \"*\".",
"dialog.term_save_failed": "Saving your changes failed. Please reload the page and try again. Error: \"{error}\"",
"dialog.translation_update_failed": "Updating the translation failed. Please reload the page and try again.",
"dialog.translation_add_failed": "Adding the translation failed. Please reload the page and try again.",
"dialog.language_exists": "The language \"{name}\" already exists. Please choose another name.",
"dialog.table_prefix_invalid": "The table set name must have 1 to 20 characters (only 0-9, a-z, A-Z and _).",
"dialog.fields_empty": "Required fields marked with * are empty: {count}",
"dialog.field_url": "Field \"{field}\" must start with \"http://\" or \"https://\".",
"dialog.field_max": "The maximum value of field \"{field}\" is {max}.",
"dialog.field_dict_url": "Field \"{field}\" must be a URL.",
"dialog.field_positive": "Field \"{field}\" must be a whole number greater than 0.",
"dialog.field_nonnegative": "Field \"{field}\" must be a whole number, 0 or greater.",
"dialog.field_too_long_chars": "The text in field \"{field}\" is too long. Maximum: {max} characters.",
"dialog.field_too_long_bytes": "The text in field \"{field}\" is too long. Maximum: {max} bytes.",
"dialog.field_no_spaces": "Field \"{field}\" must not contain spaces or commas.",
"dialog.field_unsupported_char": "Field \"{field}\" contains a character that is not supported, such as an emoji: \"{char}\" at position {position}. Please remove it and try again."
}
30 changes: 29 additions & 1 deletion locale/es/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,33 @@
"dialog.translation_exists": "«{text}» ya parece ser una traducción. ¿Insertarla de todos modos?",
"dialog.records_affected": "Registros afectados: {count}",
"dialog.all_records_warning": "Esto se aplica a todos los registros de todas las páginas de la consulta actual.",
"dialog.delete_table_set": "¿Eliminar el conjunto de tablas «{name}»? Se perderán todos sus datos."
"dialog.delete_table_set": "¿Eliminar el conjunto de tablas «{name}»? Se perderán todos sus datos.",
"dialog.ok": "Aceptar",
"dialog.error": "Error",
"dialog.enter_tag": "Introduzca una etiqueta (20 caracteres como máximo, sin espacios ni comas).",
"dialog.tag_invalid": "Una etiqueta puede tener 20 caracteres como máximo, sin espacios ni comas.",
"dialog.mark_failed": "No se pudieron marcar las palabras. Inténtelo de nuevo.",
"dialog.delete_failed": "No se pudo eliminar. Inténtelo de nuevo.",
"dialog.action_failed": "La acción falló. Inténtelo de nuevo.",
"dialog.save_failed": "No se pudo guardar. Inténtelo de nuevo.",
"dialog.delete_failed_reason": "Error al eliminar: {reason}",
"dialog.selection_too_long": "El texto seleccionado es demasiado largo.",
"dialog.no_speech": "Su navegador no admite la síntesis de voz.",
"dialog.translation_not_copied": "No se pudo copiar la traducción.",
"dialog.text_field_empty": "El campo de texto está vacío o solo contiene «*».",
"dialog.term_save_failed": "No se pudieron guardar los cambios. Recargue la página e inténtelo de nuevo. Error: «{error}»",
"dialog.translation_update_failed": "No se pudo actualizar la traducción. Recargue la página e inténtelo de nuevo.",
"dialog.translation_add_failed": "No se pudo añadir la traducción. Recargue la página e inténtelo de nuevo.",
"dialog.language_exists": "El idioma «{name}» ya existe. Elija otro nombre.",
"dialog.table_prefix_invalid": "El nombre del conjunto de tablas debe tener de 1 a 20 caracteres (solo 0-9, a-z, A-Z y _).",
"dialog.fields_empty": "Campos obligatorios marcados con * vacíos: {count}",
"dialog.field_url": "El campo «{field}» debe empezar por «http://» o «https://».",
"dialog.field_max": "El valor máximo del campo «{field}» es {max}.",
"dialog.field_dict_url": "El campo «{field}» debe ser una URL.",
"dialog.field_positive": "El campo «{field}» debe ser un número entero mayor que 0.",
"dialog.field_nonnegative": "El campo «{field}» debe ser un número entero igual o mayor que 0.",
"dialog.field_too_long_chars": "El texto del campo «{field}» es demasiado largo. Máximo: {max} caracteres.",
"dialog.field_too_long_bytes": "El texto del campo «{field}» es demasiado largo. Máximo: {max} bytes.",
"dialog.field_no_spaces": "El campo «{field}» no debe contener espacios ni comas.",
"dialog.field_unsupported_char": "El campo «{field}» contiene un carácter no admitido, como un emoji: «{char}» en la posición {position}. Elimínelo e inténtelo de nuevo."
}
30 changes: 29 additions & 1 deletion locale/fa/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,33 @@
"dialog.translation_exists": "به نظر می‌رسد «{text}» از قبل به‌عنوان ترجمه وجود دارد. با این حال درج شود؟",
"dialog.records_affected": "رکوردهای تأثیرپذیرفته: {count}",
"dialog.all_records_warning": "این کار روی همهٔ رکوردها در همهٔ صفحه‌های پرس‌وجوی فعلی اعمال می‌شود.",
"dialog.delete_table_set": "مجموعه‌جدول «{name}» حذف شود؟ همهٔ داده‌های آن از دست خواهد رفت."
"dialog.delete_table_set": "مجموعه‌جدول «{name}» حذف شود؟ همهٔ داده‌های آن از دست خواهد رفت.",
"dialog.ok": "تأیید",
"dialog.error": "خطا",
"dialog.enter_tag": "یک برچسب وارد کنید (حداکثر ۲۰ نویسه، بدون فاصله یا ویرگول).",
"dialog.tag_invalid": "برچسب می‌تواند حداکثر ۲۰ نویسه داشته باشد و نباید فاصله یا ویرگول داشته باشد.",
"dialog.mark_failed": "علامت‌گذاری واژه‌ها انجام نشد. لطفاً دوباره تلاش کنید.",
"dialog.delete_failed": "حذف انجام نشد. لطفاً دوباره تلاش کنید.",
"dialog.action_failed": "عملیات انجام نشد. لطفاً دوباره تلاش کنید.",
"dialog.save_failed": "ذخیره انجام نشد. لطفاً دوباره تلاش کنید.",
"dialog.delete_failed_reason": "حذف انجام نشد: {reason}",
"dialog.selection_too_long": "متن انتخاب‌شده خیلی طولانی است.",
"dialog.no_speech": "مرورگر شما از تبدیل متن به گفتار پشتیبانی نمی‌کند.",
"dialog.translation_not_copied": "ترجمه کپی نشد.",
"dialog.text_field_empty": "فیلد متن خالی است یا فقط «*» دارد.",
"dialog.term_save_failed": "ذخیرهٔ تغییرات انجام نشد. لطفاً صفحه را دوباره بارگذاری کنید و دوباره تلاش کنید. خطا: «{error}»",
"dialog.translation_update_failed": "به‌روزرسانی ترجمه انجام نشد. لطفاً صفحه را دوباره بارگذاری کنید و دوباره تلاش کنید.",
"dialog.translation_add_failed": "افزودن ترجمه انجام نشد. لطفاً صفحه را دوباره بارگذاری کنید و دوباره تلاش کنید.",
"dialog.language_exists": "زبان «{name}» از قبل وجود دارد. لطفاً نام دیگری انتخاب کنید.",
"dialog.table_prefix_invalid": "نام مجموعه‌جدول باید ۱ تا ۲۰ نویسه باشد (فقط 0-9، a-z، A-Z و _).",
"dialog.fields_empty": "فیلدهای اجباری خالی که با * مشخص شده‌اند: {count}",
"dialog.field_url": "فیلد «{field}» باید با «http://» یا «https://» شروع شود.",
"dialog.field_max": "بیشترین مقدار فیلد «{field}» برابر {max} است.",
"dialog.field_dict_url": "فیلد «{field}» باید یک نشانی URL باشد.",
"dialog.field_positive": "فیلد «{field}» باید عدد صحیح بزرگ‌تر از ۰ باشد.",
"dialog.field_nonnegative": "فیلد «{field}» باید عدد صحیح ۰ یا بزرگ‌تر باشد.",
"dialog.field_too_long_chars": "متن فیلد «{field}» خیلی طولانی است. حداکثر: {max} نویسه.",
"dialog.field_too_long_bytes": "متن فیلد «{field}» خیلی طولانی است. حداکثر: {max} بایت.",
"dialog.field_no_spaces": "فیلد «{field}» نباید فاصله یا ویرگول داشته باشد.",
"dialog.field_unsupported_char": "فیلد «{field}» نویسه‌ای پشتیبانی‌نشده مانند ایموجی دارد: «{char}» در موقعیت {position}. لطفاً آن را حذف کنید و دوباره تلاش کنید."
}
Loading
Loading