{t('download_request.you_will_get_a_copy')}{' '} diff --git a/plugins/talk-plugin-profile-data/client/translations.yml b/plugins/talk-plugin-profile-data/client/translations.yml index f1330e3d6..a7519b5cb 100644 --- a/plugins/talk-plugin-profile-data/client/translations.yml +++ b/plugins/talk-plugin-profile-data/client/translations.yml @@ -49,108 +49,6 @@ ar: subtitle: "هل انت متأكد انك تريد حذف حسابك؟" description: "للتأكيد على رغبتك في حذف حسابك، يرجى كتابة العبارة التالية في مربع النص أدناه:" type_to_confirm: "اكتب عبارة أدناه للتأكيد" -en: - download_request: - section_title: "Download My Comment History" - you_will_get_a_copy: "You will receive an email with a link to download your comment history. You can make" - download_rate: "one download request every {0} days" - most_recent_request: "Your most recent request" - request: "Request Comment History" - rate_limit: "You can submit another Comment History request in {0}" - hours: "{0} hours" - days: "{0} days" - hour: "{0} hour" - day: "{0} day" - download_preparing: "Account Download Preparing - Check your email shortly for a download link" - delete_request: - account_deletion_cancelled: 'Account Deletion Request Cancelled - Your request to delete your account has been cancelled.' - account_deletion_requested: 'Account Deletion Requested' - received_on: "A request to delete your account was received on " - cancel_request_description: "If you would like to reactivate your account, you may cancel your request to delete your account below" - before: "before" - cancel_account_deletion_request: "Cancel Account Deletion Request" - delete_my_account: "Delete My Account" - delete_my_account_description: "Deleting your account will permanently erase your profile and remove all your comments from this site." - already_submitted_request_description: "You have already submitted a request to delete your account. Your account will be deleted after {0}. You may cancel the request until that time" - your_request_submitted_description: "Your request has been submitted and confirmation has been sent to the email address associated with your account." - your_account_deletion_scheduled: "Your account is scheduled to be deleted after:" - changed_your_mind: "Changed your mind?" - simply_go_to: "Simply go to your account again before this time and click" - tell_us_why: "Tell us why" - feedback_copy: "We would like to know why you chose to delete your account. Send us feedback on our comment system by emailing" - done: "Done" - cancel: "Cancel" - proceed: "Proceed" - input_is_not_correct: "The input is not correct" - step_0: - you_are_attempting: "You are attempting to delete your account. This means:" - item_1: "All of your comments are removed from this site" - item_2: "All of your comments are deleted from our database" - item_3: "Your username and email address are removed from our system" - step_1: - subtitle: "When will my account be deleted?" - description: "Your account will be deleted {0} hours after your request has been submitted." - subtitle_2: "Can I still write comments until my account is deleted?" - description_2: "Yes, you can still comment, reply, and react to comments until the {0} hours expires." - step_2: - description: "Before your account is deleted, we recommend you download your comment history for your records. After your account is deleted, you will be unable to request your comment history." - to_download: "To download your comment history go to:" - path: "My Profile > Download My Comment History" - step_3: - subtitle: "Are you sure you want to delete your account?" - description: "To confirm you would like to delete your account please type in the following phrase into the text box below:" - type_to_confirm: "Type phrase below to confirm" -es: - download_request: - section_title: "Descargar el historial de mis comentarios" - you_will_get_a_copy: "Recibirás un correo electrónico con un enlace para descargar tu historial de comentarios. Puedes hacer" - download_rate: "una solicitud de descarga cada {0} días" - most_recent_request: "Tu solicitud más reciente" - request: "Solicitar historial de comentarios" - rate_limit: "Puedes enviar otra solicitud de historial de comentarios en {0}" - hours: "{0} horas" - days: "{0} dias" - hour: "{0} hora" - day: "{0} día" - download_preparing: "Preparando para la descarga de la cuenta - Revises tu correo electrónico en breve para obtener un enlace de descarga" - delete_request: - account_deletion_cancelled: 'Solicitud de eliminación de cuenta cancelada - Tu solicitud para eliminar tu cuenta ha sido cancelada.' - account_deletion_requested: 'Eliminación de cuenta solicitada' - received_on: "Se recibió una solicitud para eliminar tu cuenta en " - cancel_request_description: "Si deseas reactivar tu cuenta, puedes cancelar tu solicitud para eliminar tu cuenta a continuación" - before: "antes" - cancel_account_deletion_request: "Cancelar solicitud de eliminación de cuenta" - delete_my_account: "Borrar mi cuenta" - delete_my_account_description: "Al eliminar tu cuenta, se borrará definitivamente tu perfil y se eliminarán todos tus comentarios de este sitio." - already_submitted_request_description: "Ya ha enviado una solicitud para eliminar tu cuenta. Tu cuenta será eliminada después de {0}. Puedes cancelar la solicitud hasta ese momento." - your_request_submitted_description: "Tu solicitud ha sido enviada y la confirmación ha sido enviada a la dirección de correo electrónico asociada con tu cuenta." - your_account_deletion_scheduled: "Tu cuenta está programada para ser eliminada después de:" - changed_your_mind: "¿Has cambiado de opinión?" - simply_go_to: "Simplemente acceda a su cuenta nuevamente antes de esta hora y haga clic en" - tell_us_why: "Dinos por qué" - feedback_copy: "Nos gustaría saber por qué eligió eliminar tu cuenta. Envíenos tus comentarios sobre nuestro sistema de comentarios por correo electrónico" - done: "Hecho" - cancel: "Cancelar" - proceed: "Proceder" - input_is_not_correct: "La entrada no es correcta" - step_0: - you_are_attempting: "Estás intentando eliminar tu cuenta. Esto significa:" - item_1: "Todos tus comentarios son eliminados de este sitio" - item_2: "Todos tus comentarios son eliminados de nuestra base de datos" - item_3: "Tu nombre de usuario y dirección de correo electrónico se eliminan de nuestro sistema" - step_1: - subtitle: "¿Cuándo se eliminará mi cuenta?" - description: "Tu cuenta se eliminará {0} horas después de que se hayas enviado su solicitud." - subtitle_2: "¿Todavía puedo escribir comentarios hasta que mi cuenta se elimine?" - description_2: "Sí, todavía puedes comentar, responder y reaccionar a los comentarios hasta que expire {0} horas." - step_2: - description: "Antes de que se elimine tu cuenta, te recomendamos que descargues su historial de comentarios para tus registros. Después de que se elimine su cuenta, no podrás solicitar su historial de comentarios." - to_download: "Para descargar tu historial de comentarios, ve a:" - path: "Mi perfil > Descargar historial de mis comentarios" - step_3: - subtitle: "¿Seguro que quieres eliminar tu cuenta?" - description: "Para confirmar que deseas eliminar tu cuenta, escriba la siguiente frase en el cuadro de texto a continuación:" - type_to_confirm: "Escriba la frase a continuación para confirmar" de: download_request: section_title: "Mein Kommentar-Archiv herunterladen" @@ -202,6 +100,210 @@ de: subtitle: "Sind Sie sicher, dass Sie Ihr Benutzerkonto löschen möchten?" description: "Um zu bestätigen, dass Sie Ihr Konto löschen möchten, geben Sie bitte folgende Zeichen in das Textfeld ein:" type_to_confirm: "Zur Bestätigung Zeichenfolge eingeben" +en: + download_request: + section_title: "Download My Comment History" + you_will_get_a_copy: "You will receive an email with a link to download your comment history. You can make" + download_rate: "one download request every {0} days" + most_recent_request: "Your most recent request" + request: "Request Comment History" + rate_limit: "You can submit another Comment History request in {0}" + hours: "{0} hours" + days: "{0} days" + hour: "{0} hour" + day: "{0} day" + download_preparing: "Account Download Preparing - Check your email shortly for a download link" + delete_request: + account_deletion_cancelled: 'Account Deletion Request Cancelled - Your request to delete your account has been cancelled.' + account_deletion_requested: 'Account Deletion Requested' + received_on: "A request to delete your account was received on " + cancel_request_description: "If you would like to reactivate your account, you may cancel your request to delete your account below" + before: "before" + cancel_account_deletion_request: "Cancel Account Deletion Request" + delete_my_account: "Delete My Account" + delete_my_account_description: "Deleting your account will permanently erase your profile and remove all your comments from this site." + already_submitted_request_description: "You have already submitted a request to delete your account. Your account will be deleted after {0}. You may cancel the request until that time" + your_request_submitted_description: "Your request has been submitted and confirmation has been sent to the email address associated with your account." + your_account_deletion_scheduled: "Your account is scheduled to be deleted after:" + changed_your_mind: "Changed your mind?" + simply_go_to: "Simply go to your account again before this time and click" + tell_us_why: "Tell us why" + feedback_copy: "We would like to know why you chose to delete your account. Send us feedback on our comment system by emailing" + done: "Done" + cancel: "Cancel" + proceed: "Proceed" + input_is_not_correct: "The input is not correct" + step_0: + you_are_attempting: "You are attempting to delete your account. This means:" + item_1: "All of your comments are removed from this site" + item_2: "All of your comments are deleted from our database" + item_3: "Your username and email address are removed from our system" + step_1: + subtitle: "When will my account be deleted?" + description: "Your account will be deleted {0} hours after your request has been submitted." + subtitle_2: "Can I still write comments until my account is deleted?" + description_2: "Yes, you can still comment, reply, and react to comments until the {0} hours expires." + step_2: + description: "Before your account is deleted, we recommend you download your comment history for your records. After your account is deleted, you will be unable to request your comment history." + to_download: "To download your comment history go to:" + path: "My Profile > Download My Comment History" + step_3: + subtitle: "Are you sure you want to delete your account?" + description: "To confirm you would like to delete your account please type in the following phrase into the text box below:" + type_to_confirm: "Type phrase below to confirm" +sr: + download_request: + section_title: "Download My Comment History" + you_will_get_a_copy: "You will receive an email with a link to download your comment history. You can make" + download_rate: "one download request every {0} days" + most_recent_request: "Your most recent request" + request: "Request Comment History" + rate_limit: "You can submit another Comment History request in {0}" + hours: "{0} hours" + days: "{0} days" + hour: "{0} hour" + day: "{0} day" + download_preparing: "Account Download Preparing - Check your email shortly for a download link" + delete_request: + account_deletion_cancelled: 'Account Deletion Request Cancelled - Your request to delete your account has been cancelled.' + account_deletion_requested: 'Account Deletion Requested' + received_on: "A request to delete your account was received on " + cancel_request_description: "If you would like to reactivate your account, you may cancel your request to delete your account below" + before: "before" + cancel_account_deletion_request: "Cancel Account Deletion Request" + delete_my_account: "Delete My Account" + delete_my_account_description: "Deleting your account will permanently erase your profile and remove all your comments from this site." + already_submitted_request_description: "You have already submitted a request to delete your account. Your account will be deleted after {0}. You may cancel the request until that time" + your_request_submitted_description: "Your request has been submitted and confirmation has been sent to the email address associated with your account." + your_account_deletion_scheduled: "Your account is scheduled to be deleted after:" + changed_your_mind: "Changed your mind?" + simply_go_to: "Simply go to your account again before this time and click" + tell_us_why: "Tell us why" + feedback_copy: "We would like to know why you chose to delete your account. Send us feedback on our comment system by emailing" + done: "Done" + cancel: "Cancel" + proceed: "Proceed" + input_is_not_correct: "The input is not correct" + step_0: + you_are_attempting: "You are attempting to delete your account. This means:" + item_1: "All of your comments are removed from this site" + item_2: "All of your comments are deleted from our database" + item_3: "Your username and email address are removed from our system" + step_1: + subtitle: "When will my account be deleted?" + description: "Your account will be deleted {0} hours after your request has been submitted." + subtitle_2: "Can I still write comments until my account is deleted?" + description_2: "Yes, you can still comment, reply, and react to comments until the {0} hours expires." + step_2: + description: "Before your account is deleted, we recommend you download your comment history for your records. After your account is deleted, you will be unable to request your comment history." + to_download: "To download your comment history go to:" + path: "My Profile > Download My Comment History" + step_3: + subtitle: "Are you sure you want to delete your account?" + description: "To confirm you would like to delete your account please type in the following phrase into the text box below:" + type_to_confirm: "Type phrase below to confirm" +es: + download_request: + section_title: "Descargar el historial de mis comentarios" + you_will_get_a_copy: "Recibirás un correo electrónico con un enlace para descargar tu historial de comentarios. Puedes hacer" + download_rate: "una solicitud de descarga cada {0} días" + most_recent_request: "Tu solicitud más reciente" + request: "Solicitar historial de comentarios" + rate_limit: "Puedes enviar otra solicitud de historial de comentarios en {0}" + hours: "{0} horas" + days: "{0} dias" + hour: "{0} hora" + day: "{0} día" + download_preparing: "Preparando para la descarga de la cuenta - Revises tu correo electrónico en breve para obtener un enlace de descarga" + delete_request: + account_deletion_cancelled: 'Solicitud de eliminación de cuenta cancelada - Tu solicitud para eliminar tu cuenta ha sido cancelada.' + account_deletion_requested: 'Eliminación de cuenta solicitada' + received_on: "Se recibió una solicitud para eliminar tu cuenta en " + cancel_request_description: "Si deseas reactivar tu cuenta, puedes cancelar tu solicitud para eliminar tu cuenta a continuación" + before: "antes" + cancel_account_deletion_request: "Cancelar solicitud de eliminación de cuenta" + delete_my_account: "Borrar mi cuenta" + delete_my_account_description: "Al eliminar tu cuenta, se borrará definitivamente tu perfil y se eliminarán todos tus comentarios de este sitio." + already_submitted_request_description: "Ya ha enviado una solicitud para eliminar tu cuenta. Tu cuenta será eliminada después de {0}. Puedes cancelar la solicitud hasta ese momento." + your_request_submitted_description: "Tu solicitud ha sido enviada y la confirmación ha sido enviada a la dirección de correo electrónico asociada con tu cuenta." + your_account_deletion_scheduled: "Tu cuenta está programada para ser eliminada después de:" + changed_your_mind: "¿Has cambiado de opinión?" + simply_go_to: "Simplemente acceda a su cuenta nuevamente antes de esta hora y haga clic en" + tell_us_why: "Dinos por qué" + feedback_copy: "Nos gustaría saber por qué eligió eliminar tu cuenta. Envíenos tus comentarios sobre nuestro sistema de comentarios por correo electrónico" + done: "Hecho" + cancel: "Cancelar" + proceed: "Proceder" + input_is_not_correct: "La entrada no es correcta" + step_0: + you_are_attempting: "Estás intentando eliminar tu cuenta. Esto significa:" + item_1: "Todos tus comentarios son eliminados de este sitio" + item_2: "Todos tus comentarios son eliminados de nuestra base de datos" + item_3: "Tu nombre de usuario y dirección de correo electrónico se eliminan de nuestro sistema" + step_1: + subtitle: "¿Cuándo se eliminará mi cuenta?" + description: "Tu cuenta se eliminará {0} horas después de que se hayas enviado su solicitud." + subtitle_2: "¿Todavía puedo escribir comentarios hasta que mi cuenta se elimine?" + description_2: "Sí, todavía puedes comentar, responder y reaccionar a los comentarios hasta que expire {0} horas." + step_2: + description: "Antes de que se elimine tu cuenta, te recomendamos que descargues su historial de comentarios para tus registros. Después de que se elimine su cuenta, no podrás solicitar su historial de comentarios." + to_download: "Para descargar tu historial de comentarios, ve a:" + path: "Mi perfil > Descargar historial de mis comentarios" + step_3: + subtitle: "¿Seguro que quieres eliminar tu cuenta?" + description: "Para confirmar que deseas eliminar tu cuenta, escriba la siguiente frase en el cuadro de texto a continuación:" + type_to_confirm: "Escriba la frase a continuación para confirmar" +he: + download_request: + section_title: "הורד את היסטוריית התגובות שלי" + you_will_get_a_copy: 'תקבל הודעת אימייל עם קישור להורדת היסטוריית התגובות שלך. ניתן לבצע' + download_rate: "בקשת הורדה אחת בכל {0} ימים" + most_recent_request: "הבקשה האחרונה שלך" + request: "בקש היסטוריה של תגובות" + rate_limit: "תוכל לשלוח בקשה נוספת של היסטוריית תגובות ב {0}" + hours: "{0} שעות" + days: "{0} ימים" + hour: "{0} שעה" + day: "{0} יום" + download_preparing: 'הורדה של החשבון שלך הכנה - בדוק את האימייל שלך בקרוב עבור קישור להורדה' + delete_request: + account_deletion_cancelled: 'בקשת מחיקת החשבון בוטלה - בקשתך למחוק את החשבון שלך בוטלה.' + account_deletion_requested: 'מחיקת חשבון מבוקשת' + received_on: "בקשה למחיקת החשבון התקבלה " + cancel_request_description: "אם תרצה להפעיל מחדש את חשבונך, תוכל לבטל את בקשתך למחוק את החשבון שלך למטה" + before: "לפני" + cancel_account_deletion_request: "ביטול בקשת מחיקת חשבון" + delete_my_account: "מחק את חשבוני" + delete_my_account_description: "מחיקת החשבון תמחק את הפרופיל שלך לצמיתות ותסיר את כל התגובות שלך מאתר זה." + already_submitted_request_description: "כבר שלחת בקשה למחיקת החשבון שלך. החשבון שלך יימחק לאחר {0}. תוכל לבטל את הבקשה עד למועד זה" + your_request_submitted_description: 'הבקשה שלך נשלחה ואישור נשלח לכתובת האימייל המשויכת לחשבונך.' + your_account_deletion_scheduled: "החשבון שלך אמור להימחק לאחר:" + changed_your_mind: "שינה את דעתך?" + simply_go_to: "פשוט עבור אל החשבון שלך שוב לפני זמן זה ולחץ" + tell_us_why: "ספר לנו למה" + feedback_copy: 'ברצוננו לדעת מדוע בחרת למחוק את החשבון שלך. שלח לנו משוב על מערכת התגובה שלנו באימייל' + done: "בוצע" + cancel: "בטל" + proceed: "להמשיך" + input_is_not_correct: "הקלט אינו נכון" + step_0: + you_are_attempting: "אתה מנסה למחוק את החשבון שלך. זה אומר:" + item_1: "כל התגובות שלך יוסרו מאתר זה" + item_2: "כל התשובות שלך נמחקות ממסד הנתונים שלנו" + item_3: "שם המשתמש וכתובת האימייל שלך מוסרים מהמערכת שלנו" + step_1: + subtitle: "מתי החשבון שלי יימחק?" + description: "החשבון שלך יימחק {0} שעות לאחר הגשת הבקשה." + subtitle_2: "האם אני עדיין יכול לכתוב תגובות עד למחיקת החשבון שלי?" + description_2: "כן, עדיין תוכל להגיב עד שפג תוקפו של {0} שעות." + step_2: + description: "לפני שחשבונך נמחק, אנו ממליצים לך להוריד את היסטוריית התגובות שלך עבור הרשומות שלך. לאחר מחיקת החשבון, לא תוכל לבקש את היסטוריית התגובות שלך." + to_download: "כדי להוריד את היסטוריית התגובות עבור אל:" + path: "הפרופיל שלי > הורד את ההיסטוריה של תגובות" + step_3: + subtitle: "האם אתה בטוח שברצונך למחוק את החשבון שלך?" + description: "כדי לאשר שברצונך למחוק את חשבונך, הקלד את הביטוי הבא בתיבת הטקסט שבהמשך:" + type_to_confirm: "הקלד ביטוי למטה כדי לאשר" pt_BR: download_request: section_title: "Baixar meu histórico de comentários" diff --git a/plugins/talk-plugin-profile-data/translations.yml b/plugins/talk-plugin-profile-data/translations.yml index 81de52452..4dbfb39f4 100644 --- a/plugins/talk-plugin-profile-data/translations.yml +++ b/plugins/talk-plugin-profile-data/translations.yml @@ -36,80 +36,6 @@ ar: body: "لقد ألغيت طلب حذف حسابك ل {0}. تم الآن إعادة تفعيل حسابك." error: DOWNLOAD_TOKEN_INVALID: "رابط التنزيل الخاص بك غير صالح." -en: - download_landing: - download_your_account: "Download Your Comment History" - download_details: "Your comment history will be downloaded into a .zip file. After your comment history is unzipped you will have a comma separated value (or .csv) file that you can easily import into your favorite spreadsheet application." - all_information_included: "For each of your comments the following information is included:" - information_included: - date: "When you wrote the comment" - url: "The permalink URL for the comment" - body: "The comment text" - asset_url: "The URL of the article or story where the comment appears" - confirm: "Download My Comment History" - email: - download: - subject: "Your comments are ready for download from {0}" - download_link_ready: "Click here to download your comments from {0} as of {1}:" - download_archive: "Download Archive" - delete: - subject: "Your account for {0} is scheduled to be deleted" - body: | - A request to delete your account was received. Your account is scheduled for deletion on {1}. - - After that time all of your comments will be removed from the site, all of your comments will be removed from our database, and your username and email address will be removed from our system. - - If you change your mind you can sign into your account and cancel the request before your scheduled account deletion time. - deleted: - subject: "Your account for {0} has been deleted" - body: | - Your commenter account for {0} is now deleted. We're sorry to see you go! - - If you'd like to re-join the discussion in the future, you can sign up for a new account. - - If you'd like to give us feedback on why you left and what we can do to make the commenting experience better, please email us at {1}. - cancelDelete: - subject: "Your account deletion request for {0} has been cancelled" - body: "You have cancelled your account deletion request for {0}. Your account is now reactivated." - error: - DOWNLOAD_TOKEN_INVALID: "Your download link is not valid." -es: - download_landing: - download_your_account: "Descargue su historial de comentarios" - download_details: "Su historial de comentarios se descargará en un archivo .zip. Después de descomprimir el historial de comentarios, tendrá un archivo de valores separados por comas (o .csv) que podrá importar fácilmente en su aplicación de hoja de cálculo favorita." - all_information_included: "Para cada uno de sus comentarios se incluye la siguiente información:" - information_included: - date: "Cuando escribiste el comentario" - url: "La URL del enlace permanente para el comentario" - body: "El texto de comentario" - asset_url: "La URL del artículo o historia donde aparece el comentario" - confirm: "Descargar el historial de mis comentarios" - email: - download: - subject: "Sus comentarios están listos para su descarga desde {0}" - download_link_ready: "Haga clic aquí para descargar sus comentarios de {0} a partir de {1}:" - download_archive: "Descargar archivo" - delete: - subject: "Su cuenta para {0} está programada para ser eliminada" - body: | - Se recibió una solicitud para eliminar su cuenta. Su cuenta está programada para ser eliminada {1}. - - Después de ese momento, todos sus comentarios serán eliminados del sitio, todos sus comentarios serán eliminados de nuestra base de datos y su nombre de usuario y dirección de correo electrónico serán eliminados de nuestro sistema. - - Si cambia de opinión, puede iniciar sesión en su cuenta y cancelar la solicitud antes de la hora programada para la eliminación de su cuenta. - deleted: - subject: "Su cuenta para {0} ha sido eliminada" - body: | - Su cuenta de comentarista para {0} ahora se borró. ¡Sentimos verte partir! - - Si desea volver a unirse a la discusión en el futuro, puede registrarse para obtener una nueva cuenta. - - Si desea darnos su opinión sobre por qué se fue y qué podemos hacer para mejorar la experiencia de comentarios, envíenos un correo electrónico a {1}. - cancelDelete: - subject: "La solicitud de eliminación de su cuenta para {0} ha sido cancelada" - body: "Ha cancelado la solicitud de eliminación de cuenta para {0}. Su cuenta ahora está reactivada." - error: - DOWNLOAD_TOKEN_INVALID: "Su enlace de descarga no es válido." de: download_landing: download_your_account: "Mein Kommentar-Archiv herunterladen" @@ -147,6 +73,154 @@ de: body: "Sie haben die Lösch-Anfrage für Ihr Benutzerkonto bei {0} abgebrochen. Das Konto ist nun wieder aktiv." error: DOWNLOAD_TOKEN_INVALID: "Der Download-Link ist ungültig." +en: + download_landing: + download_your_account: "Download Your Comment History" + download_details: "Your comment history will be downloaded into a .zip file. After your comment history is unzipped you will have a comma separated value (or .csv) file that you can easily import into your favorite spreadsheet application." + all_information_included: "For each of your comments the following information is included:" + information_included: + date: "When you wrote the comment" + url: "The permalink URL for the comment" + body: "The comment text" + asset_url: "The URL of the article or story where the comment appears" + confirm: "Download My Comment History" + email: + download: + subject: "Your comments are ready for download from {0}" + download_link_ready: "Click here to download your comments from {0} as of {1}:" + download_archive: "Download Archive" + delete: + subject: "Your account for {0} is scheduled to be deleted" + body: | + A request to delete your account was received. Your account is scheduled for deletion on {1}. + + After that time all of your comments will be removed from the site, all of your comments will be removed from our database, and your username and email address will be removed from our system. + + If you change your mind you can sign into your account and cancel the request before your scheduled account deletion time. + deleted: + subject: "Your account for {0} has been deleted" + body: | + Your commenter account for {0} is now deleted. We're sorry to see you go! + + If you'd like to re-join the discussion in the future, you can sign up for a new account. + + If you'd like to give us feedback on why you left and what we can do to make the commenting experience better, please email us at {1}. + cancelDelete: + subject: "Your account deletion request for {0} has been cancelled" + body: "You have cancelled your account deletion request for {0}. Your account is now reactivated." + error: + DOWNLOAD_TOKEN_INVALID: "Your download link is not valid." +sr: + download_landing: + download_your_account: "Preuzmi sve svoje komentare?" + download_details: "Svi vaši komentari biće preuzeti u .zip fajlu. Po raspakivanju kolekcije videćete .csv fajl sa vrednostima razdvojenim zarezima, i tkav fajl možete lako uvesti u svoj omiljeni spreadsheet program (Excel...)." + all_information_included: "Za svaki vaš komentar uključene su sledeće informacije:" + information_included: + date: "Kada ste komentar napisali" + url: "Permalink URL za komentar" + body: "Tekst komentara" + asset_url: "URL teksta/priče gde se komentar pojavljuje" + confirm: "Preuzmi kolekciju svojih komentara" + email: + download: + subject: "Vaši komnetari su spremni a preuzimanje sa {0}" + download_link_ready: "Kliknite ovde da preuzmete vaše komentare sa {0} od {1}:" + download_archive: "Preuzmi arhivu" + delete: + subject: "Vaš nalog za {0} je određen za brisanje" + body: | + Primili smo zahtev za brisanje vašeg naloga. Vaš nalog je određen za brisanje na {1}. + + Posle tog vremena svi vaši komentari biće uklonjeni sa sajta, svi vaši komnetari biće uklonjeni iz baze podataka, a vaše korisničko ime i e-mail uklonjeni sa našeg sistema. + + Ukoliko se predomislite možete se prijaviti na svoj nalog i poništiti zahtev pre predviđenog vremena za brisanje. + deleted: + subject: "Vaš nalog za {0} je obrisan" + body: | + Vaš nalog za {0} je sada obrisan. Žao nam je što idete! + + Ukoliko budete želeli da se ponovo uključite u rspravu u budućnosti, možete se prijaviti za novi nalog. + + If you'd like to give us feedback on why you left and what we can do to make the commenting experience better, please email us at {1}. + cancelDelete: + subject: "Zahtev za brisanje vašeg naloga {0} je otkazan" + body: "Poništili ste zahtev za brisanje naloga na {0}. Vaš nalog je reaktiviran." + error: + DOWNLOAD_TOKEN_INVALID: "Vaš link za preuzimanje nije validan." +es: + download_landing: + download_your_account: "Descargue su historial de comentarios" + download_details: "Su historial de comentarios se descargará en un archivo .zip. Después de descomprimir el historial de comentarios, tendrá un archivo de valores separados por comas (o .csv) que podrá importar fácilmente en su aplicación de hoja de cálculo favorita." + all_information_included: "Para cada uno de sus comentarios se incluye la siguiente información:" + information_included: + date: "Cuando escribiste el comentario" + url: "La URL del enlace permanente para el comentario" + body: "El texto de comentario" + asset_url: "La URL del artículo o historia donde aparece el comentario" + confirm: "Descargar el historial de mis comentarios" + email: + download: + subject: "Sus comentarios están listos para su descarga desde {0}" + download_link_ready: "Haga clic aquí para descargar sus comentarios de {0} a partir de {1}:" + download_archive: "Descargar archivo" + delete: + subject: "Su cuenta para {0} está programada para ser eliminada" + body: | + Se recibió una solicitud para eliminar su cuenta. Su cuenta está programada para ser eliminada {1}. + + Después de ese momento, todos sus comentarios serán eliminados del sitio, todos sus comentarios serán eliminados de nuestra base de datos y su nombre de usuario y dirección de correo electrónico serán eliminados de nuestro sistema. + + Si cambia de opinión, puede iniciar sesión en su cuenta y cancelar la solicitud antes de la hora programada para la eliminación de su cuenta. + deleted: + subject: "Su cuenta para {0} ha sido eliminada" + body: | + Su cuenta de comentarista para {0} ahora se borró. ¡Sentimos verte partir! + + Si desea volver a unirse a la discusión en el futuro, puede registrarse para obtener una nueva cuenta. + + Si desea darnos su opinión sobre por qué se fue y qué podemos hacer para mejorar la experiencia de comentarios, envíenos un correo electrónico a {1}. + cancelDelete: + subject: "La solicitud de eliminación de su cuenta para {0} ha sido cancelada" + body: "Ha cancelado la solicitud de eliminación de cuenta para {0}. Su cuenta ahora está reactivada." + error: + DOWNLOAD_TOKEN_INVALID: "Su enlace de descarga no es válido." +he: + download_landing: + download_your_account: "הורד היסטורית תגובתך" + download_details: "היסטוריית התגובה שלך תועבר לקובץ zip. לאחר היסטוריית התגובה שלך הוא unzipped יהיה לך ערך מופרדים בפסיק (או. CSV) קובץ ואתה יכול בקלות לייבא לתוך היישום האהוב עליך גיליון אלקטרוני." + all_information_included: "עבור כל אחת מהתגובות את המידע הבא נכלל:" + information_included: + date: "כאשר כתבת את התגובה" + url: "כתובת האתר של הקישור עבור התגובה" + body: "טקסט התגובה" + asset_url: "כתובת האתר של הכתבה שבו מופיעה ההערה" + confirm: "הורד היסטוריית תגובות" + email: + download: + subject: "התגובות שלך מוכנות להורדה מ {0}" + download_link_ready: "לחץ כאן כדי להוריד את התגובות שלך מתוך {0} החל מ- {1}:" + download_archive: "הורד ארכיון" + delete: + subject: "החשבון שלך עבור {0} אמור להימחק" + body: | + בקשה למחיקת החשבון שלך התקבלה. החשבון שלך מתוזמן למחיקה ב- {1}. + + לאחר מכן כל התגובות שלך יוסרו מהאתר, כל התגובות שלך יוסרו ממסד הנתונים שלנו, ושם המשתמש והכתובת האימייל שלך יוסרו מהמערכת שלנו. + + אם תשנה את דעתך, תוכל להיכנס לחשבון ולבטל את הבקשה לפני מועד מחיקת החשבון המתוכנן. + deleted: + subject: "החשבון שלך עבור {0} נמחק" + body: | + חשבון המפרסם שלך עבור {0} נמחק כעת. אנחנו מצטערים לראות אותך הולך! + + אם תרצה להצטרף מחדש לדיון בעתיד, תוכל להירשם לחשבון חדש. + + אם תרצה לתת לנו משוב על הסיבות לכך שעזבת ומה ניתן לעשות כדי לשפר את חווית התגובות, שלח לנו אימייל לכתובת {1}. + cancelDelete: + subject: "בקשת מחיקת החשבון שלך עבור {0} בוטלה" + body: "ביטלת את בקשת מחיקת החשבון שלך עבור {0}. החשבון שלך מופעל מחדש כעת." + error: + DOWNLOAD_TOKEN_INVALID: "קישור ההורדה שלך אינו חוקי." nl_NL: download_landing: download_your_account: "Download je reactie geschiedenis" @@ -184,4 +258,4 @@ nl_NL: subject: "Het verwijderen van je account {0} is ge-cancelled" body: "Je hebt het verzoek om je account {0} te verwijderen ingetrokken. Je account is nu actief." error: - DOWNLOAD_TOKEN_INVALID: "Je download link is ongeldig." + DOWNLOAD_TOKEN_INVALID: "Je download link is ongeldig." \ No newline at end of file diff --git a/plugins/talk-plugin-respect/client/translations.yml b/plugins/talk-plugin-respect/client/translations.yml index 9ea296491..669b9723d 100644 --- a/plugins/talk-plugin-respect/client/translations.yml +++ b/plugins/talk-plugin-respect/client/translations.yml @@ -5,15 +5,15 @@ ar: da: talk-plugin-respect: respect: Respect - respected: Respected -en: - talk-plugin-respect: - respect: Respect - respected: Respected + respected: Respected de: talk-plugin-respect: respect: Respekt respected: Respektiert +en: + talk-plugin-respect: + respect: Respect + respected: Respected es: talk-plugin-respect: respect: Respetar @@ -22,6 +22,10 @@ fr: talk-plugin-respect: respect: Respect respected: Respected +he: + talk-plugin-respect: + respect: כבד + respected: נכבד nl_NL: talk-plugin-respect: respect: Respect @@ -30,6 +34,10 @@ pt_BR: talk-plugin-respect: respect: Respeitar respected: Respeitado +sr: + talk-plugin-respect: + respect: Respekt + respected: Respektovan zh_CN: talk-plugin-respect: respect: "赞" diff --git a/plugins/talk-plugin-rich-text/client/translations.yml b/plugins/talk-plugin-rich-text/client/translations.yml index 321a6d5fc..4026a3382 100644 --- a/plugins/talk-plugin-rich-text/client/translations.yml +++ b/plugins/talk-plugin-rich-text/client/translations.yml @@ -8,4 +8,8 @@ nl_NL: format_bold: vetgedrukt format_italic: cursief format_blockquote: blockquote - +he: + talk-plugin-rich-text: + format_bold: מודגש + format_italic: נטוי + format_blockquote: blockquote \ No newline at end of file diff --git a/plugins/talk-plugin-sort-most-downvoted/client/translations.yml b/plugins/talk-plugin-sort-most-downvoted/client/translations.yml index 39dff599b..625564e5c 100644 --- a/plugins/talk-plugin-sort-most-downvoted/client/translations.yml +++ b/plugins/talk-plugin-sort-most-downvoted/client/translations.yml @@ -1,6 +1,9 @@ en: talk-plugin-sort-most-downvoted: label: Most downvoted first +he: + talk-plugin-sort-most-downvoted: + label: השלילי ביותר קודם nl_NL: talk-plugin-sort-most-downvoted: - label: Minst gerespecteerd eerst + label: Minst gerespecteerd eerst \ No newline at end of file diff --git a/plugins/talk-plugin-sort-most-liked/client/translations.yml b/plugins/talk-plugin-sort-most-liked/client/translations.yml index 710519f50..56984c602 100644 --- a/plugins/talk-plugin-sort-most-liked/client/translations.yml +++ b/plugins/talk-plugin-sort-most-liked/client/translations.yml @@ -3,25 +3,31 @@ ar: label: الأكثر إعجاباً أولاً da: talk-plugin-sort-most-liked: - label: Most liked first -en: - talk-plugin-sort-most-liked: - label: Most liked first + label: Most liked first de: talk-plugin-sort-most-liked: label: Beliebteste zuerst +en: + talk-plugin-sort-most-liked: + label: Most liked first es: talk-plugin-sort-most-liked: label: Más valoradas primero fr: talk-plugin-sort-most-liked: label: Most liked first +he: + talk-plugin-sort-most-liked: + label: הכי לייקד קודם nl_NL: talk-plugin-sort-most-liked: label: Meest geliked eerst pt_BR: talk-plugin-sort-most-liked: label: Most liked first +sr: + talk-plugin-sort-most-liked: + label: Prvo sa najviše sviđanja zh_CN: talk-plugin-sort-most-liked: label: "最被喜欢在前" diff --git a/plugins/talk-plugin-sort-most-loved/client/translations.yml b/plugins/talk-plugin-sort-most-loved/client/translations.yml index f9bf60d18..c8c258cd9 100644 --- a/plugins/talk-plugin-sort-most-loved/client/translations.yml +++ b/plugins/talk-plugin-sort-most-loved/client/translations.yml @@ -3,25 +3,31 @@ ar: label: الأكثر حبً أولاً da: talk-plugin-sort-most-loved: - label: Most loved first -en: - talk-plugin-sort-most-loved: - label: Most loved first + label: Most loved first de: talk-plugin-sort-most-loved: label: Häufigste "Ich liebe es" zuerst +en: + talk-plugin-sort-most-loved: + label: Most loved first es: talk-plugin-sort-most-loved: label: Más amadas primero fr: talk-plugin-sort-most-loved: label: Most loved first +he: + talk-plugin-sort-most-loved: + label: הכי אהוב קודם nl_NL: talk-plugin-sort-most-loved: label: Meest geliefd eerst pt_BR: talk-plugin-sort-most-loved: label: Most loved first +sr: + talk-plugin-sort-most-loved: + label: Prvo najvoljeniji zh_CN: talk-plugin-sort-most-loved: label: "最多被比心在前" diff --git a/plugins/talk-plugin-sort-most-replied/client/translations.yml b/plugins/talk-plugin-sort-most-replied/client/translations.yml index 5778ee3ea..cbeca22c5 100644 --- a/plugins/talk-plugin-sort-most-replied/client/translations.yml +++ b/plugins/talk-plugin-sort-most-replied/client/translations.yml @@ -3,25 +3,31 @@ ar: label: الأكثر ردودً أولاً da: talk-plugin-sort-most-replied: - label: Most replied first -en: - talk-plugin-sort-most-replied: - label: Most replied first + label: Most replied first de: talk-plugin-sort-most-replied: label: Häufigste Antworten zuerst +en: + talk-plugin-sort-most-replied: + label: Most replied first es: talk-plugin-sort-most-replied: label: Más respondidas primero fr: talk-plugin-sort-most-replied: label: Most replied first +he: + talk-plugin-sort-most-replied: + label: הכי השיב קודם nl_NL: talk-plugin-sort-most-replied: label: Meest beantwoord eerst pt_BR: talk-plugin-sort-most-replied: label: Mais respondidos primeiro +sr: + talk-plugin-sort-most-replied: + label: Prvo sa najviše odgovora zh_CN: talk-plugin-sort-most-replied: label: "最多回复在前" diff --git a/plugins/talk-plugin-sort-most-respected/client/translations.yml b/plugins/talk-plugin-sort-most-respected/client/translations.yml index 50a87b9db..b462c05c8 100644 --- a/plugins/talk-plugin-sort-most-respected/client/translations.yml +++ b/plugins/talk-plugin-sort-most-respected/client/translations.yml @@ -4,24 +4,30 @@ ar: da: talk-plugin-sort-most-respected: label: Most respected first -en: - talk-plugin-sort-most-respected: - label: Most respected first de: talk-plugin-sort-most-respected: label: Häufigste "Respektiert" zuerst +en: + talk-plugin-sort-most-respected: + label: Most respected first es: talk-plugin-sort-most-respected: label: Más respetadas primero fr: talk-plugin-sort-most-respected: label: Most respected first +he: + talk-plugin-sort-most-respected: + label: הכי מכובד קודם nl_NL: talk-plugin-sort-most-respected: label: Meest gerespecteerd eerst pt_BR: talk-plugin-sort-most-respected: label: Mais respeitados primeiro +sr: + talk-plugin-sort-most-respected: + label: Prvo najpopularniji zh_CN: talk-plugin-sort-most-respected: label: "最多被赞在前" diff --git a/plugins/talk-plugin-sort-most-upvoted/client/translations.yml b/plugins/talk-plugin-sort-most-upvoted/client/translations.yml index 7c16572b7..1f5e55121 100644 --- a/plugins/talk-plugin-sort-most-upvoted/client/translations.yml +++ b/plugins/talk-plugin-sort-most-upvoted/client/translations.yml @@ -1,12 +1,15 @@ -en: - talk-plugin-sort-most-upvoted: - label: Most upvoted first de: talk-plugin-sort-most-upvoted: label: Am besten bewertet +en: + talk-plugin-sort-most-upvoted: + label: Most upvoted first es: talk-plugin-sort-oldest: label: Más votadas primero +he: + talk-plugin-sort-most-upvoted: + label: החיובי ביותר קודם nl_NL: talk-plugin-sort-most-upvoted: - label: Meest gerespecteerd eerst + label: Meest gerespecteerd eerst \ No newline at end of file diff --git a/plugins/talk-plugin-sort-newest/client/translations.yml b/plugins/talk-plugin-sort-newest/client/translations.yml index 63bdb024d..dd1caf5df 100644 --- a/plugins/talk-plugin-sort-newest/client/translations.yml +++ b/plugins/talk-plugin-sort-newest/client/translations.yml @@ -3,25 +3,31 @@ ar: label: الأحدث أولاً da: talk-plugin-sort-newest: - label: Newest first -en: - talk-plugin-sort-newest: - label: Newest first + label: Newest first de: talk-plugin-sort-newest: label: Neueste zuerst +en: + talk-plugin-sort-newest: + label: Newest first es: talk-plugin-sort-newest: label: Más nuevas primero fr: talk-plugin-sort-newest: label: Newest first +he: + talk-plugin-sort-newest: + label: מהראשונה לאחרונה nl_NL: talk-plugin-sort-newest: label: Nieuwste eerst pt_BR: talk-plugin-sort-newest: label: Mais novos primeiro +sr: + talk-plugin-sort-newest: + label: Prvo najnoviji zh_CN: talk-plugin-sort-newest: label: "最新发表在前" diff --git a/plugins/talk-plugin-sort-oldest/client/translations.yml b/plugins/talk-plugin-sort-oldest/client/translations.yml index 59a97c9d8..1dc5fe3cf 100644 --- a/plugins/talk-plugin-sort-oldest/client/translations.yml +++ b/plugins/talk-plugin-sort-oldest/client/translations.yml @@ -3,25 +3,31 @@ ar: label: الأقدم أولاً da: talk-plugin-sort-oldest: - label: Oldest first -en: - talk-plugin-sort-oldest: - label: Oldest first + label: Oldest first de: talk-plugin-sort-oldest: label: Älteste zuerst +en: + talk-plugin-sort-oldest: + label: Oldest first es: talk-plugin-sort-oldest: label: Más viejas primero fr: talk-plugin-sort-oldest: label: Oldest first +he: + talk-plugin-sort-oldest: + label: מהאחרונה לראשונה nl_NL: talk-plugin-sort-oldest: label: Oudste eerst pt_BR: talk-plugin-sort-oldest: label: Mais antigos primeiro +sr: + talk-plugin-sort-oldest: + label: Prvo najstariji zh_CN: talk-plugin-sort-oldest: label: "最早发表在前" diff --git a/plugins/talk-plugin-subscriber/client/translations.yml b/plugins/talk-plugin-subscriber/client/translations.yml index 4cf482978..c6ea68d72 100644 --- a/plugins/talk-plugin-subscriber/client/translations.yml +++ b/plugins/talk-plugin-subscriber/client/translations.yml @@ -4,18 +4,21 @@ ar: da: talk-plugin-subscriber: subscriber: "Subscriber" -en: - talk-plugin-subscriber: - subscriber: "Subscriber" de: talk-plugin-subscriber: subscriber: "Abonnent" +en: + talk-plugin-subscriber: + subscriber: "Subscriber" es: talk-plugin-subscriber: subscriber: "Subscriptor" fr: talk-plugin-subscriber: subscriber: "Subscriber" +he: + talk-plugin-subscriber: + subscriber: "מנוי" nl_NL: talk-plugin-subscriber: subscriber: "Abonnee" diff --git a/plugins/talk-plugin-toxic-comments/README.md b/plugins/talk-plugin-toxic-comments/README.md index f158a5eb3..e649f5832 100644 --- a/plugins/talk-plugin-toxic-comments/README.md +++ b/plugins/talk-plugin-toxic-comments/README.md @@ -28,3 +28,4 @@ Configuration: [ms](https://www.npmjs.com/package/ms). (Default `300ms`) - `TALK_PERSPECTIVE_DO_NOT_STORE` - Whether the API stores or deletes the comment text and context from this request after it has been evaluated. Stored comments will be used for future research and community model building purposes to improve the API over time. (Default `true`) [Perspective API - Analyze Comment Request](https://github.com/conversationai/perspectiveapi/blob/master/api_reference.md#analyzecomment-request) - `TALK_PERSPECTIVE_SEND_FEEDBACK` - If set to `TRUE`, this plugin will send back moderation actions as feedback to [Perspective](http://perspectiveapi.com/) to improve their model. (Default `FALSE`) +- `TALK_PERSPECTIVE_MODEL` - Determines the Perspective API toxicity model that should be used, i.e. `TOXICITY` vs `SEVERE_TOXICITY`. A list of available models provided by the Perspective API can be found [here](https://github.com/conversationai/perspectiveapi/blob/master/api_reference.md#models). When displaying the toxicity score, this model will be used by default. If this model isn't available on the comment metadata (such as when the model has been changed), it will fall back to the stored `TOXICITY` model as Talk will always fetch that. (Default `SEVERE_TOXICITY`) diff --git a/plugins/talk-plugin-toxic-comments/client/translations.yml b/plugins/talk-plugin-toxic-comments/client/translations.yml index 4151b6d7c..cde2888a6 100644 --- a/plugins/talk-plugin-toxic-comments/client/translations.yml +++ b/plugins/talk-plugin-toxic-comments/client/translations.yml @@ -31,25 +31,7 @@ da: flags: reasons: comment: - toxic_comment: "Highly likely to be Toxic" -en: - error: - COMMENT_IS_TOXIC: | - Are you sure? The language in this comment might violate our community guidelines. - You can edit the comment or submit it for moderator review. - talk-plugin-toxic-comments: - unlikely: "Unlikely" - highly_likely: "Highly Likely" - possibly: "Possibly" - likely: "Likely" - toxic_comment: "Toxic Comment" - still_toxic: | - This edited comment might still violate our community guidelines. - Our moderation team will review your comment shortly. - flags: - reasons: - comment: - toxic_comment: "Highly likely to be Toxic" + toxic_comment: "Highly likely to be Toxic" de: error: COMMENT_IS_TOXIC: | @@ -68,6 +50,24 @@ de: reasons: comment: toxic_comment: "Höchstwahrscheinlich bösartig" +en: + error: + COMMENT_IS_TOXIC: | + Are you sure? The language in this comment might violate our community guidelines. + You can edit the comment or submit it for moderator review. + talk-plugin-toxic-comments: + unlikely: "Unlikely" + highly_likely: "Highly Likely" + possibly: "Possibly" + likely: "Likely" + toxic_comment: "Toxic Comment" + still_toxic: | + This edited comment might still violate our community guidelines. + Our moderation team will review your comment shortly. + flags: + reasons: + comment: + toxic_comment: "Highly likely to be Toxic" es: error: COMMENT_IS_TOXIC: | @@ -104,6 +104,22 @@ fr: reasons: comment: toxic_comment: "Highly likely to be Toxic" +he: + error: + COMMENT_IS_TOXIC: | + האם אתה בטוח? השפה שבתגובה זו עלולה להפר את הנחיות הקהילה שלנו. תוכל לערוך את ההערה או לשלוח אותה לביקורת של המתווך. + talk-plugin-toxic-comments: + unlikely: "לא סביר" + highly_likely: "סביר מאוד" + possibly: "יתכן" + likely: "סביר" + toxic_comment: "תגובה רעילה" + still_toxic: | + תגובה זו עדיין עשויה להפר את הנחיות הקהילה שלנו. צוות הפיקוח שלנו יבחן את ההערה שלך בקרוב. + flags: + reasons: + comment: + toxic_comment: "סביר מאוד להיות רעיל" nl_NL: error: COMMENT_IS_TOXIC: | @@ -140,6 +156,24 @@ pt_BR: reasons: comment: toxic_comment: "Highly likely to be Toxic" +sr: + error: + COMMENT_IS_TOXIC: | + Da li ste sigurni? Jezik u ovom komentaru može narušavati naša pravila diskusije. + Pregledajte komentar, ili ga svejdno pošaljite moderatoru na odobrenje. + talk-plugin-toxic-comments: + unlikely: "Malo verovatno" + highly_likely: "Vrlo verovatno" + possibly: "Moguće" + likely: "Verovatno" + toxic_comment: "Toksičan komentar" + still_toxic: | + Ovako preuređen komentar još uvek može narušavati naša pravila diskusije. + Naš moderatorski tim će uskro pregledati vaš komentar. + flags: + reasons: + comment: + toxic_comment: "Vrlo verovatno toksičan" zh_CN: error: COMMENT_IS_TOXIC: "您确定吗?此评论的表述可能违反了我们的社群指引方针。您可以编辑评论,或直接提交让管理人员审查。" diff --git a/plugins/talk-plugin-toxic-comments/server/config.js b/plugins/talk-plugin-toxic-comments/server/config.js index cc0c2daa0..1987049cb 100644 --- a/plugins/talk-plugin-toxic-comments/server/config.js +++ b/plugins/talk-plugin-toxic-comments/server/config.js @@ -9,6 +9,7 @@ const config = { API_TIMEOUT: ms(process.env.TALK_PERSPECTIVE_TIMEOUT || '300ms'), DO_NOT_STORE: process.env.TALK_PERSPECTIVE_DO_NOT_STORE || true, SEND_FEEDBACK: process.env.TALK_PERSPECTIVE_SEND_FEEDBACK === 'TRUE', + API_MODEL: process.env.TALK_PERSPECTIVE_MODEL || 'SEVERE_TOXICITY', }; if (process.env.NODE_ENV !== 'test' && !config.API_KEY) { diff --git a/plugins/talk-plugin-toxic-comments/server/perspective.js b/plugins/talk-plugin-toxic-comments/server/perspective.js index db6d0c8de..773c097fb 100644 --- a/plugins/talk-plugin-toxic-comments/server/perspective.js +++ b/plugins/talk-plugin-toxic-comments/server/perspective.js @@ -5,8 +5,10 @@ const { THRESHOLD, API_TIMEOUT, DO_NOT_STORE, + API_MODEL, } = require('./config'); const debug = require('debug')('talk:plugin:toxic-comments'); +const get = require('lodash/get'); // Load the global Talk configuration, we want to grab some variables.. const { ROOT_URL } = require('config'); @@ -55,7 +57,7 @@ async function getScores(text) { doNotStore: DO_NOT_STORE, requestedAttributes: { TOXICITY: {}, - SEVERE_TOXICITY: {}, + [API_MODEL]: {}, }, }); if (!data || data.error) { @@ -64,7 +66,7 @@ async function getScores(text) { TOXICITY: { summaryScore: null, }, - SEVERE_TOXICITY: { + [API_MODEL]: { summaryScore: null, }, }; @@ -74,20 +76,21 @@ async function getScores(text) { TOXICITY: { summaryScore: data.attributeScores.TOXICITY.summaryScore.value, }, - SEVERE_TOXICITY: { - summaryScore: data.attributeScores.SEVERE_TOXICITY.summaryScore.value, + [API_MODEL]: { + summaryScore: data.attributeScores[API_MODEL].summaryScore.value, }, }; } /** - * Get toxicity probability + * Get toxicity probability from the scores, trying first the selection model, + * but falling back to the `TOXICITY` model when the selected model isn't found. * * @param {object} scores scores as returned by `getScores` * @return {number} toxicity probability from 0 - 1.0 */ function getProbability(scores) { - return scores.SEVERE_TOXICITY.summaryScore; + return get(scores, API_MODEL, scores.TOXICITY).summaryScore; } /** diff --git a/plugins/talk-plugin-toxic-comments/server/resolvers.js b/plugins/talk-plugin-toxic-comments/server/resolvers.js index 8143b446e..5108c07bc 100644 --- a/plugins/talk-plugin-toxic-comments/server/resolvers.js +++ b/plugins/talk-plugin-toxic-comments/server/resolvers.js @@ -1,8 +1,15 @@ const get = require('lodash/get'); +const { API_MODEL } = require('./config'); module.exports = { Comment: { toxicity: comment => - get(comment, 'metadata.perspective.SEVERE_TOXICITY.summaryScore'), + // Try to get the score from the custom model first, but fall back to the + // TOXICITY score if it isn't provided. + get( + comment, + `metadata.perspective.${API_MODEL}.summaryScore`, + get(comment, 'metadata.perspective.TOXICITY.summaryScore') + ), }, }; diff --git a/plugins/talk-plugin-viewing-options/client/translations.yml b/plugins/talk-plugin-viewing-options/client/translations.yml index 903033af8..825e7440e 100644 --- a/plugins/talk-plugin-viewing-options/client/translations.yml +++ b/plugins/talk-plugin-viewing-options/client/translations.yml @@ -7,17 +7,17 @@ da: talk-plugin-viewing-options: viewing_options: "Viewing Options" sort: Sorting - filter: Filtering -en: - talk-plugin-viewing-options: - viewing_options: "Viewing Options" - sort: Sorting - filter: Filtering + filter: Filtering de: talk-plugin-viewing-options: viewing_options: "Ansichtsoptionen" sort: Sortieren filter: Filtern +en: + talk-plugin-viewing-options: + viewing_options: "Viewing Options" + sort: Sorting + filter: Filtering es: talk-plugin-viewing-options: viewing_options: "Opciones" @@ -28,6 +28,11 @@ fr: viewing_options: "Viewing Options" sort: Sorting filter: Filtering +he: + talk-plugin-viewing-options: + viewing_options: "אפשרויות צפייה" + sort: מיון + filter: סינון nl_NL: talk-plugin-viewing-options: viewing_options: "Weergave opties" @@ -38,6 +43,11 @@ pt_BR: viewing_options: "Ver opções" sort: Sorting filter: Filtering +sr: + talk-plugin-viewing-options: + viewing_options: "Opcije pregleda" + sort: Sortiranje + filter: Filterisanje zh_CN: talk-plugin-viewing-options: viewing_options: "查看选项" diff --git a/routes/api/v1/assets.js b/routes/api/v1/assets.js index 6e3d4266d..a8b043946 100644 --- a/routes/api/v1/assets.js +++ b/routes/api/v1/assets.js @@ -1,4 +1,5 @@ const express = require('express'); +const Joi = require('joi'); const router = express.Router(); const authorization = require('../../../middleware/authorization'); const { ErrHTTPNotFound } = require('../../../errors'); @@ -31,36 +32,63 @@ const FilterOpenAssets = (query, filter) => { } }; +const ListAssetsSchema = Joi.object({ + value: Joi.string() + .empty('') + .default(''), + field: Joi.string() + .empty('') + .default('publication_date'), + page: Joi.number() + .empty('') + .default(1) + .min(1), + asc: Joi.bool() + .empty('') + .default(false), + filter: Joi.string() + .empty('') + .valid(['all', 'open', 'closed']) + .default('all'), + limit: Joi.number() + .empty('') + .default(20) + .max(500) + .min(0), +}); + // List assets. router.get( '/', authorization.needed('ADMIN', 'MODERATOR'), async (req, res, next) => { - const { - value = '', - field = 'publication_date', - page = 1, - asc = 'false', - filter = 'all', - limit = 20, - } = req.query; + const { value: query, error: err } = Joi.validate( + req.query, + ListAssetsSchema, + {} + ); + if (err) { + return next(err); + } + + let { value, field, page, asc, filter, limit } = query; try { - const order = asc === 'true' ? 1 : -1; + const order = asc ? 1 : -1; const queryOpts = { sort: { [field]: order, created_at: order }, skip: (page - 1) * limit, - limit, + limit: limit, }; // Find all the assets. let [result, count] = await Promise.all([ - // Find the actuall assets. + // Find the actual assets. FilterOpenAssets(AssetsService.search({ value }), filter) .sort(queryOpts.sort) - .skip(parseInt(queryOpts.skip)) - .limit(parseInt(queryOpts.limit)) + .skip(queryOpts.skip) + .limit(queryOpts.limit) .lean(), // Get the count of actual assets. @@ -70,9 +98,9 @@ router.get( // Send back the asset data. res.json({ result, - limit: Number(limit), + limit, count, - page: Number(page), + page, totalPages: Math.ceil(count / (limit === 0 ? 1 : limit)), }); } catch (e) { diff --git a/services/moderation/phases/premod.js b/services/moderation/phases/premod.js index db1a3fd1b..36aba634e 100644 --- a/services/moderation/phases/premod.js +++ b/services/moderation/phases/premod.js @@ -9,9 +9,9 @@ module.exports = ( }, } ) => { - // If the settings say that we're in premod mode, then the comment is in - // premod status. - if (moderation === 'PRE') { + // If the settings say that we're in premod mode, or the user is flagged as + // always premod, then the comment is in premod status. + if (moderation === 'PRE' || ctx.user.status.alwaysPremod.status === true) { return { status: 'PREMOD', }; diff --git a/services/users.js b/services/users.js index 2ce0b7c15..e85ed67a2 100644 --- a/services/users.js +++ b/services/users.js @@ -207,6 +207,50 @@ class Users { return user; } + static async setAlwaysPremodStatus(id, status, assignedBy = null) { + let user = await User.findOneAndUpdate( + { + id, + 'status.alwaysPremod.status': { + $ne: status, + }, + }, + { + $set: { + 'status.alwaysPremod.status': status, + }, + $push: { + 'status.alwaysPremod.history': { + status, + assigned_by: assignedBy, + created_at: Date.now(), + }, + }, + }, + { + new: true, + runValidators: true, + } + ); + + if (!user) { + user = await User.findOne({ id }); + if (!user) { + throw new ErrNotFound(); + } + + if (user.status.alwaysPremod.status === status) { + return user; + } + + throw new Error( + 'always premod status change edit failed for an unknown reason' + ); + } + + return user; + } + static async setBanStatus(id, status, assignedBy = null, message) { let user = await User.findOneAndUpdate( { diff --git a/webpack.config.js b/webpack.config.js index e23aa1e2a..322ad8317 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -169,6 +169,7 @@ const config = { TALK_THREADING_LEVEL: '3', TALK_ADDTL_COMMENTS_ON_LOAD_MORE: '10', TALK_ASSET_COMMENTS_LOAD_DEPTH: '10', + TALK_ADDTL_REPLIES_ON_LOAD_MORE: '999999', TALK_REPLY_COMMENTS_LOAD_DEPTH: '3', TALK_DEFAULT_STREAM_TAB: 'all', TALK_DEFAULT_LANG: 'en',