diff options
Diffstat (limited to '')
-rw-r--r-- | res/layout/activity_contact_details.xml | 15 | ||||
-rw-r--r-- | res/values-ca/arrays.xml | 22 | ||||
-rw-r--r-- | res/values-ca/strings.xml | 119 | ||||
-rw-r--r-- | res/values-de/strings.xml | 59 | ||||
-rw-r--r-- | res/values-es/strings.xml | 28 | ||||
-rw-r--r-- | res/values-fr/arrays.xml | 22 | ||||
-rw-r--r-- | res/values-fr/strings.xml | 86 | ||||
-rw-r--r-- | res/values-fr/styles.xml | 19 | ||||
-rw-r--r-- | res/values/strings.xml | 8 | ||||
-rw-r--r-- | res/xml/preferences.xml | 4 | ||||
-rw-r--r-- | src/eu/siacs/conversations/ui/ContactDetailsActivity.java | 4 | ||||
-rw-r--r-- | src/eu/siacs/conversations/xml/TagWriter.java | 8 | ||||
-rw-r--r-- | src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java | 58 | ||||
-rw-r--r-- | src/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java | 8 |
14 files changed, 416 insertions, 44 deletions
diff --git a/res/layout/activity_contact_details.xml b/res/layout/activity_contact_details.xml index ac5f4855..cb001b79 100644 --- a/res/layout/activity_contact_details.xml +++ b/res/layout/activity_contact_details.xml @@ -14,7 +14,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" - android:text="Contact Details" /> + android:text="@string/action_contact_details" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="88dp" @@ -42,7 +42,6 @@ android:layout_height="wrap_content" android:paddingLeft="8dp" android:singleLine="true" - android:text="something@jabber.example.com" android:textColor="#5b5b5b" android:textSize="18sp" /> @@ -51,7 +50,6 @@ android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingLeft="16dp" - android:text="online" android:textSize="24sp" android:textStyle="bold" /> </LinearLayout> @@ -64,13 +62,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" - android:text="Your account" /> + android:text="@string/your_account" /> <TextView android:id="@+id/details_account" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="8dp" - android:text="julia@jabber.example.com" android:textSize="18sp" android:textColor="#5b5b5b" /> <TextView @@ -78,13 +75,13 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" - android:text="Subscription" /> + android:text="@string/subscriptions" /> <CheckBox android:id="@+id/details_send_presence" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Send presence updates" + android:text="@string/send_presence_updates" android:textSize="18sp" android:textColor="#5b5b5b" /> @@ -92,7 +89,7 @@ android:id="@+id/details_receive_presence" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Receive presence updates" + android:text="@string/receive_presence_updates" android:textSize="18sp" android:textColor="#5b5b5b" /> @@ -112,7 +109,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" - android:text="Keys" /> + android:text="@string/keys" /> <LinearLayout android:id="@+id/details_contact_keys" diff --git a/res/values-ca/arrays.xml b/res/values-ca/arrays.xml new file mode 100644 index 00000000..0c079329 --- /dev/null +++ b/res/values-ca/arrays.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <array name="resources"> + <item>Mòbil</item> + <item>Telèfon</item> + <item>Tauleta</item> + <item>Conversations</item> + <item>Android</item> + </array> + <string-array name="filesizes"> + <item>mai</item> + <item>256 KB</item> + <item>512 KB</item> + <item>1 MB</item> + </string-array> + <string-array name="filesizes_values"> + <item>0</item> + <item>262144</item> + <item>524288</item> + <item>1048576</item> + </string-array> +</resources> diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml new file mode 100644 index 00000000..4d7bc6cc --- /dev/null +++ b/res/values-ca/strings.xml @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <string name="app_name">Conversations</string> + <string name="action_settings">Preferències</string> + <string name="action_add">Nova conversa</string> + <string name="action_accounts">Gestionar comptes</string> + <string name="action_end_conversation">Finalitzar conversa</string> + <string name="action_contact_details">Detalls del contacte</string> + <string name="action_muc_details">Detalls de la conferència</string> + <string name="action_secure">Conversa segura</string> + <string name="action_add_account">Afegir compte</string> + <string name="title_activity_contacts">Contactes</string> + <string name="just_now">ara</string> + <string name="sending">enviant…</string> + <string name="announce_pgp">Renovar anunci PGP</string> + <string name="encrypted_message">Desxifrant missatge. Espera si us plau…</string> + <string name="conference_details">Detalls de la conferència</string> + <string name="nick_in_use">El sobrenom ja està en ús</string> + <string name="moderator">Moderador</string> + <string name="participant">Participant</string> + <string name="visitor">Visitant</string> + <string name="enter_new_name">Introdueix un nou nom:</string> + <string name="remove_contact_text">Vols eliminar a %s de la teva llista?. La conversa associada a aquest compte no s\'eliminarà.</string> + <string name="untrusted_cert_hint">El servidor %s presenta un certificat no confiable, possiblemente auto signat.</string> + <string name="account_info">Informació del servidor</string> + <string name="register_account">Registrar nou compte al servidor</string> + <string name="share_with">Compartir amb</string> + <string name="ask_again"><u>Prem per preguntar un altre cop</u></string> + <string name="show_otr_key">Emprempta dactilar OTR</string> + <string name="no_otr_fingerprint">No s\'ha generat una emprempta dactilar OTR. Simplement continua i comença una conversa xifrada.</string> + <string name="start_conversation">Començar conversa</string> + <string name="invite_contacts">Convidar contactes</string> + <string name="invite_contacts_to_existing">Convidar a conferència existent</string> + <string name="new_conference">Crear nova conferència</string> + <string name="cancel">Cancel·lar</string> + <string name="create_invite">Crear \u0026 Convidar</string> + <string name="new_conference_explained">Vols crear una nova conferència amb una adreça generada aleatòriament i convidar als contactes seleccionats a ella?</string> + <string name="no_open_mucs">No hi ha conferències existents</string> + <string name="invitation_sent">Invitació enviada</string> + <string name="account_offline">Compte desconnectat</string> + <string name="cant_invite_while_offline">Has d\'estar connectat per convidar contactes a la conferència</string> + <string name="crash_report_title">Conversations s\'ha aturat.</string> + <string name="crash_report_message">Enviant bolcats de piles ajudes al desenvolupament de Conversations\n<b>Avís:</b> Això usarà el teu compte XMPP per enviar el bolcat de pila al desenvolupador.</string> + <string name="send_now">Enviar ara</string> + <string name="send_never">No preguntar de nou</string> + <string name="problem_connecting_to_account">No s\'ha pogut connectar al compte</string> + <string name="problem_connecting_to_accounts">No s\'ha pogut connectar a múltiples comptes</string> + <string name="touch_to_fix">Prem aqui per gestionar els teus comptes</string> + <string name="attach_file">Enviar arxiu</string> + <string name="not_in_roster">El contacte no està a la teva llista. Vols afegir-lo?</string> + <string name="add_contact">Afefgir contacte</string> + <string name="send_failed">Error a l\'enviar</string> + <string name="send_rejected">rebutjat</string> + <string name="receiving_image">Rebent arxiu d\'imatge. Espera si us plau…</string> + <string name="preparing_image">Preparant imatge per enviar</string> + <string name="action_clear_history">Netejar historial</string> + <string name="clear_conversation_history">Netejar historial de conversa</string> + <string name="clear_histor_msg">Vols esborrar tots els missatges d\'aquesta conversa?\n\n<b>Avís:</b> Això no afectarà els missatges desats en altres dispositius o servidors.</string> + <string name="delete_messages">Esborrar missatges</string> + <string name="also_end_conversation">Finalitzar aquesta conversa més tard</string> + <string name="choose_presence">Selecciona recurs del contacte</string> + <string name="send_message_to_conference">Enviar missatge a conferència</string> + <string name="send_plain_text_message">Enviar missatge de text</string> + <string name="send_otr_message">Enviar missatge xifrat amb OTR</string> + <string name="send_pgp_message">Enviar missatge xifrat amb openPGP</string> + <string name="your_nick_has_been_changed">El teu sobrenom s\'ha modificat</string> + <string name="download_image">Descarregar imatge</string> + <string name="error_loading_image">Error carregant imatge (Fitxer no trobat)</string> + <string name="image_offered_for_download"><i>Fitxer d\'imatge ofert per a descàrrega</i></string> + <string name="not_connected">No connectat</string> + <string name="you_are_offline">Has d\'estar connectat per enviar %s però el teu compte associat a aquesta conversa està desconnectat.</string> + <string name="you_are_offline_blank">No pots executar aquesta acció estant desconnectat.</string> + <string name="files">fitxers</string> + <string name="otr_messages">Missatges xifrats amb OTR</string> + <string name="manage_account">Gestionar compte</string> + <string name="contact_offline">El teu contacte està desconnectat</string> + <string name="contact_offline_otr">Malauradament no és possible enviar missatges xifrats amb OTR a un contacte desconnectat.\nVols enviar el missatge en text pla?</string> + <string name="contact_offline_file">Malauradament no és possible enviar fitxers a un contacte desconnectat.</string> + <string name="send_unencrypted">Enviar sense xifrar</string> + <string name="decryption_failed">Ha fallat el desxiframent. Potser no tinguis la clau privada apropiada.</string> + <string name="openkeychain_required">OpenKeychain</string> + <string name="openkeychain_required_long">Conversations utilitza una aplicació de tercers anomenada <b>OpenKeychain</b> per xifrar i desxifrar missatges i gestionar les teves claus públiques..\n\nOpenKeychain està publicat sota llicència GPLv3 i disponible a la F-Droid i Google Play.\n\n<small>(Si us plau, reinicieu Conversations després.)</small></string> + <string name="restart">Reiniciar</string> + <string name="install">Instal·lar</string> + <string name="offering">oferint…</string> + <string name="no_pgp_key">Clau openPGP no trobada</string> + <string name="contact_has_no_pgp_key">Conversations no ha pogut xifrar els teus missatges perquè el teu contacte no està anunciant la seva clau pública.\n\n<small>Si us plau, demana al teu contacte que configuri openPGP.</small></string> + <string name="encrypted_message_received"><i>Missatge xifrat rebut. Prem per desxifrar i veure-ho.</i></string> + <string name="encrypted_image_received"><i>Imatge xifrada rebuda. Prem per desxifrar i veure-la.</i></string> + <string name="image_file"><i>Imatge rebuda. Prem per veure</i></string> + <string name="otr_file_transfer">Xifratge amb OTR no disponible</string> + <string name="otr_file_transfer_msg">Malauradament el xifratge amb OTR no està disponible per transferència de fitxers. Pots seleccionar xifratge amb openPGP o no usar xifratge.</string> + <string name="use_pgp_encryption">Usa xifratge amb openPGP</string> + <string name="pref_xmpp_resource">Recursos XMPP</string> + <string name="pref_xmpp_resource_summary">El nom que identifica aquest client amb</string> + <string name="pref_accept_files">Acceptar fitxers</string> + <string name="pref_accept_files_summary">Accepta fitxers automàticament amb una mida menor a…</string> + <string name="pref_notification_settings">Ajustos de notificacions</string> + <string name="pref_notifications">Notificacions</string> + <string name="pref_notifications_summary">Notifica quan arriba un nou missatge</string> + <string name="pref_vibrate">Vibra</string> + <string name="pref_vibrate_summary">Vibra quan arriba un nou missatge</string> + <string name="pref_sound">So</string> + <string name="pref_sound_summary">Reprodueix el to de trucada amb la notificació</string> + <string name="pref_conference_notifications">Notificacions de conferència</string> + <string name="pref_conference_notifications_summary">Sempre notifica quan arriba un nou missatge de conferència en comptes de només quan està destacat</string> + <string name="pref_notification_grace_period">Notificació del període d\'espera</string> + <string name="pref_notification_grace_period_summary">Desactiva les notificacions durant un breu termini després de rebre una còpia de missatges carbon</string> + <string name="pref_ui_options">Opcions de UI</string> + <string name="pref_use_phone_self_picture">Utilitza l\'avatar de l\'usuari del mòbil</string> + <string name="pref_use_phone_sefl_picture_summary">Podries no diferenciar quin compte estàs usant a la conversa</string> + <string name="pref_conference_name">Nom de la conferència</string> + <string name="pref_conference_name_summary">Utilitza l\'assumpte de la sala per identificar Conferències</string> + <string name="pref_advanced_options">Opcions avançades</string> + <string name="pref_never_send_crash">Mai enviïs informes d\'errors</string> + <string name="pref_never_send_crash_summary">Enviant traces d\'execució ajudes al futur desenvolupament del Conversations.</string> + +</resources> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index c6209625..719d769c 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -53,23 +53,23 @@ <string name="send_failed">Zustellung nicht erfolgreich</string> <string name="send_rejected">abgelehnt</string> <string name="receiving_image">Empfange Bild. Bitte warten…</string> - <string name="preparing_image">Bereite Bild für die Übertragung vor. Bitte warten…</string> - <string name="action_clear_history">Unterhaltungsverlauf löschen</string> + <string name="preparing_image">Bereite Bild für die Übertragung vor</string> + <string name="action_clear_history">Verlauf löschen</string> <string name="clear_conversation_history">Unterhaltungsverlauf löschen</string> <string name="clear_histor_msg">Möchtest du alle Nachrichten in dieser Unterhaltung löschen?\n\n<b>Achtung:</b> Das beeinflust nicht Nachrichten die eventuell auf anderen Geräten gespeichert wurden.</string> <string name="delete_messages">Nachrichten löschen</string> <string name="also_end_conversation">Diese Unterhaltung danach beenden</string> <string name="choose_presence">Choose presence to contact</string> <string name="send_message_to_conference">Nachricht an Konferenz schicken</string> - <string name="send_plain_text_message">Unverschlüsselte Nachricht schicken</string> - <string name="send_otr_message">Nachricht OTR-verschlüsselt verschicken</string> - <string name="send_pgp_message">Nachricht openPGP-verschlüsselt verschicken</string> + <string name="send_plain_text_message">Unverschlüsselt schreiben</string> + <string name="send_otr_message">OTR-verschlüsselt schreiben</string> + <string name="send_pgp_message">openPGP-verschlüsselt schreiben</string> <string name="your_nick_has_been_changed">Dein Nickname wurde geändert</string> <string name="download_image">Bild herunter laden</string> <string name="error_loading_image">Fehler beim laden des Bildes. (Datei wurde nicht gefunden)</string> <string name="image_offered_for_download"><i>Bild Datei zum Download angeboten</i></string> <string name="not_connected">Nicht verbunden</string> - <string name="you_are_offline">Du musst online sein um % zu verschicken. Dein Account der mit dieser Unterhaltung verbunden ist aber gerade offline.</string> + <string name="you_are_offline">Du musst online sein um %s zu verschicken. Dein Account der mit dieser Unterhaltung verbunden ist aber gerade offline.</string> <string name="you_are_offline_blank">Du kannst diese Aktion nicht ausführen so lange du offline bist.</string> <string name="files">Dateien</string> <string name="otr_messages">OTR-verschlüsselte Nachrichten</string> @@ -80,7 +80,52 @@ <string name="send_unencrypted">Unverschlüsselt verschicken</string> <string name="decryption_failed">Entschlüsselung fehlgeschlagen. Vielleicht hast du nicht den richtigen Private Key.</string> <string name="openkeychain_required">OpenKeychain</string> - <string name="openkeychain_required_long">Conversations benutzt eine Third-party-app names <b>OpenKeychain</b> um Nachrichten zu ver- und entschlüsseln und um deine Schlüssel zu verwalten.\n\nOpenKeychain ist GPLv3 lizensiert und bei F-Droid oder Google Play zu bekommen.\n\n<small>(Bitte starte Conversations danach neu)</small></string> + <string name="openkeychain_required_long">Conversations benutzt eine Third-party-app names <b>OpenKeychain</b> um Nachrichten zu ver- und entschlüsseln und um deine Schlüssel zu verwalten.\n\nOpenKeychain ist GPLv3 lizenziert und bei F-Droid oder Google Play zu bekommen.\n\n<small>(Bitte starte Conversations danach neu)</small></string> <string name="restart">Neustarten</string> <string name="install">Installieren</string> + <string name="offering">angeboten…</string> + <string name="no_pgp_key">Kein openPGP Schlüssel gefunden</string> + <string name="contact_has_no_pgp_key">Conversations ist nicht in der Lage deine Nachrichten zu verschlüsseln weil dein Kontakt sein oder ihren Schlüssel nicht preis gibt.\n\n<small>Bitte sag deinem Kontakt er oder sie möge bitte openPGP einrichten.</small></string> + <string name="encrypted_message_received"><i>Verschlüsselte Nachricht erhalten. Drücke hier um sie anzuzeigen und zu entschlüsseln.</i></string> + <string name="encrypted_image_received"><i>Verschlüsseltes Bild erhalten. Drücke hier um es anzuzeigen und zu entschlüsseln.</i></string> + <string name="image_file"><i>Bild erhalten. Drücke hier um es anzuzeigen.</i></string> + <string name="otr_file_transfer">OTR-Verschlüsselung nicht verfügbar</string> + <string name="otr_file_transfer_msg">Es ist nicht möglich Datein mitels OTR zu verschlüsseln. Du kannst entweder openPGP wählen oder die Datei nicht verschlüsseln.</string> + <string name="use_pgp_encryption">openPGP verwenden</string> + <string name="pref_xmpp_resource">XMPP resource</string> + <string name="pref_xmpp_resource_summary">Der Name mit dem sich der Client selber identifiziert</string> + <string name="pref_accept_files">Dateiannahme</string> + <string name="pref_accept_files_summary">Datein die kleiner sind als … automatisch annehmen</string> + <string name="pref_notification_settings">Benachrichtigungseinstellung</string> + <string name="pref_notifications">Benachrichtigungen</string> + <string name="pref_notifications_summary">Benachrichtige mich wenn eine neu Nachricht ankommt</string> + <string name="pref_vibrate">Vibrieren</string> + <string name="pref_vibrate_summary">Vibriere wenn eine neue Nachricht ankommt</string> + <string name="pref_sound">Klingelton</string> + <string name="pref_sound_summary">Spiel Klingelton wenn eine Nachricht ankommt</string> + <string name="pref_conference_notifications">Konferenz Benachrichtigungen</string> + <string name="pref_conference_notifications_summary">Benachrichtige mich bei jeder Konferenznachricht und nicht nur wenn ich angesprochen werde.</string> + <string name="pref_notification_grace_period">Gnadenfrist</string> + <string name="pref_notification_grace_period_summary">Deaktiviere Benachrichtigungen für eine kurze Zeit nach erhalt einer Nachricht die von einem anderen Client von Dir kommt.</string> + <string name="pref_ui_options">Aussehen</string> + <string name="pref_use_phone_self_picture">Benutze Dein Kontaktbild</string> + <string name="pref_use_phone_sefl_picture_summary">Wenn du mehrere Accounts hast bist du eventuell nicht mehr in der Lage diese auseinander zu halten.</string> + <string name="pref_conference_name">Konferenznamen</string> + <string name="pref_conference_name_summary">Benutze das Thema der Konferenz als Name in der Überschicht</string> + <string name="pref_advanced_options">Erweiterte Optionen</string> + <string name="pref_never_send_crash">Sende niemals Absturzberichte</string> + <string name="pref_never_send_crash_summary">Wenn du Absturzberichte einschickst hilfst du Conversations stetig zu verbessern.</string> + <string name="openpgp_error">Fehler mit OpenKeychain</string> + <string name="error_decrypting_file">Fehler beim entschlüsseln der Datei</string> + <string name="error_copying_image_file">Fehler beim Kopieren des Bildes</string> + <string name="accept">Annehmen</string> + <string name="error">Ein unbekannter Fehler ist aufgetreten</string> + <string name="pref_grant_presence_updates">Online Status</string> + <string name="pref_grant_presence_updates_summary">Erlaube Kontakten die von Dir erstellt wurden deinen Status zu sehen und frage um Erlaubnis ihren zu sehen.</string> + <string name="subscriptions">Abonnements</string> + <string name="your_account">Dein Account</string> + <string name="keys">Schlüssel</string> + <string name="send_presence_updates">Sende Online Status</string> + <string name="receive_presence_updates">Empfange Online Status</string> + <string name="preemptively_grant">Preemptively grant subscription request</string> </resources> diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 2c569187..12e255e8 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -92,4 +92,32 @@ <string name="otr_file_transfer">Encriptación con OTR no disponible</string> <string name="otr_file_transfer_msg">Desafortunadamente la encriptación con OTR no está disponible para transferencia de archivos. Puedes selecionar encriptación con openPGP o no usar encriptación.</string> <string name="use_pgp_encryption">Usa encriptación con openPGP</string> + <string name="pref_xmpp_resource">Recurso</string> + <string name="pref_xmpp_resource_summary">El nombre que identifica el cliente que estás utilizando</string> + <string name="pref_accept_files">Aceptar archivos</string> + <string name="pref_accept_files_summary">Automáticamente aceptar archivos menores que…</string> + <string name="pref_notification_settings">Ajustes de notificación</string> + <string name="pref_notifications">Notificaciones</string> + <string name="pref_notifications_summary">Notifica cuando llega un nuevo mensaje</string> + <string name="pref_vibrate">Vibrar</string> + <string name="pref_vibrate_summary">Vibra cuando llega un nuevo mensaje</string> + <string name="pref_sound">Sonido</string> + <string name="pref_sound_summary">Reproduce tono con la notificación</string> + <string name="pref_conference_notifications">Notificaciones de conferencia</string> + <string name="pref_conference_notifications_summary">Siempre notifica cuando llega un mensaje de conferencia y no solo cuando llega un mensaje destacado</string> + <string name="pref_notification_grace_period">Notificaciones Carbons</string> + <string name="pref_notification_grace_period_summary">Deshabilita las notificaciones durante un corto periodo de tiempo después de recibir la copia del mensaje carbon</string> + <string name="pref_ui_options">Opciones de interfaz</string> + <string name="pref_use_phone_self_picture">Usar foto de contacto del teléfono</string> + <string name="pref_use_phone_sefl_picture_summary">Podrías no ser capaz de distinguir que cuenta está utlizando en una conversación</string> + <string name="pref_conference_name">Nombre de la conferencia</string> + <string name="pref_conference_name_summary">Usa el nombre de la sala para identificar Conferencias</string> + <string name="pref_advanced_options">Opciones avanzadas</string> + <string name="pref_never_send_crash">Nunca enviar informe de fallos</string> + <string name="pref_never_send_crash_summary">Enviando volcados de pilas ayudas al desarrollo de Conversations</string> + <string name="openpgp_error">OpenKeychain reportó un error</string> + <string name="error_decrypting_file">I/O Error desencriptando fichero</string> + <string name="error_copying_image_file">Error copiando archivo de imagen.</string> + <string name="accept">Aceptar</string> + <string name="error">Ha ocurrido un error</string> </resources>
\ No newline at end of file diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml new file mode 100644 index 00000000..46c02da5 --- /dev/null +++ b/res/values-fr/arrays.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <array name="resources"> + <item>Mobile</item> + <item>Téléphone</item> + <item>Tablette</item> + <item>Conversations</item> + <item>Android</item> + </array> + <string-array name="filesizes"> + <item>jamais</item> + <item>256 KB</item> + <item>512 KB</item> + <item>1 MB</item> + </string-array> + <string-array name="filesizes_values"> + <item>0</item> + <item>262144</item> + <item>524288</item> + <item>1048576</item> + </string-array> +</resources> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml new file mode 100644 index 00000000..78327d66 --- /dev/null +++ b/res/values-fr/strings.xml @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <string name="app_name">Conversations</string> + <string name="action_settings">Paramètres</string> + <string name="action_add">Nouvelle conversation</string> + <string name="action_accounts">Gérer les comptes</string> + <string name="action_end_conversation">Terminer cette conversation</string> + <string name="action_contact_details">Détails du contact</string> + <string name="action_muc_details">Détails de la conférence</string> + <string name="action_secure">Conversation sécurisée</string> + <string name="action_add_account">Ajouter un compte</string> + <string name="title_activity_contacts">Contacts</string> + <string name="just_now">À l\'instant</string> + <string name="sending">envoi…</string> + <string name="announce_pgp">Renouveller les annonces PGP</string> + <string name="encrypted_message">Déchiffrement du message. Patientez…</string> + <string name="conference_details">Détails de la conférence</string> + <string name="nick_in_use">Cet identifiant est déjà utilisé.</string> + <string name="moderator">Modérateur</string> + <string name="participant">Participant</string> + <string name="visitor">Visiteur</string> + <string name="enter_new_name">Entrer un nouveau nom:</string> + <string name="remove_contact_text">Voulez-vous supprimer %s de votre liste? Les conversations associées à ce compte ne seront pas supprimées.</string> + <string name="untrusted_cert_hint">Le serveur %s utilise un certificat non certifié et peut-être auto-signé.</string> + <string name="account_info">Informations du serveur</string> + <string name="register_account">Créer un nouveau compte sur le serveur</string> + <string name="share_with">Partager avec</string> + <string name="ask_again"><u>Appuyez pour demander à nouveau</u></string> + <string name="show_otr_key">Empreinte OTR</string> + <string name="no_otr_fingerprint">Empreinte OTR non générée. Essayez de démarrer une conversation sécurisée.</string> + <string name="start_conversation">Démarrer une conversation</string> + <string name="invite_contacts">Inviter des contacts</string> + <string name="invite_contacts_to_existing">Inviter à une conférence</string> + <string name="new_conference">Créer une nouvelle conférence</string> + <string name="cancel">Annuler</string> + <string name="create_invite">Créer \u0026 invitation</string> + <string name="new_conference_explained">Voulez-vous créer une nouvelle conférence avec une adresse générée aléatoirement et inviter les contacts sélectionnés à la rejoindre?</string> + <string name="no_open_mucs">Conférences non existantes</string> + <string name="invitation_sent">Invitation envoyée</string> + <string name="account_offline">Compte hors-ligne</string> + <string name="cant_invite_while_offline">Vous devez être en ligne pour inviter des participants à une conférence.</string> + <string name="crash_report_title">Conversations s\'est arreté</string> + <string name="crash_report_message">En envoyant des logs vous aidez au développement de Conversations\n\n<b>Attention:</b> Votre compte XMPP sera utilisé pour envoyer les logs aux développeurs.</string> + <string name="send_now">Envoyer</string> + <string name="send_never">Ne plus me demander</string> + <string name="problem_connecting_to_account">Impossible de se connecter au compte</string> + <string name="problem_connecting_to_accounts">Impossible de se connecter aux comptes</string> + <string name="touch_to_fix">Appuyez pour gérer vos comptes</string> + <string name="attach_file">Lier un fichier</string> + <string name="not_in_roster">Le contact n\'est pas dans votre carnet d\'adresses. Voulez-vous l\'y ajouter?</string> + <string name="add_contact">Ajouter un contact</string> + <string name="send_failed">Echec de l\'envoi</string> + <string name="send_rejected">Rejeté</string> + <string name="receiving_image">Réception d\'une image. Patientez…</string> + <string name="preparing_image">Préparation de la transmission de l\'image. Patientez…</string> + <string name="action_clear_history">Vider l\'historique</string> + <string name="clear_conversation_history">Vider l\'historique de la conversation</string> + <string name="clear_histor_msg">Voulez-vous supprimer tous les messages de cette conversation?\n\n<b>Attention:</b> Les messages seront supprimés uniquement sur ce périphérique.</string> + <string name="delete_messages">Supprimer les messages</string> + <string name="also_end_conversation">Terminer plus tard cette conversation</string> + <string name="choose_presence">Choisir le status de présence</string> + <string name="send_message_to_conference">Envoyer un message à la conférence</string> + <string name="send_plain_text_message">Envoyer un message</string> + <string name="send_otr_message">Envoyer un message sécurisé par OTR</string> + <string name="send_pgp_message">Envoyer un message sécurisé par openPGP</string> + <string name="your_nick_has_been_changed">Votre identifiant a été changé</string> + <string name="download_image">Télecharger l\'image</string> + <string name="error_loading_image">Impossible de télécharger l\'image (Fichier non trouvé)</string> + <string name="image_offered_for_download"><i>Image proposée au téléchargement.</i></string> + <string name="not_connected">Non connecté</string> + <string name="you_are_offline">Vous devez être en ligne pour envoyer %s mais votre compte utilisé dans cette conversation est hors-ligne.</string> + <string name="you_are_offline_blank">Vous devez être en ligne pour réaliser cette action.</string> + <string name="files">Fichiers</string> + <string name="otr_messages">Message chiffrés par OTR</string> + <string name="manage_account">Gérer les comptes</string> + <string name="contact_offline">Votre correspondant est hors-ligne.</string> + <string name="contact_offline_otr">Envoyer un message chiffré via OTR à un correspondant hors-ligne n\'est malheureusement pas possible.\nVoulez-vous envoyer ce message sans chiffrement?</string> + <string name="contact_offline_file">Envoyer un fichier à un correspondant hors-ligne n\'est malheureusement pas possible.</string> + <string name="send_unencrypted">Envoyer en clair</string> + <string name="decryption_failed">Echec du déchiffrement. Merci de vérifier la clef privée utilisée.</string> + <string name="openkeychain_required">OpenKeychain</string> + <string name="openkeychain_required_long">Conversations requiert une application tierce nommée <b>OpenKeychain</b> pour chiffrer et déchiffrer les messages.\n\nOpenKeychain est sous licence GPLv3 et est disponible sur F-Droid et Google Play.\n\n<small>(Merci de redémarrer Conversations apres l\'installation du logiciel)</small></string> + <string name="restart">Redémarrer</string> + <string name="install">Installer</string> +</resources> diff --git a/res/values-fr/styles.xml b/res/values-fr/styles.xml new file mode 100644 index 00000000..1468283e --- /dev/null +++ b/res/values-fr/styles.xml @@ -0,0 +1,19 @@ +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + + <style name="sectionHeader" parent="android:Widget.Holo.Light.TextView"> + <item name="android:drawableBottom">@drawable/section_header</item> + <item name="android:drawablePadding">4dp</item> + <item name="android:layout_marginTop">8dp</item> + <item name="android:textSize">14sp</item> + <item name="android:textAllCaps">true</item> + <item name="android:textColor">#5b5b5b</item> + <item name="android:textStyle">bold</item> + </style> + + <style name="Divider"> + <item name="android:layout_width">match_parent</item> + <item name="android:layout_height">1.5dp</item> + <item name="android:background">#b7b7b7</item> + </style> + +</resources>
\ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 8020a01e..10dfb592 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -120,4 +120,12 @@ <string name="error_copying_image_file">Error copying image file.</string> <string name="accept">Accept</string> <string name="error">An error has occurred</string> + <string name="pref_grant_presence_updates">Grant presence updates</string> + <string name="pref_grant_presence_updates_summary">Preemptively grant and ask for presence subscription for contacts you created</string> + <string name="subscriptions">Subscriptions</string> + <string name="your_account">Your account</string> + <string name="keys">Keys</string> + <string name="send_presence_updates">Send presence updates</string> + <string name="receive_presence_updates">Receive presence updates</string> + <string name="ask_for_presence_updates">Ask for presence updates</string> </resources> diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index b1b560c6..bad2574b 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -4,8 +4,8 @@ android:title="General"> <CheckBoxPreference android:key="grant_new_contacts" - android:title="Grant presence updates" - android:summary="Preemptively grant and ask for presence subscription for contacts you created" + android:title="@string/pref_grant_presence_updates" + android:summary="@string/pref_grant_presence_updates_summary" android:defaultValue="true" /> <ListPreference diff --git a/src/eu/siacs/conversations/ui/ContactDetailsActivity.java b/src/eu/siacs/conversations/ui/ContactDetailsActivity.java index eaa9b8ee..06179bc6 100644 --- a/src/eu/siacs/conversations/ui/ContactDetailsActivity.java +++ b/src/eu/siacs/conversations/ui/ContactDetailsActivity.java @@ -173,7 +173,7 @@ public class ContactDetailsActivity extends XmppActivity { if (contact.getSubscriptionOption(Contact.Subscription.FROM)) { send.setChecked(true); } else { - send.setText("Preemptively grant subscription request"); + send.setText(R.string.preemptively_grant); if (contact .getSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT)) { send.setChecked(true); @@ -184,7 +184,7 @@ public class ContactDetailsActivity extends XmppActivity { if (contact.getSubscriptionOption(Contact.Subscription.TO)) { receive.setChecked(true); } else { - receive.setText("Ask for presence updates"); + receive.setText(R.string.ask_for_presence_updates); askAgain.setVisibility(View.VISIBLE); askAgain.setOnClickListener(new OnClickListener() { diff --git a/src/eu/siacs/conversations/xml/TagWriter.java b/src/eu/siacs/conversations/xml/TagWriter.java index 40d5b328..ef1e8555 100644 --- a/src/eu/siacs/conversations/xml/TagWriter.java +++ b/src/eu/siacs/conversations/xml/TagWriter.java @@ -23,8 +23,12 @@ public class TagWriter { } try { AbstractStanza output = writeQueue.take(); - outputStream.write(output.toString()); - outputStream.flush(); + if (outputStream==null) { + shouldStop = true; + } else { + outputStream.write(output.toString()); + outputStream.flush(); + } } catch (IOException e) { shouldStop = true; } catch (InterruptedException e) { diff --git a/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java b/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java index 3c9120ec..8f88688a 100644 --- a/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java +++ b/src/eu/siacs/conversations/xmpp/jingle/JingleConnection.java @@ -135,7 +135,7 @@ public class JingleConnection { } public void deliverPacket(JinglePacket packet) { - + boolean returnResult = true; if (packet.isAction("session-terminate")) { Reason reason = packet.getReason(); if (reason!=null) { @@ -143,26 +143,37 @@ public class JingleConnection { this.receiveCancel(); } else if (reason.hasChild("success")) { this.receiveSuccess(); + } else { + this.receiveCancel(); } } else { - Log.d("xmppService","remote terminated for no reason"); this.receiveCancel(); } - } else if (packet.isAction("session-accept")) { - receiveAccept(packet); + } else if (packet.isAction("session-accept")) { + returnResult = receiveAccept(packet); } else if (packet.isAction("transport-info")) { - receiveTransportInfo(packet); + returnResult = receiveTransportInfo(packet); } else if (packet.isAction("transport-replace")) { if (packet.getJingleContent().hasIbbTransport()) { - this.receiveFallbackToIbb(packet); + returnResult = this.receiveFallbackToIbb(packet); } else { + returnResult = false; Log.d("xmppService","trying to fallback to something unknown"+packet.toString()); } } else if (packet.isAction("transport-accept")) { - this.receiveTransportAccept(packet); + returnResult = this.receiveTransportAccept(packet); } else { Log.d("xmppService","packet arrived in connection. action was "+packet.getAction()); + returnResult = false; } + IqPacket response; + if (returnResult) { + response = packet.generateRespone(IqPacket.TYPE_RESULT); + + } else { + response = packet.generateRespone(IqPacket.TYPE_ERROR); + } + account.getXmppConnection().sendIqPacket(response, null); } public void init(Message message) { @@ -356,17 +367,16 @@ public class JingleConnection { account.getXmppConnection().sendIqPacket(packet,responseListener); } - private void receiveAccept(JinglePacket packet) { + private boolean receiveAccept(JinglePacket packet) { Content content = packet.getJingleContent(); mergeCandidates(JingleCandidate.parse(content.socks5transport().getChildren())); this.status = STATUS_ACCEPTED; mXmppConnectionService.markMessage(message, Message.STATUS_UNSEND); this.connectNextCandidate(); - IqPacket response = packet.generateRespone(IqPacket.TYPE_RESULT); - account.getXmppConnection().sendIqPacket(response, null); + return true; } - private void receiveTransportInfo(JinglePacket packet) { + private boolean receiveTransportInfo(JinglePacket packet) { Content content = packet.getJingleContent(); if (content.hasSocks5Transport()) { if (content.socks5transport().hasChild("activated")) { @@ -383,14 +393,17 @@ public class JingleConnection { this.sendCancel(); } } - } else if (content.socks5transport().hasChild("activated")) { + return true; + } else if (content.socks5transport().hasChild("proxy-error")) { onProxyActivated.failed(); + return true; } else if (content.socks5transport().hasChild("candidate-error")) { Log.d("xmppService","received candidate error"); this.receivedCandidate = true; if ((status == STATUS_ACCEPTED)&&(this.sentCandidate)) { this.connect(); } + return true; } else if (content.socks5transport().hasChild("candidate-used")){ String cid = content.socks5transport().findChild("candidate-used").getAttribute("cid"); if (cid!=null) { @@ -403,16 +416,16 @@ public class JingleConnection { } else { Log.d("xmppService","ignoring because file is already in transmission or we havent sent our candidate yet"); } + return true; } else { - Log.d("xmppService","couldn't read used candidate"); + return false; } } else { - Log.d("xmppService","empty transport"); + return false; } + } else { + return true; } - - IqPacket response = packet.generateRespone(IqPacket.TYPE_RESULT); - account.getXmppConnection().sendIqPacket(response, null); } private void connect() { @@ -502,6 +515,7 @@ public class JingleConnection { this.disconnect(); this.status = STATUS_FINISHED; this.mXmppConnectionService.markMessage(this.message, Message.STATUS_RECIEVED); + this.mJingleConnectionManager.finishConnection(this); } private void sendFallbackToIbb() { @@ -514,7 +528,7 @@ public class JingleConnection { this.sendJinglePacket(packet); } - private void receiveFallbackToIbb(JinglePacket packet) { + private boolean receiveFallbackToIbb(JinglePacket packet) { String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size"); if (receivedBlockSize!=null) { int bs = Integer.parseInt(receivedBlockSize); @@ -531,9 +545,10 @@ public class JingleConnection { content.ibbTransport().setAttribute("block-size", ""+this.ibbBlockSize); answer.setContent(content); this.sendJinglePacket(answer); + return true; } - private void receiveTransportAccept(JinglePacket packet) { + private boolean receiveTransportAccept(JinglePacket packet) { if (packet.getJingleContent().hasIbbTransport()) { String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size"); if (receivedBlockSize!=null) { @@ -555,8 +570,9 @@ public class JingleConnection { JingleConnection.this.transport.send(file, onFileTransmitted); } }); + return true; } else { - Log.d("xmppService","invalid transport accept"); + return false; } } @@ -564,12 +580,14 @@ public class JingleConnection { this.status = STATUS_FINISHED; this.mXmppConnectionService.markMessage(this.message, Message.STATUS_SEND); this.disconnect(); + this.mJingleConnectionManager.finishConnection(this); } private void receiveCancel() { this.disconnect(); this.status = STATUS_CANCELED; this.mXmppConnectionService.markMessage(this.message, Message.STATUS_SEND_REJECTED); + this.mJingleConnectionManager.finishConnection(this); } private void sendCancel() { diff --git a/src/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java b/src/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java index 2fa1a6be..a277b74c 100644 --- a/src/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java +++ b/src/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java @@ -51,15 +51,19 @@ public class JingleConnectionManager { public JingleConnection createNewConnection(Message message) { JingleConnection connection = new JingleConnection(this); connection.init(message); - connections.add(connection); + this.connections.add(connection); return connection; } public JingleConnection createNewConnection(JinglePacket packet) { JingleConnection connection = new JingleConnection(this); - connections.add(connection); + this.connections.add(connection); return connection; } + + public void finishConnection(JingleConnection connection) { + this.connections.remove(connection); + } public XmppConnectionService getXmppConnectionService() { return this.xmppConnectionService; |