This commit is contained in:
Beriain 2014-05-13 16:46:03 +02:00
commit 8d27d0c44a
14 changed files with 416 additions and 44 deletions

View File

@ -14,7 +14,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="8dp" android:padding="8dp"
android:text="Contact Details" /> android:text="@string/action_contact_details" />
<RelativeLayout <RelativeLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="88dp" android:layout_height="88dp"
@ -42,7 +42,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingLeft="8dp" android:paddingLeft="8dp"
android:singleLine="true" android:singleLine="true"
android:text="something@jabber.example.com"
android:textColor="#5b5b5b" android:textColor="#5b5b5b"
android:textSize="18sp" /> android:textSize="18sp" />
@ -51,7 +50,6 @@
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:paddingLeft="16dp" android:paddingLeft="16dp"
android:text="online"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" /> android:textStyle="bold" />
</LinearLayout> </LinearLayout>
@ -64,13 +62,12 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="8dp" android:padding="8dp"
android:text="Your account" /> android:text="@string/your_account" />
<TextView <TextView
android:id="@+id/details_account" android:id="@+id/details_account"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingLeft="8dp" android:paddingLeft="8dp"
android:text="julia@jabber.example.com"
android:textSize="18sp" android:textSize="18sp"
android:textColor="#5b5b5b" /> android:textColor="#5b5b5b" />
<TextView <TextView
@ -78,13 +75,13 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="8dp" android:padding="8dp"
android:text="Subscription" /> android:text="@string/subscriptions" />
<CheckBox <CheckBox
android:id="@+id/details_send_presence" android:id="@+id/details_send_presence"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Send presence updates" android:text="@string/send_presence_updates"
android:textSize="18sp" android:textSize="18sp"
android:textColor="#5b5b5b" /> android:textColor="#5b5b5b" />
@ -92,7 +89,7 @@
android:id="@+id/details_receive_presence" android:id="@+id/details_receive_presence"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Receive presence updates" android:text="@string/receive_presence_updates"
android:textSize="18sp" android:textSize="18sp"
android:textColor="#5b5b5b" /> android:textColor="#5b5b5b" />
@ -112,7 +109,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="8dp" android:padding="8dp"
android:text="Keys" /> android:text="@string/keys" />
<LinearLayout <LinearLayout
android:id="@+id/details_contact_keys" android:id="@+id/details_contact_keys"

22
res/values-ca/arrays.xml Normal file
View File

@ -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>

119
res/values-ca/strings.xml Normal file
View File

@ -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&#8230;</string>
<string name="announce_pgp">Renovar anunci PGP</string>
<string name="encrypted_message">Desxifrant missatge. Espera si us plau&#8230;</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&#8230;</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&#8230;</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&#8230;</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>

View File

@ -53,23 +53,23 @@
<string name="send_failed">Zustellung nicht erfolgreich</string> <string name="send_failed">Zustellung nicht erfolgreich</string>
<string name="send_rejected">abgelehnt</string> <string name="send_rejected">abgelehnt</string>
<string name="receiving_image">Empfange Bild. Bitte warten&#8230;</string> <string name="receiving_image">Empfange Bild. Bitte warten&#8230;</string>
<string name="preparing_image">Bereite Bild für die Übertragung vor. Bitte warten&#8230;</string> <string name="preparing_image">Bereite Bild für die Übertragung vor</string>
<string name="action_clear_history">Unterhaltungsverlauf löschen</string> <string name="action_clear_history">Verlauf löschen</string>
<string name="clear_conversation_history">Unterhaltungsverlauf 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="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="delete_messages">Nachrichten löschen</string>
<string name="also_end_conversation">Diese Unterhaltung danach beenden</string> <string name="also_end_conversation">Diese Unterhaltung danach beenden</string>
<string name="choose_presence">Choose presence to contact</string> <string name="choose_presence">Choose presence to contact</string>
<string name="send_message_to_conference">Nachricht an Konferenz schicken</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_plain_text_message">Unverschlüsselt schreiben</string>
<string name="send_otr_message">Nachricht OTR-verschlüsselt verschicken</string> <string name="send_otr_message">OTR-verschlüsselt schreiben</string>
<string name="send_pgp_message">Nachricht openPGP-verschlüsselt verschicken</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="your_nick_has_been_changed">Dein Nickname wurde geändert</string>
<string name="download_image">Bild herunter laden</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="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="image_offered_for_download"><i>Bild Datei zum Download angeboten</i></string>
<string name="not_connected">Nicht verbunden</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="you_are_offline_blank">Du kannst diese Aktion nicht ausführen so lange du offline bist.</string>
<string name="files">Dateien</string> <string name="files">Dateien</string>
<string name="otr_messages">OTR-verschlüsselte Nachrichten</string> <string name="otr_messages">OTR-verschlüsselte Nachrichten</string>
@ -80,7 +80,52 @@
<string name="send_unencrypted">Unverschlüsselt verschicken</string> <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="decryption_failed">Entschlüsselung fehlgeschlagen. Vielleicht hast du nicht den richtigen Private Key.</string>
<string name="openkeychain_required">OpenKeychain</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="restart">Neustarten</string>
<string name="install">Installieren</string> <string name="install">Installieren</string>
<string name="offering">angeboten&#8230;</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 &#8230; 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> </resources>

