From 035bdfeca10a9f4ee6c5d918dcc3d041939ba76a Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 18 May 2020 14:35:21 -0300 Subject: [PATCH 1/4] [FIX] Screen Lock options i18n (#2120) Co-authored-by: Diego Mello --- app/constants/localAuthentication.js | 25 -------------------- app/lib/methods/getSettings.js | 15 +----------- app/views/ScreenLockConfigView.js | 35 +++++++++++++++++++++++++--- 3 files changed, 33 insertions(+), 42 deletions(-) diff --git a/app/constants/localAuthentication.js b/app/constants/localAuthentication.js index 463eef2e7..1312e57aa 100644 --- a/app/constants/localAuthentication.js +++ b/app/constants/localAuthentication.js @@ -1,5 +1,3 @@ -import I18n from '../i18n'; - export const PASSCODE_KEY = 'kPasscode'; export const LOCKED_OUT_TIMER_KEY = 'kLockedOutTimer'; export const ATTEMPTS_KEY = 'kAttempts'; @@ -12,26 +10,3 @@ export const MAX_ATTEMPTS = 6; export const TIME_TO_LOCK = 30000; export const DEFAULT_AUTO_LOCK = 1800; - -export const DEFAULT_AUTO_LOCK_OPTIONS = [ - { - title: I18n.t('Local_authentication_auto_lock_60'), - value: 60 - }, - { - title: I18n.t('Local_authentication_auto_lock_300'), - value: 300 - }, - { - title: I18n.t('Local_authentication_auto_lock_900'), - value: 900 - }, - { - title: I18n.t('Local_authentication_auto_lock_1800'), - value: 1800 - }, - { - title: I18n.t('Local_authentication_auto_lock_3600'), - value: 3600 - } -]; diff --git a/app/lib/methods/getSettings.js b/app/lib/methods/getSettings.js index e57093d5f..349e81db9 100644 --- a/app/lib/methods/getSettings.js +++ b/app/lib/methods/getSettings.js @@ -10,7 +10,7 @@ import log from '../../utils/log'; import database from '../database'; import protectedFunction from './helpers/protectedFunction'; import fetch from '../../utils/fetch'; -import { DEFAULT_AUTO_LOCK, DEFAULT_AUTO_LOCK_OPTIONS } from '../../constants/localAuthentication'; +import { DEFAULT_AUTO_LOCK } from '../../constants/localAuthentication'; const serverInfoKeys = ['Site_Name', 'UI_Use_Real_Name', 'FileUpload_MediaTypeWhiteList', 'FileUpload_MaxFileSize', 'Force_Screen_Lock', 'Force_Screen_Lock_After']; @@ -55,19 +55,6 @@ const serverInfoUpdate = async(serverInfo, iconSetting) => { return { ...allSettings, autoLock }; } if (setting._id === 'Force_Screen_Lock_After') { - // Force_Screen_Lock from server - const forceScreenLock = serverInfo.find(item => item._id === 'Force_Screen_Lock')?.valueAsBoolean; - - // if Force_Screen_Lock is disabled on server and Screen Lock is enabled on app - if (!forceScreenLock && server.autoLock) { - // if the current autoLockTime is one of our default options, we'll keep this value - if (DEFAULT_AUTO_LOCK_OPTIONS.find(option => option.value === server.autoLockTime)) { - return { ...allSettings, autoLockTime: server.autoLockTime }; - } - // if the current autoLockTime is a value that isn't in our default options, we'll reset - return { ...allSettings, autoLockTime: DEFAULT_AUTO_LOCK }; - } - // if Force_Screen_Lock_After === 0 and autoLockTime is null, set app's default value if (setting.valueAsNumber === 0 && !server.autoLockTime) { return { ...allSettings, autoLockTime: DEFAULT_AUTO_LOCK }; diff --git a/app/views/ScreenLockConfigView.js b/app/views/ScreenLockConfigView.js index a0a9c22e2..e4e3f5387 100644 --- a/app/views/ScreenLockConfigView.js +++ b/app/views/ScreenLockConfigView.js @@ -17,7 +17,7 @@ import { CustomIcon } from '../lib/Icons'; import database from '../lib/database'; import { supportedBiometryLabel, changePasscode, checkHasPasscode } from '../utils/localAuthentication'; import { DisclosureImage } from '../containers/DisclosureIndicator'; -import { DEFAULT_AUTO_LOCK_OPTIONS, DEFAULT_AUTO_LOCK } from '../constants/localAuthentication'; +import { DEFAULT_AUTO_LOCK } from '../constants/localAuthentication'; const styles = StyleSheet.create({ listPadding: { @@ -54,6 +54,29 @@ class ScreenLockConfigView extends React.Component { this.init(); } + defaultAutoLockOptions = [ + { + title: I18n.t('Local_authentication_auto_lock_60'), + value: 60 + }, + { + title: I18n.t('Local_authentication_auto_lock_300'), + value: 300 + }, + { + title: I18n.t('Local_authentication_auto_lock_900'), + value: 900 + }, + { + title: I18n.t('Local_authentication_auto_lock_1800'), + value: 1800 + }, + { + title: I18n.t('Local_authentication_auto_lock_3600'), + value: 3600 + } + ]; + init = async() => { const { server } = this.props; const serversDB = database.servers; @@ -168,18 +191,24 @@ class ScreenLockConfigView extends React.Component { } renderAutoLockItems = () => { - const { autoLock } = this.state; + const { autoLock, autoLockTime } = this.state; const { theme, Force_Screen_Lock_After, Force_Screen_Lock } = this.props; if (!autoLock) { return null; } - let items = DEFAULT_AUTO_LOCK_OPTIONS; + let items = this.defaultAutoLockOptions; if (Force_Screen_Lock && Force_Screen_Lock_After > 0) { items = [{ title: I18n.t('After_seconds_set_by_admin', { seconds: Force_Screen_Lock_After }), value: Force_Screen_Lock_After, disabled: true }]; + // if Force_Screen_Lock is disabled and autoLockTime is a value that isn't on our defaultOptions we'll show it + } else if (Force_Screen_Lock_After === autoLockTime && !items.find(item => item.value === autoLockTime)) { + items.push({ + title: I18n.t('After_seconds_set_by_admin', { seconds: Force_Screen_Lock_After }), + value: Force_Screen_Lock_After + }); } return ( <> From 6152da4d6cf51b166c2e7e8223718b17c15f63ee Mon Sep 17 00:00:00 2001 From: phriedrich Date: Mon, 18 May 2020 19:37:04 +0200 Subject: [PATCH 2/4] [i18n] Added missing German translation strings (#2105) Co-authored-by: Diego Mello --- app/i18n/locales/de.js | 123 +++++++++++++++++++++++++++++++++++------ 1 file changed, 106 insertions(+), 17 deletions(-) diff --git a/app/i18n/locales/de.js b/app/i18n/locales/de.js index 06d87464b..bc74bbdd2 100644 --- a/app/i18n/locales/de.js +++ b/app/i18n/locales/de.js @@ -10,6 +10,7 @@ export default { 'error-could-not-change-email': 'E-Mail konnte nicht geändert werden', 'error-could-not-change-name': 'Name konnte nicht geändert werden', 'error-could-not-change-username': 'Benutzername konnte nicht geändert werden', + 'error-could-not-change-status': 'Status konnte nicht geändert werden', 'error-delete-protected-role': 'Eine geschützte Rolle kann nicht gelöscht werden', 'error-department-not-found': 'Abteilung nicht gefunden', 'error-direct-message-file-upload-not-allowed': 'Dateifreigabe in direkten Nachrichten nicht zulässig', @@ -17,6 +18,7 @@ export default { 'error-email-domain-blacklisted': 'Die E-Mail-Domain wird auf die schwarze Liste gesetzt', 'error-email-send-failed': 'Fehler beim Versuch, eine E-Mail zu senden: {{message}}', 'error-save-image': 'Fehler beim Speichern des Bildes', + 'error-save-video': 'Fehler beim Speichern des Videos', 'error-field-unavailable': '{{field}} wird bereits verwendet :(', 'error-file-too-large': 'Datei ist zu groß', 'error-importer-not-defined': 'Der Import wurde nicht korrekt definiert, es fehlt die Importklasse.', @@ -81,12 +83,14 @@ export default { Activity: 'Aktivität', Add_Reaction: 'Reaktion hinzufügen', Add_Server: 'Server hinzufügen', - Add_users: 'Nutzer hinzufügen', + Add_users: 'Benutzer hinzufügen', Admin_Panel: 'Admin-Panel', + Agent: 'Agent', Alert: 'Benachrichtigung', alert: 'Benachrichtigung', alerts: 'Benachrichtigungen', All_users_in_the_channel_can_write_new_messages: 'Alle Benutzer im Kanal können neue Nachrichten schreiben', + A_meaningful_name_for_the_discussion_room: 'Ein aussagekräftiger Name für den Diskussionsraum', All: 'Alles', All_Messages: 'Alle Nachrichten', Allow_Reactions: 'Reaktionen zulassen', @@ -130,12 +134,15 @@ export default { Click_to_join: 'Klicken um teilzunehmen!', Close: 'Schließen', Close_emoji_selector: 'Schließen Sie die Emoji-Auswahl', + Closing_chat: 'Chat schließen', Change_language_loading: 'Ändere Sprache.', + Chat_closed_by_agent: 'Chat durch den Agenten geschlossen', Choose: 'Wählen', Choose_from_library: 'Aus der Bibliothek auswählen', Choose_file: 'Datei auswählen', Choose_where_you_want_links_be_opened: 'Entscheide, wie Links geöffnet werden sollen', Code: 'Code', + Code_or_password_invalid: 'Code oder Passwort sind falsch', Collaborative: 'Kollaborativ', Confirm: 'Bestätigen', Connect: 'Verbinden', @@ -147,6 +154,7 @@ export default { Continue_with: 'Weitermachen mit', Copied_to_clipboard: 'In die Zwischenablage kopiert!', Copy: 'Kopieren', + Conversation: 'Konversationen', Permalink: 'Permalink', Certificate_password: 'Zertifikats-Passwort', Clear_cache: 'Lokalen Server-Cache leeren', @@ -154,14 +162,18 @@ export default { Whats_the_password_for_your_certificate: 'Wie lautet das Passwort für Ihr Zertifikat?', Create_account: 'Ein Konto erstellen', Create_Channel: 'Kanal erstellen', + Create_Direct_Messages: 'Direkt-Nachricht erstellen', + Create_Discussion: 'Diskussion erstellen', Created_snippet: 'Erstellt ein Snippet', Create_a_new_workspace: 'Erstellen Sie einen neuen Arbeitsbereich', Create: 'Erstellen', + Custom_Status: 'eigener Status', Dark: 'Dunkel', Dark_level: 'Dunkelstufe', Default: 'Standard', Default_browser: 'Standard-Browser', Delete_Room_Warning: 'Durch das Löschen eines Raums werden alle Nachrichten gelöscht, die im Raum gepostet wurden. Das kann nicht rückgängig gemacht werden.', + Department: 'Abteilung', delete: 'löschen', Delete: 'Löschen', DELETE: 'LÖSCHEN', @@ -173,17 +185,23 @@ export default { Direct_Messages: 'Direkte Nachrichten', Disable_notifications: 'Benachrichtigungen deaktiveren', Discussions: 'Diskussionen', - Dont_Have_An_Account: 'Sie haben noch kein Konto?', + Discussion_Desc: 'Hilft dir die Übersicht zu behalten! Durch das Erstellen einer Diskussion wird ein Unter-Kanal im ausgewählten Raum erzeugt und beide verknüpft.', + Discussion_name: 'Diskussions-Name', + Done: 'Erledigt', + Dont_Have_An_Account: 'Du hast noch kein Konto?', + Do_you_have_an_account: 'Du hast schon ein Konto?', Do_you_have_a_certificate: 'Haben Sie ein Zertifikat?', Do_you_really_want_to_key_this_room_question_mark: 'Möchten Sie diesen Raum wirklich {{key}}?', edit: 'bearbeiten', edited: 'bearbeitet', Edit: 'Bearbeiten', + Edit_Status: 'Status ändern', Edit_Invite: 'Einladung bearbeiten', Email_or_password_field_is_empty: 'Das E-Mail- oder Passwortfeld ist leer', Email: 'Email', EMAIL: 'EMAIL', email: 'Email', + Empty_title: 'leerer Titel', Enable_Auto_Translate: 'Automatische Übersetzung aktivieren', Enable_notifications: 'Benachrichtigungen aktivieren', Everyone_can_access_this_channel: 'Jeder kann auf diesen Kanal zugreifen', @@ -200,6 +218,10 @@ export default { Forgot_password_If_this_email_is_registered: 'Wenn diese E-Mail registriert ist, senden wir Anweisungen zum Zurücksetzen Ihres Passworts. Wenn Sie in Kürze keine E-Mail erhalten, kommen Sie bitte zurück und versuchen Sie es erneut.', Forgot_password: 'Passwort vergessen', Forgot_Password: 'Passwort vergessen', + Forward: 'Weiterleiten', + Forward_Chat: 'Chat weiterleiten', + Forward_to_department: 'Weiterleiten an Abteilung', + Forward_to_user: 'Weiterleiten an Benutzer', Full_table: 'Klicken um die ganze Tabelle anzuzeigen', Generate_New_Link: 'Neuen Link erstellen', Group_by_favorites: 'Nach Favoriten gruppieren', @@ -210,19 +232,20 @@ export default { Has_left_the_channel: 'Hat den Kanal verlassen', Hide_System_Messages: 'Systemnachrichten verstecken', Hide_type_messages: 'Verstecke "{{type}}"-Nachrichten', - Message_HideType_uj: 'Nutzer beigetreten', - Message_HideType_ul: 'Nutzer verlassen', - Message_HideType_ru: 'Nutzer entfernt', - Message_HideType_au: 'Nutzer hinzugefügt', - Message_HideType_mute_unmute: 'Nutzer stummgeschaltet / freigegeben', + Message_HideType_uj: 'Benutzer beigetreten', + Message_HideType_ul: 'Benutzer verlassen', + Message_HideType_ru: 'Benutzer entfernt', + Message_HideType_au: 'Benutzer hinzugefügt', + Message_HideType_mute_unmute: 'Benutzer stummgeschaltet / freigegeben', Message_HideType_r: 'Raumname geändert', - Message_HideType_ut: 'Nutzer ist der Unterhaltung beigetreten', + Message_HideType_ut: 'Benutzer ist der Unterhaltung beigetreten', Message_HideType_wm: 'Willkommen', Message_HideType_rm: 'Nachricht entfernt', Message_HideType_subscription_role_added: 'Rolle wurde gesetzt', Message_HideType_subscription_role_removed: 'Rolle nicht länger definiert', Message_HideType_room_archived: 'Raum archiviert', Message_HideType_room_unarchived: 'Raum nicht mehr archiviert', + IP: 'IP', In_app: 'In-App-Browser', IN_APP_AND_DESKTOP: 'IN-APP UND DESKTOP', In_App_and_Desktop_Alert_info: 'Zeigt ein Banner oben am Bildschirm, wenn die App geöffnet ist und eine Benachrichtigung auf dem Desktop.', @@ -230,12 +253,14 @@ export default { Invite: 'Einladen', is_a_valid_RocketChat_instance: 'ist eine gültige Rocket.Chat-Instanz', is_not_a_valid_RocketChat_instance: 'ist keine gültige Rocket.Chat-Instanz', - is_typing: 'tippt', + is_typing: 'schreibt', Invalid_or_expired_invite_token: 'Ungültiger oder abgelaufener Einladungscode', Invalid_server_version: 'Der Server, zu dem Sie eine Verbindung herstellen möchten, verwendet eine Version, die von der App nicht mehr unterstützt wird: {{currentVersion}}.\n\nWir benötigen Version {{MinVersion}}.', Invite_Link: 'Einladungs-Link', Invite_users: 'Benutzer einladen', Join: 'Beitreten', + Join_our_open_workspace: 'Tritt unserem offenen Arbeitsbereich bei', + Join_your_workspace: 'Tritt deinem Arbeitsbereich bei', Just_invited_people_can_access_this_channel: 'Nur eingeladene Personen können auf diesen Kanal zugreifen', Language: 'Sprache', last_message: 'letzte Nachricht', @@ -246,12 +271,14 @@ export default { Light: 'Hell', License: 'Lizenz', Livechat: 'Live-Chat', + Livechat_edit: 'Livechat bearbeiten', Login: 'Anmeldung', Login_error: 'Ihre Zugangsdaten wurden abgelehnt! Bitte versuchen Sie es erneut.', Login_with: 'Einloggen mit', Logging_out: 'Abmelden.', Logout: 'Abmelden', Max_number_of_uses: 'Maximale Anzahl der Benutzungen', + Max_number_of_users_allowed_is_number: 'Maximale Anzahl von erlaubten Benutzern ist {{maxUsers}}', members: 'Mitglieder', Members: 'Mitglieder', Mentioned_Messages: 'Erwähnte Nachrichten', @@ -277,6 +304,7 @@ export default { N_users: '{{n}} Benutzer', name: 'Name', Name: 'Name', + Navigation_history: 'Navigations-Verlauf', Never: 'Niemals', New_Message: 'Neue Nachricht', New_Password: 'Neues Kennwort', @@ -303,20 +331,34 @@ export default { Notifications: 'Benachrichtigungen', Notification_Duration: 'Benachrichtigungsdauer', Notification_Preferences: 'Benachrichtigungseinstellungen', + No_available_agents_to_transfer: 'Keine Agenten für den Transfer verfügbar', Offline: 'Offline', Oops: 'Hoppla!', + Onboarding_description: 'Ein Arbeitsbereich ist der Ort für die Zusammenarbeit deines Teams oder Organisation. Bitte den Admin des Arbeitsbereichs um eine Adresse, um ihm beizutreten, oder erstelle einen Arbeitsbereich für dein Team.', + Onboarding_join_workspace: 'Tritt einem Arbeitsbereich bei', + Onboarding_subtitle: 'Mehr als Team-Zusammenarbeit', Onboarding_title: 'Willkommen bei Rocket.Chat', + Onboarding_join_open_description: 'Tritt unserem Arbeitsbereich bei um mit dem Rocket.Chat-Team oder der Gemeinschaft zu chatten.', + Onboarding_agree_terms: 'Durch fortfahren stimmst du Rocket.Chats Bedingungen zu', + Onboarding_less_options: 'Weniger Optionen', + Onboarding_more_options: 'Mehr Optionen', Online: 'Online', Only_authorized_users_can_write_new_messages: 'Nur autorisierte Benutzer können neue Nachrichten schreiben', Open_emoji_selector: 'Öffne die Emoji-Auswahl', Open_Source_Communication: 'Open-Source-Kommunikation', + Open_your_authentication_app_and_enter_the_code: 'Öffne deine Authentifizierungsanwendung und gib den Code ein.', + OR: 'ODER', + OS: 'OS', Overwrites_the_server_configuration_and_use_room_config: 'Übergeht die Servereinstellungen und nutzt Einstellung für den Raum', Password: 'Passwort', + Parent_channel_or_group: 'Übergeordneter Kanal oder Gruppe', Permalink_copied_to_clipboard: 'Permalink in die Zwischenablage kopiert!', + Phone: 'Telefon', Pin: 'Anheften', Pinned_Messages: 'Angeheftete Nachrichten', pinned: 'angeheftet', Pinned: 'Angeheftet', + Please_add_a_comment: 'Bitte Kommentar hinzufügen', Please_enter_your_password: 'Bitte geben Sie Ihr Passwort ein', Please_wait: 'Bitte warten.', Preferences: 'Einstellungen', @@ -355,6 +397,7 @@ export default { Reset_password: 'Passwort zurücksetzen', resetting_password: 'Passwort zurücksetzen', RESET: 'ZURÜCKSETZEN', + Return: 'Zurück', Review_app_title: 'Gefällt dir diese App?', Review_app_desc: 'Gib uns 5 Sterne im {{store}}', Review_app_yes: 'Sicher!', @@ -375,7 +418,8 @@ export default { Room_name_changed: 'Raumname geändert in {{name}} von {{userBy}}', SAVE: 'SPEICHERN', Save_Changes: 'Änderungen speichern', - Save: 'sparen', + Save: 'speichern', + Saved: 'gespeichert', saving_preferences: 'Präferenzen speichern', saving_profile: 'Profil speichern', saving_settings: 'Einstellungen speichern', @@ -388,17 +432,25 @@ export default { Seconds: '{{second}} Sekunden', Select_Avatar: 'Wählen Sie einen Avatar aus', Select_Server: 'Server auswählen', - Select_Users: 'Wählen Sie einen Benutzer aus', + Select_Users: 'Benutzer auswählen', + Select_a_Channel: 'Kanal auswählen', + Select_a_Department: 'Abteilung auswählen', + Select_an_option: 'Option auswählen', + Select_a_User: 'Benutzer auswählen', Send: 'Senden', Send_audio_message: 'Audio-Nachricht senden', Send_crash_report: 'Absturzbericht senden', Send_message: 'Nachricht senden', + Send_me_the_code_again: 'Den Code neu versenden', Send_to: 'Senden an …', Sent_an_attachment: 'Sende einen Anhang', Server: 'Server', Servers: 'Server', Server_version: 'Server version: {{version}}', Set_username_subtitle: 'Der Benutzername wird verwendet, damit andere Personen Sie in Nachrichten erwähnen können', + Set_custom_status: 'Individuellen Status setzen', + Set_status: 'Status setzen', + Status_saved_successfully: 'Status erfolgreich gesetzt!', Settings: 'Einstellungen', Settings_succesfully_changed: 'Einstellungen erfolgreich geändert!', Share: 'Teilen', @@ -407,7 +459,7 @@ export default { Show_more: 'Mehr anzeigen …', Show_Unread_Counter: 'Zähler anzeigen', Show_Unread_Counter_Info: 'Anzahl der ungelesenen Nachrichten anzeigen', - Sign_in_your_server: 'Melden Sie sich bei Ihrem Server an', + Sign_in_your_server: 'Melde dich bei deinem Server an', Sign_Up: 'Anmelden', Some_field_is_invalid_or_empty: 'Ein Feld ist ungültig oder leer', Sorting_by: 'Sortierung nach {{key}}', @@ -422,6 +474,7 @@ export default { Started_call: 'Anruf gestartet von {{userBy}}', Submit: 'einreichen', Table: 'Tabelle', + Tags: 'Tags', Take_a_photo: 'Foto aufnehmen', Take_a_video: 'Video aufnehmen', tap_to_change_status: 'Tippen um den Status zu ändern', @@ -441,10 +494,10 @@ export default { Translate: 'Übersetzen', Try_again: 'Versuchen Sie es nochmal', Two_Factor_Authentication: 'Zwei-Faktor-Authentifizierung', - Type_the_channel_name_here: 'Geben Sie hier den Kanalnamen ein', + Type_the_channel_name_here: 'Gib hier den Kanalnamen ein', unarchive: 'wiederherstellen', UNARCHIVE: 'WIEDERHERSTELLEN', - Unblock_user: 'Nutzer entsperren', + Unblock_user: 'Benutzer entsperren', Unfavorite: 'Nicht mehr favorisieren', Unfollowed_thread: 'Thread nicht mehr folgen', Unmute: 'Stummschaltung aufheben', @@ -457,9 +510,10 @@ export default { Updating: 'Aktualisierung …', Uploading: 'Hochladen', Upload_file_question_mark: 'Datei hochladen?', + User: 'Benutzer', Users: 'Benutzer', User_added_by: 'Benutzer {{userAdded}} hinzugefügt von {{userBy}}', - User_Info: 'Nutzerinfo', + User_Info: 'Benutzerinfo', User_has_been_key: 'Benutzer wurde {{key}}!', User_is_no_longer_role_by_: '{{user}} ist nicht länger {{role}} von {{userBy}}', User_muted_by: 'Benutzer {{userMuted}} von {{userBy}} stummgeschaltet', @@ -471,18 +525,26 @@ export default { Username: 'Benutzername', Username_or_email: 'Benutzername oder E-Mail-Adresse', Uses_server_configuration: 'Nutzt Servereinstellungen', + Usually_a_discussion_starts_with_a_question_like_How_do_I_upload_a_picture: 'Üblicherweise beginnt eine Diskussion mit einer Frage, beispielsweise: "Wie lade ich ein Bild hoch?"', Validating: 'Validierung', + Registration_Succeeded: 'Registrierung erfolgreich!', + Verify: 'Überprüfen', Verify_email_title: 'Registrierung erfolgreich!', Verify_email_desc: 'Wir haben dir eine Email geschickt um deine Anmeldung zu bestätigen. Wenn du keine Email erhältst, komme bitte wieder und versuche es noch einmal.', + Verify_your_email_for_the_code_we_sent: 'Prüfe deine Mails für den Code, den wir dir eben geschickt haben.', Video_call: 'Videoanruf', View_Original: 'Original anzeigen', Voice_call: 'Sprachanruf', Websocket_disabled: 'Websockets sind auf diesem Server nicht aktiviert.\n{{contact}}', Welcome: 'Herzlich willkommen', + What_are_you_doing_right_now: 'Was machst du gerade?', Whats_your_2fa: 'Wie lautet Ihr 2FA-Code?', Without_Servers: 'Ohne Server', + Workspaces: 'Arbeitsbereiche', + Would_you_like_to_return_the_inquiry: 'Willst du zur Anfrage zurück?', Write_External_Permission_Message: 'Rocket.Chat benötigt Zugriff auf Ihre Galerie um Bilder speichern zu können.', Write_External_Permission: 'Galerie-Zugriff', + Yes: 'Ja', Yes_action_it: 'Ja, {{action}}!', Yesterday: 'Gestern', You_are_in_preview_mode: 'Sie befinden sich im Vorschaumodus', @@ -495,11 +557,13 @@ export default { You: 'Sie', Logged_out_by_server: 'Du bist vom Server abgemeldet worden. Bitte melde dich wieder an.', You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Sie benötigen Zugang zu mindestens einem Rocket.Chat-Server um etwas zu teilen.', - Your_certificate: 'Ihr Zertifikat', + Your_certificate: 'Dein Zertifikat', + Your_message: 'Deine Nachricht', Your_invite_link_will_expire_after__usesLeft__uses: 'Dein Einladungs-Link wird nach {{usesLeft}} Benutzungen ablaufen.', Your_invite_link_will_expire_on__date__or_after__usesLeft__uses: 'Dein Einladungs-Link wird am {{date}} oder nach {{usesLeft}} Benutzungen ablaufen.', Your_invite_link_will_expire_on__date__: 'Dein Einladungs-Link wird am {{date}} ablaufen.', Your_invite_link_will_never_expire: 'Dein Einladungs-Link wird niemals ablaufen.', + Your_workspace: 'Dein Arbeitsbereich', Version_no: 'Version: {{version}}', You_will_not_be_able_to_recover_this_message: 'Sie können diese Nachricht nicht wiederherstellen!', Change_Language: 'Sprache ändern', @@ -521,5 +585,30 @@ export default { You_will_be_logged_out_of_this_application: 'Du wirst in dieser Anwendung vom Server abgemeldet.', Clear: 'Löschen', This_will_clear_all_your_offline_data: 'Dies wird deine Offline-Daten löschen.', - Mark_unread: 'Als ungelesen markieren' + This_will_remove_all_data_from_this_server: 'Dies wird alle Daten von diesem Server löschen.', + Mark_unread: 'Als ungelesen markieren', + Wait_activation_warning: 'Bevor du dich anmelden kannst, muss dein Konto durch einen Administrator freigeschaltet werden.', + Screen_lock: 'Zugriffs-Sperre', + Local_authentication_biometry_title: 'Authentifizieren', + Local_authentication_biometry_fallback: 'Sicherheitscode benutzen', + Local_authentication_unlock_option: 'Entsperren mit Sicherheitscode', + Local_authentication_change_passcode: 'Ändere Sicherheitscode', + Local_authentication_info: 'Anmerkung: Wenn du den Sicherheitscode vergisst, musst du diese App löschen und neu installieren.', + Local_authentication_facial_recognition: 'Gesichtserkennung', + Local_authentication_fingerprint: 'Fingerabdruck', + Local_authentication_unlock_with_label: 'Entsperren mit {{label}}', + Local_authentication_auto_lock_60: 'Nach 1 Minute', + Local_authentication_auto_lock_300: 'Nach 5 Minuten', + Local_authentication_auto_lock_900: 'Nach 15 Minuten', + Local_authentication_auto_lock_1800: 'Nach 30 Minuten', + Local_authentication_auto_lock_3600: 'Nach 1 Stunde', + Passcode_enter_title: 'Gib deinen Sicherheitscode ein', + Passcode_choose_title: 'Setze deinen neuen Sicherheitscode', + Passcode_choose_confirm_title: 'Bestätige deinen neuen Sicherheitscode', + Passcode_choose_error: 'Sicherheitscodes stimmen nicht überein. Probiere es noch einmal.', + Passcode_choose_force_set: 'Sicherheitscode wird vom Admin verlangt', + Passcode_app_locked_title: 'App gesperrt', + Passcode_app_locked_subtitle: 'Versuche es in {{timeLeft}} Sekunden noch einmal.', + After_seconds_set_by_admin: 'Nach {{seconds}} Sekunden (durch den Admin gesetzt)', + Dont_activate: 'Jetzt nicht aktivieren' }; From a4914d73cbb53231703068ef4f590adeacd6d5ee Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 18 May 2020 14:55:53 -0300 Subject: [PATCH 3/4] [FIX] Sometimes SDK is null when try to connect (#2131) Co-authored-by: Diego Mello --- app/lib/rocketchat.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index ddf562cc1..ecd7ae939 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -225,13 +225,12 @@ const RocketChat = { .catch((err) => { console.log('connect error', err); - const { server: currentServer } = reduxStore.getState().server; - if (server === currentServer) { - // when `connect` raises an error, we try again in 10 seconds - this.connectTimeout = setTimeout(() => { + // when `connect` raises an error, we try again in 10 seconds + this.connectTimeout = setTimeout(() => { + if (this.sdk?.client?.host === server) { sdkConnect(); - }, 10000); - } + } + }, 10000); }); sdkConnect(); From e8c38d6f6f69ae396a4aae6e37336617da739a6d Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 18 May 2020 15:22:01 -0300 Subject: [PATCH 4/4] [FIX] Autocomplete position on Android (#2106) * [FIX] Autocomplete position on Android * [FIX] Set selection to 0 when needed Co-authored-by: Diego Mello --- app/containers/MessageBox/index.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/containers/MessageBox/index.js b/app/containers/MessageBox/index.js index 39e29dbc7..7ca8db2c1 100644 --- a/app/containers/MessageBox/index.js +++ b/app/containers/MessageBox/index.js @@ -487,10 +487,20 @@ class MessageBox extends Component { } setInput = (text) => { - this.text = text; if (this.component && this.component.setNativeProps) { - this.component.setNativeProps({ text }); + const props = { text }; + + if (isAndroid) { + const diff = text.length - this.text?.length; + const selection = this.component?.lastNativeSelection; + const start = selection?.start + diff >= 0 ? selection?.start + diff : text.length; + const end = selection?.end + diff >= 0 ? selection?.start + diff : text.length; + props.selection = { start, end }; + } + + this.component.setNativeProps(props); } + this.text = text; } setShowSend = (showSend) => {