auto-translate
veure els missatges traduïts automàticament a l'idioma que seleccioni. Pot tenir càrrecs suplementaris, veure la Documentació de Google",
+ "AutoTranslate_Change_Language_Description": "Canviar l'idioma d'autotraducció no traduirà els missatges anteriors.",
+ "AutoTranslate_GoogleAPIKey": "API Key Google",
"Available": "En línia",
"Available_agents": "Agents disponibles",
"Avatar": "Avatar",
@@ -225,6 +240,7 @@
"Back": "Torna",
"Back_to_applications": "Torna a les aplicacions",
"Back_to_integrations": "Torna a les integracions",
+ "Back_to_integration_detail": "Tornar al detall de la integració",
"Back_to_login": "Torna a identificar-me",
"Back_to_permissions": "Torna a permisos",
"Beta_feature_Depends_on_Video_Conference_to_be_enabled": "Característica Beta. Requereix que la videoconferència estigui activa.",
@@ -243,6 +259,7 @@
"busy_male": "ocupat",
"Busy_male": "Ocupat",
"by": "per",
+ "Content": "Contingut",
"cache_cleared": "Memòria cau esborrada",
"Cancel": "Cancel·la",
"Cancel_message_input": "Cancel·la",
@@ -254,6 +271,7 @@
"CAS_button_label_color": "Color de text del botó d'inici de sessió",
"CAS_button_label_text": "Etiqueta del botó d'inici de sessió",
"CAS_enabled": "Actiu",
+ "CAS_Login_Layout": "Plantilla de la identificació CAS",
"CAS_login_url": "Adreça URL d'inici de sessió SSO",
"CAS_login_url_Description": "Adreça URL d'inici de sessió del servei extern SSO. Ex: https://sso.example.undef/sso/login",
"CAS_popup_height": "Alçada de la finestra emergent d'inici de sessió",
@@ -292,6 +310,7 @@
"Choose_the_username_that_this_integration_will_post_as": "Tria el nom d'usuari amb el qual aquesta integració publicarà.",
"clear": "Esborra",
"clear_cache_now": "Esborra la memòria cau ara",
+ "clear_history": "Esborra l'historial",
"Clear_all_unreads_question": "Esborrar tots els missatges no llegits?",
"Click_here": "Fes clic aquí",
"Click_here_for_more_info": "Fes clic aquí per a més informació",
@@ -323,7 +342,9 @@
"Create_new": "Crea nou",
"Created_at": "Creat a",
"Created_at_s_by_s": "Creat a %s per %s",
+ "Created_at_s_by_s_triggered_by_s": "Creat el %s per %s i disparat per %s",
"CROWD_Reject_Unauthorized": "Rebutja no autoritzat",
+ "CRM_Integration": "Integració CRM",
"Current_Chats": "Xats actuals",
"Custom": "Personalitzat",
"Custom_Emoji": "Emoticona personalitzada",
@@ -338,10 +359,20 @@
"Custom_Fields": "Camps personalitzats",
"Custom_oauth_helper": "Per configurar el proveïdor OAuth, heu d'establir un URL de retorn (callback). Useu %s.", "Custom_oauth_unique_name": "Nom únic de OAuth personalitzat", + "Custom_Scripts": "Scripts personalitzats", "Custom_Script_Logged_In": "Script personalitzat per als usuaris en identificar-se", "Custom_Script_Logged_Out": "Script personalitzat per als usuaris en sortir", + "Custom_Sounds": "Sons personalitzats", + "Custom_Sound_Add": "Afegir so personalitzat", + "Custom_Sound_Delete_Warning": "L'eliminació d'un so no es pot revertir.", + "Custom_Sound_Error_Invalid_Sound": "So invàlid", + "Custom_Sound_Error_Name_Already_In_Use": "El nom del so personalitzat ja està en ús.", + "Custom_Sound_Has_Been_Deleted": "El so personalitzat s'ha esborrat.", + "Custom_Sound_Info": "Informació del so personalitzat", + "Custom_Sound_Saved_Successfully": "So personalitzat guardat correctament", "Custom_Translations": "Traduccions personalitzades", - "Custom_Translations_Description": "Ha de ser un objecte JSON vàlid on les claus són el codi de l'idioma i contenen un diccionari de clau (key) i traduccions. Exemple:
{\n \"en\": {\n \"key\": \"translation\"\n },\n \"ca\": {\n \"key\": \"traducció\"\n }\n}
",
+ "Custom_Translations_Description": "Ha de ser un objecte JSON vàlid on les claus són el codi de l'idioma i contenen un diccionari de clau i traducció. Exemple:{\n \"en\": {\n \"Channels\": \"Rooms\"\n },\n \"ca\": {\n \"Channels\": \"Sales\"\n }\n}
",
+ "CustomSoundsFilesystem": "Sistema d'arxius dels sons personalitzats",
"Dashboard": "Tauler",
"Date": "Data",
"Date_From": "De",
@@ -418,10 +449,14 @@
"Enable_Svg_Favicon": "Activa el favicon SVG",
"Encrypted_message": "Missatge xifrat",
"End_OTR": "Finalitza OTR",
+ "Enter_Alternative": "Mode alternatiu (envia amb Enter + Ctrl/Alt/Shift/CMD)",
"Enter_a_regex": "Introdueix una RegExp",
"Enter_a_room_name": "Introdueix un nom de sala",
"Enter_a_username": "Introdueix un nom d'usuari",
+ "Enter_Behaviour": "Comportament de la tecla Enter",
+ "Enter_Behaviour_Description": "Canvia si la tecla Enter envia el missatge o fa un salt de línia",
"Enter_name_here": "Introdueix el nom aquí",
+ "Enter_Normal": "Mode normal (envia amb Enter)",
"Enter_to": "Entra a",
"Error": "Error",
"Error_RocketChat_requires_oplog_tailing_when_running_in_multiple_instances": "Error: El Rocket.Chat requereix oplog tailing quan corre en múltiples instàncies",
@@ -500,6 +535,8 @@
"error-you-are-last-owner": "Ets l'últim propietari. Si us plau, estableix un nou propietari abans de sortir de la sala.",
"Error_changing_password": "Error en canviar la contrasenya",
"Esc_to": "Esc a",
+ "Event_Trigger": "Disparador d'esdeveniments",
+ "Event_Trigger_Description": "Selecciona quin tipus d'esdeveniment desencadenarà aquesta integració WebHook de sortida",
"every_30_minutes": "Cada 30 minuts",
"every_hour": "Cada hora",
"every_six_hours": "Cada 6 hores",
@@ -516,12 +553,19 @@
"File_exceeds_allowed_size_of_bytes": "L'arxiu supera la mida màxima de __size__.",
"File_not_allowed_direct_messages": "Compartició d'arxius no permesa als missatges directes.",
"File_type_is_not_accepted": "El tipus de fitxer no s'accepta.",
+ "File_uploaded": "Fitxer pujat",
"FileUpload": "Pujar arxius",
"FileUpload_Enabled": "Habilita pujar arxius",
"FileUpload_Disabled": "Les pujades de fitxers estan desactivades.",
"FileUpload_Enabled_Direct": "Compartició d'arxius activa als missatges directes",
"FileUpload_File_Empty": "Arxiu buit",
"FileUpload_FileSystemPath": "Ruta dels arxius",
+ "FileUpload_GoogleStorage_AccessId": "Acces Id del Google Storage",
+ "FileUpload_GoogleStorage_AccessId_Description": "L'Acces Id generalment és en format de correu-e, per exemple: \"exemple-prova@exemple.iam.gserviceaccount.com\"",
+ "FileUpload_GoogleStorage_Bucket": "Nom del Bucket Google Storage",
+ "FileUpload_GoogleStorage_Bucket_Description": "El nom del bucket on els arxius s'haurien de pujar.",
+ "FileUpload_GoogleStorage_Secret": "Secret Google Storage",
+ "FileUpload_GoogleStorage_Secret_Description": "Si us plau, segueix aquestes instruccions i enganxa el resultat aquí.",
"FileUpload_MaxFileSize": "Mida màxima de pujada (en bytes)",
"FileUpload_MediaType_NotAccepted": "Tipus d'arxius no acceptats",
"FileUpload_MediaTypeWhiteList": "Tipus d'arxius acceptats",
@@ -542,6 +586,7 @@
"Follow_social_profiles": "Segueix els nostres perfils, fes-nos un fork a GitHub i comparteix la teva opinió sobre Rocket.Chat al nostre tauler de Trello.",
"Food_and_Drink": "Menjar i beure",
"Footer": "Peu de pàgina",
+ "Fonts": "Fonts",
"For_your_security_you_must_enter_your_current_password_to_continue": "Per a la seva seguretat, ha de tornar a introduir la contrasenya per continuar",
"Force_Disable_OpLog_For_Cache": "Força la inhabilitació de OpLog per la cache",
"Force_Disable_OpLog_For_Cache_Description": "No s'utilitzarà OpLog per sincronitzar la cache tot i estar disponible",
@@ -551,6 +596,7 @@
"Forgot_Password_Description": "És possible utilitzar els marcadors: 10^x
o 2^x
o x*2
",
+ "Integration_Word_Trigger_Placement": "Posició indeterminada de paraula",
+ "Integration_Word_Trigger_Placement_Description": "S'hauria d'activar el disparador quan la paraula es troba en un lloc de la frase fora del començament?",
+ "Integration_updated": "La integració s'ha actualitzat.",
"Integrations": "Integracions",
"Integrations_for_all_channels": "Introdueix all_public_channels per escoltar a totes les sales públiques, all_private_groups per escoltar a tots els grups privats i all_direct_messages per escoltar tots els missatges directes.",
"InternalHubot": "Hubot intern",
@@ -654,8 +736,10 @@
"Invalid_pass": "La contrasenya no ha d'estar buida",
"Invalid_room_name": "%s no és un nom de sala vàlid,Aneu a [Site_URL] i proveu la millor solució de col·laboració a distància de codi lliure!
", "Invitation_HTML_Description": "Podeu utilitzar els següents marcadors:{\n \"en\": {\n \"key\": \"translation\"\n },\n \"pt\": {\n \"key\": \"tradução\"\n }\n}
",
+ "Custom_Translations_Description": "Validní JSON obsahující slovník. Například {\n \"en\": {\n \"Channels\": \"Rooms\"\n },\n \"pt\": {\n \"Channels\": \"Salas\"\n }\n}
",
"Dashboard": "Hlavní panel",
"Date": "Datum",
"Date_From": "Od",
diff --git a/packages/rocketchat-i18n/i18n/de-AT.i18n.json b/packages/rocketchat-i18n/i18n/de-AT.i18n.json
index d5e5f6368e34..249cdaa8ea4b 100644
--- a/packages/rocketchat-i18n/i18n/de-AT.i18n.json
+++ b/packages/rocketchat-i18n/i18n/de-AT.i18n.json
@@ -1,5 +1,5 @@
{
- "#channel": "#Kanal",
+ "#channel": "#Raum",
"0_Errors_Only": "0 - nur Fehler",
"1_Errors_and_Information": "1 - Fehler und Informationen",
"2_Erros_Information_and_Debug": "2 - Fehler, Informationen und Debug-Meldungen",
@@ -141,7 +141,7 @@
"Analytics_features_enabled": "Analyse - Funktionen aktiviert",
"Analytics_features_messages_Description": "Zeichnet benutzerdefinierte Ereignisse im Zusammenhang mit Aktionen eines Nutzer auf Nachrichten auf.",
"Analytics_features_rooms_Description": "Tracks benutzerdefinierte Ereignisse im Zusammenhang mit Aktionen auf einem Kanal oder einer Gruppe (erstellen, verlassen, löschen).",
- "Analytics_features_users_Description": "Tracks benutzerdefinierte Ereignisse im Zusammenhang mit Maßnahmen im Zusammenhang mit Benutzer (Passwort-Reset-Zeiten, Profilbild ändern, etc).",
+ "Analytics_features_users_Description": "Zeichnet benutzerdefinierte Ereignisse auf (Passwort-Reset-Zeiten, Profilbild ändern, etc).",
"and": "und",
"And_more": "Und __length__ mehr",
"Animals_and_Nature": "Tiere & Natur",
@@ -220,13 +220,13 @@
"CDN_PREFIX": "CDN-Präfix",
"Certificates_and_Keys": "Zertifikate und Schlüssel",
"Changing_email": "E-Mail-Adresse ändern",
- "channel": "Kanal",
- "Channel": "Kanal",
- "Channel_already_exist": "Der Kanal '#%s' ist bereits vorhanden.",
- "Channel_already_Unarchived": "Kanal mit dem Namen '#%s' ist bereits im unarchivierten Zustand",
- "Channel_Archived": "Kanal mit dem Namen '#%s' wurde erfolgreich archiviert",
- "Channel_doesnt_exist": "Der Kanal `#%s` existiert nicht.",
- "Channel_Unarchived": "Kanal mit dem Namen '#%s' ist nicht länger archiviert",
+ "channel": "Raum",
+ "Channel": "Raum",
+ "Channel_already_exist": "Der Raum '#%s' ist bereits vorhanden.",
+ "Channel_already_Unarchived": "Raum mit dem Namen '#%s' ist bereits im unarchivierten Zustand",
+ "Channel_Archived": "Raum mit dem Namen '#%s' wurde erfolgreich archiviert",
+ "Channel_doesnt_exist": "Der Raum `#%s` existiert nicht.",
+ "Channel_Unarchived": "Raum mit dem Namen '#%s' ist nicht länger archiviert",
"Channels": "Kanäle (für alle einsehbar)",
"Channels_list": "Liste der Kanäle",
"Chat_button": "Chatbutton",
@@ -265,7 +265,7 @@
"Count": "Zähler",
"Cozy": "Angenehm",
"Create": "Erstellen",
- "Create_A_New_Channel": "Neuen Kanal einrichten",
+ "Create_A_New_Channel": "Neuen Raum einrichten",
"Create_new": "Neu erstellen",
"Created_at": "Erstellt am",
"Created_at_s_by_s": "Erstellt am %s von %s",
@@ -317,7 +317,7 @@
"Drop_to_upload_file": "Ablegen, um Datei hochzuladen",
"Dry_run": "Probelauf",
"Dry_run_description": "Es wird nur eine E-Mail an die selbe Adresse wie im Feld Absender geschickt. Die E-Mailadresse muss einem gültigen Benutzer gehören.",
- "Duplicate_archived_channel_name": "Ein archivierter Kanal mit dem Namen '%s' existiert bereits.",
+ "Duplicate_archived_channel_name": "Ein archivierter Raum mit dem Namen '%s' existiert bereits.",
"Duplicate_archived_private_group_name": "Eine archivierte private Chatgruppe mit dem Namen '%s' existiert bereits.",
"Duplicate_channel_name": "Ein Chat mit dem Namen '%s' existiert bereits",
"Duplicate_private_group_name": "Eine private Chatgruppe mit dem Namen '%s' existiert bereits.",
@@ -357,7 +357,7 @@
"Error": "Fehler",
"error-action-not-allowed": "__action__ ist nicht erlaubt",
"error-application-not-found": "Anwendung nicht gefunden",
- "error-archived-duplicate-name": "Es gibt einen archivierten Kanal mit dem Namen '__room_name__'",
+ "error-archived-duplicate-name": "Es gibt einen archivierten Raum mit dem Namen '__room_name__'",
"error-avatar-invalid-url": "Ungültige Avatar-URL: __url__",
"error-avatar-url-handling": "Fehler beim Bearbeiten der Avatar-Einstellung von einer URL (__url__) für __username__",
"error-cant-invite-for-direct-room": "Nutzer können nicht in private Chaträume eingeladen werden.",
@@ -374,7 +374,7 @@
"error-input-is-not-a-valid-field": "__input__ ist kein gültiges __field__",
"error-invalid-arguments": "Ungültige Argumente",
"error-invalid-asset": "Ungültiger Wert",
- "error-invalid-channel": "Ungültiger Kanal.",
+ "error-invalid-channel": "Ungültiger Raum.",
"error-invalid-channel-start-with-chars": "Ungültiger Kanal. Beginnen Sie mit @ oder #",
"error-invalid-custom-field": "Ungültiges benutzerdefiniertes Feld",
"error-invalid-custom-field-name": "Unzulässiger Name für ein benutzerdefiniertes Feld. Benutze nur Buchstaben, Nummern, Binde- und Unterstriche.",
@@ -383,6 +383,7 @@
"error-invalid-email": "Ungültige E-Mail-Adresse: __email__",
"error-invalid-file-height": "Ungültige Dateihöhe",
"error-invalid-file-type": "Ungültiges Dateiformat.",
+ "error-direct-message-file-upload-not-allowed": "Dateiaustausch ist in direkten Nachrichten nicht möglich.",
"error-invalid-file-width": "Ungültige Dateibreite",
"error-invalid-from-address": "Sie haben eine ungültige E-Mail-Adresse als Empfänger angegeben.",
"error-invalid-integration": "Ungültige Integration",
@@ -434,6 +435,7 @@
"File_type_is_not_accepted": "Feldtyp nicht akzeptiert.",
"FileUpload": "Dateien hochladen",
"FileUpload_Enabled": "Hochladen von Dateien aktivieren",
+ "FileUpload_Enabled_Direct": "Dateiaustausch ist in direkten Nachrichten möglich.",
"FileUpload_File_Empty": "Datei ist leer",
"FileUpload_FileSystemPath": "Systempfad",
"FileUpload_MaxFileSize": "Max. Größe für hochgeladene Dateien (in Bytes)",
@@ -521,6 +523,7 @@
"Integration_Incoming_WebHook": "Eingehende WebHook-Integration",
"Integration_New": "Neue Integration",
"Integration_Outgoing_WebHook": "Ausgehende WebHook-Integration",
+ "Integration_Word_Trigger_Placement_Description": "Soll das auslösende Wort irgendwo im Satz stehen und nicht nur am Anfang? ",
"Integration_updated": "Die Integration wurde aktualisiert.\n",
"Integrations": "Integrationen",
"InternalHubot": "Interner Hubot",
@@ -543,7 +546,7 @@
"Invitation_HTML_Description": "Sie können die folgenden Platzhalter verwenden: {\n \"role\": {\n \"type\": \"select\",\n \"defaultValue\": \"student\",\n \"options\": [\"teacher\", \"student\"],\n \"required\": true,\n \"modifyRecordField\": {\n \"array\": true,\n \"field\": \"roles\"\n }\n },\n \"twitter\": {\n \"type\": \"text\",\n \"required\": true,\n \"minLength\": 2,\n \"maxLength\": 10\n }\n}
",
"Accounts_denyUnverifiedEmail": "Nicht verifizierte E-Mail-Adressen ablehnen",
"Accounts_EmailVerification": "E-Mail-Verifizierung",
"Accounts_EmailVerification_Description": "Um diese Funktion nutzen zu können, stellen Sie bitte sicher, dass ihre SMTP-Einstellungen korrekt sind.",
@@ -45,7 +46,7 @@
"Accounts_Iframe_api_url": "API-URL",
"Accounts_iframe_enabled": "aktiviert",
"Accounts_iframe_url": "iFrame-URL",
- "Accounts_LoginExpiration": "Ablauffrist der Anmeldung",
+ "Accounts_LoginExpiration": "Ablauffrist der Anmeldung in Tagen",
"Accounts_ManuallyApproveNewUsers": "Neue Benutzer manuell aktivieren",
"Accounts_OAuth_Custom_Authorize_Path": "Autorisierungspfad",
"Accounts_OAuth_Custom_Button_Color": "Buttonfarbe",
@@ -55,47 +56,51 @@
"Accounts_OAuth_Custom_id": "ID",
"Accounts_OAuth_Custom_Identity_Path": "Identitätspfad",
"Accounts_OAuth_Custom_Login_Style": "Anmeldungsart",
+ "Accounts_OAuth_Custom_Merge_Users": "Benutzer zusammenführen",
"Accounts_OAuth_Custom_Scope": "Bereich",
- "Accounts_OAuth_Custom_Secret": "Secret",
+ "Accounts_OAuth_Custom_Secret": "Geheimer Schlüssel",
"Accounts_OAuth_Custom_Token_Path": "Pfad des Token",
"Accounts_OAuth_Custom_Token_Sent_Via": "Token gesendet über",
+ "Accounts_OAuth_Custom_Username_Field": "Benutzernamen Feld",
"Accounts_OAuth_Facebook": "Anmeldung über Facebook erlauben",
"Accounts_OAuth_Facebook_callback_url": "Facebook-Callback-URL",
"Accounts_OAuth_Facebook_id": "Facebook-App-ID",
- "Accounts_OAuth_Facebook_secret": "Facebook-Secret",
+ "Accounts_OAuth_Facebook_secret": "Geheimer Facebook Schlüssel ",
"Accounts_OAuth_Github": "OAuth aktivieren",
"Accounts_OAuth_Github_callback_url": "GitHub-Callback-URL",
"Accounts_OAuth_GitHub_Enterprise": "OAuth aktiviert",
"Accounts_OAuth_GitHub_Enterprise_callback_url": "GitHub-Enterprise-Callback-URL",
"Accounts_OAuth_GitHub_Enterprise_id": "Client-ID",
- "Accounts_OAuth_GitHub_Enterprise_secret": "Client-Secret",
+ "Accounts_OAuth_GitHub_Enterprise_secret": "Geheimer Client Schlüssel",
"Accounts_OAuth_Github_id": "Client-ID",
- "Accounts_OAuth_Github_secret": "Client-Secret",
+ "Accounts_OAuth_Github_secret": "Geheimer Client Schlüssel",
"Accounts_OAuth_Gitlab": "OAuth aktiviert",
"Accounts_OAuth_Gitlab_callback_url": "GitLab-Callback-URL",
"Accounts_OAuth_Gitlab_id": "GitLab-ID",
- "Accounts_OAuth_Gitlab_secret": "Client-Secret",
+ "Accounts_OAuth_Gitlab_secret": "Geheimer Client Schlüssel",
"Accounts_OAuth_Google": "Google-Anmeldung erlauben",
"Accounts_OAuth_Google_callback_url": "Google-Callback-URL",
"Accounts_OAuth_Google_id": "Google-ID",
- "Accounts_OAuth_Google_secret": "Google-Secret",
- "Accounts_OAuth_Linkedin": "Anmeldung über LinkedIn erlauben",
+ "Accounts_OAuth_Google_secret": "Geheimer Google Schlüssel",
+ "Accounts_OAuth_Linkedin": "LinkedIn-Anmeldung erlauben",
"Accounts_OAuth_Linkedin_callback_url": "LinkedIn-Callback-URL",
"Accounts_OAuth_Linkedin_id": "LinkedIn-ID",
- "Accounts_OAuth_Linkedin_secret": "Linkeding-Secret",
- "Accounts_OAuth_Meteor": "Anmeldung über Meteor erlauben",
+ "Accounts_OAuth_Linkedin_secret": "Geheimer LinkedIn Schlüssel",
+ "Accounts_OAuth_Meteor": "Meteor-Anmeldung erlauben",
"Accounts_OAuth_Meteor_callback_url": "Meteor-Callback-URL",
"Accounts_OAuth_Meteor_id": "Meteor-ID",
- "Accounts_OAuth_Meteor_secret": "Meteor-Secret",
+ "Accounts_OAuth_Meteor_secret": "Geheimer Meteor Schlüssel",
"Accounts_OAuth_Twitter": "Anmeldung über Twitter erlauben",
"Accounts_OAuth_Twitter_callback_url": "Twitter-Callback-URL",
"Accounts_OAuth_Twitter_id": "Twitter-ID",
- "Accounts_OAuth_Twitter_secret": "Twitter-Secret",
- "Accounts_OAuth_Wordpress": "Anmeldung über Wordpress",
+ "Accounts_OAuth_Twitter_secret": "Geheimer Twitter Schlüssel",
+ "Accounts_OAuth_Wordpress": "Wordpress-Anmeldung erlauben",
"Accounts_OAuth_Wordpress_callback_url": "Wordpress-Callback-URL",
"Accounts_OAuth_Wordpress_id": "WordPress-ID",
- "Accounts_OAuth_Wordpress_secret": "Wordpress-Secret",
+ "Accounts_OAuth_Wordpress_secret": "Geheimer WordPress Schlüssel",
"Accounts_PasswordReset": "Passwort zurücksetzen",
+ "Accounts_Registration_AuthenticationServices_Default_Roles": "Standardrolle für Authentifizierungsdienste",
+ "Accounts_Registration_AuthenticationServices_Default_Roles_Description": "Standardrollen die Benutzern zugewiesen werden, die sich über Authentifizierungsdienste registrieren",
"Accounts_Registration_AuthenticationServices_Enabled": "Anmeldung mit Authentifizierungsdiensten",
"Accounts_RegistrationForm": "Anmeldeformular",
"Accounts_RegistrationForm_Disabled": "Deaktiviert",
@@ -106,6 +111,8 @@
"Accounts_RegistrationForm_SecretURL_Description": "Sie müssen eine zufällige Zeichenfolge, die der Registrierungs-URL hinzugefügt wird, angeben. Beispiel: https://demo.rocket.chat/register/[secret_hash]",
"Accounts_RequireNameForSignUp": "Namen für die Anmeldung verlangen",
"Accounts_RequirePasswordConfirmation": "Passwortbestätigung erforderlich",
+ "Accounts_SetDefaultAvatar": "Standard Avatar setzen",
+ "Accounts_SetDefaultAvatar_Description": "Versuche Standardavatar über OAuth oder Gravatar zu bestimmen",
"Accounts_ShowFormLogin": "Anmeldeformular zeigen",
"Accounts_UseDefaultBlockedDomainsList": "Standardliste für blockierte Domains verwenden",
"Accounts_UseDNSDomainCheck": "DNS-Domain-Check verwenden",
@@ -117,6 +124,7 @@
"Add": "Hinzufügen",
"Add_agent": "Agent hinzufügen",
"Add_custom_oauth": "Benutzerdefiniertes OAuth-Konto hinzufügen",
+ "Add_Domain": "Domain hinzufügen",
"Add_manager": "Manager hinzufügen",
"Add_user": "Benutzer hinzufügen",
"Add_User": "Benutzer hinzufügen",
@@ -134,21 +142,26 @@
"Alias": "Alias",
"Alias_Format": "Alias Format",
"Alias_Format_Description": "Nachricht von Slack mit einem Alias importieren; %s wird mit dem Benutzernamen ersetzt. Wenn Feld leer bleibt, wird kein Alias benutzt.",
+ "Alias_Set": "Alias setzen",
"All": "Alle",
"All_channels": "Alle Kanäle",
"All_logs": "Alle Protokolle",
"All_messages": "Alle Nachrichten",
"Allow_Invalid_SelfSigned_Certs": "Ungültige und selbstsignierte SSL-Zertifikate erlauben",
"Allow_Invalid_SelfSigned_Certs_Description": "Ungültige und selbstsignierte SSL-Zertifikate für die Link-Validierung und die Vorschau zulassen.",
- "Analytics_features_enabled": "Analyse - Funktionen aktiviert",
+ "Always_open_in_new_window": "Immer in neuem Fenster öffnen",
+ "Analytics_features_enabled": "Funktionen aktiviert",
"Analytics_features_messages_Description": "Zeichnet benutzerdefinierte Ereignisse im Zusammenhang mit Aktionen eines Nutzer auf Nachrichten auf.",
"Analytics_features_rooms_Description": "Zeichnet benutzerdefinierte Ereignisse im Zusammenhang mit Aktionen in einem Kanal oder einer Gruppe (erstellen, verlassen, löschen) auf.",
- "Analytics_features_users_Description": "Zeichnet benutzerdefinierte Ereignisse im Zusammenhang mit Maßnahmen im Zusammenhang mit Benutzer (Passwort-Reset-Zeiten, Profilbild ändern, etc) auf.",
+ "Analytics_features_users_Description": "Zeichnet benutzerdefinierte Ereignisse (Passwort-Reset-Zeiten, Profilbild ändern, etc) auf.",
"and": "und",
"And_more": "Und __length__ mehr",
"Animals_and_Nature": "Tiere & Natur",
"API": "API",
+ "API_Allow_Infinite_Count_Description": "Erlaube Rückgabe von REST API Ergebnissen in einem einzigen Abruf",
"API_Analytics": "Analytics",
+ "API_CORS_Origin": "CORS Origin",
+ "API_Default_Count": "Standard Anzahl",
"API_Embed": "Einbetten",
"API_EmbedDisabledFor": "Einbettungen für Benutzer deaktivieren",
"API_EmbedDisabledFor_Description": "Durch Kommata getrennte Liste von Benutzernamen",
@@ -162,13 +175,13 @@
"API_Token": "API-Token",
"API_User_Limit": "User Limit für das Hinzufügen aller Benutzer auf Kanal",
"API_Wordpress_URL": "Wordpress-URL",
- "Apiai_Key": "Api.ai Key",
- "Apiai_Language": "Api.ai Sprache",
+ "Apiai_Key": "Api.ai-Schlüssel",
+ "Apiai_Language": "Api.ai-Sprache",
"Appearance": "Erscheinungsbild",
"Application_added": "Die Anwendung wurde hinzugefügt.",
"Application_Name": "Name der Anwendung",
"Application_updated": "Die Anwendung wurde aktualisiert.",
- "Apply_and_refresh_all_clients": "Alle Clients anwenden und aktualisieren",
+ "Apply_and_refresh_all_clients": "Anwenden und alle Clients aktualisieren",
"Archive": "Archivieren",
"are_also_typing": "schreiben auch",
"are_typing": "schreiben",
@@ -398,6 +411,7 @@
"error-invalid-email": "Ungültige E-Mail-Adresse: __email__",
"error-invalid-file-height": "Ungültige Dateihöhe",
"error-invalid-file-type": "Ungültiges Dateiformat",
+ "error-direct-message-file-upload-not-allowed": "Dateiaustausch ist in direkten Nachrichten nicht möglich.",
"error-invalid-file-width": "Ungültige Dateibreite",
"error-invalid-from-address": "Sie haben eine ungültige E-Mail-Adresse als Empfänger angegeben.",
"error-invalid-integration": "Ungültige Integration",
@@ -452,9 +466,11 @@
"Field_removed": "Feld entfernt",
"Field_required": "Feld erforderlich",
"File_exceeds_allowed_size_of_bytes": "Die Datei ist größer als das erlaubte Maximum von __size__ Bytes",
+ "File_not_allowed_direct_messages": "Dateiaustausch ist in direkten Nachrichten nicht möglich.",
"File_type_is_not_accepted": "Feldtyp nicht akzeptiert.",
"FileUpload": "Dateien hochladen",
"FileUpload_Enabled": "Hochladen von Dateien aktivieren",
+ "FileUpload_Enabled_Direct": "Dateiaustausch ist in direkten Nachrichten möglich.",
"FileUpload_File_Empty": "Datei ist leer",
"FileUpload_FileSystemPath": "Systempfad",
"FileUpload_MaxFileSize": "Max. Größe für hochgeladene Dateien (in Bytes)",
@@ -555,6 +571,7 @@
"Integration_Incoming_WebHook": "Eingehende WebHook-Integration",
"Integration_New": "Neue Integration",
"Integration_Outgoing_WebHook": "Ausgehende WebHook-Integration",
+ "Integration_Word_Trigger_Placement_Description": "Soll das auslösende Wort irgendwo im Satz stehen und nicht nur am Anfang? ",
"Integration_updated": "Die Integration wurde aktualisiert.\n",
"Integrations": "Integrationen",
"InternalHubot": "Interner Hubot",
@@ -593,7 +610,7 @@
"Join_audio_call": "Anruf beitreiten",
"Join_default_channels": "Standardkanälen beitreten",
"Join_the_Community": "Trete der Community bei",
- "Join_the_given_channel": "Angegebenen Kanal beitreten",
+ "Join_the_given_channel": "Diesem Kanal beitreten",
"Join_video_call": "Videoanruf beitreten",
"Joined": "Beigetreten",
"Jump": "Springen",
@@ -730,8 +747,8 @@
"Message_AllowEditing": "Die Bearbeitung von Nachrichten erlauben",
"Message_AllowEditing_BlockEditInMinutes": "Bearbeiten von Nachrichten nach (in Minuten - 0 zum deaktivieren) blockieren ",
"Message_AllowEditing_BlockEditInMinutesDescription": "Geben Sie eine 0 ein, um das Bearbeiten von Nachrichten jederzeit zu erlauben.",
- "Message_AllowPinning": "Das Fixieren von Nachrichten erlauben",
- "Message_AllowPinning_Description": "Benutzern das Fixieren von Nachrichten in Kanälen erlauben",
+ "Message_AllowPinning": "Das Anheften von Nachrichten erlauben",
+ "Message_AllowPinning_Description": "Benutzern das Anheften von Nachrichten in Kanälen erlauben",
"Message_AllowStarring": "Erlaube es, Nachrichten zu markieren",
"Message_AlwaysSearchRegExp": "Beim Suchen immer RegExp verwenden",
"Message_AlwaysSearchRegExp_Description": "Wir empfehlen `True` zu benutzen, wenn ihre Sprache für die MongoDB-Textsuche nicht unterstützt wird.",
@@ -880,7 +897,7 @@
"People": "Menschen",
"Permalink": "Permalink",
"Permissions": "Berechtigungen",
- "Pin_Message": "Nachricht fixieren",
+ "Pin_Message": "Nachricht anheften",
"Pinned_a_message": "hat eine Nachricht angeheftet:",
"Pinned_Messages": "Fixierte Nachrichten",
"PiwikAnalytics_siteId_Description": "Die Website-ID zur Identifizierung dieser Website. Beispiel: 17",
@@ -1184,7 +1201,7 @@
"Unmute_someone_in_room": "Jemanden das Chatten in einem Raum wieder erlauben",
"Unmute_user": "Benutzern das Chatten erlauben ",
"Unnamed": "Unbenannt",
- "Unpin_Message": "Nachicht nicht mehr fixieren",
+ "Unpin_Message": "Nachicht nicht mehr anheften",
"Unread_Alert": "Über Ungelesenes benachrichtigen",
"Unread_Rooms": "Ungelesene Räume",
"Unread_Rooms_Mode": "Ungelesene Räume aufgelistet anzeigen ",
diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json
index 84400e7440f9..e08f9931ad8c 100644
--- a/packages/rocketchat-i18n/i18n/en.i18n.json
+++ b/packages/rocketchat-i18n/i18n/en.i18n.json
@@ -33,7 +33,7 @@
"Accounts_BlockedDomainsList_Description": "Comma-separated list of blocked domains",
"Accounts_BlockedUsernameList": "Blocked Username List",
"Accounts_BlockedUsernameList_Description": "Comma-separated list of blocked usernames (case-insensitive)",
- "Accounts_CustomFields_Description": "Should be a valid JSON where keys are the field names containing a dictionary of field settings. Example:{\n\t\"role\": {\n\t\t\"type\": \"select\",\n\t\t\"defaultValue\": \"student\",\n\t\t\"options\": [\"teacher\", \"student\"],\n\t\t\"required\": true,\n\t\t\"modifyRecordField\": {\n\t\t\t\"array\": true,\n\t\t\t\"field\": \"roles\"\n\t\t}\n\t},\n\t\"twitter\": {\n\t\t\"type\": \"text\",\n\t\t\"required\": true,\n\t\t\"minLength\": 2,\n\t\t\"maxLength\": 10\n\t}\n}
",
+ "Accounts_CustomFields_Description": "Should be a valid JSON where keys are the field names containing a dictionary of field settings. Example:{\n \"role\": {\n \"type\": \"select\",\n \"defaultValue\": \"student\",\n \"options\": [\"teacher\", \"student\"],\n \"required\": true,\n \"modifyRecordField\": {\n \"array\": true,\n \"field\": \"roles\"\n }\n },\n \"twitter\": {\n \"type\": \"text\",\n \"required\": true,\n \"minLength\": 2,\n \"maxLength\": 10\n }\n}
",
"Accounts_denyUnverifiedEmail": "Deny unverified email",
"Accounts_EmailVerification": "Email Verification",
"Accounts_EmailVerification_Description": "Make sure you have correct SMTP settings to use this feature",
@@ -99,6 +99,8 @@
"Accounts_OAuth_Wordpress_id": "WordPress Id",
"Accounts_OAuth_Wordpress_secret": "WordPress Secret",
"Accounts_PasswordReset": "Password Reset",
+ "Accounts_OAuth_Proxy_host": "Proxy Host",
+ "Accounts_OAuth_Proxy_services": "Proxy Services",
"Accounts_Registration_AuthenticationServices_Default_Roles": "Default Roles for Authentication Services",
"Accounts_Registration_AuthenticationServices_Default_Roles_Description": "Default roles (comma-separated) users will be given when registering through authentication services",
"Accounts_Registration_AuthenticationServices_Enabled": "Registration with Authentication Services",
@@ -154,6 +156,8 @@
"Analytics_features_messages_Description": "Tracks custom events related to actions a user does on messages.",
"Analytics_features_rooms_Description": "Tracks custom events related to actions on a channel or group (create, leave, delete).",
"Analytics_features_users_Description": "Tracks custom events related to actions related to users (password reset times, profile picture change, etc).",
+ "Analytics_Google": "Google Analytics",
+ "Analytics_Google_id": "Tracking ID",
"and": "and",
"And_more": "And __length__ more",
"Animals_and_Nature": "Animals & Nature",
@@ -215,6 +219,12 @@
"AutoLinker_Urls_TLD": "AutoLinker TLD URLs",
"AutoLinker_Urls_www": "AutoLinker 'www' URLs",
"AutoLinker_UrlsRegExp": "AutoLinker URL Regular Expression",
+ "Automatic_Translation": "Automatic Translation",
+ "Auto_Translate": "Auto-Translate",
+ "AutoTranslate_Enabled": "Enable Auto-Translate",
+ "AutoTranslate_Enabled_Description": "Enabling auto-translation will allow people with the auto-translate
permission to have all messages automatically translated into their selected language. Fees may apply, see Google's Documentation",
+ "AutoTranslate_Change_Language_Description": "Changing the auto-translate language does not translate previous messages.",
+ "AutoTranslate_GoogleAPIKey": "Google API Key",
"Available": "Available",
"Available_agents": "Available agents",
"Avatar": "Avatar",
@@ -361,7 +371,7 @@
"Custom_Sound_Info": "Custom Sound Info",
"Custom_Sound_Saved_Successfully": "Custom sound saved successfully",
"Custom_Translations": "Custom Translations",
- "Custom_Translations_Description": "Should be a valid JSON where keys are languages containing a dictionary of key and translations. Example:{\n\t\"en\": {\n\t\t\"key\": \"translation\"\n\t},\n\t\"pt\": {\n\t\t\"key\": \"tradução\"\n\t}\n}
",
+ "Custom_Translations_Description": "Should be a valid JSON where keys are languages containing a dictionary of key and translations. Example:{\n \"en\": {\n \"Channels\": \"Rooms\"\n },\n \"pt\": {\n \"Channels\": \"Salas\"\n }\n}
",
"CustomSoundsFilesystem": "Custom Sounds Filesystem",
"Dashboard": "Dashboard",
"Date": "Date",
@@ -726,6 +736,7 @@
"Invalid_pass": "The password must not be empty",
"Invalid_room_name": "%s is not a valid room name,{\n \"en\": {\n \"key\": \"translation\"\n },\n \"pt\": {\n \"key\": \"tradução\"\n }\n}
",
+ "Custom_Translations_Description": "Treba biti ispravan JSON gdje su ključevi jezici koji zadrže riječnik ključeva i prijevoda. Npr: \n {\n \"en\": {\n \"Channels\": \"Rooms\"\n },\n \"pt\": {\n \"Channels\": \"Salas\"\n }\n}
",
"Dashboard": "Kontrolna ploča",
"Date": "Datum",
"Date_From": "Od",
@@ -535,7 +542,7 @@
"Hide_Room_Warning": "Jeste li sigurni da želite sakriti sobu \"%s\"?",
"Hide_usernames": "Sakrij korisnička imena",
"Highlights": "Istaknuto",
- "Highlights_How_To": "Kako bi bilo obaviješteni kada netko spomene neku riječ i li frazu, dodajte ju ovdje. Riječi i fraze odvojite zarezima. Ne ovisi kapitalizaciji.",
+ "Highlights_How_To": "Kako bi bili obaviješteni kada netko spomene neku riječ i li frazu, dodajte ju ovdje. Riječi i fraze odvojite zarezima. Ne ovisi kapitalizaciji.",
"Highlights_List": "Označite riječi",
"History": "Povijest",
"Host": "Domaćin",
@@ -587,6 +594,12 @@
"Integration_added": "Integracija je dodana",
"Integration_Incoming_WebHook": "Dolazni WebHook integracija",
"Integration_New": "Nova integracija",
+ "Integrations_Outgoing_Type_RoomArchived": "Soba je arhivirana",
+ "Integrations_Outgoing_Type_RoomCreated": "Soba je stvorena (javna i privatna)",
+ "Integrations_Outgoing_Type_RoomJoined": "Korisnik se pridružio sobi",
+ "Integrations_Outgoing_Type_RoomLeft": "Korisnik je napustio sobu",
+ "Integrations_Outgoing_Type_SendMessage": "Poruka je poslana",
+ "Integrations_Outgoing_Type_UserCreated": "Korisnik je stvoren",
"Integration_Outgoing_WebHook": "Odlazna WebHook integracija",
"Integration_updated": "Integracija je ažurirana",
"Integrations": "Integracije",
@@ -699,6 +712,7 @@
"LDAP_Use_Custom_Domain_Search_Description": "Napišite vlastiti filter za pretraživanje korisnika u LDAP poslužitelju.",
"LDAP_Username_Field": "Polje za Korisničko ime",
"LDAP_Username_Field_Description": "Koje polje će se koristiti kao *username* za nove korisnike. Ostavite prazno za korištenje korisničkog imena s prijave. Tovább a [Site_URL], és próbálja a legjobb nyílt forráskódú chat megoldást ma elérhető!
", "Accounts_Enrollment_Email_Description": "Lehet használni [name], [fname], [lname] a felhasználó teljes nevét, keresztnevét vagy vezetéknevét, ill.%s.", "Custom_oauth_unique_name": "Egyedi OAuth egyedi nevet", + "Custom_Scripts": "Egyéni Srcipt", "Custom_Script_Logged_In": "Egyedi szkript bejelentkezett felhasználóknak", "Custom_Script_Logged_Out": "Egyedi szkript kijelentkezett felhasználó", + "Custom_Sounds": "Egyéni Hangok", + "Custom_Sound_Add": "Egyéni hang hozzáadása", + "Custom_Sound_Delete_Warning": "A hang törlése nem vonható vissza.", + "Custom_Sound_Error_Invalid_Sound": "Érvénytelen hang", + "Custom_Sound_Error_Name_Already_In_Use": "Ez az egyéni hang már használatban van.", + "Custom_Sound_Has_Been_Deleted": "Az egyéni hang törölve lett.", + "Custom_Sound_Info": "Egyéni hang infó", + "Custom_Sound_Saved_Successfully": "Az egyéni hang sikeresen mentve", + "Custom_Translations": "Egyéni fordítás", "Dashboard": "Műszerfal", "Date": "Dátum", "days": "napok", @@ -429,8 +461,11 @@ "Field": "Mező", "Field_removed": "Field eltávolított", "File_exceeds_allowed_size_of_bytes": "Fájl mérete meghaladja a megengedett méretet a __size__ bájt", + "File_uploaded": "Fájl feltöltve", "FileUpload": "Fájlfeltöltés", "FileUpload_Enabled": "Fájlfeltöltések Enabled", + "FileUpload_Disabled": "Fájl feltöltés nem lehetséges.", + "FileUpload_Enabled_Direct": "Fájl feltöltés engedélyezése a közvetlen üzeneteknél", "FileUpload_File_Empty": "Fájl üres", "FileUpload_FileSystemPath": "rendszer Path", "FileUpload_MaxFileSize": "Feltölthető legnagyobb fájlméret (bájtban)", @@ -455,7 +490,14 @@ "Force_SSL": "Force SSL", "Force_SSL_Description": "* Figyelem! * _Force SSL_ soha nem lehet fordított proxy. Ha van egy fordított proxy, meg kell tennie az átirányítást OTT. Ez a lehetőség fennáll telepítések mint Heroku, amely nem teszi lehetővé az átirányítás konfiguráció a fordított proxy.", "Forgot_password": "Elfelejtetted a jelszavad?", + "Forgot_Password_Email_Subject": "[Site_Name] - jelszó visszaállítva", + "Forgot_Password_Email": "Kattints ide a jelszó visszaállításához.", + "Forward": "Előre", + "Forward_chat": "Chat továbbítása", + "Forward_to_department": "Továbbítás a részlegnek", + "Forward_to_user": "Továbbítás a felhasználónak", "Frequently_Used": "gyakran használt", + "Friday": "Péntek", "From": "Ból ből", "From_Email": "az e-mailben", "From_email_warning": "Figyelmeztetés: A mező van kitéve az e-mail szerver beállításait.", @@ -464,10 +506,17 @@ "Give_a_unique_name_for_the_custom_oauth": "Adj egy egyedi nevet az egyéni OAuth", "Give_the_application_a_name_This_will_be_seen_by_your_users": "Adjon az alkalmazás nevét. Ez látható lesz az Ön számára.", "Global": "Globális", + "GoogleCloudStorage": "Google Cloud Storage", "GoogleTagManager_id": "Google Címkekezelő Id", + "Guest_Pool": "Vendég medence", "Hash": "hash", "Header": "Fejléc", + "Header_and_Footer": "Fejléc és lábléc", + "Helpers": "Segítők", + "Hex_Color_Preview": "Hex színek elölnézet", "Hidden": "Rejtett", + "Hide_Avatars": "Avatar elrejtése", + "Hide_flextab": "Jobb oldali sáv elrejtése kattintással", "Hide_Group_Warning": "Biztosan el szeretné rejteni a csoport \" %s\"?", "Hide_Private_Warning": "Biztosan el szeretné rejteni a beszélgetés \" %s\"?", "Hide_room": "Szoba elrejtése", @@ -517,7 +566,7 @@ "Integration_Outgoing_WebHook": "Kimenő WebHook integráció", "Integration_updated": "Integration frissült", "Integrations": "Integráció", - "InternalHubot": "Internal Hubot", + "InternalHubot": "Belső Hubot", "InternalHubot_ScriptsToLoad": "Scripts betölteni", "InternalHubot_ScriptsToLoad_Description": "Kérjük, vesszővel elválasztott listáját szkriptek betölteni https://github.com/github/hubot-scripts/tree/master/src/scripts", "InternalHubot_Username_Description": "Ez kell, hogy legyen egy érvényes felhasználónevet egy bot van regisztrálva a szerveren.", diff --git a/packages/rocketchat-i18n/i18n/it.i18n.json b/packages/rocketchat-i18n/i18n/it.i18n.json index 9771a6653c97..3e7badef78b3 100644 --- a/packages/rocketchat-i18n/i18n/it.i18n.json +++ b/packages/rocketchat-i18n/i18n/it.i18n.json @@ -2,15 +2,16 @@ "#channel": "#canale", "0_Errors_Only": "0 - Solo errori", "1_Errors_and_Information": "1 - Errori e informazioni", - "2_Erros_Information_and_Debug": "2 - Errori, informazione e di debug", + "2_Erros_Information_and_Debug": "2 - Errori, informazioni e di debug", "403": "Proibito", "500": "Errore interno del server", "@username": "@username", "@username_message": "@username
Vai a [Site_URL] per provare la chat open source migliore disponibile!
", - "Accounts_Enrollment_Email_Description": "Puoi utilizzare [name], [fname], [lname] per il nome completo dell'utente, nome o cognome, rispettivamente.Vai a [Site_URL] e prova la chat open source migliore disponibile!
Puoi effettuare il login usando la tua email: [email] e la password: [password]. Ti potrà essere richiesto di cambiarla dopo il primo accesso.
", - "Accounts_UserAddedEmail_Description": "È possibile utilizzare i seguenti segnaposti:Vai a [Site_URL] e prova la chat open source migliore disponibile!
Puoi effettuare il login usando la tua email: [email] e la password: [password]. Ti potrà essere richiesto di cambiarla dopo il primo accesso.",
+ "Accounts_UserAddedEmail_Description": "È possibile utilizzare i seguenti marcatori:
%S.", "Custom_oauth_unique_name": "Nome univoco OAuth personalizzato", + "Custom_Scripts": "Script personalizzati", "Custom_Script_Logged_In": "Script personalizzato per gli utenti registrati", "Custom_Script_Logged_Out": "Script personalizzato per gli utenti registrati fuori", + "Custom_Sounds": "Suoni personalizzati", + "Custom_Sound_Add": "Aggiungi suono personalizzato", + "Custom_Sound_Delete_Warning": "La cancellazione di un suono non può essere annullata.", + "Custom_Sound_Error_Invalid_Sound": "Suono non valido", + "Custom_Sound_Error_Name_Already_In_Use": "Il nome del suono personalizzato è già in uso.", + "Custom_Sound_Has_Been_Deleted": "Il suono personalizzato è stato cancellato.", + "Custom_Sound_Info": "Informazioni Suono Personalizzato", + "Custom_Sound_Saved_Successfully": "Suono personalizzato salvato con successo", "Custom_Translations": "Traduzioni personalizzate", - "Custom_Translations_Description": "Dovrebbe essere un JSON valido dove le chiavi sono i campi che contengono il dizionario delle impostazioni del campo. Esempio:
{\n \"en\": {\n \"key\": \"translation\"\n },\n \"pt\": {\n \"key\": \"tradução\"\n }\n}
",
+ "Custom_Translations_Description": "Dovrebbe essere un JSON valido dove le chiavi sono i campi che contengono il dizionario delle impostazioni del campo. Esempio:{\n \"en\": {\n \"Channels\": \"Rooms\"\n },\n \"pt\": {\n \"Channels\": \"Salas\"\n }\n}
",
+ "CustomSoundsFilesystem": "Filesystem suoni personalizzati",
"Dashboard": "Dashboard",
"Date": "Data",
+ "Date_From": "Da",
+ "Date_to": "A",
"days": "giorni",
"DB_Migration": "Migrazione Database",
"DB_Migration_Date": "Ultimo aggiornamento migrazione Database",
"Deactivate": "Disattiva",
+ "Decline": "Rifiuta",
"Default": "Predefinito",
"Delete": "Cancella",
"Delete_message": "Elimina messaggio",
@@ -330,7 +397,10 @@
"Displays_action_text": "Mostra il testo di azione",
"Do_you_want_to_change_to_s_question": "Vuoi cambiare in %s?",
"Domain": "Dominio",
+ "Domain_added": "Dominio aggiunto",
+ "Domain_removed": "Dominio rimosso",
"Domains": "Domini",
+ "Download_Snippet": "Scarica",
"Drop_to_upload_file": "Rilascia per caricare il file",
"Dry_run": "Invio di prova",
"Dry_run_description": "Verrà inviata solo una email, allo stesso indirizzo del Mittente. L'email deve appartenere ad un utente valido.",
@@ -342,6 +412,7 @@
"Edit": "Modifica",
"Edit_Custom_Field": "Modifica campo personalizzato",
"Edit_Department": "Modifica Dipartimento",
+ "Edit_Trigger": "Modifica Trigger",
"edited": "modificato",
"Editing_room": "Stanza di modifica",
"Editing_user": "Modifica utente",
@@ -365,14 +436,21 @@
"Enable": "Attivo",
"Enable_Desktop_Notifications": "Attiva notifiche per il desktop",
"Enabled": "Abilitato",
+ "Enable_Svg_Favicon": "Abilita Favicon SVG",
"Encrypted_message": "Messaggio cifrato",
"End_OTR": "Fine OTR",
+ "Enter_Alternative": "Modalità alternativa (invio con Invio + Ctrl/Alt/Shift/CMD)",
"Enter_a_regex": "Inserisci una regex",
"Enter_a_room_name": "Inserire nome stanza",
"Enter_a_username": "Inserisci un nome utente",
+ "Enter_Behaviour": "Comportamento Pulsante Invio",
+ "Enter_Behaviour_Description": "Questi cambiamenti se il pulsante invio invierà un messaggio o il cursore andrà accapo",
"Enter_name_here": "Inserisci il nome qui",
+ "Enter_Normal": "Modalità normale (inviato con Invio)",
"Enter_to": "Invio per",
"Error": "Errore",
+ "Error_RocketChat_requires_oplog_tailing_when_running_in_multiple_instances": "Errore: Rocket.Chat richiede la coda oplog quando in esecuzione su diverse instanze",
+ "Error_RocketChat_requires_oplog_tailing_when_running_in_multiple_instances_details": "Verifica che il tuo MongoDB è in modalità ReplicaSet e la variabile di sistema MONGO_OPLOG_URL è definita correttamente sul server dell'applicativo",
"error-action-not-allowed": "__action__ non è permesso",
"error-application-not-found": "Applicazione non trovata",
"error-archived-duplicate-name": "C'è un canale archiviato con il nome '__room_name__'",
@@ -398,11 +476,14 @@
"error-invalid-channel-start-with-chars": "Canale non valido. Inizia con @ o #",
"error-invalid-custom-field": "Campo personalizzato non valido",
"error-invalid-custom-field-name": "Nome non valido per il campo personalizzato. Utilizza solo lettere, numeri, trattini e underscore.",
+ "error-invalid-date": "Dati forniti non validi",
"error-invalid-description": "Descrizione non valida",
"error-invalid-domain": "Dominio non valido",
"error-invalid-email": "L'email __email__ non é valida",
+ "error-invalid-email-address": "Indirizzo email non valido",
"error-invalid-file-height": "Altezza del file non valida",
"error-invalid-file-type": "Tipo di file non valido",
+ "error-direct-message-file-upload-not-allowed": "Condivisione dei file non permessa nei messaggi diretti",
"error-invalid-file-width": "Larghezza file non valido",
"error-invalid-from-address": "Hai specificato un indirizzo DA non valido.",
"error-invalid-integration": "Integrazione non valida",
@@ -428,7 +509,7 @@
"error-message-size-exceeded": "La dimensione del messaggio supera Message_MaxAllowedSize",
"error-missing-unsubscribe-link": "È necessario fornire il link [unsubscribe].",
"error-no-tokens-for-this-user": "Non ci sono token per questo utente",
- "error-not-allowed": "Non autorizzato",
+ "error-not-allowed": "Non permesso",
"error-not-authorized": "Non autorizzato",
"error-push-disabled": "Push disattivato",
"error-remove-last-owner": "Questo è l'ultimo proprietario. Imposta un nuovo proprietario prima di rimuoverlo.",
@@ -439,10 +520,13 @@
"error-user-is-not-activated": "L'utente non è stato attivato",
"error-user-not-in-room": "L'utente non è in questa stanza",
"error-user-registration-disabled": "La registrazione utente è disattivata",
+ "error-user-limit-exceeded": "Il numero di utenti che stai provando ad invitare a #channel_name eccede il limite impostato dall'amministratore",
"error-user-registration-secret": "La registrazione Utente è consentita solo tramite URL Segreto",
"error-you-are-last-owner": "Tu sei l'ultimo proprietario. Imposta il nuovo proprietario prima di lasciare la stanza.",
"Error_changing_password": "Errore nel cambio password",
"Esc_to": "Esc per",
+ "Event_Trigger": "Evento scatenante",
+ "Event_Trigger_Description": "Selezione quale tipo di evento verrà scatenato con questa Integrazione WebHook in uscita",
"every_30_minutes": "Una volta ogni 30 minuti",
"every_hour": "Una volta ogni ora",
"every_six_hours": "Una volta ogni 6 ore",
@@ -457,12 +541,22 @@
"Field_removed": "Campo rimosso",
"Field_required": "Campo richiesto",
"File_exceeds_allowed_size_of_bytes": "Il file supera la dimensione consentita di __size__ byte",
+ "File_not_allowed_direct_messages": "Condivisione file non permessa nei messaggi diretti.",
"File_type_is_not_accepted": "Il tipo di file non è accettato.",
+ "File_uploaded": "File caricato",
"FileUpload": "Caricamento file",
"FileUpload_Enabled": "Caricamento file abilitato",
+ "FileUpload_Disabled": "Caricamento file non permesso.",
+ "FileUpload_Enabled_Direct": "Caricamento file abilitato nei messaggi diretti",
"FileUpload_File_Empty": "File vuoto",
"FileUpload_FileSystemPath": "Percorso di sistema",
- "FileUpload_MaxFileSize": "Dimensione massima file (in bytes)",
+ "FileUpload_GoogleStorage_AccessId": "Google Storage Access Id",
+ "FileUpload_GoogleStorage_AccessId_Description": "L'ID di accesso é generalmente in formato email, per esempio: \"example-test@example.iam.gserviceaccount.com\"",
+ "FileUpload_GoogleStorage_Bucket": "Google Storage Bucket Name",
+ "FileUpload_GoogleStorage_Bucket_Description": "Il nome del bucket dove i file saranno caricati.",
+ "FileUpload_GoogleStorage_Secret": "Google Storage Secret",
+ "FileUpload_GoogleStorage_Secret_Description": "Segui queste istruzioni e incolla qui i risultati.",
+ "FileUpload_MaxFileSize": "Dimensione massima file (in byte)",
"FileUpload_MediaType_NotAccepted": "Tipi di file non accettati",
"FileUpload_MediaTypeWhiteList": "Tipi di file permessi",
"FileUpload_MediaTypeWhiteListDescription": "Elenco dei tipi di media separato da virgole. Lasciare vuoto per accettarli tutti.",
@@ -479,15 +573,22 @@
"FileUpload_S3_URLExpiryTimeSpan_Description": "Il tempo dopo il quale le URL generate da Amazon S3 non é piú valido (in secondi). Se é impostato in meno di 5 secondi, questo campo sarà ignorato.",
"FileUpload_Storage_Type": "Tipo di archiviazione",
"Flags": "Bandiere",
- "Follow_social_profiles": "Segui i nostri profili sociali, fai un fork su github e condividi i tuoi pensieri circa l'app rocket.chat nella nostra bacheca Trello.",
+ "Follow_social_profiles": "Segui i nostri profili sociali, fai un fork su github e condividi i tuoi pensieri su rocket.chat nella nostra bacheca Trello.",
"Food_and_Drink": "Cibo & Bevanda",
- "Footer": "Footer",
+ "Footer": "Piè di pagina",
+ "Fonts": "Caratteri",
"For_your_security_you_must_enter_your_current_password_to_continue": "Per motivi di sicurezza, è necessario reinserire la password per continuare",
+ "Force_Disable_OpLog_For_Cache": "Forza la disabilitazione di OpLog per la Cache",
+ "Force_Disable_OpLog_For_Cache_Description": "Non usare OpLog per sincronizzare la cache quanto disponibile",
"Force_SSL": "Forza SSL",
"Force_SSL_Description": "* Attenzione * _Force SSL_ non dovrebbe mai essere usato con reverse proxy. Se si dispone di un reverse proxy, si dovrebbe fare il redirect QUI. Questa opzione esiste per ambienti come Heroku, che non permettono la configurazione per il reindirizzamento al reverse proxy.",
"Forgot_password": "Ho dimenticato mia password",
+ "Forgot_Password_Description": "Puoi usare i seguenti segnaposti: 10^x
or 2^x
or x*2
",
+ "Integration_Word_Trigger_Placement": "Posizione parole ovunque",
+ "Integration_Word_Trigger_Placement_Description": "La parola dovrebbe essere scatenata quando posizionata ovunque nella frase oltre che all'inizio?",
"Integration_updated": "L'integrazione è stata aggiornata",
"Integrations": "Integrazioni",
"InternalHubot": "Hubot interno",
@@ -579,16 +723,19 @@
"Invalid_name": "Il nome non può essere vuoto",
"Invalid_notification_setting_s": "impostazione di notifica non valida: %s",
"Invalid_pass": "La password non deve essere vuota",
- "Invalid_room_name": "%s il nome del canale non è corretto,Vai a [Site_URL] per provare la migliore soluzione di chat open source oggi disponibile!
", "Invitation_HTML_Description": "È possibile utilizzare i seguenti segnaposti:{\"filter\": \"(&(objectCategory=person)(objectclass=user)(memberOf=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com)(sAMAccountName=#{username}))\", \"scope\": \"sub\", \"userDN\": \"rocket.service@domain.com\", \"password\": \"urpass\"}
",
"LDAP_Default_Domain": "Dominio Predefinito",
@@ -649,15 +800,16 @@
"LDAP_Domain_Search_Password": "Ricerca password nel dominio ",
"LDAP_Domain_Search_Password_Description": "La password per l'utente del dominio di ricerca.",
"LDAP_Domain_Search_User": "Ricerca utente nel dominio",
- "LDAP_Domain_Search_User_Description": "L'utente che esegue ricerche LDAP per l'autenticazione degli utenti quando accedono. Mostra %s risultati archiviati
", "Showing_online_users": "Visualizzati __total_showing__ su __total__users", - "Showing_results": "Visualizzati %s resultati
", + "Showing_results": "Visualizzati %s risultati
", "since_creation": "da %s", "Site_Name": "Nome del sito", "Site_Url": "indirizzo del sito", "Site_Url_Description": "Esempio: https://chat.domain.com/", "Skip": "Salta", "SlackBridge_error": "SlackBridge ha rilevato un errore durante l'importazione dei messaggi alle %s: %s", + "SlackBridge_Out_All": "SlackBridge Out All", + "SlackBridge_Out_All_Description": "Invia messaggi da tutti i canali che esistono in Slack e che il bot è entrato", + "SlackBridge_Out_Channels": "SlackBridge Out Canali", + "SlackBridge_Out_Channels_Description": "Scegli quale canale invierà i messaggi a Slack", "SlackBridge_finish": "SlackBridge ha finito di importare i messaggi alle %s. Ricarica per vedere tutti i messaggi.", + "SlackBridge_Out_Enabled": "SlackBridge Out Abilitato", + "SlackBridge_Out_Enabled_Description": "Scegli quale Slackbridge deve anche inviate i messaggi a Slack", "SlackBridge_start": "@%s ha avviato un import SlackBridge alle `#%s`. Ti faremo sapere quando verrà ultimato.", "Slash_Gimme_Description": "Mostra ༼ つ ◕_◕ ༽つ prima del messaggio", "Slash_LennyFace_Description": "Mostra ( ͡° ͜ʖ ͡°) dopo il messaggio", @@ -1138,16 +1337,20 @@ "SMTP_Port": "Porta SMTP", "SMTP_Test_Button": "Prova le impostazioni SMTP", "SMTP_Username": "Nome utente SMTP", + "Snippet_Added": "Creato su %s", + "Snippet_Messages": "Messaggi snippet", + "Snippeted_a_message": "Crea uno snippet __snippetLink__", "Sound": "Suoni", + "Sound_File_mp3": "File sonoro (mp3)", "SSL": "SSL", "Star_Message": "Evidenzia messaggio", - "Starred_Messages": "Messaggi speciali", + "Starred_Messages": "Messaggi evidenziati", "Start_audio_call": "Avvia chiamata audio", "Start_Chat": "Avvia chat", "Start_of_conversation": "Inizia una conversazione", "Start_OTR": "Inizio OTR", "Start_video_call": "Avvia chiamata video", - "Start_with_s_for_user_or_s_for_channel_Eg_s_or_s": "Inizia con", + "Start_with_s_for_user_or_s_for_channel_Eg_s_or_s": "Inizia con%s
per gli utenti o %s
peri canali. Es: %s
o %s
",
"Started_At": "Avviato il",
"Statistics": "Statistiche",
"Statistics_reporting": "Invia statistiche a Rocket.Chat",
@@ -1162,12 +1365,20 @@
"Stats_Online_Users": "Utenti in linea",
"Stats_Total_Channels": "Canali Totali",
"Stats_Total_Direct_Messages": "Totale canali diretti",
+ "Stats_Total_Livechat_Rooms": "Totale stanze Livechat",
"Stats_Total_Messages": "Messaggi totali",
+ "Stats_Total_Messages_Channel": "Messaggi totali nei canali",
+ "Stats_Total_Messages_PrivateGroup": "Messaggi totali nei gruppi privati",
+ "Stats_Total_Messages_Direct": "Messaggi totali nei messaggi diretti",
+ "Stats_Total_Messages_Livechat": "Messaggi totali nelle livechat",
"Stats_Total_Private_Groups": "Totale Gruppi Privati",
"Stats_Total_Rooms": "Stanze Totali",
"Stats_Total_Users": "Utenti Totali",
"Status": "Stato",
"Stop_Recording": "Interrompi registrazione",
+ "Stream_Cast": "Stream Cast",
+ "Stream_Cast_Address": "Stream Cast Address",
+ "Stream_Cast_Address_Description": "IP o Host della tua installazione centrale di Rocket.Chat per lo stream cast. Es: `92.168.1.1:3000` or `localhost:4000`",
"strike": "barrato",
"Subject": "Oggetto",
"Submit": "Invia",
@@ -1181,7 +1392,9 @@
"Sync_Users": "Sincronizza utenti",
"System_messages": "Messaggi di sistema",
"Tag": "Tag",
- "Take_it": "Prendilo",
+ "Take_it": "Prendilo!",
+ "TargetRoom": "Stanza Target",
+ "TargetRoom_Description": "La stanza dove i messaggi saranno inviati quando i risultati di questi eventi saranno scatenati. Solo la stanza target è permessa e deve esistere.",
"Test_Connection": "Verifica Connessione",
"Test_Desktop_Notifications": "Verifica Notifiche Desktop",
"Thank_you_exclamation_mark": "Grazie!",
@@ -1193,17 +1406,29 @@
"The_image_resize_will_not_work_because_we_can_not_detect_ImageMagick_or_GraphicsMagick_installed_in_your_server": "Il ridimensionamento dell'immagine non funzionerà se non rileva ImageMagick or GraphicsMagick installato sul tuo server.",
"The_redirectUri_is_required": "Il redirectUri é richiesto",
"The_server_will_restart_in_s_seconds": "Il server si riavvierà in %s secondi",
- "The_setting_s_is_configured_to_s_and_you_are_accessing_from_s": "L'impostazione%s é configurata su %s e stai accedendo da%s!",
+ "The_setting_s_is_configured_to_s_and_you_are_accessing_from_s": "L'impostazione%s è configurata su %s e stai accedendo da%s!",
"The_user_will_be_removed_from_s": "L'utente sarà rimosso da %s",
"The_user_wont_be_able_to_type_in_s": "L'utente non potrà più scrivere sul canale %s",
"Theme": "Tema",
+ "theme-color-transparent-darker": "Trasparente molto scuro",
+ "theme-color-transparent-dark": "Trasparente scuro",
+ "theme-color-transparent-light": "Trasparente chiaro",
+ "theme-color-transparent-lighter": "Trasparente molto chiaro",
+ "theme-color-transparent-lightest": "Trasparente veramente molto chiaro",
"theme-color-content-background-color": "Colore di Sfondo del contenuto",
"theme-color-primary-background-color": "Colore di Sfondo Primario",
"theme-color-primary-font-color": "Colore del Carattere Primario ",
+ "theme-color-primary-action-color": "Colore azione primario",
"theme-color-secondary-background-color": "Colore di Sfondo Secondario",
"theme-color-secondary-font-color": "Colore del Carattere Secondario",
+ "theme-color-secondary-action-color": "Colore azione secondario",
+ "theme-color-component-color": "Colore componente",
+ "theme-color-success-color": "Colore \"Successo\"",
+ "theme-color-pending-color": "Colore in attesa",
+ "theme-color-error-color": "Colore Errore",
+ "theme-color-selection-color": "Colore selezione",
"theme-color-tertiary-background-color": "Colore di Sfondo Terziario",
- "theme-color-tertiary-font-color": "Colore del CarattereTerzario",
+ "theme-color-tertiary-font-color": "Colore del Carattere Terzario",
"theme-color-link-font-color": "Colore del Carattere dei Link",
"theme-color-info-font-color": "Colore del Carattere delle Informazioni",
"theme-color-custom-scrollbar-color": "Colore Personalizzato della Barra Scorrevole",
@@ -1218,8 +1443,8 @@
"There_are_no_integrations": "Non esistono integrazioni",
"There_are_no_users_in_this_role": "Non ci sono utenti in questo ruolo.",
"This_conversation_is_already_closed": "Questa conversazione sarà chiusa.",
- "This_email_has_already_been_used_and_has_not_been_verified__Please_change_your_password": "Questa email é stata già utilizzata e non é stata verificata. Cambia la tua password.",
- "This_is_a_desktop_notification": "Questa é una notifica desktop",
+ "This_email_has_already_been_used_and_has_not_been_verified__Please_change_your_password": "Questa email è stata già utilizzata e non é stata verificata. Cambia la tua password.",
+ "This_is_a_desktop_notification": "Questa è una notifica desktop",
"This_is_a_push_test_messsage": "Questa è una prova di notifica push",
"This_room_has_been_archived_by__username_": "Questo canale è stato archiviato da __username__",
"This_room_has_been_unarchived_by__username_": "Questo canale è stato estratto dall'archivio da __username__",
@@ -1233,7 +1458,11 @@
"to_see_more_details_on_how_to_integrate": "per vedere altri dettagli su come integrarlo.",
"To_users": "Agli Utenti",
"Topic": "Argomento",
- "Travel_and_Places": "Travel & Places",
+ "Travel_and_Places": "Viaggi & Luoghi",
+ "Transcript_Enabled": "Chiedi al visitatore se vuole una trascrizione dopo la chiusura della chat",
+ "Transcript_message": "Messaggio da mostrare quando si chiede la transcrizione",
+ "Transcript_of_your_livechat_conversation": "Transcrizione della tua conversazione livechat",
+ "Translations": "Traduzioni",
"Trigger_removed": "Trigger rimosso",
"Trigger_Words": "Parole Trigger",
"Triggers": "Trigger",
@@ -1246,7 +1475,9 @@
"Type_your_new_password": "Digita la nuova password",
"UI_DisplayRoles": "Mostra Ruoli",
"UI_Merge_Channels_Groups": "Unisci i gruppi privati con i canali",
+ "UI_Use_Name_Avatar": "Usa le iniziali del nome completo per generare l'avatar predefinito",
"Unarchive": "Togli dall'archivio",
+ "Unblock_User": "Sblocca utente",
"Unmute_someone_in_room": "Togli il muto a qualcuno nella stanza",
"Unmute_user": "Togli il muto all'utente",
"Unnamed": "Senza nome",
@@ -1255,10 +1486,13 @@
"Unread_Rooms": "Stanze non letti",
"Unread_Rooms_Mode": "Modalità Stanze Non Letta",
"Unstar_Message": "Rimuovi segnalibro",
+ "Upload_file_description": "Descrizione file",
+ "Upload_file_name": "Nome file",
"Upload_file_question": "Caricare il file?",
"Uploading_file": "Caricamento del file ...",
"Uptime": "Uptime",
"URL": "URL",
+ "URL_room_prefix": "Prefisso URL stanza",
"Use_account_preference": "Utilizzare preferenze account",
"Use_Emojis": "Utilizzare Emojis",
"Use_Global_Settings": "Usa Impostazioni Globali",
@@ -1272,7 +1506,7 @@
"User__username__is_now_a_owner_of__room_name_": "L'Utente __username__é ora proprietario di __room_name__",
"User__username__removed_from__room_name__moderators": "L'Utente __username__rimosso dai moderatori __room_name__",
"User__username__removed_from__room_name__owners": "L'Utente __username__rimosso dai proprietari __room_name__",
- "User_added": "Utente __user_added__ aggiunto.",
+ "User_added": "Utente __user_added__ aggiunto.",
"User_added_by": "Utente __user_added__ aggiunto da __user_by__.",
"User_added_successfully": "Utente aggiunto correttamente",
"User_doesnt_exist": "Non esiste nessun utente con il nome `@%s`.",
@@ -1282,12 +1516,15 @@
"User_has_been_muted_in_s": "L'utente è stato mutato in %s",
"User_has_been_removed_from_s": "L'utente è stato rimosso da %s",
"User_Info": "Info utente",
+ "User_Interface": "Interfaccia utente",
+ "User_is_blocked": "Utente è bloccato",
"User_is_no_longer_an_admin": "L'utente non è più un amministratore",
"User_is_now_an_admin": "L'utente è ora un amministratore",
+ "User_is_unblocked": "Utente è sbloccato",
"User_joined_channel": "È entrato nel canale.",
"User_joined_channel_female": "È entrata nel canale.",
"User_joined_channel_male": "È entrato nel canale.",
- "User_left": "__user_left__ ha lasciato il canale.",
+ "User_left": "Ha lasciato il canale.",
"User_left_female": "Ha lasciato il canale.",
"User_left_male": "Ha lasciato il canale.",
"User_logged_out": "L'utente è disconnesso ",
@@ -1317,14 +1554,23 @@
"Username_title": "Registra nome utente",
"Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ vuole iniziare OTR. Vuoi accettare?",
"Users": "Utenti",
+ "Users_added": "L'utente è stato aggiunto",
"Users_in_role": "Utenti nel ruolo",
"UTF8_Names_Slugify": "UTF8 Names Slugify",
"UTF8_Names_Validation": "Validazione dei Nomi UTF8",
"UTF8_Names_Validation_Description": "Non permettere caratteri speciali e spazi. Puoi usare -_ e . na non alla fine del nome",
+ "Validate_email_address": "Verifica indirizzo email",
+ "Verification": "Verifica",
+ "Verification_Description": "Puoi usare i seguenti segnaposti: Gå till [Site_URL] och prova bäst öppen källkod chatt lösning som finns idag!
", - "Accounts_Enrollment_Email_Description": "Du kan använda [namn], [fname], [lname] för användarens fullständiga namn, förnamn eller efternamn, respektive.Gå till [Site_URL] och prova bästa chatt lösning på öppen källkod som finns idag!
", + "Accounts_Enrollment_Email_Description": "Du kan använda [namn], [fname], [lname] för användarens fullständiga namn, förnamn eller efternamn, respektive.Перейти до [Site_URL] і спробувати краще рішення чат з відкритим вихідним кодом на сьогоднішній день!
", "Accounts_Enrollment_Email_Description": "Ви можете використовувати [name], [fname], [lname] повне ім'я користувача, ім'я або прізвище, відповідно.{\n \"role\": {\n \"type\": \"select\",\n \"defaultValue\": \"student\",\n \"options\": [\"teacher\", \"student\"],\n \"required\": true,\n \"modifyRecordField\": {\n \"array\": true,\n \"field\": \"roles\"\n }\n },\n \"twitter\": {\n \"type\": \"text\",\n \"required\": true,\n \"minLength\": 2,\n \"maxLength\": 10\n }\n}
",
"Accounts_denyUnverifiedEmail": "拒绝未经验证的电子邮件地址",
- "Accounts_EmailVerification": "电子邮件验证",
+ "Accounts_EmailVerification": "Email 验证",
"Accounts_EmailVerification_Description": "要使用该功能,请确保 SMTP 设置正确",
"Accounts_Enrollment_Email": "注册邮件",
"Accounts_Enrollment_Email_Default": "转到 [Site_URL] 并尝试当今最先进的开源聊天解决方案!
", "Accounts_Enrollment_Email_Description": "你可以使用以下占位符:转到 [Site_URL] 并尝试当今最先进的开源聊天解决方案!
您可以使用您的电子邮件地址:[email] 和密码:[password] 进行登陆。您可能需要在您首次登录后更改密码。
", - "Accounts_UserAddedEmail_Description": "您可以使用以下占位符:自动翻译
权限,所有消息都将被自动翻译成用户选择的语言。这可需要付费,请查阅 Google 文档",
+ "AutoTranslate_Change_Language_Description": "修改自动翻译的语言不会翻译之前的消息。",
+ "AutoTranslate_GoogleAPIKey": "Google API Key",
"Available": "可用",
"Available_agents": "空闲客服",
"Avatar": "更改头像",
@@ -193,11 +238,18 @@
"Back": "返回",
"Back_to_applications": "返回应用列表",
"Back_to_integrations": "返回集成页",
+ "Back_to_integration_detail": "返回查看集成的详细信息",
"Back_to_login": "返回登录界面",
"Back_to_permissions": "返回权限页",
+ "Beta_feature_Depends_on_Video_Conference_to_be_enabled": "测试功能。需要启用视频会议功能。",
+ "Block_User": "阻止用户",
"Body": "主体",
"bold": "粗体",
+ "bot_request": "Bot 请求",
+ "BotHelpers_userFields": "用户字段",
+ "BotHelpers_userFields_Description": "用户字段中的 CSV 是可以被 bot 帮助器方法访问的。",
"Branch": "分支",
+ "Bugsnag_api_key": "Bugsnag API Key",
"busy": "忙",
"Busy": "忙",
"busy_female": "忙碌",
@@ -205,17 +257,38 @@
"busy_male": "忙碌",
"Busy_male": "忙碌",
"by": "通过",
+ "Content": "内容",
+ "cache_cleared": "缓存已清理",
"Cancel": "取消",
"Cancel_message_input": "取消",
"Cannot_invite_users_to_direct_rooms": "不能邀请用户加入私聊房间",
+ "CAS_autoclose": "自动关闭登录窗口",
+ "CAS_base_url": "SSO 基本 URL",
+ "CAS_base_url_Description": "外部 SSO 服务的基本 URL,例如:https://sso.example.undef/sso/",
+ "CAS_button_color": "登录按钮背景颜色",
+ "CAS_button_label_color": "登录按钮文字颜色",
+ "CAS_button_label_text": "登录按钮标签",
+ "CAS_enabled": "已启用",
+ "CAS_Login_Layout": "CAS 登录布局",
+ "CAS_login_url": "SSO 登录 URL",
+ "CAS_login_url_Description": "外部 SSO 服务的登录 URL,例如:https://sso.example.undef/sso/login",
+ "CAS_popup_height": "登录框高度",
+ "CAS_popup_width": "登录框宽度",
+ "CAS_Sync_User_Data_Enabled": "始终同步用户数据",
+ "CAS_Sync_User_Data_FieldMap": "属性映射",
+ "CAS_version": "CAS 版本",
"CDN_PREFIX": "CDN 前缀",
"Certificates_and_Keys": "证书和密钥",
"Changing_email": "正在更改电子邮件",
+ "Change_Room_Type": "正在修改房间类型",
+ "channel": "频道",
"Channel": "频道",
"Channel_already_exist": "通道'#%s“已存在。",
+ "Channel_created": "`#%s` 频道已创建。",
"Channel_already_Unarchived": "与名`#%s`通道已经处于未封存状态",
"Channel_Archived": "与名`#%s`通道已成功存档",
"Channel_doesnt_exist": "不存在 `#%s` 频道。",
+ "Channel_to_listen_on": "监听频道",
"Channel_Unarchived": "与名`#%s`通道已取消封存成功",
"Channels": "频道",
"Channels_list": "公共频道列表",
@@ -230,8 +303,12 @@
"Choose_messages": "选择信息",
"Choose_the_alias_that_will_appear_before_the_username_in_messages": "选择将在消息中的用户名前出现的别名。",
"Choose_the_username_that_this_integration_will_post_as": "选择该集成以什么用户名身份发布信息",
+ "clear": "清理",
+ "clear_cache_now": "立即清理缓存",
+ "clear_history": "清理历史记录",
"Clear_all_unreads_question": "清除所有未读标记?",
"Click_here": "点击这里",
+ "Click_here_for_more_info": "点此查看更多信息",
"Client_ID": "客户端 ID",
"Client_Secret": "客户端 Secret",
"Clients_will_refresh_in_a_few_seconds": "客户端将在几秒钟内刷新",
@@ -243,6 +320,7 @@
"Collapse_Embedded_Media_By_Default": "关闭默认的嵌入式媒体",
"Color": "颜色",
"Commands": "指令",
+ "Comment_to_leave_on_closing_session": "为关闭的会话留下评论",
"Compact": "紧凑",
"Confirm_password": "确认密码",
"Conversation": "谈话",
@@ -259,19 +337,46 @@
"Create_new": "新建",
"Created_at": "创建于",
"Created_at_s_by_s": "由 %s 创建于 %s",
+ "Created_at_s_by_s_triggered_by_s": "由 %s 创建于 %s 被 %s 触发",
+ "CROWD_Reject_Unauthorized": "拒绝未经授权的",
+ "CRM_Integration": "CRM 集成",
"Current_Chats": "当前聊天",
"Custom": "自定义",
+ "Custom_Emoji": "自定义表情",
+ "Custom_Emoji_Add": "添加新表情",
+ "Custom_Emoji_Added_Successfully": "自定义表情添加成功",
+ "Custom_Emoji_Delete_Warning": "表情删除操作无法撤销。",
+ "Custom_Emoji_Error_Invalid_Emoji": "无效的表情",
+ "Custom_Emoji_Error_Name_Or_Alias_Already_In_Use": "自定义表情或别名已经被占用。",
+ "Custom_Emoji_Has_Been_Deleted": "自定义表情已经被删除。",
+ "Custom_Emoji_Info": "自定义表情信息",
+ "Custom_Emoji_Updated_Successfully": "自定义表情更新成功",
"Custom_Fields": "自定义字段",
"Custom_oauth_helper": "设置完 OAuth 提供者之后,你还需要设置回调 URL。请使用 %s。", "Custom_oauth_unique_name": "自定义 OAuth 唯一名称 ", + "Custom_Scripts": "自定义脚本", "Custom_Script_Logged_In": "为已登录用户准备的自定义脚本", "Custom_Script_Logged_Out": "为已登出用户准备的自定义脚本", + "Custom_Sounds": "自定义声音", + "Custom_Sound_Add": "添加自定义声音", + "Custom_Sound_Delete_Warning": "声音删除操作无法撤销。", + "Custom_Sound_Error_Invalid_Sound": "无效的声音", + "Custom_Sound_Error_Name_Already_In_Use": "自定义声音的名称已被占用。", + "Custom_Sound_Has_Been_Deleted": "自定义声音已删除。", + "Custom_Sound_Info": "自定义声音信息", + "Custom_Sound_Saved_Successfully": "自定义声音保存成功", + "Custom_Translations": "自定义翻译", + "Custom_Translations_Description": "应使用 JSON 文件格式,键为语言,值为翻译。例如:
{\n \"en\": {\n \"Channels\": \"Rooms\"\n },\n \"pt\": {\n \"Channels\": \"Salas\"\n }\n}
",
+ "CustomSoundsFilesystem": "自定义声音文件系统",
"Dashboard": "控制面板",
"Date": "日期",
+ "Date_From": "从",
+ "Date_to": "到",
"days": "天",
"DB_Migration": "数据库迁移",
"DB_Migration_Date": "数据库迁移日期",
"Deactivate": "禁用",
+ "Decline": "下降",
"Default": "默认",
"Delete": "删除",
"Delete_message": "删除消息",
@@ -292,12 +397,15 @@
"Desktop_Notifications_Duration_Description": "多少秒显示桌面通知。这可能会影响OS X通知中心。输入0可使用默认浏览器设置,并不会影响OS X通知中心。",
"Desktop_Notifications_Enabled": "桌面通知已启用",
"Direct_message_someone": "直接给某人发送消息",
- "Direct_Messages": "直接发送消息",
+ "Direct_Messages": "私信",
"Display_offline_form": "显示离线表单",
"Displays_action_text": "显示动作文字",
"Do_you_want_to_change_to_s_question": "您是否想修改为 %s?",
"Domain": "域名",
+ "Domain_added": "域名已添加",
+ "Domain_removed": "域名已移除",
"Domains": "域名",
+ "Download_Snippet": "下载",
"Drop_to_upload_file": "拖放上传",
"Dry_run": "发送测试",
"Dry_run_description": "表单中的 E-mail 都只会收到一封邮件。邮件必须对应有效用户。",
@@ -309,6 +417,7 @@
"Edit": "编辑",
"Edit_Custom_Field": "编辑自定义字段",
"Edit_Department": "编辑部门",
+ "Edit_Trigger": "编辑触发器",
"edited": "已编辑",
"Editing_room": "正在编辑聊天室",
"Editing_user": "正在编辑用户",
@@ -327,16 +436,22 @@
"Email_subject": "标题",
"Email_verified": "邮箱已验证",
"Emoji": "表情符号",
+ "EmojiCustomFilesystem": "自定义表情文件系统",
"Empty_title": "空标题",
"Enable": "启用",
"Enable_Desktop_Notifications": "启用桌面通知",
"Enabled": "已启用",
+ "Enable_Svg_Favicon": "启用 SVG 图标",
"Encrypted_message": "加密消息",
"End_OTR": "结束无记录对话",
+ "Enter_Alternative": "替代模式(Enter + Ctrl/Alt/Shift/CMD 发送消息)",
"Enter_a_regex": "输入正则表达式",
"Enter_a_room_name": "在这里输入房间名",
"Enter_a_username": "输入用户名",
+ "Enter_Behaviour": "回车键",
+ "Enter_Behaviour_Description": "此项用来设置回车键发送消息还是换行",
"Enter_name_here": "在这里输入名字",
+ "Enter_Normal": "常规模式(Enter 发送消息)",
"Enter_to": "进入",
"Error": "错误",
"error-action-not-allowed": "__action__ 不允许",
@@ -352,6 +467,7 @@
"error-department-not-found": "找不到该部门",
"error-duplicate-channel-name": "频道 '__channel_name__' 已存在",
"error-email-domain-blacklisted": "电子邮箱域名被列入黑名单",
+ "error-email-send-failed": "尝试发送邮件出错:__message__",
"error-field-unavailable": "__field__ 已被使用 :(",
"error-file-too-large": "文件太大",
"error-importer-not-defined": "导入所用帐号错误,未指定导入class。",
@@ -363,11 +479,14 @@
"error-invalid-channel-start-with-chars": "无效的频道。应该以 @ 或 # 开头",
"error-invalid-custom-field": "无效的自定义字段",
"error-invalid-custom-field-name": "无效的自定义字段名称。只能使用字母、数字、连字符和下划线。",
+ "error-invalid-date": "日期无效。",
"error-invalid-description": "无效的说明",
"error-invalid-domain": "域名无效",
"error-invalid-email": "无效的电子邮件地址 __email__",
+ "error-invalid-email-address": "邮件地址无效",
"error-invalid-file-height": "无效的文件高度",
"error-invalid-file-type": "无效的文件类型",
+ "error-direct-message-file-upload-not-allowed": "私信中不允许文件共享",
"error-invalid-file-width": "无效的文件宽度",
"error-invalid-from-address": "您的 FROM 地址无效。",
"error-invalid-integration": "无效的集成",
@@ -404,10 +523,16 @@
"error-user-is-not-activated": "用户未激活",
"error-user-not-in-room": "用户不是在这个房间里",
"error-user-registration-disabled": "用户注册被禁用",
+ "error-user-limit-exceeded": "你邀请加入 #channel_name 的用户数量超出了管理员设置的最大值限制",
"error-user-registration-secret": "用户注册只能通过私密地址",
"error-you-are-last-owner": "你是房间当前的拥有者。请先重设拥有者再离开房间。",
"Error_changing_password": "密码更改失败",
"Esc_to": "退出",
+ "Event_Trigger": "事件触发",
+ "Event_Trigger_Description": "选择将触发此外发 WebHook 集成的事件类型",
+ "every_30_minutes": "每30分钟一次",
+ "every_hour": "每小时一次",
+ "every_six_hours": "每6小时一次",
"Example_s": "例如:%s
",
"Exclude_Botnames": "排除机器人",
"False": "否",
@@ -416,11 +541,18 @@
"Features_Enabled": "功能已启用",
"Field": "字段",
"Field_removed": "字段已删除",
+ "Field_required": "字段必须填写",
"File_exceeds_allowed_size_of_bytes": "文件大小超过允许的 __size__ 字节",
+ "File_not_allowed_direct_messages": "私信中不允许文件共享。",
+ "File_type_is_not_accepted": "文件类型不被系统接受。",
+ "File_uploaded": "文件已上传",
"FileUpload": "文件上传",
"FileUpload_Enabled": "文件上传已启用",
+ "FileUpload_Disabled": "已禁用文件上传。",
+ "FileUpload_Enabled_Direct": "私信已启用文件上传",
"FileUpload_File_Empty": "文件为空",
"FileUpload_FileSystemPath": "系统路径",
+ "FileUpload_GoogleStorage_AccessId": "Google 存储 Access ID",
"FileUpload_MaxFileSize": "文件上传大小限制(以字节为单位)",
"FileUpload_MediaType_NotAccepted": "不支持该类型媒体文件",
"FileUpload_MediaTypeWhiteList": "支持的媒体类型",
@@ -505,12 +637,15 @@
"Installation": "安装",
"Installed_at": "安装在",
"Instructions_to_your_visitor_fill_the_form_to_send_a_message": "给你访问者的说明,指导它们填写表格来发送一条消息",
+ "Integration_Advanced_Settings": "高级设置",
"Integration_added": "集成已添加",
+ "Integration_History_Cleared": "已成功清理集成历史记录",
"Integration_Incoming_WebHook": "Incoming WebHook 集成",
"Integration_New": "新的集成",
"Integration_Outgoing_WebHook": "Outgoing WebHook 集成",
"Integration_updated": "集成已更新",
"Integrations": "集成",
+ "Integrations_for_all_channels": "输入 all_public_channels 监听所有公共频道,all_private_groups 监听所有私有组,all_direct_messages 监听所有私信。",
"InternalHubot": "内部Hubot",
"InternalHubot_ScriptsToLoad": "需要加载的脚本",
"InternalHubot_ScriptsToLoad_Description": "请输入一个逗号分隔的脚本列表从https://github.com/github/hubot-scripts/tree/master/src/scripts加载",
@@ -623,7 +758,7 @@
"Leave_Room_Warning": "您确定要离开房间“%s”吗?",
"line": "行",
"List_of_Channels": "频道列表",
- "List_of_Direct_Messages": "直接对话列表",
+ "List_of_Direct_Messages": "私信列表",
"Livechat_agents": "在线客服",
"Livechat_Dashboard": "在线聊天控制面板",
"Livechat_enabled": "即时聊天启用",
@@ -720,7 +855,7 @@
"Meta_robots": "机器人",
"minutes": "分钟",
"More_channels": "更多频道",
- "More_direct_messages": "更多对话",
+ "More_direct_messages": "更多私信",
"More_groups": "更多私有组",
"More_unreads": "更多未阅读",
"Msgs": "消息",
@@ -1039,6 +1174,7 @@
"Stats_Total_Channels": "频道总数",
"Stats_Total_Direct_Messages": "点对点发送消息房间数",
"Stats_Total_Messages": "消息总数",
+ "Stats_Total_Messages_Direct": "私信总数",
"Stats_Total_Private_Groups": "私有组数",
"Stats_Total_Rooms": "房间总数",
"Stats_Total_Users": "用户总数",
diff --git a/packages/rocketchat-ldap/server/sync.js b/packages/rocketchat-ldap/server/sync.js
index 24456f7ac9ae..8e75229e584a 100644
--- a/packages/rocketchat-ldap/server/sync.js
+++ b/packages/rocketchat-ldap/server/sync.js
@@ -74,7 +74,7 @@ getDataToSyncUserData = function getDataToSyncUserData(ldapUser, user) {
switch (userField) {
case 'email':
- if (_.isObject(ldapUser.object[ldapField] === 'object')) {
+ if (_.isObject(ldapUser.object[ldapField])) {
_.map(ldapUser.object[ldapField], function(item) {
emailList.push({ address: item, verified: true });
});
diff --git a/packages/rocketchat-lib/client/OAuthProxy.js b/packages/rocketchat-lib/client/OAuthProxy.js
new file mode 100644
index 000000000000..6683dddc29be
--- /dev/null
+++ b/packages/rocketchat-lib/client/OAuthProxy.js
@@ -0,0 +1,13 @@
+/* globals OAuth */
+
+OAuth.launchLogin = _.wrap(OAuth.launchLogin, function(func, options) {
+ const proxy = RocketChat.settings.get('Accounts_OAuth_Proxy_services').replace(/\s/g, '').split(',');
+ if (proxy.includes(options.loginService)) {
+ const redirect_uri = options.loginUrl.match(/(&redirect_uri=)([^&]+|$)/)[2];
+ options.loginUrl = options.loginUrl.replace(/(&redirect_uri=)([^&]+|$)/, `$1${encodeURIComponent(RocketChat.settings.get('Accounts_OAuth_Proxy_host'))}/oauth_redirect`);
+ options.loginUrl = options.loginUrl.replace(/(&state=)([^&]+|$)/, `$1${redirect_uri}!$2`);
+ options.loginUrl = RocketChat.settings.get('Accounts_OAuth_Proxy_host')+'/redirect/'+encodeURIComponent(options.loginUrl);
+ }
+
+ return func(options);
+});
diff --git a/packages/rocketchat-lib/package.js b/packages/rocketchat-lib/package.js
index 652f2de2b5c3..03e88cded081 100644
--- a/packages/rocketchat-lib/package.js
+++ b/packages/rocketchat-lib/package.js
@@ -29,6 +29,7 @@ Package.onUse(function(api) {
api.use('ddp-rate-limiter');
api.use('underscore');
api.use('mongo');
+ api.use('oauth');
api.use('underscorestring:underscore.string@3.3.4');
api.use('matb33:collection-hooks');
api.use('service-configuration');
@@ -110,6 +111,10 @@ Package.onUse(function(api) {
api.addFiles('server/models/Uploads.coffee', 'server');
api.addFiles('server/models/Users.coffee', 'server');
+ api.addFiles('server/oauth/oauth.js', 'server');
+ api.addFiles('server/oauth/google.js', 'server');
+ api.addFiles('server/oauth/proxy.js', 'server');
+
api.addFiles('server/startup/statsTracker.js', 'server');
// CACHE
@@ -168,6 +173,7 @@ Package.onUse(function(api) {
// CLIENT LIB
api.addFiles('client/Notifications.coffee', 'client');
+ api.addFiles('client/OAuthProxy.js', 'client');
api.addFiles('client/lib/TabBar.js', 'client');
api.addFiles('client/lib/RocketChatTabBar.js', 'client');
api.addFiles('client/lib/cachedCollection.js', 'client');
diff --git a/packages/rocketchat-lib/rocketchat.info b/packages/rocketchat-lib/rocketchat.info
index ebdf1b99ed4c..b27c3096db5d 100644
--- a/packages/rocketchat-lib/rocketchat.info
+++ b/packages/rocketchat-lib/rocketchat.info
@@ -1,3 +1,3 @@
{
- "version": "0.53.0-develop"
+ "version": "0.53.0"
}
diff --git a/packages/rocketchat-lib/server/methods/restartServer.js b/packages/rocketchat-lib/server/methods/restartServer.js
index f6e72b8c6410..100cf528155f 100644
--- a/packages/rocketchat-lib/server/methods/restartServer.js
+++ b/packages/rocketchat-lib/server/methods/restartServer.js
@@ -8,8 +8,15 @@ Meteor.methods({
throw new Meteor.Error('error-not-allowed', 'Not allowed', { method: 'restart_server' });
}
- Meteor.setTimeout(() => process.exit(1)
- , 2000);
+ Meteor.setTimeout(() => {
+ Meteor.setTimeout(() => {
+ console.warn('Call to process.exit() timed out, aborting.');
+ process.abort();
+ }
+ , 1000);
+ process.exit(1);
+ }
+ , 1000);
return {
message: 'The_server_will_restart_in_s_seconds',
diff --git a/packages/rocketchat-lib/server/methods/updateMessage.js b/packages/rocketchat-lib/server/methods/updateMessage.js
index 4687b0dbfd60..93eccd430b3a 100644
--- a/packages/rocketchat-lib/server/methods/updateMessage.js
+++ b/packages/rocketchat-lib/server/methods/updateMessage.js
@@ -33,6 +33,14 @@ Meteor.methods({
}
}
+ if (originalMessage.attachments) {
+ if (originalMessage.attachments[0].description !== undefined) {
+ message.attachments = originalMessage.attachments;
+ message.attachments[0].description = message.msg;
+ message.msg = originalMessage.msg;
+ }
+ }
+
message.u = originalMessage.u;
return RocketChat.updateMessage(message, Meteor.user());
diff --git a/packages/rocketchat-lib/server/models/Subscriptions.coffee b/packages/rocketchat-lib/server/models/Subscriptions.coffee
index f0c9f6ba36f8..4ae7500ffef5 100644
--- a/packages/rocketchat-lib/server/models/Subscriptions.coffee
+++ b/packages/rocketchat-lib/server/models/Subscriptions.coffee
@@ -16,6 +16,8 @@ class ModelSubscriptions extends RocketChat.models._Base
@tryEnsureIndex { 'desktopNotifications': 1 }, { sparse: 1 }
@tryEnsureIndex { 'mobilePushNotifications': 1 }, { sparse: 1 }
@tryEnsureIndex { 'emailNotifications': 1 }, { sparse: 1 }
+ @tryEnsureIndex { 'autoTranslate': 1 }, { sparse: 1 }
+ @tryEnsureIndex { 'autoTranslateLanguage': 1 }, { sparse: 1 }
this.cache.ensureIndex('rid', 'array')
this.cache.ensureIndex('u._id', 'array')
diff --git a/packages/rocketchat-lib/server/oauth/google.js b/packages/rocketchat-lib/server/oauth/google.js
new file mode 100644
index 000000000000..b1e3cb87d748
--- /dev/null
+++ b/packages/rocketchat-lib/server/oauth/google.js
@@ -0,0 +1,60 @@
+/* globals Google */
+
+function getIdentity(accessToken) {
+ try {
+ return HTTP.get(
+ 'https://www.googleapis.com/oauth2/v1/userinfo',
+ {params: {access_token: accessToken}}).data;
+ } catch (err) {
+ throw _.extend(new Error('Failed to fetch identity from Google. ' + err.message), {response: err.response});
+ }
+}
+
+function getScopes(accessToken) {
+ try {
+ return HTTP.get(
+ 'https://www.googleapis.com/oauth2/v1/tokeninfo',
+ {params: {access_token: accessToken}}).data.scope.split(' ');
+ } catch (err) {
+ throw _.extend(new Error('Failed to fetch tokeninfo from Google. ' + err.message), {response: err.response});
+ }
+}
+
+
+RocketChat.registerAccessTokenService('google', function(options) {
+ check(options, Match.ObjectIncluding({
+ accessToken: String,
+ idToken: String,
+ expiresIn: Match.Integer,
+ scope: Match.Maybe(String),
+ identity: Match.Maybe(Object)
+ }));
+
+ const identity = options.identity || getIdentity(options.accessToken);
+
+ const serviceData = {
+ accessToken: options.accessToken,
+ idToken: options.idToken,
+ expiresAt: (+new Date) + (1000 * parseInt(options.expiresIn, 10)),
+ scope: options.scopes || getScopes(options.accessToken)
+ };
+
+ const fields = _.pick(identity, Google.whitelistedFields);
+ _.extend(serviceData, fields);
+
+ // only set the token in serviceData if it's there. this ensures
+ // that we don't lose old ones (since we only get this on the first
+ // log in attempt)
+ if (options.refreshToken) {
+ serviceData.refreshToken = options.refreshToken;
+ }
+
+ return {
+ serviceData: serviceData,
+ options: {
+ profile: {
+ name: identity.name
+ }
+ }
+ };
+});
diff --git a/packages/rocketchat-lib/server/oauth/oauth.js b/packages/rocketchat-lib/server/oauth/oauth.js
new file mode 100644
index 000000000000..df041e5aa818
--- /dev/null
+++ b/packages/rocketchat-lib/server/oauth/oauth.js
@@ -0,0 +1,52 @@
+const AccessTokenServices = {};
+
+RocketChat.registerAccessTokenService = function(serviceName, handleAccessTokenRequest) {
+ AccessTokenServices[serviceName] = {
+ serviceName: serviceName,
+ handleAccessTokenRequest: handleAccessTokenRequest
+ };
+};
+
+// Listen to calls to `login` with an oauth option set. This is where
+// users actually get logged in to meteor via oauth.
+Accounts.registerLoginHandler(function(options) {
+ if (!options.accessToken) {
+ return undefined; // don't handle
+ }
+
+ check(options, Match.ObjectIncluding({
+ serviceName: String
+ }));
+
+ const service = AccessTokenServices[options.serviceName];
+
+ // Skip everything if there's no service set by the oauth middleware
+ if (!service) {
+ throw new Error(`Unexpected AccessToken service ${options.serviceName}`);
+ }
+
+ // Make sure we're configured
+ if (!ServiceConfiguration.configurations.findOne({service: service.serviceName})) {
+ throw new ServiceConfiguration.ConfigError();
+ }
+
+ if (!_.contains(Accounts.oauth.serviceNames(), service.serviceName)) {
+ // serviceName was not found in the registered services list.
+ // This could happen because the service never registered itself or
+ // unregisterService was called on it.
+ return {
+ type: 'oauth',
+ error: new Meteor.Error(
+ Accounts.LoginCancelledError.numericError,
+ `No registered oauth service found for: ${service.serviceName}`
+ )
+ };
+ }
+
+ const oauthResult = service.handleAccessTokenRequest(options);
+
+ return Accounts.updateOrCreateUserFromExternalService(service.serviceName, oauthResult.serviceData, oauthResult.options);
+});
+
+
+
diff --git a/packages/rocketchat-lib/server/oauth/proxy.js b/packages/rocketchat-lib/server/oauth/proxy.js
new file mode 100644
index 000000000000..320f0dfbf170
--- /dev/null
+++ b/packages/rocketchat-lib/server/oauth/proxy.js
@@ -0,0 +1,11 @@
+/* globals OAuth */
+
+OAuth._redirectUri = _.wrap(OAuth._redirectUri, function(func, serviceName, ...args) {
+ const proxy = RocketChat.settings.get('Accounts_OAuth_Proxy_services').replace(/\s/g, '').split(',');
+ if (proxy.includes(serviceName)) {
+ return RocketChat.settings.get('Accounts_OAuth_Proxy_host')+'/oauth_redirect';
+ } else {
+ return func(serviceName, ...args);
+ }
+
+});
diff --git a/packages/rocketchat-lib/server/startup/settings.coffee b/packages/rocketchat-lib/server/startup/settings.coffee
index 9690a669d0d0..76d858f7b4a7 100644
--- a/packages/rocketchat-lib/server/startup/settings.coffee
+++ b/packages/rocketchat-lib/server/startup/settings.coffee
@@ -88,6 +88,9 @@ RocketChat.settings.addGroup 'OAuth', ->
@add 'Accounts_OAuth_Twitter_secret', '', { type: 'string', enableQuery: enableQuery }
@add 'Accounts_OAuth_Twitter_callback_url', '_oauth/twitter', { type: 'relativeUrl', readonly: true, force: true, enableQuery: enableQuery }
+ @section 'Proxy', ->
+ @add 'Accounts_OAuth_Proxy_host', 'https://oauth-proxy.rocket.chat', { type: 'string', public: true }
+ @add 'Accounts_OAuth_Proxy_services', '', { type: 'string', public: true }
RocketChat.settings.addGroup 'General', ->
@@ -250,7 +253,7 @@ RocketChat.settings.addGroup 'Layout', ->
@add 'Layout_Terms_of_Service', 'Terms of Service #{p2}
`#{p3}"
+ noHtml: match
return token
@@ -41,7 +42,7 @@ class MarkdownCode
message.msg = message.msg + "\n```"
# Separate text in code blocks and non code blocks
- msgParts = message.html.split(/^\s*(```(?:[a-zA-Z]+)?(?:(?:.|\n)*?)```)(?:\n)?$/gm)
+ msgParts = message.html.split(/(^.*)(```(?:[a-zA-Z]+)?(?:(?:.|\n)*?)```)(.*\n?)$/gm)
for part, index in msgParts
# Verify if this part is code
@@ -72,6 +73,7 @@ class MarkdownCode
highlight: true
token: token
text: "```
" + result.value + "
```
"
+ noHtml: "```\n#{s.stripTags(result.value)}\n```"
msgParts[index] = token
else
diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.coffee b/packages/rocketchat-message-attachments/client/messageAttachment.coffee
index 91f6211f680c..ce2997784c80 100644
--- a/packages/rocketchat-message-attachments/client/messageAttachment.coffee
+++ b/packages/rocketchat-message-attachments/client/messageAttachment.coffee
@@ -1,24 +1,26 @@
import moment from 'moment'
-Template.messageAttachment.helpers
- fixCordova: (url) ->
- if url?.indexOf('data:image') is 0
- return url
+fixCordova = (url) ->
+ if url?.indexOf('data:image') is 0
+ return url
- if Meteor.isCordova and url?[0] is '/'
- url = Meteor.absoluteUrl().replace(/\/$/, '') + url
- query = "rc_uid=#{Meteor.userId()}&rc_token=#{Meteor._localStorage.getItem('Meteor.loginToken')}"
- if url.indexOf('?') is -1
- url = url + '?' + query
- else
- url = url + '&' + query
-
- if Meteor.settings.public.sandstorm or url.match /^(https?:)?\/\//i
- return url
- else if navigator.userAgent.indexOf('Electron') > -1
- return __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url
+ if Meteor.isCordova and url?[0] is '/'
+ url = Meteor.absoluteUrl().replace(/\/$/, '') + url
+ query = "rc_uid=#{Meteor.userId()}&rc_token=#{Meteor._localStorage.getItem('Meteor.loginToken')}"
+ if url.indexOf('?') is -1
+ url = url + '?' + query
else
- return Meteor.absoluteUrl().replace(/\/$/, '') + __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url
+ url = url + '&' + query
+
+ if Meteor.settings.public.sandstorm or url.match /^(https?:)?\/\//i
+ return url
+ else if navigator.userAgent.indexOf('Electron') > -1
+ return __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url
+ else
+ return Meteor.absoluteUrl().replace(/\/$/, '') + __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url
+
+Template.messageAttachment.helpers
+ fixCordova: fixCordova
parsedText: ->
renderMessageBody { msg: this.text }
@@ -59,3 +61,18 @@ Template.messageAttachment.helpers
injectIndex: (data, previousIndex, index) ->
data.index = previousIndex + '.attachments.' + index
return
+
+ safeLoadImageAttachment: (url) ->
+ host = ''
+ url = fixCordova(url)
+ if url.indexOf("://") > -1
+ host = url.split('/')[2]
+ else
+ host = url.split('/')[0]
+
+ host = host.split(':')[0]
+
+ if host != window.location.hostname
+ return ''
+ else
+ return url
diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.html b/packages/rocketchat-message-attachments/client/messageAttachment.html
index 3e736f25e143..8951623c53d4 100644
--- a/packages/rocketchat-message-attachments/client/messageAttachment.html
+++ b/packages/rocketchat-message-attachments/client/messageAttachment.html
@@ -66,8 +66,8 @@