View File

@ -92,4 +92,32 @@
<string name="otr_file_transfer">Encriptación con OTR no disponible</string> <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="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="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&#8230;</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> </resources>

22
res/values-fr/arrays.xml Normal file
View File

@ -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>

86
res/values-fr/strings.xml Normal file
View File

@ -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&#8230;</string>
<string name="announce_pgp">Renouveller les annonces PGP</string>
<string name="encrypted_message">Déchiffrement du message. Patientez&#8230;</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&#8230;</string>
<string name="preparing_image">Préparation de la transmission de l\'image. Patientez&#8230;</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>

19
res/values-fr/styles.xml Normal file
View File

@ -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>

View File

@ -120,4 +120,12 @@
<string name="error_copying_image_file">Error copying image file.</string> <string name="error_copying_image_file">Error copying image file.</string>
<string name="accept">Accept</string> <string name="accept">Accept</string>
<string name="error">An error has occurred</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> </resources>

View File

@ -4,8 +4,8 @@
android:title="General"> android:title="General">
<CheckBoxPreference <CheckBoxPreference
android:key="grant_new_contacts" android:key="grant_new_contacts"
android:title="Grant presence updates" android:title="@string/pref_grant_presence_updates"
android:summary="Preemptively grant and ask for presence subscription for contacts you created" android:summary="@string/pref_grant_presence_updates_summary"
android:defaultValue="true" android:defaultValue="true"
/> />
<ListPreference <ListPreference

View File

@ -173,7 +173,7 @@ public class ContactDetailsActivity extends XmppActivity {
if (contact.getSubscriptionOption(Contact.Subscription.FROM)) { if (contact.getSubscriptionOption(Contact.Subscription.FROM)) {
send.setChecked(true); send.setChecked(true);
} else { } else {
send.setText("Preemptively grant subscription request"); send.setText(R.string.preemptively_grant);
if (contact if (contact
.getSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT)) { .getSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT)) {
send.setChecked(true); send.setChecked(true);
@ -184,7 +184,7 @@ public class ContactDetailsActivity extends XmppActivity {
if (contact.getSubscriptionOption(Contact.Subscription.TO)) { if (contact.getSubscriptionOption(Contact.Subscription.TO)) {
receive.setChecked(true); receive.setChecked(true);
} else { } else {
receive.setText("Ask for presence updates"); receive.setText(R.string.ask_for_presence_updates);
askAgain.setVisibility(View.VISIBLE); askAgain.setVisibility(View.VISIBLE);
askAgain.setOnClickListener(new OnClickListener() { askAgain.setOnClickListener(new OnClickListener() {

View File

@ -23,8 +23,12 @@ public class TagWriter {
} }
try { try {
AbstractStanza output = writeQueue.take(); AbstractStanza output = writeQueue.take();
outputStream.write(output.toString()); if (outputStream==null) {
outputStream.flush(); shouldStop = true;
} else {
outputStream.write(output.toString());
outputStream.flush();
}
} catch (IOException e) { } catch (IOException e) {
shouldStop = true; shouldStop = true;
} catch (InterruptedException e) { } catch (InterruptedException e) {

View File

@ -135,7 +135,7 @@ public class JingleConnection {
} }
public void deliverPacket(JinglePacket packet) { public void deliverPacket(JinglePacket packet) {
boolean returnResult = true;
if (packet.isAction("session-terminate")) { if (packet.isAction("session-terminate")) {
Reason reason = packet.getReason(); Reason reason = packet.getReason();
if (reason!=null) { if (reason!=null) {
@ -143,26 +143,37 @@ public class JingleConnection {
this.receiveCancel(); this.receiveCancel();
} else if (reason.hasChild("success")) { } else if (reason.hasChild("success")) {
this.receiveSuccess(); this.receiveSuccess();
} else {
this.receiveCancel();
} }
} else { } else {
Log.d("xmppService","remote terminated for no reason");
this.receiveCancel(); this.receiveCancel();
} }
} else if (packet.isAction("session-accept")) { } else if (packet.isAction("session-accept")) {
receiveAccept(packet); returnResult = receiveAccept(packet);
} else if (packet.isAction("transport-info")) { } else if (packet.isAction("transport-info")) {
receiveTransportInfo(packet); returnResult = receiveTransportInfo(packet);
} else if (packet.isAction("transport-replace")) { } else if (packet.isAction("transport-replace")) {
if (packet.getJingleContent().hasIbbTransport()) { if (packet.getJingleContent().hasIbbTransport()) {
this.receiveFallbackToIbb(packet); returnResult = this.receiveFallbackToIbb(packet);
} else { } else {
returnResult = false;
Log.d("xmppService","trying to fallback to something unknown"+packet.toString()); Log.d("xmppService","trying to fallback to something unknown"+packet.toString());
} }
} else if (packet.isAction("transport-accept")) { } else if (packet.isAction("transport-accept")) {
this.receiveTransportAccept(packet); returnResult = this.receiveTransportAccept(packet);
} else { } else {
Log.d("xmppService","packet arrived in connection. action was "+packet.getAction()); 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) { public void init(Message message) {
@ -356,17 +367,16 @@ public class JingleConnection {
account.getXmppConnection().sendIqPacket(packet,responseListener); account.getXmppConnection().sendIqPacket(packet,responseListener);
} }
private void receiveAccept(JinglePacket packet) { private boolean receiveAccept(JinglePacket packet) {
Content content = packet.getJingleContent(); Content content = packet.getJingleContent();
mergeCandidates(JingleCandidate.parse(content.socks5transport().getChildren())); mergeCandidates(JingleCandidate.parse(content.socks5transport().getChildren()));
this.status = STATUS_ACCEPTED; this.status = STATUS_ACCEPTED;
mXmppConnectionService.markMessage(message, Message.STATUS_UNSEND); mXmppConnectionService.markMessage(message, Message.STATUS_UNSEND);
this.connectNextCandidate(); this.connectNextCandidate();
IqPacket response = packet.generateRespone(IqPacket.TYPE_RESULT); return true;
account.getXmppConnection().sendIqPacket(response, null);
} }
private void receiveTransportInfo(JinglePacket packet) { private boolean receiveTransportInfo(JinglePacket packet) {
Content content = packet.getJingleContent(); Content content = packet.getJingleContent();
if (content.hasSocks5Transport()) { if (content.hasSocks5Transport()) {
if (content.socks5transport().hasChild("activated")) { if (content.socks5transport().hasChild("activated")) {
@ -383,14 +393,17 @@ public class JingleConnection {
this.sendCancel(); this.sendCancel();
} }
} }
} else if (content.socks5transport().hasChild("activated")) { return true;
} else if (content.socks5transport().hasChild("proxy-error")) {
onProxyActivated.failed(); onProxyActivated.failed();
return true;
} else if (content.socks5transport().hasChild("candidate-error")) { } else if (content.socks5transport().hasChild("candidate-error")) {
Log.d("xmppService","received candidate error"); Log.d("xmppService","received candidate error");
this.receivedCandidate = true; this.receivedCandidate = true;
if ((status == STATUS_ACCEPTED)&&(this.sentCandidate)) { if ((status == STATUS_ACCEPTED)&&(this.sentCandidate)) {
this.connect(); this.connect();
} }
return true;
} else if (content.socks5transport().hasChild("candidate-used")){ } else if (content.socks5transport().hasChild("candidate-used")){
String cid = content.socks5transport().findChild("candidate-used").getAttribute("cid"); String cid = content.socks5transport().findChild("candidate-used").getAttribute("cid");
if (cid!=null) { if (cid!=null) {
@ -403,16 +416,16 @@ public class JingleConnection {
} else { } else {
Log.d("xmppService","ignoring because file is already in transmission or we havent sent our candidate yet"); Log.d("xmppService","ignoring because file is already in transmission or we havent sent our candidate yet");
} }
return true;
} else { } else {
Log.d("xmppService","couldn't read used candidate"); return false;
} }
} else { } 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() { private void connect() {
@ -502,6 +515,7 @@ public class JingleConnection {
this.disconnect(); this.disconnect();
this.status = STATUS_FINISHED; this.status = STATUS_FINISHED;
this.mXmppConnectionService.markMessage(this.message, Message.STATUS_RECIEVED); this.mXmppConnectionService.markMessage(this.message, Message.STATUS_RECIEVED);
this.mJingleConnectionManager.finishConnection(this);
} }
private void sendFallbackToIbb() { private void sendFallbackToIbb() {
@ -514,7 +528,7 @@ public class JingleConnection {
this.sendJinglePacket(packet); this.sendJinglePacket(packet);
} }
private void receiveFallbackToIbb(JinglePacket packet) { private boolean receiveFallbackToIbb(JinglePacket packet) {
String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size"); String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size");
if (receivedBlockSize!=null) { if (receivedBlockSize!=null) {
int bs = Integer.parseInt(receivedBlockSize); int bs = Integer.parseInt(receivedBlockSize);
@ -531,9 +545,10 @@ public class JingleConnection {
content.ibbTransport().setAttribute("block-size", ""+this.ibbBlockSize); content.ibbTransport().setAttribute("block-size", ""+this.ibbBlockSize);
answer.setContent(content); answer.setContent(content);
this.sendJinglePacket(answer); this.sendJinglePacket(answer);
return true;
} }
private void receiveTransportAccept(JinglePacket packet) { private boolean receiveTransportAccept(JinglePacket packet) {
if (packet.getJingleContent().hasIbbTransport()) { if (packet.getJingleContent().hasIbbTransport()) {
String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size"); String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size");
if (receivedBlockSize!=null) { if (receivedBlockSize!=null) {
@ -555,8 +570,9 @@ public class JingleConnection {
JingleConnection.this.transport.send(file, onFileTransmitted); JingleConnection.this.transport.send(file, onFileTransmitted);
} }
}); });
return true;
} else { } else {
Log.d("xmppService","invalid transport accept"); return false;
} }
} }
@ -564,12 +580,14 @@ public class JingleConnection {
this.status = STATUS_FINISHED; this.status = STATUS_FINISHED;
this.mXmppConnectionService.markMessage(this.message, Message.STATUS_SEND); this.mXmppConnectionService.markMessage(this.message, Message.STATUS_SEND);
this.disconnect(); this.disconnect();
this.mJingleConnectionManager.finishConnection(this);
} }
private void receiveCancel() { private void receiveCancel() {
this.disconnect(); this.disconnect();
this.status = STATUS_CANCELED; this.status = STATUS_CANCELED;
this.mXmppConnectionService.markMessage(this.message, Message.STATUS_SEND_REJECTED); this.mXmppConnectionService.markMessage(this.message, Message.STATUS_SEND_REJECTED);
this.mJingleConnectionManager.finishConnection(this);
} }
private void sendCancel() { private void sendCancel() {

View File

@ -51,15 +51,19 @@ public class JingleConnectionManager {
public JingleConnection createNewConnection(Message message) { public JingleConnection createNewConnection(Message message) {
JingleConnection connection = new JingleConnection(this); JingleConnection connection = new JingleConnection(this);
connection.init(message); connection.init(message);
connections.add(connection); this.connections.add(connection);
return connection; return connection;
} }
public JingleConnection createNewConnection(JinglePacket packet) { public JingleConnection createNewConnection(JinglePacket packet) {
JingleConnection connection = new JingleConnection(this); JingleConnection connection = new JingleConnection(this);
connections.add(connection); this.connections.add(connection);
return connection; return connection;
} }
public void finishConnection(JingleConnection connection) {
this.connections.remove(connection);
}
public XmppConnectionService getXmppConnectionService() { public XmppConnectionService getXmppConnectionService() {
return this.xmppConnectionService; return this.xmppConnectionService;