diff options
Diffstat (limited to 'main')
72 files changed, 6621 insertions, 2677 deletions
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 9c5b06ff..2f1e082b 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -29,6 +29,7 @@ set(RESOURCE_LIST chat_input.ui contact_details_dialog.ui conversation_list_titlebar.ui + global_search.ui conversation_selector/view.ui conversation_selector/chat_row_tooltip.ui conversation_selector/conversation_row.ui @@ -43,7 +44,9 @@ set(RESOURCE_LIST menu_encryption.ui occupant_list.ui occupant_list_item.ui + search_autocomplete.ui settings_dialog.ui + unified_main_content.ui unified_window_placeholder.ui theme.css @@ -93,26 +96,20 @@ SOURCES src/ui/contact_details/dialog.vala src/ui/contact_details/muc_config_form_provider.vala src/ui/conversation_list_titlebar.vala - src/ui/conversation_selector/chat_row.vala + src/ui/global_search.vala src/ui/conversation_selector/conversation_row.vala - src/ui/conversation_selector/groupchat_pm_row.vala - src/ui/conversation_selector/groupchat_row.vala src/ui/conversation_selector/list.vala src/ui/conversation_selector/view.vala src/ui/conversation_summary/chat_state_populator.vala + src/ui/conversation_summary/content_item_widget_factory.vala + src/ui/conversation_summary/content_populator.vala src/ui/conversation_summary/conversation_item_skeleton.vala src/ui/conversation_summary/conversation_view.vala src/ui/conversation_summary/date_separator_populator.vala - src/ui/conversation_summary/default_file_display.vala - src/ui/conversation_summary/default_message_display.vala - src/ui/conversation_summary/file_populator.vala - src/ui/conversation_summary/image_display.vala - src/ui/conversation_summary/message_populator.vala - src/ui/conversation_summary/message_textview.vala - src/ui/conversation_summary/slashme_message_display.vala src/ui/conversation_summary/subscription_notification.vala src/ui/conversation_titlebar/menu_entry.vala src/ui/conversation_titlebar/occupants_entry.vala + src/ui/conversation_titlebar/search_entry.vala src/ui/conversation_titlebar/view.vala src/ui/manage_accounts/account_row.vala src/ui/manage_accounts/add_account_dialog.vala @@ -124,6 +121,7 @@ SOURCES src/ui/settings_dialog.vala src/ui/unified_window.vala src/ui/util/accounts_combo_box.vala + src/ui/util/data_forms.vala src/ui/util/helper.vala src/ui/util/label_hybrid.vala src/ui/util/preview_file_chooser_native.vala diff --git a/main/data/conversation_list_titlebar.ui b/main/data/conversation_list_titlebar.ui index f8fabedc..6c5d2d0a 100644 --- a/main/data/conversation_list_titlebar.ui +++ b/main/data/conversation_list_titlebar.ui @@ -22,20 +22,5 @@ <property name="pack_type">start</property> </packing> </child> - <child> - <object class="GtkToggleButton" id="search_button"> - <property name="visible">True</property> - <child> - <object class="GtkImage"> - <property name="visible">True</property> - <property name="icon-name">system-search-symbolic</property> - <property name="icon-size">1</property> - </object> - </child> - </object> - <packing> - <property name="pack_type">end</property> - </packing> - </child> </template> </interface> diff --git a/main/data/conversation_selector/conversation_row.ui b/main/data/conversation_selector/conversation_row.ui index 3e178c4f..86ca1ba6 100644 --- a/main/data/conversation_selector/conversation_row.ui +++ b/main/data/conversation_selector/conversation_row.ui @@ -80,6 +80,7 @@ </child> <child> <object class="GtkLabel" id="message_label"> + <property name="use_markup">True</property> <property name="max_width_chars">1</property> <property name="ellipsize">end</property> <property name="expand">True</property> diff --git a/main/data/conversation_selector/view.ui b/main/data/conversation_selector/view.ui index 365957a8..c5560ad1 100644 --- a/main/data/conversation_selector/view.ui +++ b/main/data/conversation_selector/view.ui @@ -5,21 +5,6 @@ <property name="expand">True</property> <property name="orientation">vertical</property> <child> - <object class="GtkRevealer" id="search_revealer"> - <property name="hexpand">True</property> - <property name="visible">True</property> - <child> - <object class="GtkSearchEntry" id="search_entry"> - <property name="primary_icon_name">edit-find-symbolic</property> - <property name="placeholder_text" translatable="yes">Search</property> - <property name="margin">10px</property> - <property name="hexpand">True</property> - <property name="visible">True</property> - </object> - </child> - </object> - </child> - <child> <object class="GtkScrolledWindow" id="scrolled"> <property name="expand">True</property> <property name="hscrollbar_policy">never</property> diff --git a/main/data/conversation_summary/view.ui b/main/data/conversation_summary/view.ui index 2bc13752..90d3d7c1 100644 --- a/main/data/conversation_summary/view.ui +++ b/main/data/conversation_summary/view.ui @@ -15,6 +15,7 @@ <child> <object class="GtkScrolledWindow" id="scrolled"> <property name="hscrollbar_policy">never</property> + <property name="expand">True</property> <property name="visible">True</property> <child> <object class="GtkBox"> @@ -29,12 +30,6 @@ <property name="visible">True</property> </object> </child> - <child> - <object class="GtkBox" id="filler"> - <property name="expand">True</property> - <property name="visible">True</property> - </object> - </child> </object> </child> </object> diff --git a/main/data/global_search.ui b/main/data/global_search.ui new file mode 100644 index 00000000..4814f236 --- /dev/null +++ b/main/data/global_search.ui @@ -0,0 +1,170 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <template class="DinoUiGlobalSearch" parent="GtkOverlay"> + <property name="visible">True</property> + <child> + <object class="GtkBox"> + <property name="orientation">vertical</property> + <property name="visible">True</property> + <child> + <object class="GtkSearchEntry" id="search_entry"> + <property name="visible">True</property> + <property name="margin">12</property> + </object> + </child> + <child> + <object class="GtkStack" id="results_empty_stack"> + <property name="visible">True</property> + <child> + <object class="GtkBox"> + <property name="orientation">vertical</property> + <property name="spacing">10</property> + <property name="valign">center</property> + <property name="visible">True</property> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="icon-name">system-search-symbolic</property> + <property name="icon-size">4</property> + <property name="pixel-size">72</property> + <style> + <class name="dim-label"/> + </style> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="label" translatable="yes">No active search</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="visible">True</property> + <attributes> + <attribute name="weight" value="PANGO_WEIGHT_BOLD"/> + <attribute name="scale" value="1.3"/> + </attributes> + <style> + <class name="dim-label"/> + </style> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="label" translatable="yes">Type to start a search</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="visible">True</property> + <style> + <class name="dim-label"/> + </style> + </object> + </child> + </object> + <packing> + <property name="name">empty</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="orientation">vertical</property> + <property name="spacing">10</property> + <property name="valign">center</property> + <property name="visible">True</property> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="icon-name">face-uncertain-symbolic</property> + <property name="icon-size">4</property> + <property name="pixel-size">72</property> + <style> + <class name="dim-label"/> + </style> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="label" translatable="yes">No matching messages</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="visible">True</property> + <attributes> + <attribute name="weight" value="PANGO_WEIGHT_BOLD"/> + <attribute name="scale" value="1.3"/> + </attributes> + <style> + <class name="dim-label"/> + </style> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="label" translatable="yes">Check the spelling or try to remove filters</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="visible">True</property> + <style> + <class name="dim-label"/> + </style> + </object> + </child> + </object> + <packing> + <property name="name">no-result</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="orientation">vertical</property> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="entry_number_label"> + <property name="xalign">0</property> + <property name="use-markup">True</property> + <property name="margin-left">17</property> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="GtkScrolledWindow" id="results_scrolled"> + <property name="hscrollbar-policy">never</property> + <property name="expand">True</property> + <property name="visible">True</property> + <child> + <object class="GtkBox" id="results_box"> + <property name="orientation">vertical</property> + <property name="spacing">25</property> + <property name="margin">10</property> + <property name="valign">start</property> + <property name="visible">True</property> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="name">results</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="overlay"> + <object class="GtkFrame" id="auto_complete_overlay"> + <property name="visible">True</property> + <property name="margin-top">42</property> + <property name="margin-left">12</property> + <property name="margin-right">12</property> + <property name="valign">start</property> + <style> + <class name="auto-complete"/> + </style> + <child> + <object class="GtkListBox" id="auto_complete_list"> + <property name="visible">True</property> + <property name="selection-mode">browse</property> + </object> + </child> + </object> + </child> + </template> +</interface> diff --git a/main/data/im.dino.Dino.appdata.xml b/main/data/im.dino.Dino.appdata.xml index 5df9a3b1..3ef17748 100644 --- a/main/data/im.dino.Dino.appdata.xml +++ b/main/data/im.dino.Dino.appdata.xml @@ -6,63 +6,78 @@ <project_license>GPL-3.0+</project_license> <name>Dino</name> <summary>Modern XMPP Chat Client</summary> - <summary xml:lang="zh_Hans">现代 XMPP 客户端</summary> - <summary xml:lang="ru">Современный XMPP-клиент</summary> - <summary xml:lang="ro">Client XMPP modern</summary> - <summary xml:lang="nl_BE">Modernen XMPP-cliënt</summary> - <summary xml:lang="nl">Moderne XMPP-cliënt</summary> - <summary xml:lang="nb">Moderne XMPP-klient</summary> - <summary xml:lang="lb">Modernen XMPP Client</summary> - <summary xml:lang="it">Client XMPP moderno</summary> + <summary xml:lang="ro">Client XMPP de discuții modern</summary> + <summary xml:lang="pt_BR">Moderno cliente de chat XMPP</summary> + <summary xml:lang="pl">Nowoczesny klient Chatu XMPP</summary> + <summary xml:lang="nl_BE">Modernen XMPP-chatcliënt</summary> + <summary xml:lang="nl">Moderne XMPP-chatcliënt</summary> + <summary xml:lang="nb">Moderne XMPP-sludreklient</summary> + <summary xml:lang="lb">Modernen XMPP Chat Client</summary> + <summary xml:lang="it">Client di chat moderno per XMPP</summary> + <summary xml:lang="hu">Modern XMPP Üzenetküldő</summary> + <summary xml:lang="gl">Cliente moderno para conversas XMPP</summary> <summary xml:lang="fr">Client XMPP moderne</summary> - <summary xml:lang="fi">Moderni XMPP-asiakasohjelma</summary> - <summary xml:lang="eu">XMPP bezero modernoa</summary> - <summary xml:lang="es">Cliente XMPP moderno</summary> + <summary xml:lang="eu">XMPP txat bezero modernoa</summary> + <summary xml:lang="es">Cliente de XMPP moderno</summary> <summary xml:lang="de">Moderner XMPP Chat Client</summary> - <summary xml:lang="ca">Client d'XMPP modern</summary> + <summary xml:lang="ar">تطبيق حديث للدردشة عبر XMPP</summary> <description> <p>Dino is a modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.</p> <p xml:lang="zh_Hans">Dino 是一个现代的开源聊天桌面客户端。它致力于提供一个清爽又可靠的 Jabber/XMPP 体验,同时又保护您的隐私。</p> <p xml:lang="ro">Dino este un client de chat modern, cu sursă deschisă, pentru calculatoare. Se concentrează să furnizeze o experiență Jabber/XMPP clară și fiabilă, ținând cont de confidențialitatea dumneavoastră.</p> + <p xml:lang="pt_BR">Dino é um moderno chat de código aberto para desktop. Ele é focado em prover uma transparente e confiável experiência Jabber/XMPP, tendo em mente a sua privacidade.</p> + <p xml:lang="pl">Dino jest nowoczesnym klientem chat z otwartym źródłem w wersji na komputery. Skupia się na prostej obsłudze Jabber/XMPP dbając o twoją prywatność.</p> <p xml:lang="nl_BE">Dino is een moderne, vrije chattoepassing voor uw bureaublad. Ze biedt een eenvoudige en betrouwbare Jabber/XMPP-ervaring, met uw privacy in het achterhoofd.</p> <p xml:lang="nl">Dino is een moderne, vrije chattoepassing voor uw bureaublad. Ze biedt een eenvoudige en betrouwbare Jabber/XMPP-ervaring, met uw privacy in het achterhoofd.</p> <p xml:lang="nb">Dino er en moderne friporg-sludringsklient for skrivebordet. Det fokuserer på rask og pålitelig XMPP-opplevelse, samtidig som det hegner om personvernet.</p> <p xml:lang="lb">Dino ass e modernen, quell-offene Chat Client fir den Desktop. Hien biet eng opgeraumt a robust Jabber/XMPP Erfarung a leet ee Schwéierpunkt op Privatsphär.</p> + <p xml:lang="it">Dino è un client di chat per il desktop, moderno e open-source. Si concentra nel fornire un'esperienza Jabber/XMPP pulita e affidabile tenendo presente la tua privacy.</p> + <p xml:lang="hu">A Dino egy modern, nyílt forráskódú üzenetküldő alkalmazás asztali rendszerekre, ami a hangsúlyt a letisztult és megbízható Jabber/XMPP élményre helyezi, miközben a magánszféra megőrzését is fontosnak tartja.</p> + <p xml:lang="gl">Dino é un cliente moderno e de código aberto para o escritorio. Orientado a proporcionar unha experiencia Jabber/XMPP limpa e fiable tendo a intimidade presente.</p> <p xml:lang="fr">Dino est un client de chat libre et moderne pour le bureau. Il tente de fournir une expérience Jabber/XMPP simple et fiable tout en ayant toujours à l’esprit votre vie privée.</p> <p xml:lang="fi">Dino on nykyaikainen avoimen lähdekoodin jutteluohjelma työpöydälle. Se keskittyy tarjoamaan selkeän ja luotettavan Jabber/XMPP-kokemuksen unohtamatta yksityisyyttäsi.</p> <p xml:lang="eu">Dino mahaigainerako iturburu irekiko txat bezero moderno bat da. Jabber/XMPP esperientzia garbi eta fidagarri bat ematen du zure pribatutasuna kontuan hartzeaz gain.</p> <p xml:lang="es">Dino es un cliente de conversaciones moderno y libre para escritorio. Está enfocado en proveer una experiencia Jabber/XMPP limpia y confiable teniendo tu privacidad en mente.</p> <p xml:lang="de">Dino ist ein moderner, quelloffener Chat Client. Er bietet eine aufgeräumte und robuste Jabber/XMPP Erfahrung und legt einen Schwerpunkt auf Privatsphäre.</p> <p xml:lang="ca">Dino és un client de xat lliure i modern per a l'escriptori. Està centrat en proveir una experiència neta i fiable de Jabber/XMPP, sempre tenint en compte la vostra privacitat.</p> + <p xml:lang="ar">دينو برنامج حديث ومفتوح المصدر للدردشة صُمّم لسطح المكتب. ويُركّز علي تقديم تجربة نظيفة وموثوق منها لجابر/XMPP مع أخذ خصوصيتكم بعين الإعتبار.</p> <p>It supports end-to-end encryption with OMEMO and OpenPGP and allows configuring privacy-related features such as read receipts and typing notifications.</p> <p xml:lang="zh_Hans">它支持 OMEMO 和 OpenPGP 端对端加密并允许配置隐私相关的特性比如已读回执和输入提醒。</p> <p xml:lang="ro">Suportă criptare de la un capăt la altul prin intermediul OMEMO și OpenPGP, și permite configurarea caracteristicilor legate de confidențialitate precum trimiterea notificărilor de primire și tastare.</p> + <p xml:lang="pt_BR">Suporte criptografia ponta a ponta com OMEMO e OpenPGP e permite configurar privacidade—características relacionadas às notificações de leitura, recebimento e escrita.</p> <p xml:lang="nl_BE">Ze ondersteunt eind-tot-eind-versleuteling met OMEMO en OpenPGP, en laat u toe privacygerelateerde functies, gelijk leesbevestigingen en typmeldingen, in te stellen.</p> <p xml:lang="nl">Ze ondersteunt eind-tot-eind-versleuteling met OMEMO en OpenPGP, en staat u toe privacy-gerelateerde functies, zoals leesbevestigingen en typmeldingen, in te stellen.</p> <p xml:lang="nb">Det støtter ende-til-ende -kryptering med OMEMO og OpenPGP, og tillater oppsett av personvernsrelaterte funksjoner som meldingskvitteringer og skrivevarsling.</p> <p xml:lang="lb">Hien ënnerstëtz Enn-zu-Enn Verschlësselung mat OMEMO an OpenPGP an enthält Privatsphäre-Astellungen zu Liesbestätegungen an Tipp-Benoriichtegungen.</p> <p xml:lang="it">Support la crittografia end-to-end tramite OMEMO e OpenPGP e permette di configurare le funzioni relative alla privacy come le ricevute di lettura e le notifiche di digitazione.</p> + <p xml:lang="hu">Támogatja a végponttól-végpontig titkosítást az OMEMO és az OpenPGP által, és magánszférához kötődő beállítási lehetőségeket is biztosít, mint például a kézbesítési, vagy gépelési értesítések küldése.</p> + <p xml:lang="gl">Soporta o cifrado de extremo-a-extremo con OMEMO e OpenPGP e permite configurar características orientadas a intimidade tales como confirmación de lectura e notificacións de escritura.</p> <p xml:lang="fr">Il prend en charge le chiffrement de bout en bout avec OMEMO et OpenPGP et permet de configurer les fonctions liées à la vie privée telles que l’accusé de réception et les notifications de frappe.</p> <p xml:lang="fi">Se tukee päästä päähän -salausta OMEMO:n ja OpenPGP:n avulla ja mahdollistaa yksityisyyteen liittyvien ominaisuuksien, kuten lukukuittausten ja kirjoitusilmoitusten asetusten määrittämisen.</p> - <p xml:lang="eu">Amaieratik amaierarako enkriptazioa onartzen du OMEMO eta OpenPGPrekin eta pribatutasun ezaugarriak konfiguratzea baimentzen du irakurtze baieztapenak eta idazketa jakinarazpenak bezala.</p> + <p xml:lang="eu">Amaieratik amaierarako enkriptazioa onartzen du OMEMO eta OpenPGPrekin eta pribatutasun ezaugarriak konfiguratzea baimentzen du irakurtze markak eta idazketa jakinarazpenak bezala.</p> <p xml:lang="es">Soporta cifrado de extremo a extremo a través de OMEMO y OpenPGP y permite configurar las características relacionadas con la privacidad, como confirmaciones de lectura y notificaciones de escritura.</p> <p xml:lang="de">Er unterstützt Ende-zu-Ende Verschlüsselung mit OMEMO und OpenPGP und enthält Privatsphäre-Einstellungen zu Lesebestätigungen und Tippbenachrichtigungen.</p> <p xml:lang="ca">Implementa xifratge punt a punt amb OMEMO i OpenPGP, i permet configurar funcionalitats relacionades amb la privacitat com per exemple rebuts de lectura i notificacions d'escriptura.</p> + <p xml:lang="ar">وهو يدعم التشفير بواسطة OMEMO و OpenPGP يسمح بإعداد ميزات الخصوصية كالإيصالات المقروءة والإخطارات عند الكتابة.</p> <p>Dino fetches history from the server and synchronizes messages with other devices.</p> <p xml:lang="zh_Hans">Dino 从服务器获取消息并和其他设备同步。</p> <p xml:lang="ru">Dino загружает историю с сервера и синхронизирует сообщения с другими устройствами.</p> <p xml:lang="ro">Dino preia istoricul discuțiilor de pe server și sincronizează mesajele cu celelalte dispozitive.</p> + <p xml:lang="pt_BR">Dino obtém o histórico do servidor e sincroniza mensagens com outros dispositivos.</p> <p xml:lang="nl_BE">Dino haalt de geschiedenis op van de server en synchroniseert berichten met andere apparaten.</p> <p xml:lang="nl">Dino haalt de geschiedenis op van de server en synchroniseert berichten met andere apparaten.</p> <p xml:lang="nb">Dino henter historikk fra tjeneren og synkroniserer meldinger med andre enheter.</p> <p xml:lang="lb">Dino rifft Gespréichverläf vum Server of a synchroniséiert Noriichte mat anere Geräter.</p> <p xml:lang="it">Dino recupera la cronologia dal server e sincronizza i messaggi con gli altri dispositivi.</p> + <p xml:lang="hu">A Dino lekéri a chat előzményeket a szerverről, és szinkronizálja az üzeneteket a többi eszközzel.</p> + <p xml:lang="gl">Dino obtén o histórico desde o servidor e sincroniza as mensaxes con outros dispositivos.</p> <p xml:lang="fr">Dino récupère l’historique du serveur et synchronise les messages avec d'autres appareils.</p> <p xml:lang="fi">Dino hakee historian palvelimelta ja synkronisoi viestit muiden laitteiden kanssa.</p> <p xml:lang="eu">Dinok zerbitzaritik hartzen du historia eta beste gailuekin mezuak sinkronizatzen ditu.</p> <p xml:lang="es">Dino recupera los mensajes desde el servidor y sincroniza los mensajes con otros dispositivos.</p> <p xml:lang="de">Dino ruft Gesprächsverläufe vom Server ab und synchronisiert Nachrichten mit anderen Geräten.</p> <p xml:lang="ca">Dino recupera l'historial del servidor i sincronitza els missatges amb altres dispositius.</p> + <p xml:lang="ar">يقوم دينو بجلب السِجلّ مِن السيرفر ثم يُزامِن الرسائل مع الأجهزة الأخرى.</p> </description> <screenshots> <screenshot type="default"> @@ -70,17 +85,22 @@ <caption xml:lang="zh_Hans">带有对话的主窗口</caption> <caption xml:lang="ru">Главное окно с чатами</caption> <caption xml:lang="ro">Fereastra principală de conversații</caption> + <caption xml:lang="pt_BR">Janela principal com as conversas</caption> + <caption xml:lang="pl">Główne okno rozmów</caption> <caption xml:lang="nl_BE">Hoofdvenster met gesprekken</caption> <caption xml:lang="nl">Hoofdvenster met gesprekken</caption> <caption xml:lang="nb">Hovedvindu med samtaler</caption> <caption xml:lang="lb">Haaptfënster mat den Conversatiounen</caption> <caption xml:lang="it">La finestra principale con le conversazioni</caption> + <caption xml:lang="hu">A fő ablak a beszélgetésekkel</caption> + <caption xml:lang="gl">Xanela principal con conversas</caption> <caption xml:lang="fr">Fenêtre principale avec des conversations</caption> <caption xml:lang="fi">Keskustelut pääikkunassa</caption> <caption xml:lang="eu">Leiho nagusia elkarrizketekin</caption> <caption xml:lang="es">Ventana principal con conversaciones</caption> <caption xml:lang="de">Hauptfenster mit Konversationen</caption> <caption xml:lang="ca">Finestra principal amb converses</caption> + <caption xml:lang="ar">النافذة الرئيسية بالمُحادثات</caption> <image height="900" width="1600">https://dino.im/img/appdata/main.png</image> </screenshot> <screenshot> @@ -89,16 +109,20 @@ <caption xml:lang="ru">Начать чат</caption> <caption xml:lang="ro">Pornește o conversație</caption> <caption xml:lang="pt_BR">Iniciar conversa</caption> + <caption xml:lang="pl">Rozpocznij rozmowę</caption> <caption xml:lang="nl_BE">Gesprek beginnen</caption> <caption xml:lang="nl">Gesprek beginnen</caption> <caption xml:lang="nb">Start samtale</caption> <caption xml:lang="lb">Konversatioun starten</caption> <caption xml:lang="it">Inizia una Conversazione</caption> + <caption xml:lang="hu">Csevegés kezdeményezése</caption> + <caption xml:lang="gl">Iniciar Conversa</caption> <caption xml:lang="fr">Commencer une discussion</caption> <caption xml:lang="fi">Aloita keskustelu</caption> <caption xml:lang="eu">Elkarrizketa hasi</caption> <caption xml:lang="es">Iniciar conversación</caption> <caption xml:lang="de">Unterhaltung starten</caption> + <caption xml:lang="ar">الشروع في محادثة</caption> <image height="900" width="1600">https://dino.im/img/appdata/start_chat.png</image> </screenshot> <screenshot> @@ -114,6 +138,8 @@ <caption xml:lang="lb">Kontaktdetailer</caption> <caption xml:lang="ja">相手先の詳細</caption> <caption xml:lang="it">Dettagli del contatto</caption> + <caption xml:lang="hu">Felhasználó információ</caption> + <caption xml:lang="gl">Detalles do contacto</caption> <caption xml:lang="fr">Informations du contact</caption> <caption xml:lang="fi">Yhteystiedot</caption> <caption xml:lang="eu">Kontaktuaren xehetasunak</caption> @@ -121,6 +147,7 @@ <caption xml:lang="eo">Kontaktaj Detaloj</caption> <caption xml:lang="de">Kontaktdetails</caption> <caption xml:lang="ca">Detalls del contacte</caption> + <caption xml:lang="ar">تفاصيل عن المُراسل</caption> <image height="900" width="1600">https://dino.im/img/appdata/contact_details.png</image> </screenshot> </screenshots> diff --git a/main/data/im.dino.Dino.appdata.xml.in b/main/data/im.dino.Dino.appdata.xml.in index cf748d9b..17c56b8b 100644 --- a/main/data/im.dino.Dino.appdata.xml.in +++ b/main/data/im.dino.Dino.appdata.xml.in @@ -7,17 +7,9 @@ <name>Dino</name> <summary>Modern XMPP Chat Client</summary> <description> - <p> - Dino is a modern open-source chat client for the desktop. It focuses on providing a clean and reliable - Jabber/XMPP experience while having your privacy in mind. - </p> - <p> - It supports end-to-end encryption with OMEMO and OpenPGP and allows configuring privacy-related features - such as read receipts and typing notifications. - </p> - <p> - Dino fetches history from the server and synchronizes messages with other devices. - </p> + <p>Dino is a modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.</p> + <p>It supports end-to-end encryption with OMEMO and OpenPGP and allows configuring privacy-related features such as read receipts and typing notifications.</p> + <p>Dino fetches history from the server and synchronizes messages with other devices.</p> </description> <screenshots> <screenshot type="default"> diff --git a/main/data/manage_accounts/add_account_dialog.ui b/main/data/manage_accounts/add_account_dialog.ui index 44c131c3..b39f07a8 100644 --- a/main/data/manage_accounts/add_account_dialog.ui +++ b/main/data/manage_accounts/add_account_dialog.ui @@ -1,136 +1,390 @@ <?xml version="1.0" encoding="UTF-8"?> <interface> <template class="DinoUiManageAccountsAddAccountDialog"> - <property name="default_width">300</property> + <property name="default_width">400</property> <property name="modal">True</property> - <child type="titlebar"> - <object class="GtkHeaderBar"> - <property name="visible">True</property> - <child> - <object class="GtkButton" id="cancel_button"> - <property name="label" translatable="yes">Cancel</property> - <property name="visible">True</property> - </object> - <packing> - <property name="pack_type">start</property> - </packing> - </child> - <child> - <object class="GtkButton" id="ok_button"> - <property name="can_default">True</property> - <property name="label" translatable="yes">Save</property> - <property name="sensitive">False</property> - <property name="visible">True</property> - <style> - <class name="suggested-action"/> - </style> - </object> - <packing> - <property name="pack_type">end</property> - </packing> - </child> - </object> - </child> <child internal-child="vbox"> <object class="GtkBox"> <property name="visible">True</property> <child> - <object class="GtkGrid" id="info_grid"> - <property name="orientation">vertical</property> - <property name="margin">20</property> - <property name="column-spacing">10</property> - <property name="row-spacing">7</property> + <object class="GtkOverlay"> <property name="visible">True</property> <child> - <object class="GtkLabel"> - <property name="label">JID</property> - <property name="xalign">1</property> - <property name="visible">True</property> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> - </packing> - </child> - <child> - <object class="GtkEntry" id="jid_entry"> - <property name="activates_default">True</property> - <property name="hexpand">True</property> - <property name="width_request">200</property> - <property name="visible">True</property> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> - </packing> - </child> - <child> - <object class="GtkLabel"> - <property name="label" translatable="yes">Password</property> - <property name="xalign">1</property> + <object class="GtkBox"> + <property name="expand">True</property> <property name="visible">True</property> + <child> + <object class="GtkStack" id="stack"> + <property name="transition_type">slide-left</property> + <property name="expand">True</property> + <property name="visible">True</property> + <child> + <object class="GtkBox" id="sign_in_box"> + <property name="orientation">vertical</property> + <property name="margin">20</property> + <property name="margin-start">50</property> + <property name="margin-end">50</property> + <property name="visible">True</property> + <child> + <object class="GtkLabel"> + <property name="label">Sign in</property> + <property name="margin-bottom">10</property> + <property name="visible">True</property> + <attributes> + <attribute name="scale" value="1.3"/> + </attributes> + </object> + </child> + <child> + <object class="GtkBox" id="info_grid"> + <property name="orientation">vertical</property> + <property name="visible">True</property> + <child> + <object class="GtkLabel"> + <property name="label">JID</property> + <property name="xalign">0</property> + <property name="visible">True</property> + <attributes> + <attribute name="scale" value="0.9"/> + </attributes> + </object> + </child> + <child> + <object class="GtkEntry" id="jid_entry"> + <property name="activates_default">True</property> + <property name="hexpand">True</property> + <property name="width_request">200</property> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="label" translatable="yes">Password</property> + <property name="xalign">0</property> + <property name="margin-top">7</property> + <property name="visible">True</property> + <attributes> + <attribute name="scale" value="0.9"/> + </attributes> + </object> + </child> + <child> + <object class="GtkEntry" id="password_entry"> + <property name="activates_default">True</property> + <property name="hexpand">True</property> + <property name="input_purpose">password</property> + <property name="width_request">200</property> + <property name="visible">True</property> + <property name="visibility">False</property> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="label" translatable="yes">Local alias</property> + <property name="xalign">0</property> + <property name="margin-top">7</property> + <property name="visible">True</property> + <attributes> + <attribute name="scale" value="0.9"/> + </attributes> + </object> + </child> + <child> + <object class="GtkEntry" id="alias_entry"> + <property name="activates_default">True</property> + <property name="hexpand">True</property> + <property name="width_request">200</property> + <property name="visible">True</property> + </object> + </child> + </object> + </child> + <child> + <object class="GtkBox"> + <property name="orientation">horizontal</property> + <property name="margin-top">20</property> + <property name="visible">True</property> + <child> + <object class="GtkButton" id="serverlist_button"> + <property name="label" translatable="yes">Create account</property> + <property name="visible">True</property> + </object> + <packing> + <property name="pack_type">start</property> + </packing> + </child> + <child> + <object class="GtkButton" id="sign_in_continue"> + <property name="can_default">True</property> + <property name="label" translatable="yes">Save</property> + <property name="sensitive">False</property> + <property name="visible">True</property> + <style> + <class name="suggested-action"/> + </style> + </object> + <packing> + <property name="pack_type">end</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="name">login</property> + </packing> + </child> + <child> + <object class="GtkBox" id="create_account_box"> + <property name="orientation">vertical</property> + <property name="margin">20</property> + <property name="margin-start">50</property> + <property name="margin-end">50</property> + <property name="visible">True</property> + <child> + <object class="GtkLabel"> + <property name="label" translatable="yes">Create account</property> + <property name="margin-bottom">20</property> + <property name="visible">True</property> + <attributes> + <attribute name="scale" value="1.3"/> + </attributes> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Choose a public server</property> + <attributes> + <attribute name="weight" value="PANGO_WEIGHT_BOLD"/> + </attributes> + </object> + </child> + <child> + <object class="GtkFrame"> + <property name="visible">True</property> + <child> + <object class="GtkScrolledWindow"> + <property name="max_content_height">300</property> + <property name="propagate_natural_height">True</property> + <property name="hscrollbar_policy">never</property> + <property name="visible">True</property> + <child> + <object class="GtkListBox" id="server_list_box"> + <property name="visible">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="margin-top">20</property> + <property name="label" translatable="yes">Or specify a server address</property> + <attributes> + <attribute name="weight" value="PANGO_WEIGHT_BOLD"/> + </attributes> + </object> + </child> + <child> + <object class="GtkEntry" id="server_entry"> + <property name="activates_default">True</property> + <property name="can_default">True</property> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin-top">30</property> + <property name="orientation">horizontal</property> + <child> + <object class="GtkButton" id="login_button"> + <property name="label" translatable="yes">Sign in instead</property> + <property name="visible">True</property> + </object> + <packing> + <property name="pack_type">start</property> + </packing> + </child> + <child> + <object class="GtkButton" id="select_server_continue"> + <property name="sensitive">False</property> + <property name="can_default">True</property> + <property name="visible">True</property> + <style> + <class name="text-button"/> + <class name="suggested-action"/> + </style> + <child> + <object class="GtkStack" id="select_server_continue_stack"> + <property name="visible">True</property> + <child> + <object class="GtkLabel"> + <property name="label" translatable="yes">Next</property> + <property name="visible">True</property> + </object> + <packing> + <property name="name">label</property> + </packing> + </child> + <child> + <object class="GtkSpinner"> + <property name="active">True</property> + <property name="visible">True</property> + </object> + <packing> + <property name="name">spinner</property> + </packing> + </child> + </object> + + </child> + </object> + <packing> + <property name="pack_type">end</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="name">server</property> + </packing> + </child> + <child> + <object class="GtkBox" id="register_box"> + <property name="margin">20</property> + <property name="margin-start">50</property> + <property name="margin-end">50</property> + <property name="orientation">vertical</property> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="register_title"> + <property name="margin-bottom">10</property> + <property name="visible">True</property> + <attributes> + <attribute name="scale" value="1.3"/> + </attributes> + </object> + </child> + <child> + <object class="GtkBox" id="form_box"> + <property name="orientation">vertical</property> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin-top">30</property> + <property name="orientation">horizontal</property> + <child> + <object class="GtkButton" id="register_form_back"> + <property name="label" translatable="yes">Pick another server</property> + <property name="visible">True</property> + </object> + <packing> + <property name="pack_type">start</property> + </packing> + </child> + <child> + <object class="GtkButton" id="register_form_continue"> + <property name="can_default">True</property> + <property name="visible">True</property> + <style> + <class name="text-button"/> + <class name="suggested-action"/> + </style> + <child> + <object class="GtkStack" id="register_form_continue_stack"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="register_form_continue_label"> + <property name="label" translatable="yes">Next</property> + <property name="visible">True</property> + </object> + <packing> + <property name="name">label</property> + </packing> + </child> + <child> + <object class="GtkSpinner"> + <property name="active">True</property> + <property name="visible">True</property> + </object> + <packing> + <property name="name">spinner</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="pack_type">end</property> + </packing> + </child> + </object> + </child> + </object> + <packing> + <property name="name">form</property> + </packing> + </child> + </object> + </child> </object> <packing> - <property name="left_attach">0</property> - <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> + <property name="index">-1</property> </packing> </child> - <child> - <object class="GtkEntry" id="password_entry"> - <property name="activates_default">True</property> - <property name="hexpand">True</property> - <property name="input_purpose">password</property> - <property name="width_request">200</property> + <child type="overlay"> + <object class="GtkRevealer" id="notification_revealer"> <property name="visible">True</property> - <property name="visibility">False</property> + <property name="can_focus">False</property> + <property name="halign">center</property> + <property name="valign">start</property> + <child> + <object class="GtkFrame" id="frame2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <style> + <class name="app-notification"/> + </style> + <child> + <object class="GtkBox" id="box2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">20</property> + <child> + <object class="GtkLabel" id="notification_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + </child> + <child type="label_item"> + <placeholder/> + </child> + </object> + </child> </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> - </packing> - </child> - <child> - <object class="GtkLabel"> - <property name="label" translatable="yes">Local alias</property> - <property name="xalign">1</property> - <property name="visible">True</property> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">2</property> - <property name="width">1</property> - <property name="height">1</property> - </packing> - </child> - <child> - <object class="GtkEntry" id="alias_entry"> - <property name="activates_default">True</property> - <property name="hexpand">True</property> - <property name="width_request">200</property> - <property name="visible">True</property> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">2</property> - <property name="width">1</property> - <property name="height">1</property> - </packing> </child> </object> </child> </object> </child> - <action-widgets> - <action-widget response="cancel">cancel_button</action-widget> - <action-widget response="ok" default="true">ok_button</action-widget> - </action-widgets> </template> </interface> diff --git a/main/data/menu_add.ui b/main/data/menu_add.ui index d8fd691b..fdf01352 100644 --- a/main/data/menu_add.ui +++ b/main/data/menu_add.ui @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> <interface> <menu id="menu_add"> <section> diff --git a/main/data/menu_app.ui b/main/data/menu_app.ui index beb81f3f..eb862ddb 100644 --- a/main/data/menu_app.ui +++ b/main/data/menu_app.ui @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> <interface> <menu id="menu_app"> <section> diff --git a/main/data/menu_conversation.ui b/main/data/menu_conversation.ui index 42b580be..a65522c3 100644 --- a/main/data/menu_conversation.ui +++ b/main/data/menu_conversation.ui @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> <interface> <menu id="menu_conversation"> <section> diff --git a/main/data/search_autocomplete.ui b/main/data/search_autocomplete.ui new file mode 100644 index 00000000..94ec5d7f --- /dev/null +++ b/main/data/search_autocomplete.ui @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <object class="GtkBox" id="root"> + <property name="orientation">horizontal</property> + <property name="visible">True</property> + <child> + <object class="DinoUiAvatarImage" id="image"> + <property name="margin">4</property> + <property name="margin-start">6</property> + <property name="margin-end">6</property> + <property name="height">24</property> + <property name="width">24</property> + <property name="visible">True</property> + <property name="allow_gray">False</property> + </object> + </child> + <child> + <object class="GtkLabel" id="label"> + <property name="visible">True</property> + <property name="ellipsize">end</property> + </object> + </child> + </object> +</interface>
\ No newline at end of file diff --git a/main/data/theme.css b/main/data/theme.css index e7d58ffb..174ce5b2 100644 --- a/main/data/theme.css +++ b/main/data/theme.css @@ -17,12 +17,38 @@ window.dino-main .dino-conversation undershoot { background: none; } -window.dino-main .dino-chatinput frame box { +@keyframes highlight { + from { background: alpha(@warning_color, 0.5) } + to { background: transparent } +} + +window.dino-main .dino-conversation .highlight-once { + animation-duration: 3s; + animation-timing-function: ease-out; + animation-iteration-count: 1; + animation-name: highlight; +} + +window.dino-main .dino-sidebar > frame { + background: @insensitive_bg_color; + border-left: 1px solid @borders; + border-bottom: 1px solid @borders; +} + +window.dino-main .dino-sidebar > frame.collapsed { + border-bottom: 1px solid @borders; +} + +window.dino-main .dino-sidebar frame.auto-complete { background: @theme_base_color; } -window.dino-main .dino-chatinput frame box:backdrop { - background: @theme_unfocused_base_color; +window.dino-main .dino-sidebar frame.auto-complete list > row { + transition: none; +} + +window.dino-main .dino-chatinput frame box { + background: transparent; } window.dino-main button.dino-chatinput-button { diff --git a/main/data/unified_main_content.ui b/main/data/unified_main_content.ui new file mode 100644 index 00000000..b2f3a891 --- /dev/null +++ b/main/data/unified_main_content.ui @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <object class="GtkPaned" id="paned"> + <property name="position">300</property> + <property name="orientation">horizontal</property> + <property name="visible">True</property> + <child> + <object class="DinoUiConversationSelectorView" id="conversation_list"> + <property name="visible">True</property> + </object> + <packing> + <property name="resize">False</property> + <property name="shrink">False</property> + </packing> + </child> + <child> + <object class="GtkOverlay"> + <property name="visible">True</property> + <child> + <object class="GtkOverlay"> + <property name="visible">True</property> + <child> + <object class="GtkBox"> + <property name="orientation">vertical</property> + <property name="visible">True</property> + <style> + <class name="dino-conversation"/> + </style> + <child> + <object class="DinoUiConversationSummaryConversationView" id="conversation_frame"> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="DinoUiChatInputView" id="chat_input"> + <property name="visible">True</property> + </object> + </child> + </object> + </child> + <child type="overlay"> + <object class="GtkRevealer" id="goto_end_revealer"> + <property name="halign">end</property> + <property name="valign">end</property> + <property name="transition-type">crossfade</property> + <property name="visible">True</property> + <property name="margin-end">30</property> + <property name="margin-bottom">70</property> + <child> + <object class="GtkButton" id="goto_end_button"> + <property name="vexpand">False</property> + <property name="halign">end</property> + <property name="valign">end</property> + <property name="visible">True</property> + <style> + <class name="circular"/> + </style> + <child> + <object class="GtkImage"> + <property name="icon-name">go-down-symbolic</property> + <property name="icon-size">1</property> + <property name="visible">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + <child type="overlay"> + <object class="GtkRevealer" id="search_revealer"> + <property name="visible">True</property> + <property name="halign">end</property> + <property name="transition-type">slide-left</property> + <style> + <class name="dino-sidebar"/> + </style> + <child> + <object class="GtkFrame"> + <property name="visible">True</property> + <property name="width-request">400</property> + <property name="shadow-type">none</property> + <child> + <object class="DinoUiGlobalSearch" id="search_box"> + <property name="visible">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="resize">True</property> + <property name="shrink">False</property> + </packing> + </child> + </object> +</interface> diff --git a/main/po/LINGUAS b/main/po/LINGUAS index ac789b9d..d0d8aa1e 100644 --- a/main/po/LINGUAS +++ b/main/po/LINGUAS @@ -7,6 +7,8 @@ es eu fi fr +gl +hu it ja lb diff --git a/main/po/ar.po b/main/po/ar.po index f67dbe0e..f04492a9 100644 --- a/main/po/ar.po +++ b/main/po/ar.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-04-13 17:34+0000\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-10-23 21:35+0000\n" "Last-Translator: ButterflyOfFire <ButterflyOfFire@protonmail.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/dino/translations/" "ar/>\n" @@ -18,26 +18,31 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 3.3-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "طلب اشتراك" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "قبول" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "رفض" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" -msgstr "" +msgstr "إزالة الحساب %s ؟" #: main/src/ui/manage_accounts/dialog.vala:129 msgid "Remove" @@ -49,12 +54,11 @@ msgstr "اختيار الصورة الرمزية" #: main/src/ui/manage_accounts/dialog.vala:153 msgid "Select" -msgstr "" +msgstr "اختيار" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -68,38 +72,64 @@ msgstr "الصور" msgid "All files" msgstr "كافة الملفات" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "الإتصال جارٍ …" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "متصل" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "غير متصل" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "كلمة المرور خاطئة" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "شهادة TLS غير صالحة" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "خطأ" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "إضافة حساب" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" -msgstr "" +msgstr "يجب أن يكون JID على شكل “user@example.com”" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "لا ردّ مِن طرف الخادم" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "قم بالتسجيل على %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "يتطلب الخادم التسجيل من خلال موقع ويب" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "التسجيلات مفتوحة" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "إنشاء حساب" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "إطّلع على %s للمزيد من المعلومات حول التسجيل" #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 @@ -107,25 +137,25 @@ msgid "Me" msgstr "أنا" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 -#, fuzzy, no-c-format +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#, no-c-format msgid "%b %d" msgstr "%b %d" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "البارحة" #: main/src/ui/conversation_selector/conversation_row.vala:161 #: main/src/ui/conversation_summary/conversation_item_skeleton.vala:196 -#, fuzzy, no-c-format +#, no-c-format msgid "%H∶%M" msgstr "%H∶%M" #: main/src/ui/conversation_selector/conversation_row.vala:162 #: main/src/ui/conversation_summary/conversation_item_skeleton.vala:197 -#, fuzzy, no-c-format +#, no-c-format msgid "%l∶%M %p" msgstr "%l∶%M %p" @@ -135,11 +165,11 @@ msgstr "%l∶%M %p" msgid "%i min ago" msgid_plural "%i mins ago" msgstr[0] "" -msgstr[1] "" +msgstr[1] "منذ %i د" msgstr[2] "" msgstr[3] "" msgstr[4] "" -msgstr[5] "" +msgstr[5] "منذ %i دقائق" #: main/src/ui/conversation_selector/conversation_row.vala:167 #: main/src/ui/conversation_summary/conversation_item_skeleton.vala:203 @@ -148,7 +178,7 @@ msgstr "الآن" #: main/src/ui/application.vala:44 msgid "Join Conference" -msgstr "" +msgstr "الإنضمام إلى فريق محادثة" #: main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:63 @@ -162,24 +192,26 @@ msgid "Add" msgstr "إضافة" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "حفظ" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" -msgstr "" +msgstr "الإلتحاق بقناة" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "التالي" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" -msgstr "" +msgstr "الشروع في محادثة" #: main/src/ui/add_conversation/select_contact_dialog.vala:86 msgid "Start" @@ -187,208 +219,211 @@ msgstr "إبدأ" #: main/src/ui/add_conversation/conference_details_fragment.vala:108 msgid "Joining…" -msgstr "" +msgstr "في طريق الإلتحاق …" #: main/src/ui/add_conversation/conference_details_fragment.vala:138 msgid "Password required to enter room" -msgstr "" +msgstr "كلمة السر مطلوبة للدخول إلى غرفة المحادثة" #: main/src/ui/add_conversation/conference_details_fragment.vala:143 msgid "Banned from joining or creating conference" -msgstr "" +msgstr "محظور مِن الإنضمام أو إنشاء فِرَق محادثة" #: main/src/ui/add_conversation/conference_details_fragment.vala:145 msgid "Room does not exist" -msgstr "" +msgstr "غرفة المحادثة غير موجودة" #: main/src/ui/add_conversation/conference_details_fragment.vala:147 msgid "Not allowed to create room" -msgstr "" +msgstr "ليس لديك تسريح لإنشاء غرفة محادثة" #: main/src/ui/add_conversation/conference_details_fragment.vala:149 msgid "Members-only room" -msgstr "" +msgstr "الغرفة خاصة بأعضائها فقط" #: main/src/ui/add_conversation/conference_details_fragment.vala:152 msgid "Choose a different nick" -msgstr "" +msgstr "إختر إسما مستعارا آخر" #: main/src/ui/add_conversation/conference_details_fragment.vala:154 msgid "Too many occupants in room" -msgstr "" +msgstr "غرفة المحادثة مكتضة" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" -msgstr "" +msgstr "ليس هناك أية حسابات نشطة" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" -msgstr "" +msgstr "إدارة الحسابات" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" -msgstr "" +msgstr "ليس هناك أية محادثات نشطة" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" -msgstr "" +msgstr "اليوم" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" -msgstr "" +msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" -msgstr "" +msgstr "%s و %s و %i آخَرين" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" -msgstr "" +msgstr "%s, %s و %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" -msgstr "" +msgstr "%s و %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" +msgstr[0] "يكتب…" +msgstr[1] "يكتب…" +msgstr[2] "يكتُبان…" +msgstr[3] "يكتبون…" +msgstr[4] "يكتبون…" +msgstr[5] "يكتبون…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" -msgstr "" - -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "" +msgstr "توقفَ عن الكتابة" -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" -msgstr "" +msgstr "الرسالة طويلة جدًا" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "ملف" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" -msgstr "" +msgstr "يريد هذا المراسل إضافتك إلى قائمة مراسليه" #: main/src/ui/conversation_summary/conversation_item_skeleton.vala:184 #, no-c-format msgid "%x, %H∶%M" -msgstr "" +msgstr "%x, %H∶%M" #: main/src/ui/conversation_summary/conversation_item_skeleton.vala:185 #, no-c-format msgid "%x, %l∶%M %p" -msgstr "" +msgstr "%x, %l∶%M %p" #: main/src/ui/conversation_summary/conversation_item_skeleton.vala:188 #, no-c-format msgid "%b %d, %H∶%M" -msgstr "" +msgstr "%b %d, %H∶%M" #: main/src/ui/conversation_summary/conversation_item_skeleton.vala:189 #, no-c-format msgid "%b %d, %l∶%M %p" -msgstr "" +msgstr "%b %d, %l∶%M %p" #: main/src/ui/conversation_summary/conversation_item_skeleton.vala:192 #, no-c-format msgid "%a, %H∶%M" -msgstr "" +msgstr "%a, %H∶%M" #: main/src/ui/conversation_summary/conversation_item_skeleton.vala:193 #, no-c-format msgid "%a, %l∶%M %p" -msgstr "" +msgstr "%a, %l∶%M %p" #: main/src/ui/occupant_menu/list.vala:106 msgid "Owner" -msgstr "" +msgstr "المالك" #: main/src/ui/occupant_menu/list.vala:108 msgid "Admin" -msgstr "" +msgstr "المدير" #: main/src/ui/occupant_menu/list.vala:110 msgid "Member" -msgstr "" +msgstr "عضو" #: main/src/ui/occupant_menu/list.vala:112 msgid "User" -msgstr "" +msgstr "مستخدِم" #: main/src/ui/occupant_menu/view.vala:27 #: main/src/ui/occupant_menu/view.vala:36 msgid "Invite" -msgstr "" +msgstr "دعوة" #: main/src/ui/occupant_menu/view.vala:35 msgid "Invite to Conference" -msgstr "" +msgstr "دعوة إلى فريق محادثة" #: main/src/ui/occupant_menu/view.vala:85 msgid "Start private conversation" -msgstr "" +msgstr "الشروع في محادثة خاصة" #: main/src/ui/occupant_menu/view.vala:93 msgid "Kick" -msgstr "" +msgstr "طرد" + +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i نتيجة بحث" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "في %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "مع %s" #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" -msgstr "" +msgstr "تفاصيل فريق المحادثة" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" -msgstr "" +msgstr "تفاصيل عن المُراسل" #: main/src/ui/contact_details/muc_config_form_provider.vala:39 msgid "Name of the room" -msgstr "" +msgstr "إسم غرفة المحادثة" #: main/src/ui/contact_details/muc_config_form_provider.vala:42 msgid "Description of the room" -msgstr "" +msgstr "وصف غرفة المحادثة" #: main/src/ui/contact_details/muc_config_form_provider.vala:45 msgid "Persistent" -msgstr "" +msgstr "دائمة" #: main/src/ui/contact_details/muc_config_form_provider.vala:46 msgid "The room will persist after the last occupant leaves" -msgstr "" +msgstr "سوف تبقى الغرفة حتى و إن غادرها آخِر مقيم" #: main/src/ui/contact_details/muc_config_form_provider.vala:49 msgid "Publicly searchable" -msgstr "" +msgstr "يمكن البحث عنها للعلن" #: main/src/ui/contact_details/muc_config_form_provider.vala:52 msgid "Occupants may change the subject" -msgstr "" +msgstr "يمكن للمقيمين تغيير الموضوع" #: main/src/ui/contact_details/muc_config_form_provider.vala:55 msgid "Discover real JIDs" -msgstr "" +msgstr "استكشاف مُعرّفي JID الحقيقيين" #: main/src/ui/contact_details/muc_config_form_provider.vala:56 msgid "Who may discover real JIDs?" @@ -396,19 +431,19 @@ msgstr "" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" -msgstr "" +msgstr "كلمة السر" #: main/src/ui/contact_details/muc_config_form_provider.vala:60 msgid "Password required for room entry, if any" -msgstr "" +msgstr "مطلوب كلمة السر لدخول الغرفة، إن وُجِدت" #: main/src/ui/contact_details/muc_config_form_provider.vala:63 msgid "Moderated" -msgstr "" +msgstr "تحت الإشراف" #: main/src/ui/contact_details/muc_config_form_provider.vala:64 msgid "Only occupants with voice may send messages" @@ -416,15 +451,15 @@ msgstr "" #: main/src/ui/contact_details/muc_config_form_provider.vala:67 msgid "Members only" -msgstr "" +msgstr "الأعضاء فقط" #: main/src/ui/contact_details/muc_config_form_provider.vala:68 msgid "Only members may enter the room" -msgstr "" +msgstr "يمكن للأعضاء فقط الإلتحاق بالغرفة" #: main/src/ui/contact_details/muc_config_form_provider.vala:71 msgid "Message history" -msgstr "" +msgstr "إدارة التأريخ" #: main/src/ui/contact_details/muc_config_form_provider.vala:72 msgid "Maximum amount of backlog issued by the room" @@ -432,153 +467,202 @@ msgstr "" #: main/src/ui/contact_details/muc_config_form_provider.vala:78 msgid "Room Configuration" -msgstr "" +msgstr "إعدادات الغرفة" #: main/src/ui/contact_details/blocking_provider.vala:31 #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" -msgstr "" +msgstr "الإعدادات" #: main/src/ui/contact_details/blocking_provider.vala:31 msgid "Block" -msgstr "" +msgstr "حظر" #: main/src/ui/contact_details/blocking_provider.vala:31 msgid "Communication and status updates in either direction are blocked" -msgstr "" +msgstr "تم حظر الإتصال وتحديثات الحالة في كلا الإتجاهين" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/data/settings_dialog.ui:22 msgid "Send typing notifications" -msgstr "" +msgstr "إرسال إشعارات عند الكتابة" #: main/src/ui/contact_details/settings_provider.vala:25 #: main/data/settings_dialog.ui:34 msgid "Send read receipts" -msgstr "" +msgstr "إرسال إيصالات القراءة" #: main/src/ui/contact_details/settings_provider.vala:30 #: main/src/ui/contact_details/settings_provider.vala:39 msgid "Notifications" -msgstr "" +msgstr "الإشعارات" #: main/src/ui/contact_details/settings_provider.vala:39 msgid "Local Settings" -msgstr "" +msgstr "الإعدادات المحلية" #: main/src/ui/contact_details/settings_provider.vala:74 #: main/src/ui/contact_details/settings_provider.vala:114 #: main/src/ui/contact_details/settings_provider.vala:116 msgid "On" -msgstr "" +msgstr "نشط" #: main/src/ui/contact_details/settings_provider.vala:76 #: main/src/ui/contact_details/settings_provider.vala:114 #: main/src/ui/contact_details/settings_provider.vala:117 msgid "Off" -msgstr "" +msgstr "معطّل" #: main/src/ui/contact_details/settings_provider.vala:78 msgid "Only when mentioned" -msgstr "" +msgstr "فقط عندما يُشار إليّ" #: main/src/ui/contact_details/settings_provider.vala:80 #: main/src/ui/contact_details/settings_provider.vala:115 #, c-format msgid "Default: %s" -msgstr "" +msgstr "إفتراضي: %s" #: main/data/settings_dialog.ui:7 msgid "Preferences" -msgstr "" +msgstr "التفضيلات" #: main/data/settings_dialog.ui:46 msgid "Notify when a new message arrives" -msgstr "" +msgstr "الإشعار عند تلقي رسائل جديدة" #: main/data/settings_dialog.ui:58 msgid "Convert smileys to emojis" -msgstr "" +msgstr "تحويل الوجوه المبتسمة إلى إيموجي" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" -msgstr "" +msgstr "الحسابات" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" -msgstr "" +msgstr "اللقب المحلي" #: main/data/manage_accounts/dialog.ui:255 msgid "No accounts configured" -msgstr "" +msgstr "لم يتم إعداد أي حساب بعد" #: main/data/manage_accounts/dialog.ui:266 msgid "Add an account" -msgstr "" +msgstr "إضافة حساب" + +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "إنشاء حساب" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "إختر خادمًا عموميًا" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "أو قم بإدخال عنوان خادم" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "قم بتسجيل الدخول بدلاً من ذلك" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "إختيار سيرفر آخَر" #: main/data/menu_encryption.ui:14 msgid "Unencrypted" -msgstr "" +msgstr "غير مشفّرة" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" -msgstr "" - -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "" +msgstr "الخروج" -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "" +msgstr "تطبيق حديث للدردشة عبر XMPP" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " "privacy in mind." msgstr "" +"دينو برنامج حديث ومفتوح المصدر للدردشة صُمّم لسطح المكتب. ويُركّز علي تقديم " +"تجربة نظيفة وموثوق منها لجابر/XMPP مع أخذ خصوصيتكم بعين الإعتبار." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " "notifications." msgstr "" +"وهو يدعم التشفير بواسطة OMEMO و OpenPGP يسمح بإعداد ميزات الخصوصية " +"كالإيصالات المقروءة والإخطارات عند الكتابة." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." -msgstr "" +msgstr "يقوم دينو بجلب السِجلّ مِن السيرفر ثم يُزامِن الرسائل مع الأجهزة الأخرى." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" -msgstr "" +msgstr "النافذة الرئيسية بالمُحادثات" #: main/data/add_conversation/conference_details_fragment.ui:19 #: main/data/add_conversation/add_groupchat_dialog.ui:49 #: main/data/add_conversation/add_contact_dialog.ui:49 msgid "Account" -msgstr "" +msgstr "الحساب" #: main/data/add_conversation/conference_details_fragment.ui:123 #: main/data/add_conversation/add_groupchat_dialog.ui:120 msgid "Nick" -msgstr "" +msgstr "الإسم المستعار" #: main/data/add_conversation/add_groupchat_dialog.ui:175 #: main/data/add_conversation/add_contact_dialog.ui:102 msgid "Alias" -msgstr "" +msgstr "اللقب" #: main/data/add_conversation/add_contact_dialog.ui:8 msgid "Add Contact" -msgstr "" +msgstr "إضافة مُراسِل" + +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "لا يوجد بحث نشط" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "أكتب للشروع في البحث" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "لا توجد رسائل متطابقة" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "تحقق مِن التدقيق الإملائي أو حاول إزالة فلاتر" + +#~ msgid "Copy Link Address" +#~ msgstr "نسخ العنوان" + +#~ msgid "Copy" +#~ msgstr "نسخ" + +#~ msgid "Select All" +#~ msgstr "اختيار الكل" + +#~ msgid "Search" +#~ msgstr "البحث" #~ msgid "Start Chat" #~ msgstr "إبدأ الدردشة" diff --git a/main/po/ca.po b/main/po/ca.po index a2ecd3c8..4d93de40 100644 --- a/main/po/ca.po +++ b/main/po/ca.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: dino 20180510\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" "PO-Revision-Date: 2018-05-10 14:38+0200\n" "Last-Translator: fiaxh <weblate@mx.ax.lt>\n" "Language-Team: Catalan <https://hosted.weblate.org/projects/dino/" @@ -17,20 +17,25 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 2.19-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Petició de subscripció" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Acepta" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Rebutja" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -51,7 +56,6 @@ msgstr "Selecciona" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -65,52 +69,78 @@ msgstr "Imatges" msgid "All files" msgstr "Tots els fitxers" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "S'està connectant…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Connectat" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Desconnectat" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Contrasenya incorrecta" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "El certificat TLS és invàlid" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Error" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Afegeix un compte" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Jo" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%b %d" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Ahir" @@ -155,22 +185,24 @@ msgid "Add" msgstr "Afegeix" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Desa" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Següent" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "" @@ -210,70 +242,58 @@ msgstr "Seleccioneu un sobrenom diferent" msgid "Too many occupants in room" msgstr "Massa ocupants a la sala" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "No hi ha cap compte actiu" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Gestiona els comptes" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Cap conversa activa" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Avui" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "està escrivint…" msgstr[1] "estan escrivint…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "ha parat d'escriure" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Fitxer" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "El missatge és massa llarg" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Copia l'adreça de l'enllaç" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Copia" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Selecciona-ho tot" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Fitxer" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -342,12 +362,27 @@ msgstr "Inicia una convesa privada" msgid "Kick" msgstr "Expulsa" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Detalls de la conferència" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Detalls del contacte" @@ -385,7 +420,7 @@ msgstr "Qui pot descobrir els JID reals?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -427,7 +462,7 @@ msgstr "Configuració de la sala" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Preferències" @@ -493,12 +528,12 @@ msgstr "Notifica'm quan arriba un missatge nou" msgid "Convert smileys to emojis" msgstr "Converteix «smileys» a emoji" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Comptes" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Àlias local" @@ -510,24 +545,41 @@ msgstr "No hi ha cap compte configurat" msgid "Add an account" msgstr "Afegeix un compte" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Sense xifrar" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Surt" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Cerca" - -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 #, fuzzy msgid "Modern XMPP Chat Client" msgstr "Client d'XMPP modern" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -537,7 +589,7 @@ msgstr "" "proveir una experiència neta i fiable de Jabber/XMPP, sempre tenint en " "compte la vostra privacitat." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -547,7 +599,7 @@ msgstr "" "funcionalitats relacionades amb la privacitat com per exemple rebuts de " "lectura i notificacions d'escriptura." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -555,7 +607,7 @@ msgstr "" "Dino recupera l'historial del servidor i sincronitza els missatges amb " "altres dispositius." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Finestra principal amb converses" @@ -579,6 +631,34 @@ msgstr "Àlias" msgid "Add Contact" msgstr "Afegeix el contacte" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "" + +#~ msgid "Copy Link Address" +#~ msgstr "Copia l'adreça de l'enllaç" + +#~ msgid "Copy" +#~ msgstr "Copia" + +#~ msgid "Select All" +#~ msgstr "Selecciona-ho tot" + +#~ msgid "Search" +#~ msgstr "Cerca" + #~ msgid "Send message marker" #~ msgstr "Envia marcador de missatge" diff --git a/main/po/de.po b/main/po/de.po index 203f4d96..f7b0788e 100644 --- a/main/po/de.po +++ b/main/po/de.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dino-0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-06-08 16:38+0000\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-18 17:25+0000\n" "Last-Translator: fiaxh <weblate@mx.ax.lt>\n" "Language-Team: German <https://hosted.weblate.org/projects/dino/translations/" "de/>\n" @@ -12,22 +12,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.0\n" +"X-Generator: Weblate 3.2-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Kontaktanfrage" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Annehmen" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Ablehnen" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -48,7 +53,6 @@ msgstr "Auswählen" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -62,38 +66,64 @@ msgstr "Bilder" msgid "All files" msgstr "Alle Dateien" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Verbinden…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Verbunden" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Nicht verbunden" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Passwort falsch" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Ungültiges TLS-Zertifikat" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Fehler" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Konto hinzufügen" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" -msgstr "JID sollte das Format “benutzer@example.com” haben" +msgstr "JID sollte das Format “benutzer@beispiel.de” haben" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Keine Antwort vom Server" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Konto auf %s erstellen" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "Der Server erfordert die Registrierung durch eine Webseite" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Registrierung öffnen" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Registrieren" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Eventuell sind auf %s Informationen zur Registrierung zu finden" #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 @@ -101,13 +131,13 @@ msgid "Me" msgstr "Ich" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%d. %b" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Gestern" @@ -152,22 +182,24 @@ msgid "Add" msgstr "Hinzufügen" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Speichern" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Kanal beitreten" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Weiter" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Unterhaltung starten" @@ -207,70 +239,58 @@ msgstr "Wähle einen anderen Spitznamen" msgid "Too many occupants in room" msgstr "Zu viele Nutzer im Raum" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Keine Konten aktiv" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Konten verwalten" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Keine Unterhaltung aktiv" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Heute" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %d %b" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s und %i weitere" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s und %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s und %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "tippt gerade…" msgstr[1] "tippen gerade…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "hat aufgehört zu tippen" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Datei" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Nachricht zu lang" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Link-Adresse Kopieren" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Kopieren" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Alles Auswählen" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Datei" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -339,12 +359,27 @@ msgstr "Private Unterhaltung beginnen" msgid "Kick" msgstr "Hinauswerfen" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i Suchergebnisse" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "In %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Mit %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Konferenzdetails" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Kontaktdetails" @@ -383,7 +418,7 @@ msgstr "Wer kann echte JIDs sehen?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -425,7 +460,7 @@ msgstr "Raum Konfiguration" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Einstellungen" @@ -491,12 +526,12 @@ msgstr "Benachrichtigen bei Empfang einer neuen Nachricht" msgid "Convert smileys to emojis" msgstr "Smileys zu Emojis umwandeln" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Konten" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Lokaler Alias" @@ -508,24 +543,40 @@ msgstr "Keine Konten konfiguriert" msgid "Add an account" msgstr "Konto hinzufügen" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Konto erstellen" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Wähle einen öffentlichen Server" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Oder gib eine Serveradresse an" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "Stattdessen anmelden" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Anderen Server wählen" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Unverschlüsselt" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Beenden" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Suchen" - -#: main/data/im.dino.Dino.appdata.xml.in:8 -#, fuzzy +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "Moderner XMPP Client" +msgstr "Moderner XMPP Chat Client" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -535,7 +586,7 @@ msgstr "" "und robuste Jabber/XMPP Erfahrung und legt einen Schwerpunkt auf " "Privatsphäre." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -545,7 +596,7 @@ msgstr "" "enthält Privatsphäre-Einstellungen zu Lesebestätigungen und " "Tippbenachrichtigungen." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -553,7 +604,7 @@ msgstr "" "Dino ruft Gesprächsverläufe vom Server ab und synchronisiert Nachrichten mit " "anderen Geräten." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Hauptfenster mit Konversationen" @@ -577,6 +628,34 @@ msgstr "Alias" msgid "Add Contact" msgstr "Kontakt hinzufügen" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Keine Suche gestartet" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Tippe um eine Suche zu beginnen" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Keine Nachrichten gefunden" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Überprüfe die Schreibweise oder entferne Filter" + +#~ msgid "Copy Link Address" +#~ msgstr "Link-Adresse Kopieren" + +#~ msgid "Copy" +#~ msgstr "Kopieren" + +#~ msgid "Select All" +#~ msgstr "Alles Auswählen" + +#~ msgid "Search" +#~ msgstr "Suchen" + #~ msgid "Send message marker" #~ msgstr "Lesebestätigung senden" diff --git a/main/po/dino.pot b/main/po/dino.pot index d21aedb3..2f7e5c1e 100644 --- a/main/po/dino.pot +++ b/main/po/dino.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -18,20 +18,25 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -52,7 +57,6 @@ msgstr "" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -66,52 +70,78 @@ msgstr "" msgid "All files" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "" @@ -156,22 +186,24 @@ msgid "Add" msgstr "" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "" @@ -211,69 +243,57 @@ msgstr "" msgid "Too many occupants in room" msgstr "" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "" msgstr[1] "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" msgstr "" #: main/src/ui/conversation_summary/subscription_notification.vala:48 @@ -343,12 +363,27 @@ msgstr "" msgid "Kick" msgstr "" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "" @@ -386,7 +421,7 @@ msgstr "" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -428,7 +463,7 @@ msgstr "" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "" @@ -493,12 +528,12 @@ msgstr "" msgid "Convert smileys to emojis" msgstr "" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "" @@ -510,43 +545,60 @@ msgstr "" msgid "Add an account" msgstr "" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "" - -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " "privacy in mind." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " "notifications." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "" @@ -569,3 +621,19 @@ msgstr "" #: main/data/add_conversation/add_contact_dialog.ui:8 msgid "Add Contact" msgstr "" + +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "" diff --git a/main/po/en.po b/main/po/en.po index dbad709b..75216ebb 100644 --- a/main/po/en.po +++ b/main/po/en.po @@ -2,26 +2,31 @@ msgid "" msgstr "" "Project-Id-Version: dino-0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -42,7 +47,6 @@ msgstr "" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -56,52 +60,78 @@ msgstr "" msgid "All files" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "" @@ -146,22 +176,24 @@ msgid "Add" msgstr "" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "" @@ -201,69 +233,57 @@ msgstr "" msgid "Too many occupants in room" msgstr "" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "" msgstr[1] "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" msgstr "" #: main/src/ui/conversation_summary/subscription_notification.vala:48 @@ -333,12 +353,27 @@ msgstr "" msgid "Kick" msgstr "" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "" @@ -376,7 +411,7 @@ msgstr "" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -418,7 +453,7 @@ msgstr "" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "" @@ -483,12 +518,12 @@ msgstr "" msgid "Convert smileys to emojis" msgstr "" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "" @@ -500,43 +535,60 @@ msgstr "" msgid "Add an account" msgstr "" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "" - -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " "privacy in mind." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " "notifications." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "" @@ -559,3 +611,19 @@ msgstr "" #: main/data/add_conversation/add_contact_dialog.ui:8 msgid "Add Contact" msgstr "" + +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "" diff --git a/main/po/eo.po b/main/po/eo.po index 04681807..b449a285 100644 --- a/main/po/eo.po +++ b/main/po/eo.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" "PO-Revision-Date: 2018-03-31 13:36+0000\n" "Last-Translator: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>\n" "Language-Team: Esperanto <https://hosted.weblate.org/projects/dino/" @@ -19,20 +19,25 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 2.20-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Abona peto" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Akcepti" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Rifuzi" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "Elekti" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "Bildoj" msgid "All files" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Konektita" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Malkonektita" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Malĝusta pasvorto" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Eraro" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Aldoni Konton" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%b %d" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Hieraŭ" @@ -157,22 +187,24 @@ msgid "Add" msgstr "Aldoni" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Konservi" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Sekva" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "" @@ -212,70 +244,58 @@ msgstr "" msgid "Too many occupants in room" msgstr "" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Neniuj aktivaj kontoj" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Administri kontojn" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Neniu aktiva interparolo" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 #, fuzzy msgid "is typing…" msgid_plural "are typing…" msgstr[0] "tajpas…" msgstr[1] "tajpas…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "ĉesis tajpi" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" msgstr "" #: main/src/ui/conversation_summary/subscription_notification.vala:48 @@ -345,12 +365,27 @@ msgstr "Komenci privatan interparolon" msgid "Kick" msgstr "" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Kontaktaj Detaloj" @@ -388,7 +423,7 @@ msgstr "Kiu rajtas eltrovi verajn JID-ojn?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -430,7 +465,7 @@ msgstr "Ĉambraj Agordoj" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Agordoj" @@ -495,12 +530,12 @@ msgstr "Sciigi pri envenaj mesaĝoj" msgid "Convert smileys to emojis" msgstr "Grafikigi tekstajn mienetojn" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Kontoj" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Loka kaŝnomo" @@ -512,43 +547,60 @@ msgstr "" msgid "Add an account" msgstr "Aldoni konton" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Neĉifrita" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Ĉesi" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Serĉi" - -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " "privacy in mind." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " "notifications." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "" @@ -572,6 +624,25 @@ msgstr "Kaŝnomo" msgid "Add Contact" msgstr "" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "" + +#~ msgid "Search" +#~ msgstr "Serĉi" + #~ msgid "Send message marker" #~ msgstr "Sendi mesaĝmarkilon" diff --git a/main/po/es.po b/main/po/es.po index 637aebba..7232e398 100644 --- a/main/po/es.po +++ b/main/po/es.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-05-06 17:05+0000\n" -"Last-Translator: mgueji <miguejim@mailbox.org>\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-29 07:35+0000\n" +"Last-Translator: Bonber Rash <bonber@protonmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/dino/" "translations/es/>\n" "Language: es\n" @@ -17,22 +17,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 3.2-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Solicitud de suscripción" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Aceptar" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Denegar" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "Seleccionar" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "Imágenes" msgid "All files" msgstr "Todos los ficheros" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Conectando…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Conectado" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Desconectado" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Contraseña incorrecta" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Certificado TLS no válido" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Error" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Añadir Cuenta" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "El JID debe tener la forma \"usuario@ejemplo.com\"" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "No hay respuesta del servidor" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Registrado en %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "El servidor requiere registrarse a través de un sitio web" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Registro abierto" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Registro" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Mira %s para mas información sobre el registro" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Yo" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%d %b" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Ayer" @@ -157,22 +187,24 @@ msgid "Add" msgstr "Añadir" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Guardar" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Unirse a canal" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Siguiente" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Iniciar conversación" @@ -213,70 +245,58 @@ msgstr "Elige un alias diferente" msgid "Too many occupants in room" msgstr "La conversación tiene demasiados ocupantes" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "No hay cuentas activas" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Gestionar cuentas" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "No hay conversaciones activa" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Hoy" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %d %b" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s y %i otros" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s y %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s y %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "está escribiendo…" msgstr[1] "están escribiendo…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "ha dejado de escribir" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Archivo" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Mensaje demasiado largo" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Copiar dirección del enlace" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Copiar" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Seleccionar todo" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Archivo" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -345,12 +365,27 @@ msgstr "Iniciar conversación privada" msgid "Kick" msgstr "Expulsar" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i resultados de la busqueda" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "En %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Con %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Detalles de la Conversación" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Detalles del contacto" @@ -388,7 +423,7 @@ msgstr "¿Quién puede ver los JIDs reales?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -432,7 +467,7 @@ msgstr "Configuración de la conversación en grupo" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Ajustes" @@ -497,12 +532,12 @@ msgstr "Notificar cuando llega un nuevo mensaje" msgid "Convert smileys to emojis" msgstr "Convertir smileys en emojis" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Cuentas" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Alias local" @@ -514,24 +549,40 @@ msgstr "No hay cuentas activas" msgid "Add an account" msgstr "Añadir una cuenta" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Crear cuenta" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Escoger un servidor publico" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "O especifica la dirección del servidor" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "Inicio de sesión requerido" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Escoge otro servidor" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Sin cifrar" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Salir" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Buscar" - -#: main/data/im.dino.Dino.appdata.xml.in:8 -#, fuzzy +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "Cliente XMPP moderno" +msgstr "Cliente de XMPP moderno" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -541,7 +592,7 @@ msgstr "" "enfocado en proveer una experiencia Jabber/XMPP limpia y confiable teniendo " "tu privacidad en mente." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -551,7 +602,7 @@ msgstr "" "configurar las características relacionadas con la privacidad, como " "confirmaciones de lectura y notificaciones de escritura." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -559,7 +610,7 @@ msgstr "" "Dino recupera los mensajes desde el servidor y sincroniza los mensajes con " "otros dispositivos." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Ventana principal con conversaciones" @@ -583,6 +634,34 @@ msgstr "Alias" msgid "Add Contact" msgstr "Añadir contacto" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Busqueda no activa" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Escribe para empezar una busqueda" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Sin mensajes que coincidan" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Verifique la ortografía o intente eliminar los filtros" + +#~ msgid "Copy Link Address" +#~ msgstr "Copiar dirección del enlace" + +#~ msgid "Copy" +#~ msgstr "Copiar" + +#~ msgid "Select All" +#~ msgstr "Seleccionar todo" + +#~ msgid "Search" +#~ msgstr "Buscar" + #~ msgid "Send message marker" #~ msgstr "Enviar confirmación al recibir y al leer los mensajes" diff --git a/main/po/eu.po b/main/po/eu.po index d83e01ac..7696f6e2 100644 --- a/main/po/eu.po +++ b/main/po/eu.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-05-13 08:34+0000\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-11 15:13+0000\n" "Last-Translator: Aitor Beriain <beriain@bitmessage.ch>\n" "Language-Team: Basque <https://hosted.weblate.org/projects/dino/translations/" "eu/>\n" @@ -17,22 +17,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 3.2-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Harpidetzaren eskaera" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Onartu" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Ukatu" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "Hautatu" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "Irudiak" msgid "All files" msgstr "Fitxategi guztiak" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Konektatzen…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Konektatuta" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Ez konektatuta" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Pasahitz okerra" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "TLS ziurtagiri ez balidouna" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Akatsa" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Kontua gehitu" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "JIDak \"erabiltzailea@eredua.com\" itxura izan beharko luke" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Erantzunik ez zerbitzaritik" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Izena eman hemen: %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "Zerbitzariak webgune baten bidez izena ematea eskatzen du" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Izen emate irekia" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Izena eman" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Ikusi %s izena ematearen inguruko informazioa lortzeko" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Ni" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%b %d" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Atzo" @@ -157,22 +187,24 @@ msgid "Add" msgstr "Gehitu" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Gorde" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Kanalera gehitu" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Hurrengoa" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Elkarrizketa hasi" @@ -212,70 +244,58 @@ msgstr "Ezizen ezberdin bat hautatu" msgid "Too many occupants in room" msgstr "Gelak kide gehiegi ditu" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Ez dago kontu aktiborik" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Kontuak kudeatu" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Ez dago solasaldi aktiborik" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Gaur" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s eta beste %i" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s eta %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s eta %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "idazten ari da…" msgstr[1] "idazten ari dira…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "idazteari utzi dio" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Fitxategia" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Mezu luzeegia" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Loturaren helbidea kopiatu" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Kopiatu" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Dena hautatu" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Fitxategia" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -344,12 +364,27 @@ msgstr "Solasaldi pribatua hasi" msgid "Kick" msgstr "Kanporatu" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "Bilaketaren emaitzak: %i" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "hemen %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "%s(r)ekin" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Konferentziaren xehetasunak" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Kontaktuaren xehetasunak" @@ -387,7 +422,7 @@ msgstr "Nork ikus ditzake egiazko JIDak?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -430,7 +465,7 @@ msgstr "Gelaren konfigurazioa" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Ezarpenak" @@ -496,12 +531,12 @@ msgstr "Mezu berri bat heltzerakoan jakinarazi" msgid "Convert smileys to emojis" msgstr "Irrifartxoak emotikono bihurtu" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Kontuak" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Bertako ezizena" @@ -513,24 +548,40 @@ msgstr "Ez dago konfiguratutako konturik" msgid "Add an account" msgstr "Kontu bat gehitu" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Kontua sortu" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Zerbitzari publiko bat hautatu" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Edo zerbitzari baten helbidea zehaztu" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "Saioa hasi" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Beste zerbitzari bat hartu" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Enkriptatu gabe" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Irten" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Bilatu" - -#: main/data/im.dino.Dino.appdata.xml.in:8 -#, fuzzy +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "XMPP bezero modernoa" +msgstr "XMPP txat bezero modernoa" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -540,17 +591,17 @@ msgstr "" "esperientzia garbi eta fidagarri bat ematen du zure pribatutasuna kontuan " "hartzeaz gain." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " "notifications." msgstr "" "Amaieratik amaierarako enkriptazioa onartzen du OMEMO eta OpenPGPrekin eta " -"pribatutasun ezaugarriak konfiguratzea baimentzen du irakurtze baieztapenak " -"eta idazketa jakinarazpenak bezala." +"pribatutasun ezaugarriak konfiguratzea baimentzen du irakurtze markak eta " +"idazketa jakinarazpenak bezala." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -558,7 +609,7 @@ msgstr "" "Dinok zerbitzaritik hartzen du historia eta beste gailuekin mezuak " "sinkronizatzen ditu." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Leiho nagusia elkarrizketekin" @@ -582,6 +633,34 @@ msgstr "Ezizena" msgid "Add Contact" msgstr "Kontaktua gehitu" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Ez dago bilaketa aktiborik" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Idatzi bilatzen hasteko" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Ez dago bat egiten duen mezurik" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Ortografia egiaztatu edo saiatu iragazkiak kentzen" + +#~ msgid "Copy Link Address" +#~ msgstr "Loturaren helbidea kopiatu" + +#~ msgid "Copy" +#~ msgstr "Kopiatu" + +#~ msgid "Select All" +#~ msgstr "Dena hautatu" + +#~ msgid "Search" +#~ msgstr "Bilatu" + #~ msgid "Send message marker" #~ msgstr "Mezu marka bidali" diff --git a/main/po/fi.po b/main/po/fi.po index d245eba8..8bee495f 100644 --- a/main/po/fi.po +++ b/main/po/fi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" "PO-Revision-Date: 2018-05-13 10:18+0000\n" "Last-Translator: mjlapin <muu@kapsi.fi>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/dino/" @@ -19,20 +19,25 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.0-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Yhteyspyyntö" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Hyväksy" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Hylkää" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "Valitse" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "Kuvat" msgid "All files" msgstr "Kaikki tiedostot" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Yhdistää…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Yhdistetty" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Ei yhdistetty" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Väärä salasana" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "TLS-varmenne ei kelpaa" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Virhe" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Lisää tili" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "Anna JID muodossa \"user@example.com\"" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Minä" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%d. %b" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Eilen" @@ -157,22 +187,24 @@ msgid "Add" msgstr "Lisää" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Tallenna" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Liity kanavalle" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Seuraava" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Aloita keskustelu" @@ -212,70 +244,58 @@ msgstr "Valitse jokin muu nimimerkki" msgid "Too many occupants in room" msgstr "Liikaa käyttäjiä huoneessa" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Ei aktiivisia tilejä" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Hallitse tilejä" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Ei aktiivisia keskusteluja" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Tänään" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s and %i muuta" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s ja %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s ja %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "kirjoittaa…" msgstr[1] "kirjoittavat…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "on lakannut kirjoittamasta" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Tiedosto" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Viesti liian pitkä" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Kopioi linkin osoite" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Kopioi" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Valitse kaikki" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Tiedosto" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -344,12 +364,27 @@ msgstr "Aloita yksityiskeskustelu" msgid "Kick" msgstr "Potkaise pihalle" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Ryhmäkeskustelun yksityiskohdat" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Yhteystiedot" @@ -387,7 +422,7 @@ msgstr "Kuka voi nähdä oikeat JID:t?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -429,7 +464,7 @@ msgstr "Huoneen asetukset" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Asetukset" @@ -494,12 +529,12 @@ msgstr "Ilmoita kun uusi viesti saapuu" msgid "Convert smileys to emojis" msgstr "Muuta hymiöt emojeiksi" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Tilit" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Paikallinen alias" @@ -511,24 +546,41 @@ msgstr "Ei asetettuja tilejä" msgid "Add an account" msgstr "Lisää tili" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Salaamaton" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Lopeta" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Etsi" - -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 #, fuzzy msgid "Modern XMPP Chat Client" msgstr "Moderni XMPP-asiakasohjelma" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -538,7 +590,7 @@ msgstr "" "keskittyy tarjoamaan selkeän ja luotettavan Jabber/XMPP-kokemuksen " "unohtamatta yksityisyyttäsi." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -548,7 +600,7 @@ msgstr "" "mahdollistaa yksityisyyteen liittyvien ominaisuuksien, kuten lukukuittausten " "ja kirjoitusilmoitusten asetusten määrittämisen." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -556,7 +608,7 @@ msgstr "" "Dino hakee historian palvelimelta ja synkronisoi viestit muiden laitteiden " "kanssa." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Keskustelut pääikkunassa" @@ -580,6 +632,34 @@ msgstr "Alias" msgid "Add Contact" msgstr "Lisää yhteystieto" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "" + +#~ msgid "Copy Link Address" +#~ msgstr "Kopioi linkin osoite" + +#~ msgid "Copy" +#~ msgstr "Kopioi" + +#~ msgid "Select All" +#~ msgstr "Valitse kaikki" + +#~ msgid "Search" +#~ msgstr "Etsi" + #~ msgid "Send message marker" #~ msgstr "Lähetä lukukuittaus" diff --git a/main/po/fr.po b/main/po/fr.po index 46b96a23..ffd79de0 100644 --- a/main/po/fr.po +++ b/main/po/fr.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-05-06 18:23+0000\n" -"Last-Translator: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-10-22 04:29+0000\n" +"Last-Translator: Jean-Baptiste <jean-baptiste@holcroft.fr>\n" "Language-Team: French <https://hosted.weblate.org/projects/dino/translations/" "fr/>\n" "Language: fr\n" @@ -17,22 +17,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 3.3-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Demande d’abonnement" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Accepter" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Refuser" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "Choisir" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "Images" msgid "All files" msgstr "Tous les fichiers" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Connexion…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Connecté" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Déconnecté" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Mauvais mot de passe" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Certificat TLS invalide" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Erreur" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Ajouter un compte" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "Le JID doit être de la forme « utilisateur@example.com »" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Pas de réponse du serveur" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "S’inscrire sur %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "Ce serveur nécessite de s’inscrire depuis son site web" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Inscription ouverte" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "S’inscrire" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Consultez %s pour plus d’informations sur comment s’inscrire" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Moi" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%d %b" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Hier" @@ -157,22 +187,24 @@ msgid "Add" msgstr "Ajouter" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Sauver" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Rejoindre un salon" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Suivant" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Commencer une discussion" @@ -212,70 +244,58 @@ msgstr "Choisissez un autre pseudo" msgid "Too many occupants in room" msgstr "Trop de participants dans ce salon" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Aucun compte actif" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Gérer les comptes" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Aucune discussion en cours" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Aujourd’hui" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a %d %b" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s et %i autres" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s et %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s et %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "est en train d’écrire…" msgstr[1] "sont en train d’écrire…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "a arrêté d’écrire" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Fichier" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Message trop long" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Copier l’adresse du lien" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Copier" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Tout sélectionner" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Fichier" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -344,12 +364,27 @@ msgstr "Commencer une discussion privée" msgid "Kick" msgstr "Éjecter" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i résultats de recherche" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "Dans %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Avec %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Informations du salon" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Informations du contact" @@ -387,7 +422,7 @@ msgstr "Qui peut découvrir les vrais JID ?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -402,6 +437,7 @@ msgid "Moderated" msgstr "Modéré" #: main/src/ui/contact_details/muc_config_form_provider.vala:64 +#, fuzzy msgid "Only occupants with voice may send messages" msgstr "Seuls les membres ayant voix peu" @@ -429,7 +465,7 @@ msgstr "Configuration du salon" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Paramètres" @@ -494,12 +530,12 @@ msgstr "Notifier l’arrivée de nouveaux messages" msgid "Convert smileys to emojis" msgstr "Convertir les smileys en emojis" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Comptes" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Alias local" @@ -511,24 +547,40 @@ msgstr "Aucun compte configuré" msgid "Add an account" msgstr "Ajouter un compte" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Créer un compte" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Choisissez un serveur public" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Ou indiquez l’adresse d’un serveur" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "Connectez-vous à la place" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Choisissez un autre serveur" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Non-chiffré" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Quitter" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Rechercher" - -#: main/data/im.dino.Dino.appdata.xml.in:8 -#, fuzzy +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" msgstr "Client XMPP moderne" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -538,7 +590,7 @@ msgstr "" "fournir une expérience Jabber/XMPP simple et fiable tout en ayant toujours à " "l’esprit votre vie privée." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -548,7 +600,7 @@ msgstr "" "permet de configurer les fonctions liées à la vie privée telles que l’accusé " "de réception et les notifications de frappe." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -556,7 +608,7 @@ msgstr "" "Dino récupère l’historique du serveur et synchronise les messages avec " "d'autres appareils." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Fenêtre principale avec des conversations" @@ -580,6 +632,34 @@ msgstr "Alias" msgid "Add Contact" msgstr "Ajouter un contact" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Pas de recherche en cours" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Commencez à écrire pour lancer une recherche" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Aucun message correspondant" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Vérifiez l’orthographe ou essayez de supprimer des filtres" + +#~ msgid "Copy Link Address" +#~ msgstr "Copier l’adresse du lien" + +#~ msgid "Copy" +#~ msgstr "Copier" + +#~ msgid "Select All" +#~ msgstr "Tout sélectionner" + +#~ msgid "Search" +#~ msgstr "Rechercher" + #~ msgid "Send message marker" #~ msgstr "Envoyer les marqueurs de message" diff --git a/main/po/gl.po b/main/po/gl.po new file mode 100644 index 00000000..16a64742 --- /dev/null +++ b/main/po/gl.po @@ -0,0 +1,659 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-29 05:27+0000\n" +"Last-Translator: Xosé M <xosem@disroot.org>\n" +"Language-Team: Galician <https://hosted.weblate.org/projects/dino/" +"translations/gl/>\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.2-dev\n" + +#: main/src/ui/notifications.vala:71 +msgid "Subscription request" +msgstr "Petición de suscrición" + +#: main/src/ui/notifications.vala:77 +#: main/src/ui/conversation_summary/subscription_notification.vala:37 +msgid "Accept" +msgstr "Aceptar" + +#: main/src/ui/notifications.vala:78 +#: main/src/ui/conversation_summary/subscription_notification.vala:38 +msgid "Deny" +msgstr "Rexeitar" + +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + +#: main/src/ui/manage_accounts/dialog.vala:126 +#, c-format +msgid "Remove account %s?" +msgstr "Eliminar a conta %s?" + +#: main/src/ui/manage_accounts/dialog.vala:129 +msgid "Remove" +msgstr "Eliminar" + +#: main/src/ui/manage_accounts/dialog.vala:153 +msgid "Select avatar" +msgstr "Escoller avatar" + +#: main/src/ui/manage_accounts/dialog.vala:153 +msgid "Select" +msgstr "Escolla" + +#: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 +#: main/src/ui/add_conversation/add_conference_dialog.vala:16 +#: main/src/ui/add_conversation/select_contact_dialog.vala:41 +#: main/data/add_conversation/add_groupchat_dialog.ui:11 +#: main/data/add_conversation/add_contact_dialog.ui:12 +msgid "Cancel" +msgstr "Cancelar" + +#: main/src/ui/manage_accounts/dialog.vala:161 +msgid "Images" +msgstr "Imaxes" + +#: main/src/ui/manage_accounts/dialog.vala:165 +msgid "All files" +msgstr "Todos os ficheiros" + +#: main/src/ui/manage_accounts/dialog.vala:222 +msgid "Connecting…" +msgstr "Conectando…" + +#: main/src/ui/manage_accounts/dialog.vala:224 +msgid "Connected" +msgstr "Conectada" + +#: main/src/ui/manage_accounts/dialog.vala:226 +msgid "Disconnected" +msgstr "Desconectada" + +#: main/src/ui/manage_accounts/dialog.vala:235 +msgid "Wrong password" +msgstr "Contrasinal incorrecto" + +#: main/src/ui/manage_accounts/dialog.vala:237 +msgid "Invalid TLS certificate" +msgstr "Certificado TLS non válido" + +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 +msgid "Error" +msgstr "Fallo" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 +msgid "Add Account" +msgstr "Engadir conta" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 +msgid "JID should be of the form “user@example.com”" +msgstr "JID debe ter o formato \"usuaria@servidor.com\"" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Sen resposta do servidor" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Rexistrar en %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "O servidor solicita que se rexistre na súa web" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Rexistro aberto" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Rexistrar" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Comprobe %s para ter información sobre como rexistrarse" + +#: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 +#: main/src/ui/conversation_selector/chat_row.vala:30 +msgid "Me" +msgstr "Eu" + +#: main/src/ui/conversation_selector/conversation_row.vala:154 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#, no-c-format +msgid "%b %d" +msgstr "%b %d" + +#: main/src/ui/conversation_selector/conversation_row.vala:158 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 +msgid "Yesterday" +msgstr "Onte" + +#: main/src/ui/conversation_selector/conversation_row.vala:161 +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:196 +#, no-c-format +msgid "%H∶%M" +msgstr "%H∶%M" + +#: main/src/ui/conversation_selector/conversation_row.vala:162 +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:197 +#, no-c-format +msgid "%l∶%M %p" +msgstr "%l∶%M %p" + +#: main/src/ui/conversation_selector/conversation_row.vala:165 +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:201 +#, c-format +msgid "%i min ago" +msgid_plural "%i mins ago" +msgstr[0] "hai %i min" +msgstr[1] "hai %i minutos" + +#: main/src/ui/conversation_selector/conversation_row.vala:167 +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:203 +msgid "Just now" +msgstr "Xusto agora" + +#: main/src/ui/application.vala:44 +msgid "Join Conference" +msgstr "Unirse a Sala" + +#: main/src/ui/application.vala:44 +#: main/src/ui/add_conversation/add_conference_dialog.vala:63 +#: main/src/ui/add_conversation/conference_details_fragment.vala:133 +msgid "Join" +msgstr "Unirse" + +#: main/src/ui/add_conversation/add_groupchat_dialog.vala:28 +#: main/data/add_conversation/add_contact_dialog.ui:24 +msgid "Add" +msgstr "Engadir" + +#: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 +#: main/data/manage_accounts/add_account_dialog.ui:119 +msgid "Save" +msgstr "Gardar" + +#: main/src/ui/add_conversation/add_conference_dialog.vala:27 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 +msgid "Join Channel" +msgstr "Unirse a Canal" + +#: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 +msgid "Next" +msgstr "Seguinte" + +#: main/src/ui/add_conversation/select_contact_dialog.vala:85 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 +msgid "Start Conversation" +msgstr "Iniciar Conversa" + +#: main/src/ui/add_conversation/select_contact_dialog.vala:86 +msgid "Start" +msgstr "Iniciar" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:108 +msgid "Joining…" +msgstr "Uníndose…" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:138 +msgid "Password required to enter room" +msgstr "Precisa un contrasinal para entrar na sala" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:143 +msgid "Banned from joining or creating conference" +msgstr "Non ter permiso para unirse ou crear a conferencia" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:145 +msgid "Room does not exist" +msgstr "A Sala non existe" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:147 +msgid "Not allowed to create room" +msgstr "Non pode crear a sala" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:149 +msgid "Members-only room" +msgstr "Sala só para membros" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:152 +msgid "Choose a different nick" +msgstr "Escolla un alcume diferente" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:154 +msgid "Too many occupants in room" +msgstr "Demasiada xente na sala" + +#: main/src/ui/unified_window.vala:233 +msgid "No active accounts" +msgstr "Sen contas activas" + +#: main/src/ui/unified_window.vala:234 +msgid "Manage accounts" +msgstr "Xestionar contas" + +#: main/src/ui/unified_window.vala:241 +msgid "No active conversations" +msgstr "Sen conversas activas" + +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 +msgid "Today" +msgstr "Hoxe" + +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 +msgid "%a, %b %d" +msgstr "%a, %b %d" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 +#, c-format +msgid "%s, %s and %i others" +msgstr "%s, %s e %i outros" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#, c-format +msgid "%s, %s and %s" +msgstr "%s, %s e %s" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#, c-format +msgid "%s and %s" +msgstr "%s e %s" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 +msgid "is typing…" +msgid_plural "are typing…" +msgstr[0] "está a escribir…" +msgstr[1] "están escribindo…" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +msgid "has stopped typing" +msgstr "deixou de escribir" + +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 +msgid "Message too long" +msgstr "Mensaxe demasiado longa" + +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Ficheiro" + +#: main/src/ui/conversation_summary/subscription_notification.vala:48 +msgid "This contact would like to add you to their contact list" +msgstr "Este contacto gostaríalle engadila a súa listaxe de contactos" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:184 +#, no-c-format +msgid "%x, %H∶%M" +msgstr "%x, %H∶%M" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:185 +#, no-c-format +msgid "%x, %l∶%M %p" +msgstr "%x, %l∶%M %p" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:188 +#, no-c-format +msgid "%b %d, %H∶%M" +msgstr "%b %d, %H∶%M" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:189 +#, no-c-format +msgid "%b %d, %l∶%M %p" +msgstr "%b %d, %l∶%M %p" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:192 +#, no-c-format +msgid "%a, %H∶%M" +msgstr "%a, %H∶%M" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:193 +#, no-c-format +msgid "%a, %l∶%M %p" +msgstr "%a, %l∶%M %p" + +#: main/src/ui/occupant_menu/list.vala:106 +msgid "Owner" +msgstr "Dona" + +#: main/src/ui/occupant_menu/list.vala:108 +msgid "Admin" +msgstr "Admin" + +#: main/src/ui/occupant_menu/list.vala:110 +msgid "Member" +msgstr "Participante" + +#: main/src/ui/occupant_menu/list.vala:112 +msgid "User" +msgstr "Usuaria" + +#: main/src/ui/occupant_menu/view.vala:27 +#: main/src/ui/occupant_menu/view.vala:36 +msgid "Invite" +msgstr "Convidar" + +#: main/src/ui/occupant_menu/view.vala:35 +msgid "Invite to Conference" +msgstr "Convidar a Conferencia" + +#: main/src/ui/occupant_menu/view.vala:85 +msgid "Start private conversation" +msgstr "Iniciar conversa privada" + +#: main/src/ui/occupant_menu/view.vala:93 +msgid "Kick" +msgstr "Expulsar" + +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i resultados da busca" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "En %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Con %s" + +#: main/src/ui/contact_details/dialog.vala:37 +msgid "Conference Details" +msgstr "Detalles da Conferencia" + +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 +msgid "Contact Details" +msgstr "Detalles do contacto" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:39 +msgid "Name of the room" +msgstr "Nome da sala" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:42 +msgid "Description of the room" +msgstr "Descrición da sala" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:45 +msgid "Persistent" +msgstr "Persistente" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:46 +msgid "The room will persist after the last occupant leaves" +msgstr "A sala permanecerá despois de que salga o derradeiro ocupante" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:49 +msgid "Publicly searchable" +msgstr "Pódese atopar públicamente" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:52 +msgid "Occupants may change the subject" +msgstr "As participantes poden cambiar o asunto" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:55 +msgid "Discover real JIDs" +msgstr "Descubrir os JIDs reais" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:56 +msgid "Who may discover real JIDs?" +msgstr "Quen pode descubrir os JIDs reais?" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:59 +#: main/data/manage_accounts/dialog.ui:170 +#: main/data/manage_accounts/add_account_dialog.ui:62 +#: main/data/add_conversation/conference_details_fragment.ui:175 +#: main/data/add_conversation/add_groupchat_dialog.ui:147 +msgid "Password" +msgstr "Contrasinal" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:60 +msgid "Password required for room entry, if any" +msgstr "Contrasinal requerido para entrar na sala, si fose preciso" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:63 +msgid "Moderated" +msgstr "Moderada" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:64 +msgid "Only occupants with voice may send messages" +msgstr "Só as participantes con voz poden enviar mensaxes" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:67 +msgid "Members only" +msgstr "Só participantes" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:68 +msgid "Only members may enter the room" +msgstr "Só participantes poden entrar na sala" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:71 +msgid "Message history" +msgstr "Histórico de mensaxes" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:72 +msgid "Maximum amount of backlog issued by the room" +msgstr "Cantidade máxima de rexistros proporcionados pola sala" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:78 +msgid "Room Configuration" +msgstr "Configuración da sala" + +#: main/src/ui/contact_details/blocking_provider.vala:31 +#: main/src/ui/contact_details/settings_provider.vala:22 +#: main/src/ui/contact_details/settings_provider.vala:25 +#: main/src/ui/contact_details/settings_provider.vala:30 +#: main/data/menu_app.ui:11 +msgid "Settings" +msgstr "Axustes" + +#: main/src/ui/contact_details/blocking_provider.vala:31 +msgid "Block" +msgstr "Bloquear" + +#: main/src/ui/contact_details/blocking_provider.vala:31 +msgid "Communication and status updates in either direction are blocked" +msgstr "" +"As actualizacións de estado e comunicación están bloqueadas en calquer " +"dirección" + +#: main/src/ui/contact_details/settings_provider.vala:22 +#: main/data/settings_dialog.ui:22 +msgid "Send typing notifications" +msgstr "Enviar notificacións de escritura" + +#: main/src/ui/contact_details/settings_provider.vala:25 +#: main/data/settings_dialog.ui:34 +msgid "Send read receipts" +msgstr "Enviar confirmación de lectura" + +#: main/src/ui/contact_details/settings_provider.vala:30 +#: main/src/ui/contact_details/settings_provider.vala:39 +msgid "Notifications" +msgstr "Notificacións" + +#: main/src/ui/contact_details/settings_provider.vala:39 +msgid "Local Settings" +msgstr "Axustes locais" + +#: main/src/ui/contact_details/settings_provider.vala:74 +#: main/src/ui/contact_details/settings_provider.vala:114 +#: main/src/ui/contact_details/settings_provider.vala:116 +msgid "On" +msgstr "On" + +#: main/src/ui/contact_details/settings_provider.vala:76 +#: main/src/ui/contact_details/settings_provider.vala:114 +#: main/src/ui/contact_details/settings_provider.vala:117 +msgid "Off" +msgstr "Off" + +#: main/src/ui/contact_details/settings_provider.vala:78 +msgid "Only when mentioned" +msgstr "Só cando mencionada" + +#: main/src/ui/contact_details/settings_provider.vala:80 +#: main/src/ui/contact_details/settings_provider.vala:115 +#, c-format +msgid "Default: %s" +msgstr "Por omisión: %s" + +#: main/data/settings_dialog.ui:7 +msgid "Preferences" +msgstr "Preferencias" + +#: main/data/settings_dialog.ui:46 +msgid "Notify when a new message arrives" +msgstr "Notificar cando chega unha nova mensaxe" + +#: main/data/settings_dialog.ui:58 +msgid "Convert smileys to emojis" +msgstr "Converter risoños a emojis" + +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 +msgid "Accounts" +msgstr "Contas" + +#: main/data/manage_accounts/dialog.ui:200 +#: main/data/manage_accounts/add_account_dialog.ui:83 +msgid "Local alias" +msgstr "Alcume local" + +#: main/data/manage_accounts/dialog.ui:255 +msgid "No accounts configured" +msgstr "Sen contas configuradas" + +#: main/data/manage_accounts/dialog.ui:266 +msgid "Add an account" +msgstr "Engadir unha conta" + +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Crear unha conta" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Escoller un servidor público" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Ou indicar un enderezo de servidor" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "ou Conectarse" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Escoller outro servidor" + +#: main/data/menu_encryption.ui:14 +msgid "Unencrypted" +msgstr "Non cifrado" + +#: main/data/menu_app.ui:17 +msgid "Quit" +msgstr "Saír" + +#: main/data/im.dino.Dino.appdata.xml.in:7 +msgid "Modern XMPP Chat Client" +msgstr "Cliente moderno para conversas XMPP" + +#: main/data/im.dino.Dino.appdata.xml.in:9 +msgid "" +"Dino is a modern open-source chat client for the desktop. It focuses on " +"providing a clean and reliable Jabber/XMPP experience while having your " +"privacy in mind." +msgstr "" +"Dino é un cliente moderno e de código aberto para o escritorio. Orientado a " +"proporcionar unha experiencia Jabber/XMPP limpa e fiable tendo a intimidade " +"presente." + +#: main/data/im.dino.Dino.appdata.xml.in:10 +msgid "" +"It supports end-to-end encryption with OMEMO and OpenPGP and allows " +"configuring privacy-related features such as read receipts and typing " +"notifications." +msgstr "" +"Soporta o cifrado de extremo-a-extremo con OMEMO e OpenPGP e permite " +"configurar características orientadas a intimidade tales como confirmación " +"de lectura e notificacións de escritura." + +#: main/data/im.dino.Dino.appdata.xml.in:11 +msgid "" +"Dino fetches history from the server and synchronizes messages with other " +"devices." +msgstr "" +"Dino obtén o histórico desde o servidor e sincroniza as mensaxes con outros " +"dispositivos." + +#: main/data/im.dino.Dino.appdata.xml.in:15 +msgid "Main window with conversations" +msgstr "Xanela principal con conversas" + +#: main/data/add_conversation/conference_details_fragment.ui:19 +#: main/data/add_conversation/add_groupchat_dialog.ui:49 +#: main/data/add_conversation/add_contact_dialog.ui:49 +msgid "Account" +msgstr "Conta" + +#: main/data/add_conversation/conference_details_fragment.ui:123 +#: main/data/add_conversation/add_groupchat_dialog.ui:120 +msgid "Nick" +msgstr "Sobrenome" + +#: main/data/add_conversation/add_groupchat_dialog.ui:175 +#: main/data/add_conversation/add_contact_dialog.ui:102 +msgid "Alias" +msgstr "Alcume" + +#: main/data/add_conversation/add_contact_dialog.ui:8 +msgid "Add Contact" +msgstr "Engadir contacto" + +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Sen busca activa" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Escriba para iniciar a busca" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Sen mensaxes coincidentes" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Comprobe a escrita ou intente eliminar filtros" + +#~ msgid "Copy Link Address" +#~ msgstr "Copiar enderezo da ligazón" + +#~ msgid "Copy" +#~ msgstr "Copiar" + +#~ msgid "Select All" +#~ msgstr "Escoller todo" diff --git a/main/po/hu.po b/main/po/hu.po new file mode 100644 index 00000000..c9e5bae7 --- /dev/null +++ b/main/po/hu.po @@ -0,0 +1,662 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-08-31 14:13+0000\n" +"Last-Translator: notramo <notramo@vipmail.hu>\n" +"Language-Team: Hungarian <https://hosted.weblate.org/projects/dino/" +"translations/hu/>\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.2-dev\n" + +#: main/src/ui/notifications.vala:71 +msgid "Subscription request" +msgstr "Feliratkozási kérés" + +#: main/src/ui/notifications.vala:77 +#: main/src/ui/conversation_summary/subscription_notification.vala:37 +msgid "Accept" +msgstr "Elfogadás" + +#: main/src/ui/notifications.vala:78 +#: main/src/ui/conversation_summary/subscription_notification.vala:38 +msgid "Deny" +msgstr "Tiltás" + +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + +#: main/src/ui/manage_accounts/dialog.vala:126 +#, c-format +msgid "Remove account %s?" +msgstr "Eltávolítod a %s fiókot?" + +#: main/src/ui/manage_accounts/dialog.vala:129 +msgid "Remove" +msgstr "Eltávolítás" + +#: main/src/ui/manage_accounts/dialog.vala:153 +msgid "Select avatar" +msgstr "Profilkép választása" + +#: main/src/ui/manage_accounts/dialog.vala:153 +msgid "Select" +msgstr "Választ" + +#: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 +#: main/src/ui/add_conversation/add_conference_dialog.vala:16 +#: main/src/ui/add_conversation/select_contact_dialog.vala:41 +#: main/data/add_conversation/add_groupchat_dialog.ui:11 +#: main/data/add_conversation/add_contact_dialog.ui:12 +msgid "Cancel" +msgstr "Mégse" + +#: main/src/ui/manage_accounts/dialog.vala:161 +msgid "Images" +msgstr "Képek" + +#: main/src/ui/manage_accounts/dialog.vala:165 +msgid "All files" +msgstr "Összes fájl" + +#: main/src/ui/manage_accounts/dialog.vala:222 +msgid "Connecting…" +msgstr "Csatlakozás…" + +#: main/src/ui/manage_accounts/dialog.vala:224 +msgid "Connected" +msgstr "Csatlakozva" + +#: main/src/ui/manage_accounts/dialog.vala:226 +msgid "Disconnected" +msgstr "Lecsatlakozva" + +#: main/src/ui/manage_accounts/dialog.vala:235 +msgid "Wrong password" +msgstr "Hibás jelszó" + +#: main/src/ui/manage_accounts/dialog.vala:237 +msgid "Invalid TLS certificate" +msgstr "Érvénytelen TLS tanúsítvány" + +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 +msgid "Error" +msgstr "Hiba" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 +msgid "Add Account" +msgstr "Fiók hozzáadása" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 +msgid "JID should be of the form “user@example.com”" +msgstr "" +"A JID-nek ebben a formátumban kell lennie: \"felhasználó@szolgáltató.com\"" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "" + +#: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 +#: main/src/ui/conversation_selector/chat_row.vala:30 +msgid "Me" +msgstr "Én" + +#: main/src/ui/conversation_selector/conversation_row.vala:154 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#, no-c-format +msgid "%b %d" +msgstr "%b %d" + +#: main/src/ui/conversation_selector/conversation_row.vala:158 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 +msgid "Yesterday" +msgstr "Tegnap" + +#: main/src/ui/conversation_selector/conversation_row.vala:161 +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:196 +#, no-c-format +msgid "%H∶%M" +msgstr "%H:%M" + +#: main/src/ui/conversation_selector/conversation_row.vala:162 +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:197 +#, no-c-format +msgid "%l∶%M %p" +msgstr "%I:%M %p" + +#: main/src/ui/conversation_selector/conversation_row.vala:165 +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:201 +#, c-format +msgid "%i min ago" +msgid_plural "%i mins ago" +msgstr[0] "%i perccel ezelőtt" +msgstr[1] "%i perccel ezelőtt" + +#: main/src/ui/conversation_selector/conversation_row.vala:167 +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:203 +msgid "Just now" +msgstr "Most" + +#: main/src/ui/application.vala:44 +msgid "Join Conference" +msgstr "Csatlakozás konferenciához" + +#: main/src/ui/application.vala:44 +#: main/src/ui/add_conversation/add_conference_dialog.vala:63 +#: main/src/ui/add_conversation/conference_details_fragment.vala:133 +msgid "Join" +msgstr "Csatlakozás" + +#: main/src/ui/add_conversation/add_groupchat_dialog.vala:28 +#: main/data/add_conversation/add_contact_dialog.ui:24 +msgid "Add" +msgstr "Hozzáadás" + +#: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 +#: main/data/manage_accounts/add_account_dialog.ui:119 +msgid "Save" +msgstr "Mentés" + +#: main/src/ui/add_conversation/add_conference_dialog.vala:27 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 +msgid "Join Channel" +msgstr "Csatlakozás csatornához" + +#: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 +msgid "Next" +msgstr "Következő" + +#: main/src/ui/add_conversation/select_contact_dialog.vala:85 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 +msgid "Start Conversation" +msgstr "Csevegés kezdeményezése" + +#: main/src/ui/add_conversation/select_contact_dialog.vala:86 +msgid "Start" +msgstr "Indítás" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:108 +msgid "Joining…" +msgstr "Csatlakozás…" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:138 +msgid "Password required to enter room" +msgstr "A szobába való belépéshez jelszó szükséges" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:143 +msgid "Banned from joining or creating conference" +msgstr "A csatlakozás egy konferenciához, vagy új létrehozása le van tiltva" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:145 +msgid "Room does not exist" +msgstr "A szoba nem létezik" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:147 +msgid "Not allowed to create room" +msgstr "Szoba létrehozása nem engedélyezett" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:149 +msgid "Members-only room" +msgstr "Csak tagoknak engedélyezett szoba" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:152 +msgid "Choose a different nick" +msgstr "Válassz egy másik becenevet" + +#: main/src/ui/add_conversation/conference_details_fragment.vala:154 +msgid "Too many occupants in room" +msgstr "Túl sok résztvevő van a szobában" + +#: main/src/ui/unified_window.vala:233 +msgid "No active accounts" +msgstr "Nincs aktív fiók" + +#: main/src/ui/unified_window.vala:234 +msgid "Manage accounts" +msgstr "Fiókok kezelése" + +#: main/src/ui/unified_window.vala:241 +msgid "No active conversations" +msgstr "Nincs aktív beszélgetés" + +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 +msgid "Today" +msgstr "Ma" + +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 +msgid "%a, %b %d" +msgstr "%a, %b %d" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 +#, c-format +msgid "%s, %s and %i others" +msgstr "%s, %s és %i további felhasználó" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#, c-format +msgid "%s, %s and %s" +msgstr "%s, %s, és %s" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#, c-format +msgid "%s and %s" +msgstr "%s és %s" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 +msgid "is typing…" +msgid_plural "are typing…" +msgstr[0] "gépel…" +msgstr[1] "gépel…" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +msgid "has stopped typing" +msgstr "abbahagyta a gépelést" + +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 +msgid "Message too long" +msgstr "Az üzenet túl hosszú" + +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Fájl" + +#: main/src/ui/conversation_summary/subscription_notification.vala:48 +msgid "This contact would like to add you to their contact list" +msgstr "Ez az ismerős hozzá szeretne adni téged az ismerőslistájához" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:184 +#, no-c-format +msgid "%x, %H∶%M" +msgstr "%x, %H:%M" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:185 +#, no-c-format +msgid "%x, %l∶%M %p" +msgstr "%x, %I:%M %p" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:188 +#, no-c-format +msgid "%b %d, %H∶%M" +msgstr "%b %d, %H:%M" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:189 +#, no-c-format +msgid "%b %d, %l∶%M %p" +msgstr "%b %d, %I:%M %p" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:192 +#, no-c-format +msgid "%a, %H∶%M" +msgstr "%a, %H:%M" + +#: main/src/ui/conversation_summary/conversation_item_skeleton.vala:193 +#, no-c-format +msgid "%a, %l∶%M %p" +msgstr "%a, %l∶%M %p" + +#: main/src/ui/occupant_menu/list.vala:106 +msgid "Owner" +msgstr "Tulajdonos" + +#: main/src/ui/occupant_menu/list.vala:108 +msgid "Admin" +msgstr "Adminisztrátor" + +#: main/src/ui/occupant_menu/list.vala:110 +msgid "Member" +msgstr "Tag" + +#: main/src/ui/occupant_menu/list.vala:112 +msgid "User" +msgstr "Felhasználó" + +#: main/src/ui/occupant_menu/view.vala:27 +#: main/src/ui/occupant_menu/view.vala:36 +msgid "Invite" +msgstr "Meghívás" + +#: main/src/ui/occupant_menu/view.vala:35 +msgid "Invite to Conference" +msgstr "Meghívás a konferenciába" + +#: main/src/ui/occupant_menu/view.vala:85 +msgid "Start private conversation" +msgstr "Privát beszélgetés indítása" + +#: main/src/ui/occupant_menu/view.vala:93 +msgid "Kick" +msgstr "Kirúgás" + +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "" + +#: main/src/ui/contact_details/dialog.vala:37 +msgid "Conference Details" +msgstr "A konferencia részletei" + +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 +msgid "Contact Details" +msgstr "Felhasználó információ" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:39 +msgid "Name of the room" +msgstr "A szoba neve" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:42 +msgid "Description of the room" +msgstr "A szoba leírása" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:45 +msgid "Persistent" +msgstr "Tartós" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:46 +msgid "The room will persist after the last occupant leaves" +msgstr "A szoba megmarad azután is, hogy az utolsó résztvevő elhagyta" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:49 +msgid "Publicly searchable" +msgstr "Nyilvánosan kereshető" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:52 +msgid "Occupants may change the subject" +msgstr "Résztvevők megváltoztathatják a témát" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:55 +msgid "Discover real JIDs" +msgstr "Valódi JID-k megtekintése" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:56 +msgid "Who may discover real JIDs?" +msgstr "Ki láthatja a valódi JID-ket?" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:59 +#: main/data/manage_accounts/dialog.ui:170 +#: main/data/manage_accounts/add_account_dialog.ui:62 +#: main/data/add_conversation/conference_details_fragment.ui:175 +#: main/data/add_conversation/add_groupchat_dialog.ui:147 +msgid "Password" +msgstr "Jelszó" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:60 +msgid "Password required for room entry, if any" +msgstr "A szobába lépéshez szükséges jelszó, ha van" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:63 +msgid "Moderated" +msgstr "Moderált" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:64 +msgid "Only occupants with voice may send messages" +msgstr "Csak az erre jogosult felhasználók küldhetnek üzenetet" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:67 +msgid "Members only" +msgstr "Csak tagoknak" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:68 +msgid "Only members may enter the room" +msgstr "Csak a szoba tagjai léphetnek be" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:71 +msgid "Message history" +msgstr "Üzenet előzmények" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:72 +msgid "Maximum amount of backlog issued by the room" +msgstr "A szoba üzenetelőzményeinek maximális mennyisége" + +#: main/src/ui/contact_details/muc_config_form_provider.vala:78 +msgid "Room Configuration" +msgstr "Szoba beállítása" + +#: main/src/ui/contact_details/blocking_provider.vala:31 +#: main/src/ui/contact_details/settings_provider.vala:22 +#: main/src/ui/contact_details/settings_provider.vala:25 +#: main/src/ui/contact_details/settings_provider.vala:30 +#: main/data/menu_app.ui:11 +msgid "Settings" +msgstr "Beállítások" + +#: main/src/ui/contact_details/blocking_provider.vala:31 +msgid "Block" +msgstr "Tiltás" + +#: main/src/ui/contact_details/blocking_provider.vala:31 +msgid "Communication and status updates in either direction are blocked" +msgstr "" +"Mind a két irányból le van tiltva a kommunikáció és az állapotjelentések" + +#: main/src/ui/contact_details/settings_provider.vala:22 +#: main/data/settings_dialog.ui:22 +msgid "Send typing notifications" +msgstr "Gépelési értesítés küldése" + +#: main/src/ui/contact_details/settings_provider.vala:25 +#: main/data/settings_dialog.ui:34 +msgid "Send read receipts" +msgstr "Kézbesítési jelentés küldése" + +#: main/src/ui/contact_details/settings_provider.vala:30 +#: main/src/ui/contact_details/settings_provider.vala:39 +msgid "Notifications" +msgstr "Értesítések" + +#: main/src/ui/contact_details/settings_provider.vala:39 +msgid "Local Settings" +msgstr "Helyi beállítások" + +#: main/src/ui/contact_details/settings_provider.vala:74 +#: main/src/ui/contact_details/settings_provider.vala:114 +#: main/src/ui/contact_details/settings_provider.vala:116 +msgid "On" +msgstr "Engedélyezve" + +#: main/src/ui/contact_details/settings_provider.vala:76 +#: main/src/ui/contact_details/settings_provider.vala:114 +#: main/src/ui/contact_details/settings_provider.vala:117 +msgid "Off" +msgstr "Kikapcsolva" + +#: main/src/ui/contact_details/settings_provider.vala:78 +msgid "Only when mentioned" +msgstr "Csak ha említenek" + +#: main/src/ui/contact_details/settings_provider.vala:80 +#: main/src/ui/contact_details/settings_provider.vala:115 +#, c-format +msgid "Default: %s" +msgstr "Alapértelmezett: %s" + +#: main/data/settings_dialog.ui:7 +msgid "Preferences" +msgstr "Beállítások" + +#: main/data/settings_dialog.ui:46 +msgid "Notify when a new message arrives" +msgstr "Értesítés új üzenet érkezésekor" + +#: main/data/settings_dialog.ui:58 +msgid "Convert smileys to emojis" +msgstr "Smiley-k átalakítása emojikká" + +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 +msgid "Accounts" +msgstr "Fiókok" + +#: main/data/manage_accounts/dialog.ui:200 +#: main/data/manage_accounts/add_account_dialog.ui:83 +msgid "Local alias" +msgstr "Helyi név" + +#: main/data/manage_accounts/dialog.ui:255 +msgid "No accounts configured" +msgstr "Nincs beállított fiók" + +#: main/data/manage_accounts/dialog.ui:266 +msgid "Add an account" +msgstr "Fiók hozzáadása" + +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "" + +#: main/data/menu_encryption.ui:14 +msgid "Unencrypted" +msgstr "Titkosítatlan" + +#: main/data/menu_app.ui:17 +msgid "Quit" +msgstr "Kilépés" + +#: main/data/im.dino.Dino.appdata.xml.in:7 +msgid "Modern XMPP Chat Client" +msgstr "Modern XMPP Üzenetküldő" + +#: main/data/im.dino.Dino.appdata.xml.in:9 +msgid "" +"Dino is a modern open-source chat client for the desktop. It focuses on " +"providing a clean and reliable Jabber/XMPP experience while having your " +"privacy in mind." +msgstr "" +"A Dino egy modern, nyílt forráskódú üzenetküldő alkalmazás asztali " +"rendszerekre, ami a hangsúlyt a letisztult és megbízható Jabber/XMPP " +"élményre helyezi, miközben a magánszféra megőrzését is fontosnak tartja." + +#: main/data/im.dino.Dino.appdata.xml.in:10 +msgid "" +"It supports end-to-end encryption with OMEMO and OpenPGP and allows " +"configuring privacy-related features such as read receipts and typing " +"notifications." +msgstr "" +"Támogatja a végponttól-végpontig titkosítást az OMEMO és az OpenPGP által, " +"és magánszférához kötődő beállítási lehetőségeket is biztosít, mint például " +"a kézbesítési, vagy gépelési értesítések küldése." + +#: main/data/im.dino.Dino.appdata.xml.in:11 +msgid "" +"Dino fetches history from the server and synchronizes messages with other " +"devices." +msgstr "" +"A Dino lekéri a chat előzményeket a szerverről, és szinkronizálja az " +"üzeneteket a többi eszközzel." + +#: main/data/im.dino.Dino.appdata.xml.in:15 +msgid "Main window with conversations" +msgstr "A fő ablak a beszélgetésekkel" + +#: main/data/add_conversation/conference_details_fragment.ui:19 +#: main/data/add_conversation/add_groupchat_dialog.ui:49 +#: main/data/add_conversation/add_contact_dialog.ui:49 +msgid "Account" +msgstr "Fiók" + +#: main/data/add_conversation/conference_details_fragment.ui:123 +#: main/data/add_conversation/add_groupchat_dialog.ui:120 +msgid "Nick" +msgstr "Becenév" + +#: main/data/add_conversation/add_groupchat_dialog.ui:175 +#: main/data/add_conversation/add_contact_dialog.ui:102 +msgid "Alias" +msgstr "Alias" + +#: main/data/add_conversation/add_contact_dialog.ui:8 +msgid "Add Contact" +msgstr "Ismerős hozzáadása" + +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "" + +#~ msgid "Copy Link Address" +#~ msgstr "Link címének másolása" + +#~ msgid "Copy" +#~ msgstr "Másolás" + +#~ msgid "Select All" +#~ msgstr "Összes kijelölése" + +#~ msgid "Search" +#~ msgstr "Keresés" diff --git a/main/po/it.po b/main/po/it.po index e3c47b67..32a98ad1 100644 --- a/main/po/it.po +++ b/main/po/it.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-05-12 12:38+0000\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-12 07:20+0000\n" "Last-Translator: Valerio Baldisserotto <svalo@libersoft.it>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/dino/" "translations/it/>\n" @@ -17,22 +17,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 3.2-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Richiesta di iscrizione" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Accetta" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Rifiuta" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "Seleziona" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "Immagini" msgid "All files" msgstr "Tutti i documenti" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Connessione…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Connesso" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Disconnesso" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Password errata" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Il certificato TLS non è valido" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Errore" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Aggiungi un account" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "Il JID dovrebbe essere nella forma \"utente@example.com\"" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Nessuna risposta dal server" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Registrati su %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "Il server richiede di registrarsi tramite un sito web" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Apri la Registrazione" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Registrati" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Controlla %s per informazioni su come registrarsi" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Io" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%d %b" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Ieri" @@ -157,22 +187,24 @@ msgid "Add" msgstr "Aggiungi" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Salva" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Entra nel Canale" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Avanti" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Inizia una Conversazione" @@ -212,70 +244,58 @@ msgstr "Scegli un soprannome differente" msgid "Too many occupants in room" msgstr "La stanza ha troppi occupanti" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Nessun account attivo" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Gestisci accounts" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Nessuna conversazione attiva" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Oggi" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %d %b" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s e %i altri" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s, e %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s e %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "sta scrivendo…" msgstr[1] "stanno scrivendo…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "ha smesso di scrivere" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "File" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Messaggio troppo lungo" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Copia l'indirizzo del collegamento" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Copia" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Seleziona Tutto" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "File" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -344,12 +364,27 @@ msgstr "Inizia una conversazione privata" msgid "Kick" msgstr "Espelli" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i risultati per la ricerca" + +#: main/src/ui/global_search.vala:161 +#, fuzzy, c-format +msgid "In %s" +msgstr "In %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Con %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Dettagli della conferenza" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Dettagli del contatto" @@ -387,7 +422,7 @@ msgstr "Chi può scoprire i veri JIDs?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -429,7 +464,7 @@ msgstr "Configurazione della stanza" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Impostazioni" @@ -496,12 +531,12 @@ msgstr "Notifica quando arriva un nuovo messaggio" msgid "Convert smileys to emojis" msgstr "Trasforma smileys in emojis" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Account" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Alias locale" @@ -513,31 +548,51 @@ msgstr "Nessun account configurato" msgid "Add an account" msgstr "Aggiungi un account" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Crea account" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Scegli un server pubblico" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Oppure inserisci l'indirizzo di un server" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +#, fuzzy +msgid "Sign in instead" +msgstr "Oppure accedi" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Scegli un altro server" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Non cifrato" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Esci" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Cerca" - -#: main/data/im.dino.Dino.appdata.xml.in:8 -#, fuzzy +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "Client XMPP moderno" +msgstr "Client di chat moderno per XMPP" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " "privacy in mind." msgstr "" +"Dino è un client di chat per il desktop, moderno e open-source. Si concentra " +"nel fornire un'esperienza Jabber/XMPP pulita e affidabile tenendo presente " +"la tua privacy." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -547,7 +602,7 @@ msgstr "" "configurare le funzioni relative alla privacy come le ricevute di lettura e " "le notifiche di digitazione." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -555,7 +610,7 @@ msgstr "" "Dino recupera la cronologia dal server e sincronizza i messaggi con gli " "altri dispositivi." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "La finestra principale con le conversazioni" @@ -579,6 +634,34 @@ msgstr "Alias" msgid "Add Contact" msgstr "Aggiungi Contatto" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Nessuna ricerca attiva" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Digita per iniziare una ricerca" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Nessun messaggio corrispondente" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Controlla l'ortografia o prova a rimuovere dei filtri" + +#~ msgid "Copy Link Address" +#~ msgstr "Copia l'indirizzo del collegamento" + +#~ msgid "Copy" +#~ msgstr "Copia" + +#~ msgid "Select All" +#~ msgstr "Seleziona Tutto" + +#~ msgid "Search" +#~ msgstr "Cerca" + #~ msgid "Send message marker" #~ msgstr "Invia lo stato del messaggio" diff --git a/main/po/ja.po b/main/po/ja.po index bc042736..ac3fbaeb 100644 --- a/main/po/ja.po +++ b/main/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" "PO-Revision-Date: 2018-04-04 05:38+0000\n" "Last-Translator: Mako N <mako@pasero.net>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/dino/" @@ -19,20 +19,25 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 2.20-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "在席通知の申込" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "承諾" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "拒否" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "選択" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "画像" msgid "All files" msgstr "すべてのファイル" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "接続中…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "接続しました" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "切断しました" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "パスワードが違います" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "TLS 証明書が不正です" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "エラー" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "アカウントを追加" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "JID は “user@example.com” の形式にしてください" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "昨日" @@ -156,22 +186,24 @@ msgid "Add" msgstr "追加" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "保存" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "次" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "" @@ -211,69 +243,57 @@ msgstr "別のニックネームを選んでください" msgid "Too many occupants in room" msgstr "談話室は参加者が多すぎます" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "アカウントを管理" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "今日" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "は入力中…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "は入力を中断しました" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "ファイル" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "メッセージが長すぎます" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "リンクアドレスをコピー" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "コピー" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "すべて選択" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "ファイル" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -342,12 +362,27 @@ msgstr "私信を始める" msgid "Kick" msgstr "蹴り出す" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "談話室の詳細" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "相手先の詳細" @@ -385,7 +420,7 @@ msgstr "" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -427,7 +462,7 @@ msgstr "談話室の調整" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "設定" @@ -492,12 +527,12 @@ msgstr "新しいメッセージが届いたとき通知" msgid "Convert smileys to emojis" msgstr "スマイリーを絵文字に変換" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "アカウント" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "" @@ -509,43 +544,60 @@ msgstr "" msgid "Add an account" msgstr "アカウントを追加" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "非暗号化" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "検索" - -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " "privacy in mind." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " "notifications." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "" @@ -569,5 +621,33 @@ msgstr "別名" msgid "Add Contact" msgstr "相手先を追加" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "" + +#~ msgid "Copy Link Address" +#~ msgstr "リンクアドレスをコピー" + +#~ msgid "Copy" +#~ msgstr "コピー" + +#~ msgid "Select All" +#~ msgstr "すべて選択" + +#~ msgid "Search" +#~ msgstr "検索" + #~ msgid "Start Chat" #~ msgstr "会話を開始" diff --git a/main/po/lb.po b/main/po/lb.po index 36e56c1e..a28dce2a 100644 --- a/main/po/lb.po +++ b/main/po/lb.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: Luxembourgish (Dino)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-05-01 00:12+0000\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-10 00:23+0000\n" "Last-Translator: Dennis Fink <dennis.fink@c3l.lu>\n" "Language-Team: Luxembourgish <https://hosted.weblate.org/projects/dino/" "translations/lb/>\n" @@ -12,22 +12,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 3.2-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Abonnement Ufro" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Akzeptéieren" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Verweigeren" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -48,7 +53,6 @@ msgstr "Auswielen" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -62,52 +66,78 @@ msgstr "Biller" msgid "All files" msgstr "All Dateien" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Verbannen…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Verbonnen" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Getrennt" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Falsch Passwuert" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Invaliden TLS Zertifikat" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Feeler" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Account bäisetzen" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "JID sollt folgend Form hunn „user@example.com“" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Keng Äntwert vum Server" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Ob %s registréieren" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "De Server setzt eng Registréierung duerch eng Websäit viraus" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Oppe Registréierung" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Registréieren" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Kuck %s fir Informatioune iwwert Registréierung" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Ech" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%b %d" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Gëschter" @@ -152,22 +182,24 @@ msgid "Add" msgstr "Bäisetzen" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Späicheren" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Kanal bäitrieden" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Nächst" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Konversatioun starten" @@ -207,70 +239,58 @@ msgstr "Wiel een anere Spëtznumm" msgid "Too many occupants in room" msgstr "De Raum huet ze vill Benotzer" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Keng Kontoen aktiv" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Kontoe managen" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Keng Conversatiounen aktiv" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Haut" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s an %i anerer" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s an %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s an %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "tippt grad…" msgstr[1] "tippe grad…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "huet opgehalen ze tippen" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Datei" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Noriicht ze laang" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Kopéier Link Adress" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Kopéieren" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Alles auswielen" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Datei" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -339,12 +359,27 @@ msgstr "Privat Conversatioun starten" msgid "Kick" msgstr "Erausgeheien" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i Sichresultater" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "An %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Mat %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Konferenz Detailer" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Kontaktdetailer" @@ -382,7 +417,7 @@ msgstr "Ween däerf echt JIDs gesinn?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -424,7 +459,7 @@ msgstr "Raum Astellungen" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Astellungen" @@ -489,12 +524,12 @@ msgstr "Benoriichtege wann een neie Message ukënnt" msgid "Convert smileys to emojis" msgstr "Smileyen an Emojien konvertéieren" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Kontoen" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Lokalen Pseudonym" @@ -506,24 +541,40 @@ msgstr "Keng Kontoe konfiguréiert" msgid "Add an account" msgstr "Ee Konto bäisetzen" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Account kreéieren" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Ëffentleche Server auswielen" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Oder spezifizéier eng Server Adress" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "Aloggen a Platz" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Anere Server auswielen" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Onverschlësselt" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Zoumaachen" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Sichen" - -#: main/data/im.dino.Dino.appdata.xml.in:8 -#, fuzzy +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "Modernen XMPP Client" +msgstr "Modernen XMPP Chat Client" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -533,7 +584,7 @@ msgstr "" "opgeraumt a robust Jabber/XMPP Erfarung a leet ee Schwéierpunkt op " "Privatsphär." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -542,7 +593,7 @@ msgstr "" "Hien ënnerstëtz Enn-zu-Enn Verschlësselung mat OMEMO an OpenPGP an enthält " "Privatsphäre-Astellungen zu Liesbestätegungen an Tipp-Benoriichtegungen." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -550,7 +601,7 @@ msgstr "" "Dino rifft Gespréichverläf vum Server of a synchroniséiert Noriichte mat " "anere Geräter." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Haaptfënster mat den Conversatiounen" @@ -574,6 +625,34 @@ msgstr "Pseudonym" msgid "Add Contact" msgstr "Kontakt bäisetzen" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Keng aktiv Sich" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Tipp fir eng Sich ze starten" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Keng Message fonnt" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Iwwerpréif Schreifweis oder läsch Filteren" + +#~ msgid "Copy Link Address" +#~ msgstr "Kopéier Link Adress" + +#~ msgid "Copy" +#~ msgstr "Kopéieren" + +#~ msgid "Select All" +#~ msgstr "Alles auswielen" + +#~ msgid "Search" +#~ msgstr "Sichen" + #~ msgid "Send message marker" #~ msgstr "Message Marker verschécken" diff --git a/main/po/nb.po b/main/po/nb.po index bf44313e..cc98f31a 100644 --- a/main/po/nb.po +++ b/main/po/nb.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-05-02 06:11+0000\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-17 23:27+0000\n" "Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n" "Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/dino/" "translations/nb/>\n" @@ -17,22 +17,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 3.2-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Abonnementsforespørsel" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Godta" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Nekt" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "Velg" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "Bilder" msgid "All files" msgstr "Alle filer" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Kobler til…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Tilkoblet" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Frakoblet" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Feil passord" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Ugyldig TLS-sertifikat" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Feil" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Legg til konto" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "JID skal være av typen \"bruker@eksmepel.no\"" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Inget svar fra tjener" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Registrer på %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "Tjeneren krever at man logger inn via en nettside" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Åpne registrering" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Registrer" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Se %s for å lære hvordan du registrerer deg" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Meg" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%b %d" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "I går" @@ -157,22 +187,24 @@ msgid "Add" msgstr "Legg til" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Lagre" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Ta del i kanal" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Neste" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Start samtale" @@ -212,74 +244,58 @@ msgstr "Velg et annet kallenavn" msgid "Too many occupants in room" msgstr "Rommet har for mange deltagere" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Ingen kontoer aktive" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Behandle kontoer" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Ingen kontoer aktive" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "I dag" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %d %b" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s og %i andre" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s og %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s og %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" -msgstr[0] "" -"Du kjenner blott blodets hvisken og benpipernes bøn fra det ubevisste " -"sjeleliv…" -msgstr[1] "" -"Du kjenner blott blodets hvisken og benpipernes bøn fra de ubevisste " -"sjeleliv…" - -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +msgstr[0] "skriver…" +msgstr[1] "skriver…" + +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "har tatt pause i skrivinga" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Fil" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" -msgstr "Meldingen er for land" +msgstr "Meldingen er for lang" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Kopier lenkeadresse" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Kopier" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Velg alle" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Fil" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -348,22 +364,37 @@ msgstr "Start privat samtale" msgid "Kick" msgstr "Kast ut" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i søkeresultater" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "I %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Med %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Konferansedetaljer" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Kontaktdetaljer" #: main/src/ui/contact_details/muc_config_form_provider.vala:39 msgid "Name of the room" -msgstr "Rommets navn" +msgstr "Romnavn" #: main/src/ui/contact_details/muc_config_form_provider.vala:42 msgid "Description of the room" -msgstr "Beskrivelse av rommet" +msgstr "Rombeskrivelse" #: main/src/ui/contact_details/muc_config_form_provider.vala:45 msgid "Persistent" @@ -391,7 +422,7 @@ msgstr "Hvem har tilgang til oppdagelse av ekte JID-er?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -399,7 +430,7 @@ msgstr "Passord" #: main/src/ui/contact_details/muc_config_form_provider.vala:60 msgid "Password required for room entry, if any" -msgstr "Passord kreves for å ta del i rommet. La stå tomt for inget" +msgstr "Passord som kreves for å ta del i rommet. La stå tomt for inget" #: main/src/ui/contact_details/muc_config_form_provider.vala:63 msgid "Moderated" @@ -433,7 +464,7 @@ msgstr "Rom-oppsett" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Innstillinger" @@ -498,12 +529,12 @@ msgstr "Varsle ved mottak av ny melding" msgid "Convert smileys to emojis" msgstr "Konverter smilefjes til emoji-er" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Kontoer" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Lokalt alias" @@ -515,24 +546,40 @@ msgstr "Ingen kontoer satt opp" msgid "Add an account" msgstr "Legg til en konto" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Opprett konto" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Velg en offentlig tjener" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Eller angi en tjeneradresse" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "Logg inn istedenfor" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Velg en annen tjener" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Ukryptert" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Avslutt" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Søk" - -#: main/data/im.dino.Dino.appdata.xml.in:8 -#, fuzzy +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "Moderne XMPP-klient" +msgstr "Moderne XMPP-sludreklient" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -542,7 +589,7 @@ msgstr "" "på rask og pålitelig XMPP-opplevelse, samtidig som det hegner om " "personvernet." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -552,7 +599,7 @@ msgstr "" "oppsett av personvernsrelaterte funksjoner som meldingskvitteringer og " "skrivevarsling." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -560,7 +607,7 @@ msgstr "" "Dino henter historikk fra tjeneren og synkroniserer meldinger med andre " "enheter." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Hovedvindu med samtaler" @@ -584,6 +631,34 @@ msgstr "Alias" msgid "Add Contact" msgstr "Legg til kontakt" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Inget aktivt søk" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Skriv for å starte et søk" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Ingen samsvarende meldinger" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Sjekk stavingen eller prøv å fjerne filter" + +#~ msgid "Copy Link Address" +#~ msgstr "Kopier lenkeadresse" + +#~ msgid "Copy" +#~ msgstr "Kopier" + +#~ msgid "Select All" +#~ msgstr "Velg alle" + +#~ msgid "Search" +#~ msgstr "Søk" + #~ msgid "Send message marker" #~ msgstr "Send meldingsmarkør" diff --git a/main/po/nl.po b/main/po/nl.po index f6208660..86d645ef 100644 --- a/main/po/nl.po +++ b/main/po/nl.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-05-02 07:36+0000\n" -"Last-Translator: Nathan Follens <nathan@email.is>\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-24 12:24+0000\n" +"Last-Translator: Nathan Follens <nthn@unseen.is>\n" "Language-Team: Dutch <https://hosted.weblate.org/projects/dino/translations/" "nl/>\n" "Language: nl\n" @@ -17,22 +17,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 3.2-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Abonneringsverzoek" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Toestaan" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Afwijzen" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "Selecteren" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "Afbeeldingen" msgid "All files" msgstr "Alle bestanden" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Verbinding maken…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Verbonden" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Verbinding verbroken" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Verkeerd wachtwoord" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Ongeldig TLS-certificaat" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Fout" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Account toevoegen" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "JID moet de vorm ‘gebruiker@voorbeeld.be’ volgen" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Geen antwoord van server" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Registreren bij %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "De server vereist registratie via een website" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Open registratie" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Registreren" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Bekijk %s voor meer informatie over hoe te registreren" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Ik" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%d %b" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Gisteren" @@ -157,22 +187,24 @@ msgid "Add" msgstr "Toevoegen" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Opslaan" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Deelnemen aan kanaal" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Volgende" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Gesprek beginnen" @@ -212,70 +244,58 @@ msgstr "Kies een andere bijnaam" msgid "Too many occupants in room" msgstr "Groepsgesprek heeft te veel deelnemers" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Geen accounts actief" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Accounts beheren" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Geen gesprekken actief" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Vandaag" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s en %i anderen" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s en %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s en %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "is aan het typen…" msgstr[1] "zijn aan het typen…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "is gestopt met typen" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Bestand" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Bericht te lang" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Verwijzingsadres kopiëren" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Kopiëren" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Alles selecteren" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Bestand" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -344,12 +364,27 @@ msgstr "Privégesprek beginnen" msgid "Kick" msgstr "Schoppen" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i zoekresultaten" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "In %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Met %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Groepsgespreksgegevens" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Contactgegevens" @@ -388,7 +423,7 @@ msgstr "Wie mag de JID’s van de deelnemers zien?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -430,7 +465,7 @@ msgstr "Gespreksconfiguratie" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Instellingen" @@ -495,12 +530,12 @@ msgstr "Melding tonen bij nieuw bericht" msgid "Convert smileys to emojis" msgstr "Smileys omzetten naar emoji’s" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Accounts" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Lokale alias" @@ -512,24 +547,40 @@ msgstr "Geen accounts ingesteld" msgid "Add an account" msgstr "Account toevoegen" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Account aanmaken" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Kies een openbare server" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Of voer een serveradres in" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "Inloggen" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Kies een andere server" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Onversleuteld" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Afsluiten" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Zoeken" - -#: main/data/im.dino.Dino.appdata.xml.in:8 -#, fuzzy +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "Moderne XMPP-cliënt" +msgstr "Moderne XMPP-chatcliënt" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -539,7 +590,7 @@ msgstr "" "eenvoudige en betrouwbare Jabber/XMPP-ervaring, met uw privacy in het " "achterhoofd." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -549,7 +600,7 @@ msgstr "" "toe privacy-gerelateerde functies, zoals leesbevestigingen en typmeldingen, " "in te stellen." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -557,7 +608,7 @@ msgstr "" "Dino haalt de geschiedenis op van de server en synchroniseert berichten met " "andere apparaten." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Hoofdvenster met gesprekken" @@ -581,6 +632,34 @@ msgstr "Alias" msgid "Add Contact" msgstr "Contact toevoegen" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Geen actieve zoekopdracht" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Typ om te beginnen zoeken" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Geen overeenkomende berichten" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Controleer de spelling of probeer filters te verwijderen" + +#~ msgid "Copy Link Address" +#~ msgstr "Verwijzingsadres kopiëren" + +#~ msgid "Copy" +#~ msgstr "Kopiëren" + +#~ msgid "Select All" +#~ msgstr "Alles selecteren" + +#~ msgid "Search" +#~ msgstr "Zoeken" + #~ msgid "Send message marker" #~ msgstr "Berichtmarkers sturen" diff --git a/main/po/nl_BE.po b/main/po/nl_BE.po index ac82d837..b6b222c8 100644 --- a/main/po/nl_BE.po +++ b/main/po/nl_BE.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-06-18 12:37+0000\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-10-12 10:27+0000\n" "Last-Translator: Nathan Follens <nthn@unseen.is>\n" "Language-Team: Flemish <https://hosted.weblate.org/projects/dino/" "translations/nl_BE/>\n" @@ -17,22 +17,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.0.1\n" +"X-Generator: Weblate 3.2.1\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Abonneringsverzoek" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Toestaan" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Afwijzen" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "Selecteren" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "Afbeeldingen" msgid "All files" msgstr "Alle bestanden" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Verbinding maken…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Verbonden" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Verbinding verbroken" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Verkeerd paswoord" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Ongeldig TLS-certificaat" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Fout" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Account toevoegen" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "JID moet de vorm ‘gebruiker@voorbeeld.be’ volgen" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Geen antwoord van server" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Registreren bij %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "De server vereist registratie via ne website" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Open registratie" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Registreren" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Bekijk %s voor meer informatie over hoe te registreren" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Ik" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%d %b" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Gisteren" @@ -157,22 +187,24 @@ msgid "Add" msgstr "Toevoegen" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Opslaan" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Deelnemen aan kanaal" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Volgende" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Gesprek beginnen" @@ -212,70 +244,58 @@ msgstr "Kiest nen anderen bijnaam" msgid "Too many occupants in room" msgstr "Groepsgesprek heeft te veel deelnemers" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Geen accounts actief" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Accounts beheren" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Geen gesprekken actief" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Vandaag" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s en %i anderen" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s en %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s en %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "is aan het typen…" msgstr[1] "zijn aan het typen…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "is gestopt met typen" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Bestand" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Bericht te lang" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Verwijzingsadres kopiëren" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Kopiëren" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Alles selecteren" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Bestand" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -344,12 +364,27 @@ msgstr "Privégesprek beginnen" msgid "Kick" msgstr "Schoppen" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i zoekresultaten" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "In %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Met %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Groepsgespreksgegevens" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Contactgegevens" @@ -389,7 +424,7 @@ msgstr "Wie mag de JID’s van de deelnemers zien?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -432,7 +467,7 @@ msgstr "Gespreksconfiguratie" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Instellingen" @@ -497,12 +532,12 @@ msgstr "Melding tonen bij nieuw bericht" msgid "Convert smileys to emojis" msgstr "Smileys omzetten naar emoji’s" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Accounts" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Lokalen alias" @@ -514,24 +549,40 @@ msgstr "Geen accounts ingesteld" msgid "Add an account" msgstr "Account toevoegen" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Account aanmaken" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Kiest nen openbare server" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Of voert een serveradres in" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "Inloggen" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Kiest nen andere server" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Onversleuteld" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Afsluiten" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Zoeken" - -#: main/data/im.dino.Dino.appdata.xml.in:8 -#, fuzzy +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "Modernen XMPP-cliënt" +msgstr "Modernen XMPP-chatcliënt" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -541,7 +592,7 @@ msgstr "" "eenvoudige en betrouwbare Jabber/XMPP-ervaring, met uw privacy in het " "achterhoofd." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -551,7 +602,7 @@ msgstr "" "toe privacygerelateerde functies, gelijk leesbevestigingen en typmeldingen, " "in te stellen." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -559,7 +610,7 @@ msgstr "" "Dino haalt de geschiedenis op van de server en synchroniseert berichten met " "andere apparaten." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Hoofdvenster met gesprekken" @@ -583,6 +634,34 @@ msgstr "Alias" msgid "Add Contact" msgstr "Contact toevoegen" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Genen actieve zoekopdracht" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Typt voor te beginnen zoeken" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Geen overeenkomende berichten" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Controleert de spelling of probeert filters te verwijderen" + +#~ msgid "Copy Link Address" +#~ msgstr "Verwijzingsadres kopiëren" + +#~ msgid "Copy" +#~ msgstr "Kopiëren" + +#~ msgid "Select All" +#~ msgstr "Alles selecteren" + +#~ msgid "Search" +#~ msgstr "Zoeken" + #~ msgid "Send message marker" #~ msgstr "Berichtmarkers sturen" diff --git a/main/po/pl.po b/main/po/pl.po index 46679b13..1d5e8046 100644 --- a/main/po/pl.po +++ b/main/po/pl.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-02-19 18:39+0000\n" -"Last-Translator: Andrzej Czerniak <andrzej.czerniak@gmail.com>\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-25 09:34+0000\n" +"Last-Translator: Michael K <kellermichal@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/dino/translations/" "pl/>\n" "Language: pl\n" @@ -18,22 +18,27 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.19\n" +"X-Generator: Weblate 3.2-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Żądanie subskrypcji" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Akceptuj" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Odmów" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -54,7 +59,6 @@ msgstr "Wybierz" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -68,38 +72,64 @@ msgstr "Obrazy" msgid "All files" msgstr "Wszystkie pliki" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Próba łączenia…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Połączony" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Rozłączony" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Błędne hasło" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Nieprawidłowy certyfikat TLS" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Błąd" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Dodaj konto" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" -msgstr "" +msgstr "JID powinien być w formie \"użytkownik@przykład.com\"" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Brak odpowiedzi z serwera" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Zarejestrowano na %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "Serwer wymaga rejestracji przez stronę internetową" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Otwarta rejestracja" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Zarejestruj" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Sprawdź %s aby dowiedzieć się na temat rejestracji" #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 @@ -107,13 +137,13 @@ msgid "Me" msgstr "Ja" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%b %d" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Wczoraj" @@ -159,24 +189,26 @@ msgid "Add" msgstr "Dodaj" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Zapisz" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" -msgstr "" +msgstr "Dołącz do kanału" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Następny" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" -msgstr "" +msgstr "Rozpocznij rozmowę" #: main/src/ui/add_conversation/select_contact_dialog.vala:86 msgid "Start" @@ -214,42 +246,42 @@ msgstr "Wybierz inny pseudonim" msgid "Too many occupants in room" msgstr "Zbyt duża liczba osób w pokoju" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Brak aktywnych kont" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Zarządzaj kontami" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Brak aktywnych konwersacji" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Dzisiaj" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" -msgstr "" +msgstr "%s, %s i %i inne" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" -msgstr "" +msgstr "%s, %s, i %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" -msgstr "" +msgstr "%s i %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 #, fuzzy msgid "is typing…" msgid_plural "are typing…" @@ -257,29 +289,17 @@ msgstr[0] "pisze…" msgstr[1] "pisze…" msgstr[2] "pisze…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "przerwał pisanie" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Plik" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Wiadomość jest zbyt długa" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Skopiuj adres odnośnika" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Kopiuj" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Wybierz wszystkie" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Plik" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -348,12 +368,27 @@ msgstr "Rozpocznij prywatną rozmowę" msgid "Kick" msgstr "Wykop" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i wyniki wyszukiwania" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "W %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Z %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Szczegóły pokoju" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Szczegóły kontaktu" @@ -391,7 +426,7 @@ msgstr "Kto może wyświetlać prawdziwy JID?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -433,7 +468,7 @@ msgstr "Konfiguracja pokoju" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Ustawienia" @@ -499,12 +534,12 @@ msgstr "Powiadom jeżeli nadejdzie wiadomość" msgid "Convert smileys to emojis" msgstr "Zamień tekst na emotikony" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Konta" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Lokalna nazwa użytkownika" @@ -516,45 +551,65 @@ msgstr "Brak skonfigurowanych kont" msgid "Add an account" msgstr "Dodaj konto" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Załóż konto" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Wybierz serwer publiczny" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Lub specjalny adres serwera" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Wybierz kolejny serwer" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Nieszyfrowany" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Wyjdź" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Wyszukaj" - -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "" +msgstr "Nowoczesny klient Chatu XMPP" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " "privacy in mind." msgstr "" +"Dino jest nowoczesnym klientem chat z otwartym źródłem w wersji na " +"komputery. Skupia się na prostej obsłudze Jabber/XMPP dbając o twoją " +"prywatność." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " "notifications." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" -msgstr "" +msgstr "Główne okno rozmów" #: main/data/add_conversation/conference_details_fragment.ui:19 #: main/data/add_conversation/add_groupchat_dialog.ui:49 @@ -576,6 +631,34 @@ msgstr "Alias" msgid "Add Contact" msgstr "Dodaj kontakt" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Zacznij pisać aby wyszukać" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "" + +#~ msgid "Copy Link Address" +#~ msgstr "Skopiuj adres odnośnika" + +#~ msgid "Copy" +#~ msgstr "Kopiuj" + +#~ msgid "Select All" +#~ msgstr "Wybierz wszystkie" + +#~ msgid "Search" +#~ msgstr "Wyszukaj" + #~ msgid "Send message marker" #~ msgstr "Wyślij informację o odczytaniu wiadomości" diff --git a/main/po/pt_BR.po b/main/po/pt_BR.po index 8819ddb1..9cfecb3b 100644 --- a/main/po/pt_BR.po +++ b/main/po/pt_BR.po @@ -6,9 +6,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-06-14 20:43+0000\n" -"Last-Translator: 5lm31d5 <jeanrk15@gmail.com>\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-10 03:24+0000\n" +"Last-Translator: Rhagni Oliveira <rhagni@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/dino/" "translations/pt_BR/>\n" "Language: pt_BR\n" @@ -16,22 +16,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.0.1\n" +"X-Generator: Weblate 3.2-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Pedido de assinatura" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Aceitar" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Negar" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -52,7 +57,6 @@ msgstr "Selecionar" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -66,52 +70,78 @@ msgstr "Imagens" msgid "All files" msgstr "Todos os arquivos" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Conectando…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Conectado" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Desconectado" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Senha incorreta" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Certificado TLS inválido" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Erro" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Adicionar conta" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" +msgstr "O Jabber ID deve estar no formato \"usuário@exemplo.com\"" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Sem resposta do servidor" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Registre-se em %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "O servidor requer que se inscreva através de um site" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" msgstr "" +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Registrar" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Verifique %s para informação de como se inscrever" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Eu" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%b %d" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Ontem" @@ -156,22 +186,24 @@ msgid "Add" msgstr "Adicionar" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Salvar" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Juntar-se a um canal" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Próximo" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Iniciar conversa" @@ -211,71 +243,58 @@ msgstr "Escolha um apelido diferente" msgid "Too many occupants in room" msgstr "Número máximo da sala" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Nenhuma conta ativa" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Gerenciar contas" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Nenhuma conversa ativa" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Hoje" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" -msgstr "" +msgstr "%s, %s e outros %i" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" -msgstr "" +msgstr "%s, %s e %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" -msgstr "" +msgstr "%s e %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 -#, fuzzy +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "está digitando…" -msgstr[1] "está digitando…" +msgstr[1] "estão digitando…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "parou de digitar" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Arquivo" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Mensagem muito longa" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Copiar endereço do link" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Copiar" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Selecionar tudo" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Arquivo" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -344,12 +363,27 @@ msgstr "Iniciar conversa privada" msgid "Kick" msgstr "Kick" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i resultado(s) da busca" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "Em %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Com %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Detalhes da Conferência" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Detalhes do contato" @@ -387,7 +421,7 @@ msgstr "Quem pode encontrar JIDs reais?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -429,7 +463,7 @@ msgstr "Configuração da sala" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Configurações" @@ -449,7 +483,7 @@ msgstr "Enviar notificação ao digitar" #: main/src/ui/contact_details/settings_provider.vala:25 #: main/data/settings_dialog.ui:34 msgid "Send read receipts" -msgstr "" +msgstr "Enviar confirmação de leitura" #: main/src/ui/contact_details/settings_provider.vala:30 #: main/src/ui/contact_details/settings_provider.vala:39 @@ -494,12 +528,12 @@ msgstr "Notificar quando uma nova mensagem chegar" msgid "Convert smileys to emojis" msgstr "Converter smileys para emojis" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Contas" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Pseudônimo local" @@ -511,45 +545,70 @@ msgstr "Nenhuma conta configurada" msgid "Add an account" msgstr "Adicionar conta" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Criar conta" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Escolha um servidor publico" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Ou especifique um endereço de servidor" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "Entrar em vez disso" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Escolha outro servidor" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Não-criptografado" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Sair" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Pesquisar" - -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "" +msgstr "Moderno cliente de chat XMPP" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " "privacy in mind." msgstr "" +"Dino é um moderno chat de código aberto para desktop. Ele é focado em prover " +"uma transparente e confiável experiência Jabber/XMPP, tendo em mente a sua " +"privacidade." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " "notifications." msgstr "" +"Suporte criptografia ponta a ponta com OMEMO e OpenPGP e permite configurar " +"privacidade—características relacionadas às notificações de leitura, " +"recebimento e escrita." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." msgstr "" +"Dino obtém o histórico do servidor e sincroniza mensagens com outros " +"dispositivos." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" -msgstr "" +msgstr "Janela principal com as conversas" #: main/data/add_conversation/conference_details_fragment.ui:19 #: main/data/add_conversation/add_groupchat_dialog.ui:49 @@ -571,6 +630,34 @@ msgstr "Pseudônimo" msgid "Add Contact" msgstr "Adicionar contato" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Sem busca ativa" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Escreva para iniciar a busca" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Sem mensagens correspondentes" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Verifique a grafia ou tente remover filtros" + +#~ msgid "Copy Link Address" +#~ msgstr "Copiar endereço do link" + +#~ msgid "Copy" +#~ msgstr "Copiar" + +#~ msgid "Select All" +#~ msgstr "Selecionar tudo" + +#~ msgid "Search" +#~ msgstr "Pesquisar" + #~ msgid "Send message marker" #~ msgstr "Enviar marcador de mensagem" diff --git a/main/po/ro.po b/main/po/ro.po index 2a6c2ee8..d8d59de8 100644 --- a/main/po/ro.po +++ b/main/po/ro.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" -"PO-Revision-Date: 2018-05-02 23:41+0000\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" +"PO-Revision-Date: 2018-09-12 22:24+0000\n" "Last-Translator: Licaon Kter <licaon.kter@protonmail.com>\n" "Language-Team: Romanian <https://hosted.weblate.org/projects/dino/" "translations/ro/>\n" @@ -18,22 +18,27 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 3.0-dev\n" +"X-Generator: Weblate 3.2-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Cerere de abonare" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Acceptă" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Refuză" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -54,7 +59,6 @@ msgstr "Selectare" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -68,52 +72,78 @@ msgstr "Imagini" msgid "All files" msgstr "Toate fișierele" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Conectare…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Conectat" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Deconectat" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Parolă greșită" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Certificat TLS invalid" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Eroare" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Adaugă un cont" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "JID trebuie să fie de forma “utilizator@exemplu.ro”" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "Nici un răspuns de la server" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "Înregistrare pe %s" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "Serverul necesită înregistrarea printr-un site web" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "Deschis pentru înregistrare" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "Înregistrează-te" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "Aflați pe %s informații despre cum se face înregistrarea" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Eu" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%b %d" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Ieri" @@ -159,22 +189,24 @@ msgid "Add" msgstr "Adaugă" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Salvare" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Alătură-te canalului" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Următorul" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Pornește o conversație" @@ -214,71 +246,59 @@ msgstr "Alegeți un nume diferit" msgid "Too many occupants in room" msgstr "Discuția are prea mulți membrii" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Nici un cont activ" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Administrare conturi" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Nici o conversație activă" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Azi" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s, %s și încă %i alții" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s și %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s și %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "tastează…" msgstr[1] "tastează…" msgstr[2] "tastează…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "s-a oprit din scris" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Fișier" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Mesaj prea lung" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Copiază adresa legăturii" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Copiere" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Selectează tot" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Fișier" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -347,12 +367,27 @@ msgstr "Pornește o conversație privată" msgid "Kick" msgstr "Dă afară" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "%i rezultate la căutare" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "În %s" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "Cu %s" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Detalii conferință" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Detalii contact" @@ -390,7 +425,7 @@ msgstr "Cine poate descoperi ID-urile adevărate?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -432,7 +467,7 @@ msgstr "Configurare discuție" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Setări" @@ -497,12 +532,12 @@ msgstr "Notifică atunci când este primit un mesaj nou" msgid "Convert smileys to emojis" msgstr "Convertește zâmbilici în emoticoane" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Conturi" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Alias local" @@ -514,24 +549,40 @@ msgstr "Nici un cont configurat" msgid "Add an account" msgstr "Adaugă un cont" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "Creează cont" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "Alegeți un server public" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "Sau specificați adresa serverului" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "Înapoi la conectare" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "Alege alt server" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Necriptat" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Ieșire" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Căutare" - -#: main/data/im.dino.Dino.appdata.xml.in:8 -#, fuzzy +#: main/data/im.dino.Dino.appdata.xml.in:7 msgid "Modern XMPP Chat Client" -msgstr "Client XMPP modern" +msgstr "Client XMPP de discuții modern" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -541,7 +592,7 @@ msgstr "" "Se concentrează să furnizeze o experiență Jabber/XMPP clară și fiabilă, " "ținând cont de confidențialitatea dumneavoastră." -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -551,7 +602,7 @@ msgstr "" "și permite configurarea caracteristicilor legate de confidențialitate precum " "trimiterea notificărilor de primire și tastare." -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -559,7 +610,7 @@ msgstr "" "Dino preia istoricul discuțiilor de pe server și sincronizează mesajele cu " "celelalte dispozitive." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Fereastra principală de conversații" @@ -583,6 +634,34 @@ msgstr "Alias" msgid "Add Contact" msgstr "Adaugă contact" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "Nici o căutare activă" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "Tastați ceva pentru a porni căutarea" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "Nici un mesaj nu se potrivește" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "Verificați ortografia sau încercați să eliminați filtre" + +#~ msgid "Copy Link Address" +#~ msgstr "Copiază adresa legăturii" + +#~ msgid "Copy" +#~ msgstr "Copiere" + +#~ msgid "Select All" +#~ msgstr "Selectează tot" + +#~ msgid "Search" +#~ msgstr "Căutare" + #~ msgid "Send message marker" #~ msgstr "Trimite marcajul mesajului" diff --git a/main/po/ru.po b/main/po/ru.po index f2e25fc0..a014f090 100644 --- a/main/po/ru.po +++ b/main/po/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" "PO-Revision-Date: 2018-07-01 09:42+0000\n" "Last-Translator: nvlgit <nvlbox@gmail.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/dino/" @@ -20,20 +20,25 @@ msgstr "" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 3.1-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "Требуется авторизация" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "Принять" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "Отклонить" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -54,7 +59,6 @@ msgstr "Выбрать" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -68,52 +72,78 @@ msgstr "Изображения" msgid "All files" msgstr "Все файлы" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "Подключение…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "Подключено" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "Отключено" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "Неверный пароль" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "Недействительный TSL сертификат" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "Ошибка" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "Добавить аккаунт" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "JID должен быть в виде «user@example.com»" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "Я" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%b %d" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "Вчера" @@ -159,22 +189,24 @@ msgid "Add" msgstr "Добавить" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "Сохранить" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "Войти в канал" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "Следующее" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "Начать чат" @@ -214,42 +246,42 @@ msgstr "Выберите другой никнейм" msgid "Too many occupants in room" msgstr "Слишком много посетителей в комнате" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "Нет активных аккаунтов" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "Управление аккаунтами" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "Нет активных чатов" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "Сегодня" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a, %b %d" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, fuzzy, c-format msgid "%s, %s and %i others" msgstr "%s, %s и %i других" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s, %s и %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s и %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 #, fuzzy msgid "is typing…" msgid_plural "are typing…" @@ -257,29 +289,17 @@ msgstr[0] "печатает…" msgstr[1] "печатает…" msgstr[2] "печатает…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "перестал печатать" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "Файл" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "Сообщение слишком длинное" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "Копировать адресс ссылки" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "Копировать" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "Выбрать всё" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "Файл" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -348,12 +368,27 @@ msgstr "Начать личный чат" msgid "Kick" msgstr "Выгнать" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "Информация о конференции" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "Информация о контакте" @@ -391,7 +426,7 @@ msgstr "Кто может видеть настоящие JID?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -433,7 +468,7 @@ msgstr "Конфигурация комнаты" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "Настройки" @@ -498,12 +533,12 @@ msgstr "Уведомлять о новых сообщениях" msgid "Convert smileys to emojis" msgstr "Превращать смайлы в эмоджи" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "Аккаунты" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "Локальный псевдоним" @@ -515,38 +550,55 @@ msgstr "Нет настроенных аккаунтов" msgid "Add an account" msgstr "Добавить аккаунт" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "Не шифровать" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "Выйти" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "Поиск" - -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 #, fuzzy msgid "Modern XMPP Chat Client" msgstr "Современный XMPP-клиент" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " "privacy in mind." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " "notifications." msgstr "" -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." @@ -554,7 +606,7 @@ msgstr "" "Dino загружает историю с сервера и синхронизирует сообщения с другими " "устройствами." -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "Главное окно с чатами" @@ -578,6 +630,34 @@ msgstr "Псевдоним" msgid "Add Contact" msgstr "Добавить контакт" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "" + +#~ msgid "Copy Link Address" +#~ msgstr "Копировать адресс ссылки" + +#~ msgid "Copy" +#~ msgstr "Копировать" + +#~ msgid "Select All" +#~ msgstr "Выбрать всё" + +#~ msgid "Search" +#~ msgstr "Поиск" + #~ msgid "Send message marker" #~ msgstr "Отправлять маркеры сообщений" diff --git a/main/po/zh_Hans.po b/main/po/zh_Hans.po index 165ab765..2cf8f99c 100644 --- a/main/po/zh_Hans.po +++ b/main/po/zh_Hans.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: dino\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-05 09:22-0600\n" +"POT-Creation-Date: 2018-10-23 23:56+0200\n" "PO-Revision-Date: 2018-05-09 10:35+0000\n" "Last-Translator: fiaxh <weblate@mx.ax.lt>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" @@ -19,20 +19,25 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 3.0-dev\n" -#: main/src/ui/notifications.vala:70 +#: main/src/ui/notifications.vala:71 msgid "Subscription request" msgstr "订阅请求" -#: main/src/ui/notifications.vala:76 +#: main/src/ui/notifications.vala:77 #: main/src/ui/conversation_summary/subscription_notification.vala:37 msgid "Accept" msgstr "接受" -#: main/src/ui/notifications.vala:77 +#: main/src/ui/notifications.vala:78 #: main/src/ui/conversation_summary/subscription_notification.vala:38 msgid "Deny" msgstr "拒绝" +#: main/src/ui/notifications.vala:84 +#, c-format +msgid "Failed connecting to %s" +msgstr "" + #: main/src/ui/manage_accounts/dialog.vala:126 #, c-format msgid "Remove account %s?" @@ -53,7 +58,6 @@ msgstr "选择" #: main/src/ui/manage_accounts/dialog.vala:153 main/src/ui/application.vala:44 #: main/src/ui/add_conversation/add_conference_dialog.vala:16 #: main/src/ui/add_conversation/select_contact_dialog.vala:41 -#: main/data/manage_accounts/add_account_dialog.ui:11 #: main/data/add_conversation/add_groupchat_dialog.ui:11 #: main/data/add_conversation/add_contact_dialog.ui:12 msgid "Cancel" @@ -67,52 +71,78 @@ msgstr "图片" msgid "All files" msgstr "所有文件" -#: main/src/ui/manage_accounts/dialog.vala:231 +#: main/src/ui/manage_accounts/dialog.vala:222 msgid "Connecting…" msgstr "连接中…" -#: main/src/ui/manage_accounts/dialog.vala:233 +#: main/src/ui/manage_accounts/dialog.vala:224 msgid "Connected" msgstr "已连接" -#: main/src/ui/manage_accounts/dialog.vala:235 +#: main/src/ui/manage_accounts/dialog.vala:226 msgid "Disconnected" msgstr "已断开连接" -#: main/src/ui/manage_accounts/dialog.vala:244 +#: main/src/ui/manage_accounts/dialog.vala:235 msgid "Wrong password" msgstr "密码错误" -#: main/src/ui/manage_accounts/dialog.vala:246 +#: main/src/ui/manage_accounts/dialog.vala:237 msgid "Invalid TLS certificate" msgstr "无效的 TLS 证书" -#: main/src/ui/manage_accounts/dialog.vala:249 -#: main/src/ui/manage_accounts/dialog.vala:251 +#: main/src/ui/manage_accounts/dialog.vala:240 +#: main/src/ui/manage_accounts/dialog.vala:242 msgid "Error" msgstr "错误" -#: main/src/ui/manage_accounts/add_account_dialog.vala:22 +#: main/src/ui/manage_accounts/add_account_dialog.vala:55 msgid "Add Account" msgstr "添加帐号" -#: main/src/ui/manage_accounts/add_account_dialog.vala:45 +#: main/src/ui/manage_accounts/add_account_dialog.vala:135 msgid "JID should be of the form “user@example.com”" msgstr "JID 必须形如 “user@example.com”" +#: main/src/ui/manage_accounts/add_account_dialog.vala:171 +msgid "No response from server" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:177 +#, c-format +msgid "Register on %s" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:180 +msgid "The server requires to sign up through a website" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:182 +msgid "Open Registration" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:198 +msgid "Register" +msgstr "" + +#: main/src/ui/manage_accounts/add_account_dialog.vala:200 +#, c-format +msgid "Check %s for information on how to sign up" +msgstr "" + #: main/src/ui/conversation_selector/groupchat_pm_row.vala:24 #: main/src/ui/conversation_selector/chat_row.vala:30 msgid "Me" msgstr "我" #: main/src/ui/conversation_selector/conversation_row.vala:154 -#: main/src/ui/conversation_summary/date_separator_populator.vala:102 +#: main/src/ui/conversation_summary/date_separator_populator.vala:100 #, no-c-format msgid "%b %d" msgstr "%_m 月 %_d 日" #: main/src/ui/conversation_selector/conversation_row.vala:158 -#: main/src/ui/conversation_summary/date_separator_populator.vala:93 +#: main/src/ui/conversation_summary/date_separator_populator.vala:91 msgid "Yesterday" msgstr "昨天" @@ -156,22 +186,24 @@ msgid "Add" msgstr "添加" #: main/src/ui/add_conversation/add_groupchat_dialog.vala:42 -#: main/data/manage_accounts/add_account_dialog.ui:21 +#: main/data/manage_accounts/add_account_dialog.ui:119 msgid "Save" msgstr "保存" #: main/src/ui/add_conversation/add_conference_dialog.vala:27 -#: main/src/ui/unified_window.vala:176 main/data/menu_add.ui:12 +#: main/src/ui/unified_window.vala:243 main/data/menu_add.ui:13 msgid "Join Channel" msgstr "加入频道" #: main/src/ui/add_conversation/add_conference_dialog.vala:48 +#: main/data/manage_accounts/add_account_dialog.ui:228 +#: main/data/manage_accounts/add_account_dialog.ui:308 msgid "Next" msgstr "下一个" #: main/src/ui/add_conversation/select_contact_dialog.vala:85 -#: main/src/ui/unified_window.vala:175 main/data/menu_add.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:28 +#: main/src/ui/unified_window.vala:242 main/data/menu_add.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:19 msgid "Start Conversation" msgstr "开始聊天" @@ -211,69 +243,57 @@ msgstr "选择一个不同的昵称" msgid "Too many occupants in room" msgstr "房间内人数过多" -#: main/src/ui/unified_window.vala:166 +#: main/src/ui/unified_window.vala:233 msgid "No active accounts" msgstr "没有激活的帐号" -#: main/src/ui/unified_window.vala:167 +#: main/src/ui/unified_window.vala:234 msgid "Manage accounts" msgstr "管理帐号" -#: main/src/ui/unified_window.vala:174 +#: main/src/ui/unified_window.vala:241 msgid "No active conversations" msgstr "没有激活的会话" -#: main/src/ui/conversation_summary/date_separator_populator.vala:87 +#: main/src/ui/conversation_summary/date_separator_populator.vala:85 msgid "Today" msgstr "今天" -#: main/src/ui/conversation_summary/date_separator_populator.vala:100 +#: main/src/ui/conversation_summary/date_separator_populator.vala:98 msgid "%a, %b %d" msgstr "%a,%b%d日" -#: main/src/ui/conversation_summary/chat_state_populator.vala:148 +#: main/src/ui/conversation_summary/chat_state_populator.vala:146 #, c-format msgid "%s, %s and %i others" msgstr "%s、%s 以及 %i 个其他人" -#: main/src/ui/conversation_summary/chat_state_populator.vala:150 +#: main/src/ui/conversation_summary/chat_state_populator.vala:148 #, c-format msgid "%s, %s and %s" msgstr "%s、%s 和 %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:152 +#: main/src/ui/conversation_summary/chat_state_populator.vala:150 #, c-format msgid "%s and %s" msgstr "%s 和 %s" -#: main/src/ui/conversation_summary/chat_state_populator.vala:157 +#: main/src/ui/conversation_summary/chat_state_populator.vala:155 msgid "is typing…" msgid_plural "are typing…" msgstr[0] "正在输入…" -#: main/src/ui/conversation_summary/chat_state_populator.vala:159 +#: main/src/ui/conversation_summary/chat_state_populator.vala:157 msgid "has stopped typing" msgstr "已经停止输入" -#: main/src/ui/conversation_summary/default_file_display.vala:50 -msgid "File" -msgstr "文件" - -#: main/src/ui/conversation_summary/message_textview.vala:41 +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:58 msgid "Message too long" msgstr "消息太长" -#: main/src/ui/conversation_summary/message_textview.vala:94 -msgid "Copy Link Address" -msgstr "复制链接地址" - -#: main/src/ui/conversation_summary/message_textview.vala:102 -msgid "Copy" -msgstr "复制" - -#: main/src/ui/conversation_summary/message_textview.vala:107 -msgid "Select All" -msgstr "全选" +#: main/src/ui/conversation_summary/content_item_widget_factory.vala:196 +msgid "File" +msgstr "文件" #: main/src/ui/conversation_summary/subscription_notification.vala:48 msgid "This contact would like to add you to their contact list" @@ -342,12 +362,27 @@ msgstr "启动私密会话" msgid "Kick" msgstr "踢出" +#: main/src/ui/global_search.vala:134 +#, c-format +msgid "%i search results" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "In %s" +msgstr "" + +#: main/src/ui/global_search.vala:161 +#, c-format +msgid "With %s" +msgstr "" + #: main/src/ui/contact_details/dialog.vala:37 msgid "Conference Details" msgstr "聊天室详情" -#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:6 -#: main/data/im.dino.Dino.appdata.xml.in:32 +#: main/src/ui/contact_details/dialog.vala:37 main/data/menu_conversation.ui:7 +#: main/data/im.dino.Dino.appdata.xml.in:23 msgid "Contact Details" msgstr "联系人详情" @@ -385,7 +420,7 @@ msgstr "谁可能发现真实 JID?" #: main/src/ui/contact_details/muc_config_form_provider.vala:59 #: main/data/manage_accounts/dialog.ui:170 -#: main/data/manage_accounts/add_account_dialog.ui:73 +#: main/data/manage_accounts/add_account_dialog.ui:62 #: main/data/add_conversation/conference_details_fragment.ui:175 #: main/data/add_conversation/add_groupchat_dialog.ui:147 msgid "Password" @@ -427,7 +462,7 @@ msgstr "房间配置" #: main/src/ui/contact_details/settings_provider.vala:22 #: main/src/ui/contact_details/settings_provider.vala:25 #: main/src/ui/contact_details/settings_provider.vala:30 -#: main/data/menu_app.ui:10 +#: main/data/menu_app.ui:11 msgid "Settings" msgstr "设置" @@ -492,12 +527,12 @@ msgstr "新消息到达时通知" msgid "Convert smileys to emojis" msgstr "将笑脸转换成 Emoji" -#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:6 +#: main/data/manage_accounts/dialog.ui:9 main/data/menu_app.ui:7 msgid "Accounts" msgstr "帐号" #: main/data/manage_accounts/dialog.ui:200 -#: main/data/manage_accounts/add_account_dialog.ui:102 +#: main/data/manage_accounts/add_account_dialog.ui:83 msgid "Local alias" msgstr "本地别名" @@ -509,24 +544,41 @@ msgstr "没有配置账户" msgid "Add an account" msgstr "添加新账号" +#: main/data/manage_accounts/add_account_dialog.ui:109 +#: main/data/manage_accounts/add_account_dialog.ui:146 +msgid "Create account" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:158 +msgid "Choose a public server" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:187 +msgid "Or specify a server address" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:207 +msgid "Sign in instead" +msgstr "" + +#: main/data/manage_accounts/add_account_dialog.ui:288 +msgid "Pick another server" +msgstr "" + #: main/data/menu_encryption.ui:14 msgid "Unencrypted" msgstr "未加密" -#: main/data/menu_app.ui:16 +#: main/data/menu_app.ui:17 msgid "Quit" msgstr "退出" -#: main/data/conversation_selector/view.ui:14 -msgid "Search" -msgstr "搜索" - -#: main/data/im.dino.Dino.appdata.xml.in:8 +#: main/data/im.dino.Dino.appdata.xml.in:7 #, fuzzy msgid "Modern XMPP Chat Client" msgstr "现代 XMPP 客户端" -#: main/data/im.dino.Dino.appdata.xml.in:10 +#: main/data/im.dino.Dino.appdata.xml.in:9 msgid "" "Dino is a modern open-source chat client for the desktop. It focuses on " "providing a clean and reliable Jabber/XMPP experience while having your " @@ -535,7 +587,7 @@ msgstr "" "Dino 是一个现代的开源聊天桌面客户端。它致力于提供一个清爽又可靠的 Jabber/" "XMPP 体验,同时又保护您的隐私。" -#: main/data/im.dino.Dino.appdata.xml.in:14 +#: main/data/im.dino.Dino.appdata.xml.in:10 msgid "" "It supports end-to-end encryption with OMEMO and OpenPGP and allows " "configuring privacy-related features such as read receipts and typing " @@ -544,13 +596,13 @@ msgstr "" "它支持 OMEMO 和 OpenPGP 端对端加密并允许配置隐私相关的特性比如已读回执和输入" "提醒。" -#: main/data/im.dino.Dino.appdata.xml.in:18 +#: main/data/im.dino.Dino.appdata.xml.in:11 msgid "" "Dino fetches history from the server and synchronizes messages with other " "devices." msgstr "Dino 从服务器获取消息并和其他设备同步。" -#: main/data/im.dino.Dino.appdata.xml.in:24 +#: main/data/im.dino.Dino.appdata.xml.in:15 msgid "Main window with conversations" msgstr "带有对话的主窗口" @@ -574,6 +626,34 @@ msgstr "别名" msgid "Add Contact" msgstr "增加联系人" +#: main/data/global_search.ui:37 +msgid "No active search" +msgstr "" + +#: main/data/global_search.ui:52 +msgid "Type to start a search" +msgstr "" + +#: main/data/global_search.ui:85 +msgid "No matching messages" +msgstr "" + +#: main/data/global_search.ui:100 +msgid "Check the spelling or try to remove filters" +msgstr "" + +#~ msgid "Copy Link Address" +#~ msgstr "复制链接地址" + +#~ msgid "Copy" +#~ msgstr "复制" + +#~ msgid "Select All" +#~ msgstr "全选" + +#~ msgid "Search" +#~ msgstr "搜索" + #~ msgid "Send message marker" #~ msgstr "发送消息标记" diff --git a/main/src/ui/application.vala b/main/src/ui/application.vala index 22d6d93d..86a4e288 100644 --- a/main/src/ui/application.vala +++ b/main/src/ui/application.vala @@ -32,7 +32,7 @@ public class Dino.Ui.Application : Gtk.Application, Dino.Application { window = new UnifiedWindow(this, stream_interactor); notifications = new Notifications(stream_interactor, window); notifications.start(); - notifications.conversation_selected.connect(window.on_conversation_selected); + notifications.conversation_selected.connect((conversation) => window.on_conversation_selected(conversation)); } window.present(); }); diff --git a/main/src/ui/avatar_image.vala b/main/src/ui/avatar_image.vala index 26955ae0..f690637b 100644 --- a/main/src/ui/avatar_image.vala +++ b/main/src/ui/avatar_image.vala @@ -18,6 +18,8 @@ public class AvatarImage : Misc { private bool gray; private Jid[] current_jids; private Gdk.Pixbuf[] current_avatars; + private Cairo.ImageSurface? cached_surface; + private static int8 use_image_surface = -1; public AvatarImage() { can_focus = false; @@ -78,9 +80,30 @@ public class AvatarImage : Misc { hex_color.length > 6 ? (double) hex_color.substring(6, 2).to_long(null, 16) / 255 : 1); } - public override bool draw(Cairo.Context ctx) { + public override bool draw(Cairo.Context ctx_in) { if (text_only == null && (current_jids == null || current_avatars == null || current_jids.length == 0)) return false; - double radius = 3; + + Cairo.Context ctx = ctx_in; + int width = this.width, height = this.height, base_factor = 1; + if (use_image_surface == -1) { + // TODO: detect if we have to buffer in image surface + use_image_surface = 1; + } + if (use_image_surface == 1) { + ctx_in.scale(1f/scale_factor, 1f/scale_factor); + if (cached_surface != null) { + ctx_in.set_source_surface(cached_surface, 0, 0); + ctx_in.paint(); + return true; + } + width *= scale_factor; + height *= scale_factor; + base_factor *= scale_factor; + cached_surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + ctx = new Cairo.Context(cached_surface); + } + + double radius = 3 * base_factor; double degrees = Math.PI / 180.0; ctx.new_sub_path(); ctx.arc(width - radius, radius, radius, -90 * degrees, 0 * degrees); @@ -91,23 +114,23 @@ public class AvatarImage : Misc { ctx.clip(); if (text_only != null) { - ctx.set_source_surface(sub_surface(ctx, -1, width, height), 0, 0); + ctx.set_source_surface(sub_surface(ctx, -1, width, height, base_factor), 0, 0); ctx.paint(); } else if (current_jids.length == 4 || with_plus) { Cairo.Surface buffer = new Cairo.Surface.similar(ctx.get_target(), Cairo.Content.COLOR_ALPHA, width, height); Cairo.Context bufctx = new Cairo.Context(buffer); bufctx.scale(0.5, 0.5); - bufctx.set_source_surface(sub_surface(ctx, 0, width - 1, height - 1, 2), 0, 0); + bufctx.set_source_surface(sub_surface(ctx, 0, width - 1, height - 1, 2 * base_factor), 0, 0); bufctx.paint(); - bufctx.set_source_surface(sub_surface(ctx, 1, width - 1, height - 1, 2), width + 1, 0); + bufctx.set_source_surface(sub_surface(ctx, 1, width - 1, height - 1, 2 * base_factor), width + 1, 0); bufctx.paint(); - bufctx.set_source_surface(sub_surface(ctx, 2, width - 1, height - 1, 2), 0, height + 1); + bufctx.set_source_surface(sub_surface(ctx, 2, width - 1, height - 1, 2 * base_factor), 0, height + 1); bufctx.paint(); if (with_plus) { - bufctx.set_source_surface(sub_surface(ctx, -1, width - 1, height - 1, 2), width + 1, height + 1); + bufctx.set_source_surface(sub_surface(ctx, -1, width - 1, height - 1, 2 * base_factor), width + 1, height + 1); bufctx.paint(); } else { - bufctx.set_source_surface(sub_surface(ctx, 3, width - 1, height - 1, 2), width + 1, height + 1); + bufctx.set_source_surface(sub_surface(ctx, 3, width - 1, height - 1, 2 * base_factor), width + 1, height + 1); bufctx.paint(); } @@ -117,11 +140,11 @@ public class AvatarImage : Misc { Cairo.Surface buffer = new Cairo.Surface.similar(ctx.get_target(), Cairo.Content.COLOR_ALPHA, width, height); Cairo.Context bufctx = new Cairo.Context(buffer); bufctx.scale(0.5, 0.5); - bufctx.set_source_surface(sub_surface(ctx, 0, width - 1, height - 1, 2), 0, 0); + bufctx.set_source_surface(sub_surface(ctx, 0, width - 1, height - 1, 2 * base_factor), 0, 0); bufctx.paint(); - bufctx.set_source_surface(sub_surface(ctx, 1, width - 1, height * 2, 2), width + 1, 0); + bufctx.set_source_surface(sub_surface(ctx, 1, width - 1, height * 2, 2 * base_factor), width + 1, 0); bufctx.paint(); - bufctx.set_source_surface(sub_surface(ctx, 2, width - 1 , height - 1, 2), 0, height + 1); + bufctx.set_source_surface(sub_surface(ctx, 2, width - 1 , height - 1, 2 * base_factor), 0, height + 1); bufctx.paint(); ctx.set_source_surface(buffer, 0, 0); @@ -130,15 +153,15 @@ public class AvatarImage : Misc { Cairo.Surface buffer = new Cairo.Surface.similar(ctx.get_target(), Cairo.Content.COLOR_ALPHA, width, height); Cairo.Context bufctx = new Cairo.Context(buffer); bufctx.scale(0.5, 0.5); - bufctx.set_source_surface(sub_surface(ctx, 0, width - 1, height * 2, 2), 0, 0); + bufctx.set_source_surface(sub_surface(ctx, 0, width - 1, height * 2, 2 * base_factor), 0, 0); bufctx.paint(); - bufctx.set_source_surface(sub_surface(ctx, 1, width - 1, height * 2, 2), width + 1, 0); + bufctx.set_source_surface(sub_surface(ctx, 1, width - 1, height * 2, 2 * base_factor), width + 1, 0); bufctx.paint(); ctx.set_source_surface(buffer, 0, 0); ctx.paint(); } else if (current_jids.length == 1) { - ctx.set_source_surface(sub_surface(ctx, 0, width, height), 0, 0); + ctx.set_source_surface(sub_surface(ctx, 0, width, height, base_factor), 0, 0); ctx.paint(); } else { assert_not_reached(); @@ -157,6 +180,11 @@ public class AvatarImage : Misc { ctx.fill(); } + if (use_image_surface == 1) { + ctx_in.set_source_surface(ctx.get_target(), 0, 0); + ctx_in.paint(); + } + return true; } @@ -276,6 +304,7 @@ public class AvatarImage : Misc { assert(jids.length > 0); assert(jids.length < 5); assert(!with_plus || jids.length == 3); + this.cached_surface = null; this.text_only = null; this.gray = gray && allow_gray; this.with_plus = with_plus; diff --git a/main/src/ui/chat_input/view.vala b/main/src/ui/chat_input/view.vala index a1c2b83d..dd111997 100644 --- a/main/src/ui/chat_input/view.vala +++ b/main/src/ui/chat_input/view.vala @@ -32,7 +32,7 @@ public class View : Box { [GtkChild] private Separator file_separator; private EncryptionButton encryption_widget = new EncryptionButton() { margin_top=3, valign=Align.START, visible=true }; - public View(StreamInteractor stream_interactor) { + public View init(StreamInteractor stream_interactor) { this.stream_interactor = stream_interactor; occupants_tab_completor = new OccupantsTabCompletor(stream_interactor, text_input); @@ -70,6 +70,7 @@ public class View : Box { Util.force_css(frame, "* { border-radius: 3px; }"); stream_interactor.get_module(FileManager.IDENTITY).upload_available.connect(on_upload_available); + return this; } public void initialize_for_conversation(Conversation conversation) { diff --git a/main/src/ui/contact_details/muc_config_form_provider.vala b/main/src/ui/contact_details/muc_config_form_provider.vala index 072627bf..a088bd97 100644 --- a/main/src/ui/contact_details/muc_config_form_provider.vala +++ b/main/src/ui/contact_details/muc_config_form_provider.vala @@ -74,57 +74,9 @@ public class MucConfigFormProvider : Plugins.ContactDetailsProvider, Object { } } - Widget? widget = get_widget(field); + Widget? widget = Util.get_data_form_fild_widget(field); if (widget != null) contact_details.add(_("Room Configuration"), label, desc, widget); } - - private static Widget? get_widget(DataForms.DataForm.Field field) { - if (field.type_ == null) return null; - switch (field.type_) { - case DataForms.DataForm.Type.BOOLEAN: - DataForms.DataForm.BooleanField boolean_field = field as DataForms.DataForm.BooleanField; - Switch sw = new Switch() { active=boolean_field.value, valign=Align.CENTER, visible=true }; - sw.state_set.connect((state) => { - boolean_field.value = state; - return false; - }); - return sw; - case DataForms.DataForm.Type.JID_MULTI: - return null; - case DataForms.DataForm.Type.LIST_SINGLE: - DataForms.DataForm.ListSingleField list_single_field = field as DataForms.DataForm.ListSingleField; - ComboBoxText combobox = new ComboBoxText() { valign=Align.CENTER, visible=true }; - for (int i = 0; i < list_single_field.options.size; i++) { - DataForms.DataForm.Option option = list_single_field.options[i]; - combobox.append(option.value, option.label); - if (option.value == list_single_field.value) combobox.active = i; - } - combobox.changed.connect(() => { - list_single_field.value = combobox.get_active_id(); - }); - return combobox; - case DataForms.DataForm.Type.LIST_MULTI: - return null; - case DataForms.DataForm.Type.TEXT_PRIVATE: - DataForms.DataForm.TextPrivateField text_private_field = field as DataForms.DataForm.TextPrivateField; - Entry entry = new Entry() { text=text_private_field.value ?? "", valign=Align.CENTER, visible=true, visibility=false }; - entry.key_release_event.connect(() => { - text_private_field.value = entry.text; - return false; - }); - return entry; - case DataForms.DataForm.Type.TEXT_SINGLE: - DataForms.DataForm.TextSingleField text_single_field = field as DataForms.DataForm.TextSingleField; - Entry entry = new Entry() { text=text_single_field.value ?? "", valign=Align.CENTER, visible=true }; - entry.key_release_event.connect(() => { - text_single_field.value = entry.text; - return false; - }); - return entry; - default: - return null; - } - } } } diff --git a/main/src/ui/conversation_list_titlebar.vala b/main/src/ui/conversation_list_titlebar.vala index 65515019..60d9a6fb 100644 --- a/main/src/ui/conversation_list_titlebar.vala +++ b/main/src/ui/conversation_list_titlebar.vala @@ -10,7 +10,6 @@ public class ConversationListTitlebar : Gtk.HeaderBar { public signal void conversation_opened(Conversation conversation); [GtkChild] private MenuButton add_button; - [GtkChild] public ToggleButton search_button; private StreamInteractor stream_interactor; diff --git a/main/src/ui/conversation_selector/chat_row.vala b/main/src/ui/conversation_selector/chat_row.vala deleted file mode 100644 index fb427413..00000000 --- a/main/src/ui/conversation_selector/chat_row.vala +++ /dev/null @@ -1,54 +0,0 @@ -using Gdk; -using Gee; -using Gtk; - -using Dino.Entities; -using Xmpp; - -namespace Dino.Ui.ConversationSelector { - -public class ChatRow : ConversationRow { - - public ChatRow(StreamInteractor stream_interactor, Conversation conversation) { - base(stream_interactor, conversation); - has_tooltip = true; - query_tooltip.connect ((x, y, keyboard_tooltip, tooltip) => { - tooltip.set_custom(generate_tooltip()); - return true; - }); - stream_interactor.get_module(RosterManager.IDENTITY).updated_roster_item.connect((account, jid, roster_item) => { - if (conversation.account.equals(account) && conversation.counterpart.equals(jid)) { - update_name_label(); - } - }); - } - - protected override void update_message_label() { - base.update_message_label(); - if (last_message != null && last_message.direction == Message.DIRECTION_SENT) { - nick_label.visible = true; - nick_label.label = _("Me") + ": "; - } else { - nick_label.label = ""; - } - } - - private Widget generate_tooltip() { - Builder builder = new Builder.from_resource("/im/dino/Dino/conversation_selector/chat_row_tooltip.ui"); - Box main_box = builder.get_object("main_box") as Box; - Box inner_box = builder.get_object("inner_box") as Box; - Label jid_label = builder.get_object("jid_label") as Label; - - jid_label.label = conversation.counterpart.to_string(); - - Gee.List<Jid>? full_jids = stream_interactor.get_module(PresenceManager.IDENTITY).get_full_jids(conversation.counterpart, conversation.account); - if (full_jids != null) { - for (int i = 0; i < full_jids.size; i++) { - inner_box.add(get_fulljid_box(full_jids[i])); - } - } - return main_box; - } -} - -} diff --git a/main/src/ui/conversation_selector/conversation_row.vala b/main/src/ui/conversation_selector/conversation_row.vala index d79b840b..8157fde8 100644 --- a/main/src/ui/conversation_selector/conversation_row.vala +++ b/main/src/ui/conversation_selector/conversation_row.vala @@ -3,13 +3,14 @@ using Gdk; using Gtk; using Pango; +using Dino; using Dino.Entities; using Xmpp; namespace Dino.Ui.ConversationSelector { [GtkTemplate (ui = "/im/dino/Dino/conversation_selector/conversation_row.ui")] -public abstract class ConversationRow : ListBoxRow { +public class ConversationRow : ListBoxRow { public signal void closed(); @@ -27,7 +28,7 @@ public abstract class ConversationRow : ListBoxRow { protected const int AVATAR_SIZE = 40; - protected Message? last_message; + protected ContentItem? last_content_item; protected bool read = true; @@ -41,45 +42,122 @@ public abstract class ConversationRow : ListBoxRow { this.conversation = conversation; this.stream_interactor = stream_interactor; + switch (conversation.type_) { + case Conversation.Type.CHAT: + stream_interactor.get_module(RosterManager.IDENTITY).updated_roster_item.connect((account, jid, roster_item) => { + if (conversation.account.equals(account) && conversation.counterpart.equals(jid)) { + update_name_label(); + } + }); + break; + case Conversation.Type.GROUPCHAT: + closed.connect(() => { + stream_interactor.get_module(MucManager.IDENTITY).part(conversation.account, conversation.counterpart); + }); + stream_interactor.get_module(MucManager.IDENTITY).room_name_set.connect((account, jid, room_name) => { + if (conversation != null && conversation.counterpart.equals_bare(jid) && conversation.account.equals(account)) { + update_name_label(); + } + }); + break; + case Conversation.Type.GROUPCHAT_PM: + break; + } + + // Set tooltip + switch (conversation.type_) { + case Conversation.Type.CHAT: + has_tooltip = true; + query_tooltip.connect ((x, y, keyboard_tooltip, tooltip) => { + tooltip.set_custom(generate_tooltip()); + return true; + }); + break; + case Conversation.Type.GROUPCHAT: + has_tooltip = true; + set_tooltip_text(conversation.counterpart.bare_jid.to_string()); + break; + case Conversation.Type.GROUPCHAT_PM: + break; + } + + stream_interactor.get_module(ContentItemStore.IDENTITY).new_item.connect((item, c) => { + if (conversation.equals(c)) { + content_item_received(item); + } + }); + last_content_item = stream_interactor.get_module(ContentItemStore.IDENTITY).get_latest(conversation); + x_button.clicked.connect(close_conversation); image.set_jid(stream_interactor, conversation.counterpart, conversation.account); conversation.notify["read-up-to"].connect(update_read); update_name_label(); - message_received(); - + content_item_received(); } public void update() { update_time_label(); } - public void message_received(Entities.Message? m = null) { - last_message = stream_interactor.get_module(MessageStorage.IDENTITY).get_last_message(conversation) ?? m; + public void content_item_received(ContentItem? ci = null) { + last_content_item = stream_interactor.get_module(ContentItemStore.IDENTITY).get_latest(conversation) ?? ci; update_message_label(); update_time_label(); update_read(); } - protected void update_name_label(string? new_name = null) { + protected void update_name_label() { name_label.label = Util.get_conversation_display_name(stream_interactor, conversation); } protected void update_time_label(DateTime? new_time = null) { - if (last_message != null) { + if (last_content_item != null) { time_label.visible = true; - time_label.label = get_relative_time(last_message.time.to_local()); + time_label.label = get_relative_time(last_content_item.display_time.to_local()); } } - protected virtual void update_message_label() { - if (last_message != null) { + protected void update_message_label() { + if (last_content_item != null) { + switch (last_content_item.type_) { + case MessageItem.TYPE: + MessageItem message_item = last_content_item as MessageItem; + Message last_message = message_item.message; + + if (conversation.type_ == Conversation.Type.GROUPCHAT) { + nick_label.label = Util.get_message_display_name(stream_interactor, last_message, conversation.account) + ": "; + } else { + nick_label.label = last_message.direction == Message.DIRECTION_SENT ? _("Me") + ": " : ""; + } + + message_label.label = Markup.escape_text((new Regex("\\s+")).replace_literal(last_message.body, -1, 0, " ")); + break; + case FileItem.TYPE: + FileItem file_item = last_content_item as FileItem; + FileTransfer transfer = file_item.file_transfer; + + if (conversation.type_ != Conversation.Type.GROUPCHAT) { + nick_label.label = transfer.direction == Message.DIRECTION_SENT ? _("Me") + ": " : ""; + } + + if (transfer.direction == Message.DIRECTION_SENT) { + message_label.label = "<i>" + (transfer.mime_type.has_prefix("image") ? _("Image sent") : _("File sent") ) + "</i>"; + } else { + message_label.label = "<i>" +(transfer.mime_type.has_prefix("image") ? _("Image received") : _("File received") ) + "</i>"; + } + break; + } + nick_label.visible = true; message_label.visible = true; - message_label.label = (new Regex("\\s+")).replace_literal(last_message.body, -1, 0, " "); } } protected void update_read() { + MessageItem? message_item = last_content_item as MessageItem; + if (message_item == null) return; + Message last_message = message_item.message; + bool read_was = read; read = last_message == null || (conversation.read_up_to != null && last_message.equals(conversation.read_up_to)); if (read == read_was) return; @@ -143,6 +221,23 @@ public abstract class ConversationRow : ListBoxRow { } } + private Widget generate_tooltip() { + Builder builder = new Builder.from_resource("/im/dino/Dino/conversation_selector/chat_row_tooltip.ui"); + Box main_box = builder.get_object("main_box") as Box; + Box inner_box = builder.get_object("inner_box") as Box; + Label jid_label = builder.get_object("jid_label") as Label; + + jid_label.label = conversation.counterpart.to_string(); + + Gee.List<Jid>? full_jids = stream_interactor.get_module(PresenceManager.IDENTITY).get_full_jids(conversation.counterpart, conversation.account); + if (full_jids != null) { + for (int i = 0; i < full_jids.size; i++) { + inner_box.add(get_fulljid_box(full_jids[i])); + } + } + return main_box; + } + private static string get_relative_time(DateTime datetime) { DateTime now = new DateTime.now_utc(); TimeSpan timespan = now.difference(datetime); diff --git a/main/src/ui/conversation_selector/groupchat_pm_row.vala b/main/src/ui/conversation_selector/groupchat_pm_row.vala deleted file mode 100644 index 795bdcb6..00000000 --- a/main/src/ui/conversation_selector/groupchat_pm_row.vala +++ /dev/null @@ -1,43 +0,0 @@ -using Gdk; -using Gee; -using Gtk; - -using Dino.Entities; - -namespace Dino.Ui.ConversationSelector { - -public class GroupchatPmRow : ConversationRow { - - public GroupchatPmRow(StreamInteractor stream_interactor, Conversation conversation) { - base(stream_interactor, conversation); - has_tooltip = true; - query_tooltip.connect ((x, y, keyboard_tooltip, tooltip) => { - tooltip.set_custom(generate_tooltip()); - return true; - }); - } - - protected override void update_message_label() { - base.update_message_label(); - if (last_message != null && last_message.direction == Message.DIRECTION_SENT) { - nick_label.visible = true; - nick_label.label = _("Me") + ": "; - } else { - nick_label.label = ""; - } - } - - private Widget generate_tooltip() { - Builder builder = new Builder.from_resource("/im/dino/Dino/conversation_selector/chat_row_tooltip.ui"); - Box main_box = builder.get_object("main_box") as Box; - Box inner_box = builder.get_object("inner_box") as Box; - Label jid_label = builder.get_object("jid_label") as Label; - jid_label.label = conversation.counterpart.to_string(); - if (stream_interactor.get_module(MucManager.IDENTITY).is_joined(conversation.counterpart, conversation.account)) { - inner_box.add(get_fulljid_box(conversation.counterpart)); - } - return main_box; - } -} - -} diff --git a/main/src/ui/conversation_selector/groupchat_row.vala b/main/src/ui/conversation_selector/groupchat_row.vala deleted file mode 100644 index fdbfa40b..00000000 --- a/main/src/ui/conversation_selector/groupchat_row.vala +++ /dev/null @@ -1,26 +0,0 @@ -using Dino.Entities; - -namespace Dino.Ui.ConversationSelector { - -public class GroupchatRow : ConversationRow { - - public GroupchatRow(StreamInteractor stream_interactor, Conversation conversation) { - base(stream_interactor, conversation); - has_tooltip = true; - set_tooltip_text(conversation.counterpart.bare_jid.to_string()); - - closed.connect(() => { - stream_interactor.get_module(MucManager.IDENTITY).part(conversation.account, conversation.counterpart); - }); - } - - protected override void update_message_label() { - base.update_message_label(); - if (last_message != null) { - nick_label.visible = true; - nick_label.label = Util.get_message_display_name(stream_interactor, last_message, conversation.account) + ": "; - } - } -} - -} diff --git a/main/src/ui/conversation_selector/list.vala b/main/src/ui/conversation_selector/list.vala index e250c4cd..8d71419b 100644 --- a/main/src/ui/conversation_selector/list.vala +++ b/main/src/ui/conversation_selector/list.vala @@ -67,7 +67,6 @@ public class List : ListBox { private void on_message_received(Entities.Message message, Conversation conversation) { if (rows.has_key(conversation)) { - rows[conversation].message_received(message); invalidate_sort(); } } @@ -75,19 +74,13 @@ public class List : ListBox { private void add_conversation(Conversation conversation) { ConversationRow row; if (!rows.has_key(conversation)) { - if (conversation.type_ == Conversation.Type.GROUPCHAT) { - row = new GroupchatRow(stream_interactor, conversation); - } else if (conversation.type_ == Conversation.Type.GROUPCHAT_PM){ - row = new GroupchatPmRow(stream_interactor, conversation); - } else { - row = new ChatRow(stream_interactor, conversation); - } + row = new ConversationRow(stream_interactor, conversation); rows[conversation] = row; add(row); row.closed.connect(() => { select_next_conversation(conversation); }); row.main_revealer.set_reveal_child(true); } - //invalidate_sort(); + invalidate_sort(); } private void select_next_conversation(Conversation conversation) { diff --git a/main/src/ui/conversation_selector/view.vala b/main/src/ui/conversation_selector/view.vala index b6b02848..d06ad133 100644 --- a/main/src/ui/conversation_selector/view.vala +++ b/main/src/ui/conversation_selector/view.vala @@ -10,43 +10,14 @@ namespace Dino.Ui.ConversationSelector { public class View : Box { public List conversation_list; - [GtkChild] public SearchEntry search_entry; - [GtkChild] public Revealer search_revealer; [GtkChild] private ScrolledWindow scrolled; - public View(StreamInteractor stream_interactor) { + public View init(StreamInteractor stream_interactor) { conversation_list = new List(stream_interactor) { visible=true }; scrolled.add(conversation_list); - search_entry.key_release_event.connect(search_key_release_event); - search_entry.search_changed.connect(search_changed); + return this; } - public void conversation_selected(Conversation? conversation) { - search_entry.set_text(""); - } - - private void refilter() { - string[]? values = null; - string str = search_entry.get_text (); - if (str != "") values = str.split(" "); - conversation_list.set_filter_values(values); - } - - private void search_changed(Editable editable) { - refilter(); - } - - private bool search_key_release_event(EventKey event) { - conversation_list.select_row(conversation_list.get_row_at_y(0)); - if (event.keyval == Key.Down) { - ConversationRow? row = (ConversationRow) conversation_list.get_row_at_index(0); - if (row != null) { - conversation_list.select_row(row); - row.grab_focus(); - } - } - return false; - } } } diff --git a/main/src/ui/conversation_summary/chat_state_populator.vala b/main/src/ui/conversation_summary/chat_state_populator.vala index 1ea52a6d..d07ab743 100644 --- a/main/src/ui/conversation_summary/chat_state_populator.vala +++ b/main/src/ui/conversation_summary/chat_state_populator.vala @@ -6,7 +6,7 @@ using Xmpp; namespace Dino.Ui.ConversationSummary { -class ChatStatePopulator : Plugins.ConversationItemPopulator, Object { +class ChatStatePopulator : Plugins.ConversationItemPopulator, Plugins.ConversationAdditionPopulator, Object { public string id { get { return "chat_state"; } } @@ -43,8 +43,6 @@ class ChatStatePopulator : Plugins.ConversationItemPopulator, Object { public void populate_timespan(Conversation conversation, DateTime from, DateTime to) { } - public void populate_between_widgets(Conversation conversation, DateTime from, DateTime to) { } - private void update_chat_state(Account account, Jid jid) { HashMap<Jid, string>? states = stream_interactor.get_module(CounterpartInteractionManager.IDENTITY).get_chat_states(current_conversation); diff --git a/main/src/ui/conversation_summary/content_item_widget_factory.vala b/main/src/ui/conversation_summary/content_item_widget_factory.vala new file mode 100644 index 00000000..26b66664 --- /dev/null +++ b/main/src/ui/conversation_summary/content_item_widget_factory.vala @@ -0,0 +1,227 @@ +using Gee; +using Gdk; +using Gtk; +using Xmpp; + +using Dino.Entities; + +namespace Dino.Ui.ConversationSummary { + +public class ContentItemWidgetFactory : Object { + + private StreamInteractor stream_interactor; + private HashMap<string, WidgetGenerator> generators = new HashMap<string, WidgetGenerator>(); + + public ContentItemWidgetFactory(StreamInteractor stream_interactor) { + this.stream_interactor = stream_interactor; + + generators[MessageItem.TYPE] = new MessageItemWidgetGenerator(stream_interactor); + generators[FileItem.TYPE] = new FileItemWidgetGenerator(stream_interactor); + } + + public Widget? get_widget(ContentItem item) { + WidgetGenerator? generator = generators[item.type_]; + if (generator != null) { + return (Widget?) generator.get_widget(item); + } + return null; + } + + public void register_widget_generator(WidgetGenerator generator) { + generators[generator.handles_type] = generator; + } +} + +public interface WidgetGenerator : Object { + public abstract string handles_type { get; set; } + public abstract Object get_widget(ContentItem item); +} + +public class MessageItemWidgetGenerator : WidgetGenerator, Object { + + public string handles_type { get; set; default=FileItem.TYPE; } + + private StreamInteractor stream_interactor; + + public MessageItemWidgetGenerator(StreamInteractor stream_interactor) { + this.stream_interactor = stream_interactor; + } + + public Object get_widget(ContentItem item) { + MessageItem message_item = item as MessageItem; + Conversation conversation = message_item.conversation; + Message message = message_item.message; + + Label label = new Label("") { use_markup=true, xalign=0, selectable=true, wrap=true, wrap_mode=Pango.WrapMode.WORD_CHAR, vexpand=true, visible=true }; + string markup_text = message.body; + if (markup_text.length > 10000) { + markup_text = markup_text.substring(0, 10000) + " [" + _("Message too long") + "]"; + } + if (message_item.message.body.has_prefix("/me")) { + markup_text = markup_text.substring(3); + } + + if (conversation.type_ == Conversation.Type.GROUPCHAT) { + markup_text = Util.parse_add_markup(markup_text, conversation.nickname, true, true); + } else { + markup_text = Util.parse_add_markup(markup_text, null, true, true); + } + + if (message_item.message.body.has_prefix("/me")) { + string display_name = Util.get_message_display_name(stream_interactor, message, conversation.account); + update_me_style(stream_interactor, message.real_jid ?? message.from, display_name, conversation.account, label, markup_text); + label.realize.connect(() => update_me_style(stream_interactor, message.real_jid ?? message.from, display_name, conversation.account, label, markup_text)); + label.style_updated.connect(() => update_me_style(stream_interactor, message.real_jid ?? message.from, display_name, conversation.account, label, markup_text)); + } + + label.label = markup_text; + return label; + } + + public static void update_me_style(StreamInteractor stream_interactor, Jid jid, string display_name, Account account, Label label, string action_text) { + string color = Util.get_name_hex_color(stream_interactor, account, jid, Util.is_dark_theme(label)); + label.label = @"<span color=\"#$(color)\">$(Markup.escape_text(display_name))</span>" + action_text; + } +} + +public class FileItemWidgetGenerator : WidgetGenerator, Object { + + public StreamInteractor stream_interactor; + public string handles_type { get; set; default=FileItem.TYPE; } + + private const int MAX_HEIGHT = 300; + private const int MAX_WIDTH = 600; + + public FileItemWidgetGenerator(StreamInteractor stream_interactor) { + this.stream_interactor = stream_interactor; + } + + public Object get_widget(ContentItem item) { + FileItem file_item = item as FileItem; + FileTransfer transfer = file_item.file_transfer; + if (transfer.mime_type != null && transfer.mime_type.has_prefix("image")) { + return getImageWidget(transfer); + } else { + return getDefaultWidget(transfer); + } + } + + private Widget getImageWidget(FileTransfer file_transfer) { + Image image = new Image() { halign=Align.START, visible = true }; + Gdk.Pixbuf pixbuf; + try { + pixbuf = new Gdk.Pixbuf.from_file(file_transfer.get_file().get_path()); + } catch (Error error) { + return null; + } + + int max_scaled_height = MAX_HEIGHT * image.scale_factor; + if (pixbuf.height > max_scaled_height) { + pixbuf = pixbuf.scale_simple((int) ((double) max_scaled_height / pixbuf.height * pixbuf.width), max_scaled_height, Gdk.InterpType.BILINEAR); + } + int max_scaled_width = MAX_WIDTH * image.scale_factor; + if (pixbuf.width > max_scaled_width) { + pixbuf = pixbuf.scale_simple(max_scaled_width, (int) ((double) max_scaled_width / pixbuf.width * pixbuf.height), Gdk.InterpType.BILINEAR); + } + pixbuf = crop_corners(pixbuf, 3 * image.get_scale_factor()); + Util.image_set_from_scaled_pixbuf(image, pixbuf); + Util.force_css(image, "* { box-shadow: 0px 0px 2px 0px rgba(0,0,0,0.1); margin: 2px; border-radius: 3px; }"); + + Builder builder = new Builder.from_resource("/im/dino/Dino/conversation_summary/image_toolbar.ui"); + Widget toolbar = builder.get_object("main") as Widget; + Util.force_background(toolbar, "rgba(0, 0, 0, 0.5)"); + Util.force_css(toolbar, "* { padding: 3px; border-radius: 3px; }"); + + Label url_label = builder.get_object("url_label") as Label; + Util.force_color(url_label, "#eee"); + + if (file_transfer.file_name != null && file_transfer.file_name != "") { + string caption = file_transfer.file_name; + url_label.label = caption; + } else { + url_label.visible = false; + } + + Image open_image = builder.get_object("open_image") as Image; + Util.force_css(open_image, "*:not(:hover) { color: #eee; }"); + Button open_button = builder.get_object("open_button") as Button; + Util.force_css(open_button, "*:hover { background-color: rgba(255,255,255,0.3); border-color: transparent; }"); + open_button.clicked.connect(() => { + try{ + AppInfo.launch_default_for_uri(file_transfer.get_file().get_uri(), null); + } catch (Error err) { + print("Tried to open file://" + file_transfer.get_file().get_path() + " " + err.message + "\n"); + } + }); + + Revealer toolbar_revealer = new Revealer() { transition_type=RevealerTransitionType.CROSSFADE, transition_duration=400, visible=true }; + toolbar_revealer.add(toolbar); + + Grid grid = new Grid() { visible=true }; + grid.attach(toolbar_revealer, 0, 0, 1, 1); + grid.attach(image, 0, 0, 1, 1); + + EventBox event_box = new EventBox() { halign=Align.START, visible=true }; + event_box.add(grid); + event_box.enter_notify_event.connect(() => { toolbar_revealer.reveal_child = true; return false; }); + event_box.leave_notify_event.connect(() => { toolbar_revealer.reveal_child = false; return false; }); + + return event_box; + } + + private static Gdk.Pixbuf crop_corners(Gdk.Pixbuf pixbuf, double radius = 3) { + Cairo.Context ctx = new Cairo.Context(new Cairo.ImageSurface(Cairo.Format.ARGB32, pixbuf.width, pixbuf.height)); + Gdk.cairo_set_source_pixbuf(ctx, pixbuf, 0, 0); + double degrees = Math.PI / 180.0; + ctx.new_sub_path(); + ctx.arc(pixbuf.width - radius, radius, radius, -90 * degrees, 0 * degrees); + ctx.arc(pixbuf.width - radius, pixbuf.height - radius, radius, 0 * degrees, 90 * degrees); + ctx.arc(radius, pixbuf.height - radius, radius, 90 * degrees, 180 * degrees); + ctx.arc(radius, radius, radius, 180 * degrees, 270 * degrees); + ctx.close_path(); + ctx.clip(); + ctx.paint(); + return Gdk.pixbuf_get_from_surface(ctx.get_target(), 0, 0, pixbuf.width, pixbuf.height); + } + + private Widget getDefaultWidget(FileTransfer file_transfer) { + Box main_box = new Box(Orientation.HORIZONTAL, 4) { halign=Align.START, visible=true }; + string? icon_name = ContentType.get_generic_icon_name(file_transfer.mime_type); + Image content_type_image = new Image.from_icon_name(icon_name, IconSize.DND) { visible=true }; + main_box.add(content_type_image); + + Box right_box = new Box(Orientation.VERTICAL, 0) { visible=true }; + Label name_label = new Label(file_transfer.file_name) { xalign=0, yalign=0, visible=true}; + right_box.add(name_label); + Label mime_label = new Label("<span size='small'>" + _("File") + ": " + file_transfer.mime_type + "</span>") { use_markup=true, xalign=0, yalign=1, visible=true}; + mime_label.get_style_context().add_class("dim-label"); + right_box.add(mime_label); + main_box.add(right_box); + + EventBox event_box = new EventBox() { halign=Align.START, visible=true }; + event_box.add(main_box); + + event_box.enter_notify_event.connect((event) => { + event.get_window().set_cursor(new Cursor.for_display(Gdk.Display.get_default(), CursorType.HAND2)); + return false; + }); + event_box.leave_notify_event.connect((event) => { + event.get_window().set_cursor(new Cursor.for_display(Gdk.Display.get_default(), CursorType.XTERM)); + return false; + }); + event_box.button_release_event.connect((event_button) => { + if (event_button.button == 1) { + try{ + AppInfo.launch_default_for_uri(file_transfer.get_file().get_uri(), null); + } catch (Error err) { + print("Tried to open " + file_transfer.get_file().get_path()); + } + } + return false; + }); + + return event_box; + } +} + +} diff --git a/main/src/ui/conversation_summary/content_populator.vala b/main/src/ui/conversation_summary/content_populator.vala new file mode 100644 index 00000000..754446d3 --- /dev/null +++ b/main/src/ui/conversation_summary/content_populator.vala @@ -0,0 +1,110 @@ +using Gee; +using Gtk; + +using Xmpp; +using Dino.Entities; + +namespace Dino.Ui.ConversationSummary { + +public class ContentProvider : ContentItemCollection, Object { + + private StreamInteractor stream_interactor; + private ContentItemWidgetFactory widget_factory; + private Conversation? current_conversation; + private Plugins.ConversationItemCollection? item_collection; + + public ContentProvider(StreamInteractor stream_interactor) { + this.stream_interactor = stream_interactor; + this.widget_factory = new ContentItemWidgetFactory(stream_interactor); + } + + public void init(Plugins.ConversationItemCollection item_collection, Conversation conversation, Plugins.WidgetType type) { + if (current_conversation != null) { + stream_interactor.get_module(ContentItemStore.IDENTITY).uninit(current_conversation, this); + } + current_conversation = conversation; + this.item_collection = item_collection; + stream_interactor.get_module(ContentItemStore.IDENTITY).init(conversation, this); + } + + public void insert_item(ContentItem item) { + item_collection.insert_item(new ContentMetaItem(item, widget_factory)); + } + + public void remove_item(ContentItem item) { } + + + public Gee.List<ContentMetaItem> populate_latest(Conversation conversation, int n) { + Gee.List<ContentItem> items = stream_interactor.get_module(ContentItemStore.IDENTITY).get_n_latest(conversation, n); + Gee.List<ContentMetaItem> ret = new ArrayList<ContentMetaItem>(); + foreach (ContentItem item in items) { + ret.add(new ContentMetaItem(item, widget_factory)); + } + return ret; + } + + public Gee.List<ContentMetaItem> populate_before(Conversation conversation, ContentItem before_item, int n) { + Gee.List<ContentMetaItem> ret = new ArrayList<ContentMetaItem>(); + Gee.List<ContentItem> items = stream_interactor.get_module(ContentItemStore.IDENTITY).get_before(conversation, before_item, n); + foreach (ContentItem item in items) { + ret.add(new ContentMetaItem(item, widget_factory)); + } + return ret; + } + + public Gee.List<ContentMetaItem> populate_after(Conversation conversation, ContentItem after_item, int n) { + Gee.List<ContentMetaItem> ret = new ArrayList<ContentMetaItem>(); + Gee.List<ContentItem> items = stream_interactor.get_module(ContentItemStore.IDENTITY).get_after(conversation, after_item, n); + foreach (ContentItem item in items) { + ret.add(new ContentMetaItem(item, widget_factory)); + } + return ret; + } + + public ContentMetaItem get_content_meta_item(ContentItem content_item) { + return new ContentMetaItem(content_item, widget_factory); + } +} + +public class ContentMetaItem : Plugins.MetaConversationItem { + public override Jid? jid { get; set; } + public override DateTime? sort_time { get; set; } + public override DateTime? display_time { get; set; } + public override Encryption? encryption { get; set; } + + public ContentItem content_item; + private ContentItemWidgetFactory widget_factory; + + public ContentMetaItem(ContentItem content_item, ContentItemWidgetFactory widget_factory) { + this.jid = content_item.jid; + this.sort_time = content_item.sort_time; + this.seccondary_sort_indicator = content_item.id; + this.display_time = content_item.display_time; + this.encryption = content_item.encryption; + this.mark = content_item.mark; + + WeakRef weak_item = WeakRef(content_item); + content_item.notify["mark"].connect(() => { + ContentItem? ci = weak_item.get() as ContentItem; + if (ci == null) return; + this.mark = ci.mark; + }); + + this.can_merge = true; + this.requires_avatar = true; + this.requires_header = true; + + this.content_item = content_item; + this.widget_factory = widget_factory; + } + + public override bool can_merge { get; set; default=true; } + public override bool requires_avatar { get; set; default=true; } + public override bool requires_header { get; set; default=true; } + + public override Object? get_widget(Plugins.WidgetType type) { + return widget_factory.get_widget(content_item); + } +} + +} diff --git a/main/src/ui/conversation_summary/conversation_item_skeleton.vala b/main/src/ui/conversation_summary/conversation_item_skeleton.vala index a8da93ef..a4e45f7a 100644 --- a/main/src/ui/conversation_summary/conversation_item_skeleton.vala +++ b/main/src/ui/conversation_summary/conversation_item_skeleton.vala @@ -176,7 +176,7 @@ public class DefaultSkeletonHeader : Box { return datetime.format(format); } - public virtual string get_relative_time(DateTime datetime) { + public static string get_relative_time(DateTime datetime) { DateTime now = new DateTime.now_local(); TimeSpan timespan = now.difference(datetime); if (timespan > 365 * TimeSpan.DAY) { diff --git a/main/src/ui/conversation_summary/conversation_view.vala b/main/src/ui/conversation_summary/conversation_view.vala index b4a34f3b..83da81aa 100644 --- a/main/src/ui/conversation_summary/conversation_view.vala +++ b/main/src/ui/conversation_summary/conversation_view.vala @@ -11,19 +11,19 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins public Conversation? conversation { get; private set; } - [GtkChild] private ScrolledWindow scrolled; + [GtkChild] public ScrolledWindow scrolled; [GtkChild] private Revealer notification_revealer; [GtkChild] private Box notifications; [GtkChild] private Box main; [GtkChild] private Stack stack; private StreamInteractor stream_interactor; - private Gee.TreeSet<Plugins.MetaConversationItem> meta_items = new TreeSet<Plugins.MetaConversationItem>(sort_meta_items); - private Gee.Map<Plugins.MetaConversationItem, Gee.List<Plugins.MetaConversationItem>> meta_after_items = new Gee.HashMap<Plugins.MetaConversationItem, Gee.List<Plugins.MetaConversationItem>>(); + private Gee.TreeSet<Plugins.MetaConversationItem> content_items = new Gee.TreeSet<Plugins.MetaConversationItem>(compare_meta_items); + private Gee.TreeSet<Plugins.MetaConversationItem> meta_items = new TreeSet<Plugins.MetaConversationItem>(compare_meta_items); private Gee.HashMap<Plugins.MetaConversationItem, ConversationItemSkeleton> item_item_skeletons = new Gee.HashMap<Plugins.MetaConversationItem, ConversationItemSkeleton>(); private Gee.HashMap<Plugins.MetaConversationItem, Widget> widgets = new Gee.HashMap<Plugins.MetaConversationItem, Widget>(); private Gee.List<ConversationItemSkeleton> item_skeletons = new Gee.ArrayList<ConversationItemSkeleton>(); - private MessagePopulator message_item_populator; + private ContentProvider content_populator; private SubscriptionNotitication subscription_notification; private double? was_value; @@ -33,24 +33,25 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins private Mutex reloading_mutex = Mutex(); private bool animate = false; private bool firstLoad = true; + private bool at_current_content = true; + private bool reload_messages = true; - public ConversationView(StreamInteractor stream_interactor) { + public ConversationView init(StreamInteractor stream_interactor) { this.stream_interactor = stream_interactor; scrolled.vadjustment.notify["upper"].connect_after(on_upper_notify); scrolled.vadjustment.notify["value"].connect(on_value_notify); - message_item_populator = new MessagePopulator(stream_interactor); + content_populator = new ContentProvider(stream_interactor); subscription_notification = new SubscriptionNotitication(stream_interactor); - insert_item.connect(on_insert_item); - remove_item.connect(on_remove_item); + insert_item.connect(filter_insert_item); + remove_item.connect(do_remove_item); add_meta_notification.connect(on_add_meta_notification); remove_meta_notification.connect(on_remove_meta_notification); Application app = GLib.Application.get_default() as Application; - app.plugin_registry.register_conversation_item_populator(new ChatStatePopulator(stream_interactor)); - app.plugin_registry.register_conversation_item_populator(new FilePopulator(stream_interactor)); - app.plugin_registry.register_conversation_item_populator(new DateSeparatorPopulator(stream_interactor)); + app.plugin_registry.register_conversation_addition_populator(new ChatStatePopulator(stream_interactor)); + app.plugin_registry.register_conversation_addition_populator(new DateSeparatorPopulator(stream_interactor)); Timeout.add_seconds(60, () => { foreach (ConversationItemSkeleton item_skeleton in item_skeletons) { @@ -59,68 +60,144 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins return true; }); - Util.force_base_background(this); + return this; } - // Workaround GTK TextView issues: Delay first load of contents public void initialize_for_conversation(Conversation? conversation) { + // Workaround for rendering issues if (firstLoad) { - int timeout = firstLoad ? 1000 : 0; - Timeout.add(timeout, () => { - initialize_for_conversation_(conversation); + main.visible = false; + Idle.add(() => { + main.visible=true; return false; }); firstLoad = false; - } else { - initialize_for_conversation_(conversation); } + stack.set_visible_child_name("void"); + initialize_for_conversation_(conversation); + display_latest(); + stack.set_visible_child_name("main"); + } + public void initialize_around_message(Conversation conversation, ContentItem content_item) { + stack.set_visible_child_name("void"); + clear(); + initialize_for_conversation_(conversation); + Gee.List<ContentMetaItem> before_items = content_populator.populate_before(conversation, content_item, 40); + foreach (ContentMetaItem item in before_items) { + do_insert_item(item); + } + ContentMetaItem meta_item = content_populator.get_content_meta_item(content_item); + meta_item.can_merge = false; + Widget w = insert_new(meta_item); + content_items.add(meta_item); + meta_items.add(meta_item); + + Gee.List<ContentMetaItem> after_items = content_populator.populate_after(conversation, content_item, 40); + foreach (ContentMetaItem item in after_items) { + do_insert_item(item); + } + if (after_items.size == 40) { + at_current_content = false; + } + { + int h = 0, i = 0; + main.@foreach((widget) => { + if (i >= before_items.size) return; + ConversationItemSkeleton? sk = widget as ConversationItemSkeleton; + i += sk != null ? sk.items.size : 1; + int minimum_height, natural_height; + widget.get_preferred_height_for_width(main.get_allocated_width() - 2 * main.margin, out minimum_height, out natural_height); + h += minimum_height + 15; + }); + } + + reload_messages = false; + Timeout.add(700, () => { + int h = 0, i = 0; + main.@foreach((widget) => { + if (i >= before_items.size) return; + ConversationItemSkeleton? sk = widget as ConversationItemSkeleton; + i += sk != null ? sk.items.size : 1; + h += widget.get_allocated_height() + 15; + }); + scrolled.vadjustment.value = h - scrolled.vadjustment.page_size * 1/3; + w.get_style_context().add_class("highlight-once"); + reload_messages = true; + stack.set_visible_child_name("main"); + return false; + }); } private void initialize_for_conversation_(Conversation? conversation) { + // Deinitialize old conversation Dino.Application app = Dino.Application.get_default(); if (this.conversation != null) { - foreach (Plugins.ConversationItemPopulator populator in app.plugin_registry.conversation_item_populators) { + foreach (Plugins.ConversationItemPopulator populator in app.plugin_registry.conversation_addition_populators) { populator.close(conversation); } foreach (Plugins.NotificationPopulator populator in app.plugin_registry.notification_populators) { populator.close(conversation); } } + + // Clear data structures + clear_notifications(); this.conversation = conversation; - stack.set_visible_child_name("void"); - clear(); - was_upper = null; - was_page_size = null; + + + // Init for new conversation + foreach (Plugins.ConversationItemPopulator populator in app.plugin_registry.conversation_addition_populators) { + populator.init(conversation, this, Plugins.WidgetType.GTK); + } + content_populator.init(this, conversation, Plugins.WidgetType.GTK); + subscription_notification.init(conversation, this); + animate = false; Timeout.add(20, () => { animate = true; return false; }); + } - foreach (Plugins.ConversationItemPopulator populator in app.plugin_registry.conversation_item_populators) { - populator.init(conversation, this, Plugins.WidgetType.GTK); + private void display_latest() { + clear(); + + Gee.List<ContentMetaItem> items = content_populator.populate_latest(conversation, 40); + foreach (ContentMetaItem item in items) { + do_insert_item(item); } + Application app = GLib.Application.get_default() as Application; foreach (Plugins.NotificationPopulator populator in app.plugin_registry.notification_populators) { populator.init(conversation, this, Plugins.WidgetType.GTK); } - message_item_populator.init(conversation, this); - message_item_populator.populate_latest(conversation, 40); Idle.add(() => { on_value_notify(); return false; }); + } - subscription_notification.init(conversation, this); - - stack.set_visible_child_name("main"); + public void filter_insert_item(Plugins.MetaConversationItem item) { + if (meta_items.size > 0) { + bool after_last = meta_items.last().sort_time.compare(item.sort_time) < 0; + bool within_range = meta_items.last().sort_time.compare(item.sort_time) > 0 && meta_items.first().sort_time.compare(item.sort_time) < 0; + bool accept = within_range || (at_current_content && after_last); + if (!accept) { + return; + } + } + do_insert_item(item); } - public void on_insert_item(Plugins.MetaConversationItem item) { + public void do_insert_item(Plugins.MetaConversationItem item) { lock (meta_items) { if (!item.can_merge || !merge_back(item)) { insert_new(item); } } + if (item as ContentMetaItem != null) { + content_items.add(item); + } + meta_items.add(item); } - public void on_remove_item(Plugins.MetaConversationItem item) { - lock (meta_items) { - ConversationItemSkeleton? skeleton = item_item_skeletons[item]; + private void do_remove_item(Plugins.MetaConversationItem item) { + ConversationItemSkeleton? skeleton = item_item_skeletons[item]; + if (skeleton != null) { if (skeleton.items.size > 1) { skeleton.remove_meta_item(item); } else { @@ -130,6 +207,7 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins item_skeletons.remove(skeleton); item_item_skeletons.unset(item); } + content_items.remove(item); meta_items.remove(item); } } @@ -173,10 +251,9 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins lower_start_item.encryption == item.encryption && (item.mark == Message.Marked.WONTSEND) == (lower_start_item.mark == Message.Marked.WONTSEND)) { lower_skeleton.add_meta_item(item); - force_alloc_width(lower_skeleton, main.get_allocated_width()); + widgets[item] = widgets[lower_start_item]; item_item_skeletons[item] = lower_skeleton; - meta_items.add(item); return true; } @@ -184,7 +261,7 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins return false; } - private void insert_new(Plugins.MetaConversationItem item) { + private Widget insert_new(Plugins.MetaConversationItem item) { Plugins.MetaConversationItem? lower_item = meta_items.lower(item); // Does another skeleton need to be split? @@ -203,7 +280,6 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins item_item_skeletons[item] = item_skeleton; int index = lower_item != null ? item_skeletons.index_of(item_item_skeletons[lower_item]) + 1 : 0; item_skeletons.insert(index, item_skeleton); - meta_items.add(item); // Insert widget Widget insert = item_skeleton; @@ -217,22 +293,22 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins main.add(insert); } widgets[item] = insert; - force_alloc_width(insert, main.get_allocated_width()); main.reorder_child(insert, index); // If an item from the past was added, add everything between that item and the (post-)first present item if (index == 0) { Dino.Application app = Dino.Application.get_default(); if (item_skeletons.size == 1) { - foreach (Plugins.ConversationItemPopulator populator in app.plugin_registry.conversation_item_populators) { + foreach (Plugins.ConversationAdditionPopulator populator in app.plugin_registry.conversation_addition_populators) { populator.populate_timespan(conversation, item.sort_time, new DateTime.now_utc()); } } else { - foreach (Plugins.ConversationItemPopulator populator in app.plugin_registry.conversation_item_populators) { + foreach (Plugins.ConversationAdditionPopulator populator in app.plugin_registry.conversation_addition_populators) { populator.populate_timespan(conversation, item.sort_time, meta_items.higher(item).sort_time); } } } + return insert; } private void split_at_time(ConversationItemSkeleton split_skeleton, DateTime time) { @@ -241,12 +317,12 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins while(i < split_skeleton.items.size) { Plugins.MetaConversationItem meta_item = split_skeleton.items[i]; if (time.compare(meta_item.display_time) < 0) { - remove_item(meta_item); + do_remove_item(meta_item); if (!already_divided) { insert_new(meta_item); already_divided = true; } else { - insert_item(meta_item); + do_insert_item(meta_item); } } i++; @@ -254,55 +330,80 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins } private void on_upper_notify() { - if (was_upper == null || scrolled.vadjustment.value > was_upper - was_page_size - 1 || - scrolled.vadjustment.value > was_upper - was_page_size - 1) { // scrolled down or content smaller than page size - scrolled.vadjustment.value = scrolled.vadjustment.upper - scrolled.vadjustment.page_size; // scroll down + if (was_upper == null || scrolled.vadjustment.value > was_upper - was_page_size - 1) { // scrolled down or content smaller than page size + if (at_current_content) { + scrolled.vadjustment.value = scrolled.vadjustment.upper - scrolled.vadjustment.page_size; // scroll down + } } else if (scrolled.vadjustment.value < scrolled.vadjustment.upper - scrolled.vadjustment.page_size - 1) { scrolled.vadjustment.value = scrolled.vadjustment.upper - was_upper + scrolled.vadjustment.value; // stay at same content } was_upper = scrolled.vadjustment.upper; was_page_size = scrolled.vadjustment.page_size; + was_value = scrolled.vadjustment.value; reloading_mutex.trylock(); reloading_mutex.unlock(); } private void on_value_notify() { - if (scrolled.vadjustment.value < 200) { + if (scrolled.vadjustment.value < 400) { load_earlier_messages(); + } else if (scrolled.vadjustment.upper - (scrolled.vadjustment.value + scrolled.vadjustment.page_size) < 400) { + load_later_messages(); } } private void load_earlier_messages() { was_value = scrolled.vadjustment.value; if (!reloading_mutex.trylock()) return; - if (meta_items.size > 0) message_item_populator.populate_before(conversation, meta_items.first(), 20); + if (meta_items.size > 0) { + Gee.List<ContentMetaItem> items = content_populator.populate_before(conversation, (content_items.first() as ContentMetaItem).content_item, 20); + foreach (ContentMetaItem item in items) { + do_insert_item(item); + } + } else { + reloading_mutex.unlock(); + } + } + + private void load_later_messages() { + if (!reloading_mutex.trylock()) return; + if (meta_items.size > 0 && !at_current_content) { + Gee.List<ContentMetaItem> items = content_populator.populate_after(conversation, (content_items.last() as ContentMetaItem).content_item, 20); + if (items.size == 0) { + at_current_content = true; + } + foreach (ContentMetaItem item in items) { + do_insert_item(item); + } + } else { + reloading_mutex.unlock(); + } } - private static int sort_meta_items(Plugins.MetaConversationItem a, Plugins.MetaConversationItem b) { + private static int compare_meta_items(Plugins.MetaConversationItem a, Plugins.MetaConversationItem b) { int res = a.sort_time.compare(b.sort_time); if (res == 0) { - if (a.seccondary_sort_indicator < b.seccondary_sort_indicator) res = -1; - else if (a.seccondary_sort_indicator > b.seccondary_sort_indicator) res = 1; + if (a.seccondary_sort_indicator < b.seccondary_sort_indicator) { + res = -1; + } else if (a.seccondary_sort_indicator > b.seccondary_sort_indicator) { + res = 1; + } } return res; } - // Workaround GTK TextView issues - private void force_alloc_width(Widget widget, int width) { - Allocation alloc = Allocation(); - widget.get_preferred_width(out alloc.width, null); - widget.get_preferred_height(out alloc.height, null); - alloc.width = width; - widget.size_allocate(alloc); - } - private void clear() { + was_upper = null; + was_page_size = null; + content_items.clear(); meta_items.clear(); - meta_after_items.clear(); item_skeletons.clear(); item_item_skeletons.clear(); widgets.clear(); main.@foreach((widget) => { widget.destroy(); }); + } + + private void clear_notifications() { notifications.@foreach((widget) => { widget.destroy(); }); notification_revealer.transition_duration = 0; notification_revealer.set_reveal_child(false); diff --git a/main/src/ui/conversation_summary/date_separator_populator.vala b/main/src/ui/conversation_summary/date_separator_populator.vala index 34005ab6..6a1ba782 100644 --- a/main/src/ui/conversation_summary/date_separator_populator.vala +++ b/main/src/ui/conversation_summary/date_separator_populator.vala @@ -6,7 +6,7 @@ using Xmpp; namespace Dino.Ui.ConversationSummary { -class DateSeparatorPopulator : Plugins.ConversationItemPopulator, Object { +class DateSeparatorPopulator : Plugins.ConversationItemPopulator, Plugins.ConversationAdditionPopulator, Object { public string id { get { return "date_separator"; } } @@ -35,8 +35,6 @@ class DateSeparatorPopulator : Plugins.ConversationItemPopulator, Object { public void populate_timespan(Conversation conversation, DateTime after, DateTime before) { } - public void populate_between_widgets(Conversation conversation, DateTime from, DateTime to) { } - private void on_insert_item(Plugins.MetaConversationItem item) { if (item.display_time == null) return; diff --git a/main/src/ui/conversation_summary/default_file_display.vala b/main/src/ui/conversation_summary/default_file_display.vala deleted file mode 100644 index 1547440b..00000000 --- a/main/src/ui/conversation_summary/default_file_display.vala +++ /dev/null @@ -1,95 +0,0 @@ -using Gdk; -using Gtk; - -using Dino.Entities; -using Xmpp; - -namespace Dino.Ui.ConversationSummary { - -public class DefaultFileDisplay : Plugins.MetaConversationItem { - public override Jid? jid { get; set; } - public override DateTime? sort_time { get; set; } - public override DateTime? display_time { get; set; } - public override Encryption? encryption { get; set; } - public override Entities.Message.Marked? mark { get; set; } - - public override bool can_merge { get; set; default=true; } - public override bool requires_avatar { get; set; default=true; } - public override bool requires_header { get; set; default=true; } - - private const int MAX_HEIGHT = 300; - private const int MAX_WIDTH = 600; - - private StreamInteractor stream_interactor; - private FileTransfer file_transfer; - - public DefaultFileDisplay(StreamInteractor stream_interactor, FileTransfer file_transfer) { - this.stream_interactor = stream_interactor; - this.file_transfer = file_transfer; - - this.jid = file_transfer.direction == FileTransfer.DIRECTION_SENT ? file_transfer.account.bare_jid.with_resource(file_transfer.account.resourcepart) : file_transfer.counterpart; - this.sort_time = file_transfer.time; - this.seccondary_sort_indicator = file_transfer.id + 0.2903; - this.display_time = file_transfer.time; - this.encryption = file_transfer.encryption; - this.mark = file_to_message_state(file_transfer.state); - file_transfer.notify["state"].connect_after(() => { - this.mark = file_to_message_state(file_transfer.state); - }); - } - - public override Object? get_widget(Plugins.WidgetType widget_type) { - Box main_box = new Box(Orientation.HORIZONTAL, 4) { halign=Align.START, visible=true }; - string? icon_name = ContentType.get_generic_icon_name(file_transfer.mime_type); - Image content_type_image = new Image.from_icon_name(icon_name, IconSize.DND) { visible=true }; - main_box.add(content_type_image); - - Box right_box = new Box(Orientation.VERTICAL, 0) { visible=true }; - Label name_label = new Label(file_transfer.file_name) { xalign=0, yalign=0, visible=true}; - right_box.add(name_label); - Label mime_label = new Label("<span size='small'>" + _("File") + ": " + file_transfer.mime_type + "</span>") { use_markup=true, xalign=0, yalign=1, visible=true}; - mime_label.get_style_context().add_class("dim-label"); - right_box.add(mime_label); - main_box.add(right_box); - - EventBox event_box = new EventBox() { halign=Align.START, visible=true }; - event_box.add(main_box); - - event_box.enter_notify_event.connect((event) => { - event.get_window().set_cursor(new Cursor.for_display(Gdk.Display.get_default(), CursorType.HAND2)); - return false; - }); - event_box.leave_notify_event.connect((event) => { - event.get_window().set_cursor(new Cursor.for_display(Gdk.Display.get_default(), CursorType.XTERM)); - return false; - }); - event_box.button_release_event.connect((event_button) => { - if (event_button.button == 1) { - try{ - AppInfo.launch_default_for_uri(file_transfer.get_file().get_uri(), null); - } catch (Error err) { - print("Tried to open " + file_transfer.get_file().get_path()); - } - } - return false; - }); - - return event_box; - } - - private Entities.Message.Marked file_to_message_state(FileTransfer.State state) { - switch (state) { - case FileTransfer.State.IN_PROCESS: - return Entities.Message.Marked.UNSENT; - case FileTransfer.State.COMPLETE: - return Entities.Message.Marked.NONE; - case FileTransfer.State.NOT_STARTED: - return Entities.Message.Marked.UNSENT; - case FileTransfer.State.FAILED: - return Entities.Message.Marked.WONTSEND; - } - assert_not_reached(); - } -} - -} diff --git a/main/src/ui/conversation_summary/default_message_display.vala b/main/src/ui/conversation_summary/default_message_display.vala deleted file mode 100644 index 519e5107..00000000 --- a/main/src/ui/conversation_summary/default_message_display.vala +++ /dev/null @@ -1,58 +0,0 @@ -using Dino.Entities; -using Xmpp; - -namespace Dino.Ui.ConversationSummary { - -public class DefaultMessageDisplay : Plugins.MessageDisplayProvider, Object { - public string id { get; set; default="default"; } - public double priority { get; set; default=0; } - - public StreamInteractor stream_interactor; - - public DefaultMessageDisplay(StreamInteractor stream_interactor) { - this.stream_interactor = stream_interactor; - } - - public bool can_display(Entities.Message? message) { return true; } - - public Plugins.MetaConversationItem? get_item(Entities.Message message, Conversation conversation) { - return new MetaMessageItem(stream_interactor, message, conversation); - } -} - -public class MetaMessageItem : Plugins.MetaConversationItem { - public override Jid? jid { get; set; } - public override DateTime? sort_time { get; set; } - public override DateTime? display_time { get; set; } - public override Encryption? encryption { get; set; } - - private StreamInteractor stream_interactor; - private Conversation conversation; - private Message message; - - public MetaMessageItem(StreamInteractor stream_interactor, Message message, Conversation conversation) { - this.stream_interactor = stream_interactor; - this.conversation = conversation; - this.message = message; - this.jid = message.from; - this.sort_time = message.local_time; - this.seccondary_sort_indicator = message.id + 0.2085; - this.display_time = message.time; - this.encryption = message.encryption; - } - - public override bool can_merge { get; set; default=true; } - public override bool requires_avatar { get; set; default=true; } - public override bool requires_header { get; set; default=true; } - - public override Object? get_widget(Plugins.WidgetType widget_type) { - MessageTextView text_view = new MessageTextView() { visible = true }; - text_view.add_text(message.body); - if (conversation.type_ == Conversation.Type.GROUPCHAT) { - text_view.highlight_word(conversation.nickname); - } - return text_view; - } -} - -} diff --git a/main/src/ui/conversation_summary/file_populator.vala b/main/src/ui/conversation_summary/file_populator.vala deleted file mode 100644 index af7bc992..00000000 --- a/main/src/ui/conversation_summary/file_populator.vala +++ /dev/null @@ -1,54 +0,0 @@ -using Gee; -using Gtk; - -using Dino.Entities; -using Xmpp; - -namespace Dino.Ui.ConversationSummary { - -class FilePopulator : Plugins.ConversationItemPopulator, Object { - - public string id { get { return "file"; } } - - private StreamInteractor? stream_interactor; - private Conversation? current_conversation; - private Plugins.ConversationItemCollection? item_collection; - - public FilePopulator(StreamInteractor stream_interactor) { - this.stream_interactor = stream_interactor; - - stream_interactor.get_module(FileManager.IDENTITY).received_file.connect((file_transfer) => { - if (current_conversation != null && current_conversation.account.equals(file_transfer.account) && current_conversation.counterpart.equals_bare(file_transfer.counterpart)) { - insert_file(file_transfer); - } - }); - } - - public void init(Conversation conversation, Plugins.ConversationItemCollection item_collection, Plugins.WidgetType type) { - current_conversation = conversation; - this.item_collection = item_collection; - } - - public void close(Conversation conversation) { } - - public void populate_timespan(Conversation conversation, DateTime from, DateTime to) { - Gee.List<FileTransfer> transfers = stream_interactor.get_module(FileManager.IDENTITY).get_file_transfers(conversation.account, conversation.counterpart, from, to); - foreach (FileTransfer transfer in transfers) { - insert_file(transfer); - } - } - - public void populate_between_widgets(Conversation conversation, DateTime from, DateTime to) { } - - private void insert_file(FileTransfer transfer) { - Plugins.MetaConversationItem item = null; - if (transfer.mime_type != null && transfer.mime_type.has_prefix("image")) { - item = new ImageDisplay(stream_interactor, transfer); - } else { - item = new DefaultFileDisplay(stream_interactor, transfer); - } - item_collection.insert_item(item); - } -} - -} diff --git a/main/src/ui/conversation_summary/image_display.vala b/main/src/ui/conversation_summary/image_display.vala deleted file mode 100644 index 15880836..00000000 --- a/main/src/ui/conversation_summary/image_display.vala +++ /dev/null @@ -1,137 +0,0 @@ -using Gtk; - -using Dino.Entities; -using Xmpp; - -namespace Dino.Ui.ConversationSummary { - -public class ImageDisplay : Plugins.MetaConversationItem { - public override Jid? jid { get; set; } - public override DateTime? sort_time { get; set; } - public override DateTime? display_time { get; set; } - public override Encryption? encryption { get; set; } - public override Entities.Message.Marked? mark { get; set; } - - public override bool can_merge { get; set; default=true; } - public override bool requires_avatar { get; set; default=true; } - public override bool requires_header { get; set; default=true; } - - private const int MAX_HEIGHT = 300; - private const int MAX_WIDTH = 600; - - private StreamInteractor stream_interactor; - private FileTransfer file_transfer; - - public ImageDisplay(StreamInteractor stream_interactor, FileTransfer file_transfer) { - this.stream_interactor = stream_interactor; - this.file_transfer = file_transfer; - - this.jid = file_transfer.direction == FileTransfer.DIRECTION_SENT ? file_transfer.account.bare_jid.with_resource(file_transfer.account.resourcepart) : file_transfer.counterpart; - this.sort_time = file_transfer.time; - this.seccondary_sort_indicator = file_transfer.id + 0.2903; - this.display_time = file_transfer.time; - this.encryption = file_transfer.encryption; - this.mark = file_to_message_state(file_transfer.state); - file_transfer.notify["state"].connect_after(() => { - this.mark = file_to_message_state(file_transfer.state); - }); - } - - public override Object? get_widget(Plugins.WidgetType widget_type) { - Image image = new Image() { halign=Align.START, visible = true }; - Gdk.Pixbuf pixbuf; - try { - pixbuf = new Gdk.Pixbuf.from_file(file_transfer.get_file().get_path()); - } catch (Error error) { - return null; - } - - int max_scaled_height = MAX_HEIGHT * image.scale_factor; - if (pixbuf.height > max_scaled_height) { - pixbuf = pixbuf.scale_simple((int) ((double) max_scaled_height / pixbuf.height * pixbuf.width), max_scaled_height, Gdk.InterpType.BILINEAR); - } - int max_scaled_width = MAX_WIDTH * image.scale_factor; - if (pixbuf.width > max_scaled_width) { - pixbuf = pixbuf.scale_simple(max_scaled_width, (int) ((double) max_scaled_width / pixbuf.width * pixbuf.height), Gdk.InterpType.BILINEAR); - } - pixbuf = crop_corners(pixbuf, 3 * image.get_scale_factor()); - Util.image_set_from_scaled_pixbuf(image, pixbuf); - Util.force_css(image, "* { box-shadow: 0px 0px 2px 0px rgba(0,0,0,0.1); margin: 2px; border-radius: 3px; }"); - - Builder builder = new Builder.from_resource("/im/dino/Dino/conversation_summary/image_toolbar.ui"); - Widget toolbar = builder.get_object("main") as Widget; - Util.force_background(toolbar, "rgba(0, 0, 0, 0.5)"); - Util.force_css(toolbar, "* { padding: 3px; border-radius: 3px; }"); - - Label url_label = builder.get_object("url_label") as Label; - Util.force_color(url_label, "#eee"); - update_info(url_label, file_transfer.file_name); - - Image open_image = builder.get_object("open_image") as Image; - Util.force_css(open_image, "*:not(:hover) { color: #eee; }"); - Button open_button = builder.get_object("open_button") as Button; - Util.force_css(open_button, "*:hover { background-color: rgba(255,255,255,0.3); border-color: transparent; }"); - open_button.clicked.connect(() => { - try{ - AppInfo.launch_default_for_uri(file_transfer.get_file().get_uri(), null); - } catch (Error err) { - print("Tried to open file://" + file_transfer.get_file().get_path() + " " + err.message + "\n"); - } - }); - - Revealer toolbar_revealer = new Revealer() { transition_type=RevealerTransitionType.CROSSFADE, transition_duration=400, visible=true }; - toolbar_revealer.add(toolbar); - - Grid grid = new Grid() { visible=true }; - grid.attach(toolbar_revealer, 0, 0, 1, 1); - grid.attach(image, 0, 0, 1, 1); - - EventBox event_box = new EventBox() { halign=Align.START, visible=true }; - event_box.add(grid); - event_box.enter_notify_event.connect(() => { toolbar_revealer.reveal_child = true; return false; }); - event_box.leave_notify_event.connect(() => { toolbar_revealer.reveal_child = false; return false; }); - - return event_box; - } - - private static Gdk.Pixbuf crop_corners(Gdk.Pixbuf pixbuf, double radius = 3) { - Cairo.Context ctx = new Cairo.Context(new Cairo.ImageSurface(Cairo.Format.ARGB32, pixbuf.width, pixbuf.height)); - Gdk.cairo_set_source_pixbuf(ctx, pixbuf, 0, 0); - double degrees = Math.PI / 180.0; - ctx.new_sub_path(); - ctx.arc(pixbuf.width - radius, radius, radius, -90 * degrees, 0 * degrees); - ctx.arc(pixbuf.width - radius, pixbuf.height - radius, radius, 0 * degrees, 90 * degrees); - ctx.arc(radius, pixbuf.height - radius, radius, 90 * degrees, 180 * degrees); - ctx.arc(radius, radius, radius, 180 * degrees, 270 * degrees); - ctx.close_path(); - ctx.clip(); - ctx.paint(); - return Gdk.pixbuf_get_from_surface(ctx.get_target(), 0, 0, pixbuf.width, pixbuf.height); - } - - private void update_info(Label url_label, string? info) { - string url = info ?? ""; - if (url.has_prefix("https://")) url = url.substring(8); - if (url.has_prefix("http://")) url = url.substring(7); - if (url.has_prefix("www.")) url = url.substring(4); - string[] slash_split = url.split("/"); - if (slash_split.length > 2) url = slash_split[0] + "/…/" + slash_split[slash_split.length - 1]; - url_label.label = url; - } - - private Entities.Message.Marked file_to_message_state(FileTransfer.State state) { - switch (state) { - case FileTransfer.State.IN_PROCESS: - return Entities.Message.Marked.UNSENT; - case FileTransfer.State.COMPLETE: - return Entities.Message.Marked.NONE; - case FileTransfer.State.NOT_STARTED: - return Entities.Message.Marked.UNSENT; - case FileTransfer.State.FAILED: - return Entities.Message.Marked.WONTSEND; - } - assert_not_reached(); - } -} - -} diff --git a/main/src/ui/conversation_summary/message_populator.vala b/main/src/ui/conversation_summary/message_populator.vala deleted file mode 100644 index b342306b..00000000 --- a/main/src/ui/conversation_summary/message_populator.vala +++ /dev/null @@ -1,81 +0,0 @@ -using Gee; -using Gtk; - -using Dino.Entities; - -namespace Dino.Ui.ConversationSummary { - -public class MessagePopulator : Object { - - private StreamInteractor? stream_interactor; - private Conversation? current_conversation; - private Plugins.ConversationItemCollection? item_collection; - private HashMap<Plugins.MetaConversationItem, Message> meta_message = new HashMap<Plugins.MetaConversationItem, Message>(); - - public MessagePopulator(StreamInteractor stream_interactor) { - this.stream_interactor = stream_interactor; - - Application app = GLib.Application.get_default() as Application; - app.plugin_registry.register_message_display(new DefaultMessageDisplay(stream_interactor)); - app.plugin_registry.register_message_display(new SlashmeMessageDisplay(stream_interactor)); - - - stream_interactor.get_module(MessageProcessor.IDENTITY).message_received.connect(handle_message); - stream_interactor.get_module(MessageProcessor.IDENTITY).message_sent.connect(handle_message); - } - - public void init(Conversation conversation, Plugins.ConversationItemCollection item_collection) { - current_conversation = conversation; - this.item_collection = item_collection; - } - - public void close(Conversation conversation) { } - - public void populate_latest(Conversation conversation, int n) { - Gee.List<Entities.Message>? messages = stream_interactor.get_module(MessageStorage.IDENTITY).get_messages(conversation, n); - if (messages != null) { - foreach (Entities.Message message in messages) { - handle_message(message, conversation); - } - } - } - - public void populate_before(Conversation conversation, Plugins.MetaConversationItem item, int n) { - Gee.List<Entities.Message>? messages = stream_interactor.get_module(MessageStorage.IDENTITY).get_messages_before_message(conversation, meta_message[item], n); - if (messages != null) { - foreach (Entities.Message message in messages) { - handle_message(message, conversation); - } - } - } - - private void handle_message(Message message, Conversation conversation) { - if (!conversation.equals(current_conversation)) return; - - Plugins.MessageDisplayProvider? best_provider = null; - double priority = -1; - Application app = GLib.Application.get_default() as Application; - foreach (Plugins.MessageDisplayProvider provider in app.plugin_registry.message_displays) { - if (provider.can_display(message) && provider.priority > priority) { - best_provider = provider; - priority = provider.priority; - } - } - Plugins.MetaConversationItem? meta_item = best_provider.get_item(message, conversation); - if (meta_item == null) return; - meta_message[meta_item] = message; - - meta_item.mark = message.marked; - WeakRef weak_meta_item = WeakRef(meta_item); - WeakRef weak_message = WeakRef(message); - message.notify["marked"].connect(() => { - Plugins.MetaConversationItem? mi = weak_meta_item.get() as Plugins.MetaConversationItem; - Message? m = weak_message.get() as Message; - if (mi == null || m == null) return; - mi.mark = m.marked; - }); - item_collection.insert_item(meta_item); - } -} - -} diff --git a/main/src/ui/conversation_summary/message_textview.vala b/main/src/ui/conversation_summary/message_textview.vala deleted file mode 100644 index 0b5ed6e4..00000000 --- a/main/src/ui/conversation_summary/message_textview.vala +++ /dev/null @@ -1,158 +0,0 @@ -using Gdk; -using Gtk; - -using Dino.Entities; - -namespace Dino.Ui.ConversationSummary { - -public class MessageTextView : TextView { - - private TextTag link_tag; - private TextTag bold_tag; - - public MessageTextView() { - Object(editable:false, hexpand:true, wrap_mode:WrapMode.WORD_CHAR); - - link_tag = buffer.create_tag("url", underline: Pango.Underline.SINGLE, foreground: "blue"); - bold_tag = buffer.create_tag("semibold", weight: Pango.Weight.SEMIBOLD); - button_release_event.connect((event_button) => { - if (event_button.button == 1) { - open_url(event_button); - } - return false; - }); - motion_notify_event.connect(change_cursor_over_url); - - update_display_style(); - Util.force_base_background(this, "textview, text:not(:selected)"); - style_updated.connect(update_display_style); - populate_popup.connect(populate_context_menu); - } - - // Workaround GTK TextView issues - public override void get_preferred_width (out int minimum_width, out int natural_width) { - base.get_preferred_width(out minimum_width, out natural_width); - minimum_width = 0; - } - - public void add_text(string text_) { - string text = text_; - if (text.length > 10000) { - text = text.slice(0, 10000) + " [" + _("Message too long") + "]"; - } - TextIter end; - buffer.get_end_iter(out end); - buffer.insert(ref end, text, -1); - format_suffix_urls(text); - } - - public void highlight_word(string word) { - Regex word_regex = new Regex("""\b""" + Regex.escape_string(word) + """\b"""); - MatchInfo match_info; - word_regex.match(buffer.text, 0, out match_info); - for (; match_info.matches(); match_info.next()) { - int start; - int end; - match_info.fetch_pos(0, out start, out end); - start = buffer.text[0:start].char_count(); - end = buffer.text[0:end].char_count(); - TextIter start_iter; - TextIter end_iter; - buffer.get_iter_at_offset(out start_iter, start); - buffer.get_iter_at_offset(out end_iter, end); - buffer.apply_tag_by_name("semibold", start_iter, end_iter); - } - } - - private void update_display_style() { - LinkButton lnk = new LinkButton("http://example.com"); - RGBA link_color = lnk.get_style_context().get_color(StateFlags.LINK); - link_tag.foreground_rgba = link_color; - } - - private string? find_url_at_location(int x, int y) { - TextIter iter; - get_iter_at_location(out iter, x, y); - TextIter start_iter = iter, end_iter = iter; - if (start_iter.backward_to_tag_toggle(link_tag) && end_iter.forward_to_tag_toggle(link_tag)) { - return start_iter.get_text(end_iter); - } - - return null; - } - - private void populate_context_menu(Gtk.Menu popup) { - popup.@foreach((widget) => { widget.destroy(); }); - - Gdk.Window window = get_window(TextWindowType.TEXT); - List<weak Seat> seats = window.get_display().list_seats(); - if (seats.length() > 0) { - int device_x, device_y; - window.get_device_position(seats.nth_data(0).get_pointer(), out device_x, out device_y, null); - string url = find_url_at_location(device_x, device_y); - if (url != null) { - Gtk.MenuItem copy_url_item = new Gtk.MenuItem.with_label(_("Copy Link Address")) { visible=true }; - copy_url_item.activate.connect(() => { - Clipboard.get_default(window.get_display()).set_text(url, url.length); - }); - popup.append(copy_url_item); - } - } - - Gtk.MenuItem copy_item = new Gtk.MenuItem.with_label(_("Copy")) { visible=true }; - copy_item.sensitive = buffer.get_has_selection(); - copy_item.activate.connect(() => this.copy_clipboard() ); - popup.append(copy_item); - - Gtk.MenuItem select_all_item = new Gtk.MenuItem.with_label(_("Select All")) { visible=true }; - select_all_item.activate.connect(() => this.select_all(true) ); - popup.append(select_all_item); - } - - private void format_suffix_urls(string text) { - int absolute_start = buffer.text.char_count() - text.char_count(); - - Regex url_regex = new Regex("""(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))"""); - MatchInfo match_info; - url_regex.match(text, 0, out match_info); - for (; match_info.matches(); match_info.next()) { - int start; - int end; - match_info.fetch_pos(0, out start, out end); - start = text[0:start].char_count(); - end = text[0:end].char_count(); - TextIter start_iter; - TextIter end_iter; - buffer.get_iter_at_offset(out start_iter, absolute_start + start); - buffer.get_iter_at_offset(out end_iter, absolute_start + end); - buffer.apply_tag_by_name("url", start_iter, end_iter); - } - } - - private bool open_url(EventButton event_button) { - int buffer_x, buffer_y; - window_to_buffer_coords(TextWindowType.TEXT, (int) event_button.x, (int) event_button.y, out buffer_x, out buffer_y); - string url = find_url_at_location(buffer_x, buffer_y); - if (url != null) { - try{ - AppInfo.launch_default_for_uri(url, null); - } catch (Error err) { - print("Tried to open " + url); - } - } - return false; - } - - private bool change_cursor_over_url(EventMotion event_motion) { - TextIter iter; - get_iter_at_location(out iter, (int) event_motion.x, (int) event_motion.y); - if (iter.has_tag(buffer.tag_table.lookup("url"))) { - event_motion.window.set_cursor(new Cursor.for_display(get_display(), CursorType.HAND2)); - } else { - event_motion.window.set_cursor(new Cursor.for_display(get_display(), CursorType.XTERM)); - } - return false; - } -} - -} diff --git a/main/src/ui/conversation_summary/slashme_message_display.vala b/main/src/ui/conversation_summary/slashme_message_display.vala deleted file mode 100644 index 1ee20748..00000000 --- a/main/src/ui/conversation_summary/slashme_message_display.vala +++ /dev/null @@ -1,79 +0,0 @@ -using Gtk; - -using Dino.Entities; -using Xmpp; - -namespace Dino.Ui.ConversationSummary { - -public class SlashmeMessageDisplay : Plugins.MessageDisplayProvider, Object { - public string id { get; set; default="slashme"; } - public double priority { get; set; default=1; } - - public StreamInteractor stream_interactor; - - public SlashmeMessageDisplay(StreamInteractor stream_interactor) { - this.stream_interactor = stream_interactor; - } - - public bool can_display(Entities.Message? message) { - return message.body.has_prefix("/me"); - } - - public Plugins.MetaConversationItem? get_item(Entities.Message message, Conversation conversation) { - return new MetaSlashmeItem(stream_interactor, message, conversation); - } -} - -public class MetaSlashmeItem : Plugins.MetaConversationItem { - public override Jid? jid { get; set; } - public override DateTime? sort_time { get; set; } - public override DateTime? display_time { get; set; } - public override Encryption? encryption { get; set; } - - private StreamInteractor stream_interactor; - private Conversation conversation; - private Message message; - private TextTag nick_tag; - private MessageTextView text_view; - - public MetaSlashmeItem(StreamInteractor stream_interactor, Message message, Conversation conversation) { - this.stream_interactor = stream_interactor; - this.conversation = conversation; - this.message = message; - this.jid = message.from; - this.sort_time = message.local_time; - this.seccondary_sort_indicator = message.id + 0.0845; - this.display_time = message.time; - this.encryption = message.encryption; - } - - public override bool can_merge { get; set; default=false; } - public override bool requires_avatar { get; set; default=true; } - public override bool requires_header { get; set; default=false; } - - public override Object? get_widget(Plugins.WidgetType widget_type) { - text_view = new MessageTextView() { valign=Align.CENTER, vexpand=true, visible = true }; - if (conversation.type_ == Conversation.Type.GROUPCHAT) { - text_view.highlight_word(conversation.nickname); - } - - string display_name = Util.get_message_display_name(stream_interactor, message, conversation.account); - string color = Util.get_name_hex_color(stream_interactor, conversation.account, conversation.counterpart, Util.is_dark_theme(text_view)); - nick_tag = text_view.buffer.create_tag("nick", foreground: "#" + color); - TextIter iter; - text_view.buffer.get_start_iter(out iter); - text_view.buffer.insert_with_tags(ref iter, display_name, display_name.length, nick_tag); - text_view.add_text(message.body.substring(3)); - - text_view.style_updated.connect(update_style); - text_view.realize.connect(update_style); - return text_view; - } - - private void update_style() { - string color = Util.get_name_hex_color(stream_interactor, conversation.account, message.real_jid ?? message.from, Util.is_dark_theme(text_view)); - nick_tag.foreground = "#" + color; - } -} - -} diff --git a/main/src/ui/conversation_titlebar/search_entry.vala b/main/src/ui/conversation_titlebar/search_entry.vala new file mode 100644 index 00000000..b452bdce --- /dev/null +++ b/main/src/ui/conversation_titlebar/search_entry.vala @@ -0,0 +1,30 @@ +using Gtk; +using Gee; + +using Dino.Entities; + +namespace Dino.Ui { + +public class SearchMenuEntry : Plugins.ConversationTitlebarEntry, Object { + public string id { get { return "search"; } } + + Plugins.ConversationTitlebarWidget search_button; + + public SearchMenuEntry(Plugins.ConversationTitlebarWidget search_button) { + this.search_button = search_button; + } + + public double order { get { return 1; } } + public Plugins.ConversationTitlebarWidget? get_widget(Plugins.WidgetType type) { + if (type == Plugins.WidgetType.GTK) { + return search_button; + } + return null; + } +} + +public class GlobalSearchButton : Plugins.ConversationTitlebarWidget, Gtk.ToggleButton { + public new void set_conversation(Conversation conversation) { } +} + +} diff --git a/main/src/ui/conversation_titlebar/view.vala b/main/src/ui/conversation_titlebar/view.vala index d01cd9bb..7ee47311 100644 --- a/main/src/ui/conversation_titlebar/view.vala +++ b/main/src/ui/conversation_titlebar/view.vala @@ -11,6 +11,7 @@ public class ConversationTitlebar : Gtk.HeaderBar { private Window window; private Conversation? conversation; private Gee.List<Plugins.ConversationTitlebarWidget> widgets = new ArrayList<Plugins.ConversationTitlebarWidget>(); + public GlobalSearchButton search_button = new GlobalSearchButton() { visible = true }; public ConversationTitlebar(StreamInteractor stream_interactor, Window window) { this.stream_interactor = stream_interactor; @@ -19,9 +20,11 @@ public class ConversationTitlebar : Gtk.HeaderBar { this.get_style_context().add_class("dino-right"); show_close_button = true; hexpand = true; + search_button.set_image(new Gtk.Image.from_icon_name("system-search-symbolic", Gtk.IconSize.MENU) { visible = true }); Application app = GLib.Application.get_default() as Application; app.plugin_registry.register_contact_titlebar_entry(new MenuEntry(stream_interactor)); + app.plugin_registry.register_contact_titlebar_entry(new SearchMenuEntry(search_button)); app.plugin_registry.register_contact_titlebar_entry(new OccupantsEntry(stream_interactor, window)); foreach(var e in app.plugin_registry.conversation_titlebar_entries) { @@ -33,6 +36,12 @@ public class ConversationTitlebar : Gtk.HeaderBar { } + stream_interactor.get_module(MucManager.IDENTITY).room_name_set.connect((account, jid, room_name) => { + if (conversation != null && conversation.counterpart.equals_bare(jid) && conversation.account.equals(account)) { + update_title(); + } + }); + stream_interactor.get_module(MucManager.IDENTITY).subject_set.connect((account, jid, subject) => { if (conversation != null && conversation.counterpart.equals_bare(jid) && conversation.account.equals(account)) { update_subtitle(subject); diff --git a/main/src/ui/global_search.vala b/main/src/ui/global_search.vala new file mode 100644 index 00000000..99a69e1b --- /dev/null +++ b/main/src/ui/global_search.vala @@ -0,0 +1,267 @@ +using Gee; +using Gtk; +using Pango; + +using Dino.Entities; + +namespace Dino.Ui { + +[GtkTemplate (ui = "/im/dino/Dino/global_search.ui")] +class GlobalSearch : Overlay { + public signal void selected_item(MessageItem item); + private StreamInteractor stream_interactor; + private string search = ""; + private int loaded_results = -1; + private Mutex reloading_mutex = Mutex(); + + [GtkChild] public SearchEntry search_entry; + [GtkChild] public Label entry_number_label; + [GtkChild] public ScrolledWindow results_scrolled; + [GtkChild] public Box results_box; + [GtkChild] public Stack results_empty_stack; + [GtkChild] public Frame auto_complete_overlay; + [GtkChild] public ListBox auto_complete_list; + + public GlobalSearch init(StreamInteractor stream_interactor) { + this.stream_interactor = stream_interactor; + + search_entry.search_changed.connect(() => { + set_search(search_entry.text); + }); + search_entry.notify["text"].connect_after(() => { update_auto_complete(); }); + search_entry.notify["cursor-position"].connect_after(() => { update_auto_complete(); }); + + results_scrolled.vadjustment.notify["value"].connect(() => { + if (results_scrolled.vadjustment.upper - (results_scrolled.vadjustment.value + results_scrolled.vadjustment.page_size) < 100) { + if (!reloading_mutex.trylock()) return; + Gee.List<MessageItem> new_messages = stream_interactor.get_module(SearchProcessor.IDENTITY).match_messages(search, loaded_results); + if (new_messages.size == 0) { + reloading_mutex.unlock(); + return; + } + loaded_results += new_messages.size; + append_messages(new_messages); + } + }); + results_scrolled.vadjustment.notify["upper"].connect_after(() => { + reloading_mutex.trylock(); + reloading_mutex.unlock(); + }); + + event.connect((event) => { + if (auto_complete_overlay.visible) { + if (event.type == Gdk.EventType.KEY_PRESS && event.key.keyval == Gdk.Key.Up) { + var row = auto_complete_list.get_selected_row(); + var index = row == null ? -1 : row.get_index() - 1; + if (index == -1) index = (int)auto_complete_list.get_children().length() - 1; + auto_complete_list.select_row(auto_complete_list.get_row_at_index(index)); + return true; + } + if (event.type == Gdk.EventType.KEY_PRESS && event.key.keyval == Gdk.Key.Down) { + var row = auto_complete_list.get_selected_row(); + var index = row == null ? 0 : row.get_index() + 1; + if (index == auto_complete_list.get_children().length()) index = 0; + auto_complete_list.select_row(auto_complete_list.get_row_at_index(index)); + return true; + } + if (event.type == Gdk.EventType.KEY_PRESS && event.key.keyval == Gdk.Key.Tab || + event.type == Gdk.EventType.KEY_RELEASE && event.key.keyval == Gdk.Key.Return) { + auto_complete_list.get_selected_row().activate(); + return true; + } + } + // TODO: Handle cursor movement in results + // TODO: Direct all keystrokes to text input + return false; + }); + + return this; + } + + private void update_auto_complete() { + Gee.List<SearchSuggestion> suggestions = stream_interactor.get_module(SearchProcessor.IDENTITY).suggest_auto_complete(search_entry.text, search_entry.cursor_position); + auto_complete_overlay.visible = suggestions.size > 0; + if (suggestions.size > 0) { + auto_complete_list.@foreach((widget) => auto_complete_list.remove(widget)); + foreach(SearchSuggestion suggestion in suggestions) { + Builder builder = new Builder.from_resource("/im/dino/Dino/search_autocomplete.ui"); + AvatarImage avatar = (AvatarImage)builder.get_object("image"); + avatar.set_jid(stream_interactor, suggestion.jid, suggestion.account); + Label label = (Label)builder.get_object("label"); + string display_name = Util.get_display_name(stream_interactor, suggestion.jid, suggestion.account); + if (display_name != suggestion.jid.to_string()) { + label.set_markup(@"$display_name <span font_weight='light' fgalpha='80%'>$(suggestion.jid)</span>"); + } else { + label.label = display_name; + } + ListBoxRow row = new ListBoxRow() { visible = true, can_focus = false }; + row.add((Widget)builder.get_object("root")); + row.activate.connect(() => { + handle_suggestion(suggestion); + }); + auto_complete_list.add(row); + } + auto_complete_list.select_row(auto_complete_list.get_row_at_index(0)); + } + } + + private void handle_suggestion(SearchSuggestion suggestion) { + search_entry.move_cursor(MovementStep.LOGICAL_POSITIONS, suggestion.start_index - search_entry.cursor_position, false); + search_entry.delete_from_cursor(DeleteType.CHARS, suggestion.end_index - suggestion.start_index); + search_entry.insert_at_cursor(suggestion.completion + " "); + } + + private void clear_search() { + results_box.@foreach((widget) => { widget.destroy(); }); + } + + private void set_search(string search) { + clear_search(); + this.search = search; + + if (get_keywords(search).is_empty) { + results_empty_stack.set_visible_child_name("empty"); + return; + } + + Gee.List<MessageItem> messages = stream_interactor.get_module(SearchProcessor.IDENTITY).match_messages(search); + if (messages.size == 0) { + results_empty_stack.set_visible_child_name("no-result"); + } else { + results_empty_stack.set_visible_child_name("results"); + + int match_count = messages.size < 10 ? messages.size : stream_interactor.get_module(SearchProcessor.IDENTITY).count_match_messages(search); + entry_number_label.label = "<i>" + _("%i search results").printf(match_count) + "</i>"; + loaded_results += messages.size; + append_messages(messages); + } + } + + private void append_messages(Gee.List<MessageItem> messages) { + foreach (MessageItem item in messages) { + Gee.List<MessageItem> before_message = stream_interactor.get_module(MessageStorage.IDENTITY).get_messages_before_message(item.conversation, item.message.local_time, item.message.id, 1); + Gee.List<MessageItem> after_message = stream_interactor.get_module(MessageStorage.IDENTITY).get_messages_after_message(item.conversation, item.message.local_time, item.message.id, 1); + + Box context_box = new Box(Orientation.VERTICAL, 5) { visible=true }; + if (before_message != null && before_message.size > 0) { + context_box.add(get_context_message_widget(before_message.first())); + } + + Widget match_widget = get_match_message_widget(item); + context_box.add(match_widget); + + if (after_message != null && after_message.size > 0) { + context_box.add(get_context_message_widget(after_message.first())); + } + + Label date_label = new Label(ConversationSummary.DefaultSkeletonHeader.get_relative_time(item.display_time)) { xalign=0, visible=true }; + date_label.get_style_context().add_class("dim-label"); + + string display_name = Util.get_conversation_display_name(stream_interactor, item.conversation); + string title = item.message.type_ == Message.Type.GROUPCHAT ? _("In %s").printf(display_name) : _("With %s").printf(display_name); + Box header_box = new Box(Orientation.HORIZONTAL, 10) { margin_start=7, visible=true }; + header_box.add(new Label(@"<b>$(Markup.escape_text(title))</b>") { ellipsize=EllipsizeMode.END, xalign=0, use_markup=true, visible=true }); + header_box.add(date_label); + + Box result_box = new Box(Orientation.VERTICAL, 7) { visible=true }; + result_box.add(header_box); + result_box.add(context_box); + + results_box.add(result_box); + } + } + + private Widget get_match_message_widget(MessageItem item) { + Grid grid = get_skeleton(item); + grid.margin_top = 3; + grid.margin_bottom = 3; + + string text = item.message.body.replace("\n", "").replace("\r", ""); + if (text.length > 200) { + int index = text.index_of(search); + if (index + search.length <= 100) { + text = text.substring(0, 150) + " … " + text.substring(text.length - 50, 50); + } else if (index >= text.length - 100) { + text = text.substring(0, 50) + " … " + text.substring(text.length - 150, 150); + } else { + text = text.substring(0, 25) + " … " + text.substring(index - 50, 50) + text.substring(index, 100) + " … " + text.substring(text.length - 25, 25); + } + } + Label label = new Label("") { use_markup=true, xalign=0, selectable=true, wrap=true, wrap_mode=Pango.WrapMode.WORD_CHAR, vexpand=true, visible=true }; + string markup_text = Markup.escape_text(text); + + // Build regex containing all keywords + string regex_str = "("; + Gee.List<string> keywords = get_keywords(Regex.escape_string(search.down())); + bool first = true; + foreach (string keyword in keywords) { + if (first) { + first = false; + } else { + regex_str += "|"; + } + regex_str += "\\b" + keyword; + } + regex_str += ")"; + + // Color the keywords + int elongated_by = 0; + Regex highlight_regex = new Regex(regex_str); + MatchInfo match_info; + string markup_text_bak = markup_text.down(); + highlight_regex.match(markup_text_bak, 0, out match_info); + for (; match_info.matches(); match_info.next()) { + int start, end; + match_info.fetch_pos(0, out start, out end); + markup_text = markup_text[0:start+elongated_by] + "<span bgcolor=\"yellow\">" + markup_text[start+elongated_by:end+elongated_by] + "</span>" + markup_text[end+elongated_by:markup_text.length]; + elongated_by += "<span bgcolor=\"yellow\">".length + "</span>".length; + } + markup_text_bak += ""; // We need markup_text_bak to live until here because url_regex.match does not copy the string + + label.label = markup_text; + grid.attach(label, 1, 1, 1, 1); + + Button button = new Button() { relief=ReliefStyle.NONE, visible=true }; + button.clicked.connect(() => { + selected_item(item); + }); + button.add(grid); + return button; + } + + private Grid get_context_message_widget(MessageItem item) { + Grid grid = get_skeleton(item); + grid.margin_start = 7; + Label label = new Label(item.message.body.replace("\n", "").replace("\r", "")) { ellipsize=EllipsizeMode.MIDDLE, xalign=0, visible=true }; + grid.attach(label, 1, 1, 1, 1); + grid.opacity = 0.55; + return grid; + } + + private Grid get_skeleton(MessageItem item) { + AvatarImage image = new AvatarImage() { height=32, width=32, margin_end=7, valign=Align.START, visible=true, allow_gray = false }; + image.set_jid(stream_interactor, item.jid, item.message.account); + Grid grid = new Grid() { row_homogeneous=false, visible=true }; + grid.attach(image, 0, 0, 1, 2); + + string display_name = Util.get_display_name(stream_interactor, item.jid, item.message.account); + string color = Util.get_name_hex_color(stream_interactor, item.message.account, item.jid, false); // TODO Util.is_dark_theme(name_label) + Label name_label = new Label("") { use_markup=true, xalign=0, visible=true }; + name_label.label = @"<span size='small' foreground=\"#$color\">$display_name</span>"; + grid.attach(name_label, 1, 0, 1, 1); + return grid; + } + + private static Gee.List<string> get_keywords(string search_string) { + Gee.List<string> ret = new ArrayList<string>(); + foreach (string search in search_string.split(" ")) { + bool is_filter = search.has_prefix("from:") || search.has_prefix("in:") || search.has_prefix("with:"); + if (!is_filter && search != "") { + ret.add(search); + } + } + return ret; + } +} + +} diff --git a/main/src/ui/manage_accounts/add_account_dialog.vala b/main/src/ui/manage_accounts/add_account_dialog.vala index 5715db51..f9ab794e 100644 --- a/main/src/ui/manage_accounts/add_account_dialog.vala +++ b/main/src/ui/manage_accounts/add_account_dialog.vala @@ -11,29 +11,120 @@ public class AddAccountDialog : Gtk.Dialog { public signal void added(Account account); - [GtkChild] private Button cancel_button; - [GtkChild] private Button ok_button; - [GtkChild] private Entry alias_entry; + [GtkChild] private Stack stack; + + [GtkChild] private Revealer notification_revealer; + [GtkChild] private Label notification_label; + + // Sign in + [GtkChild] private Box sign_in_box; [GtkChild] private Entry jid_entry; + [GtkChild] private Entry alias_entry; [GtkChild] private Entry password_entry; + [GtkChild] private Button sign_in_continue; + [GtkChild] private Button serverlist_button; + + // Select Server + [GtkChild] private Box create_account_box; + [GtkChild] private Button login_button; + [GtkChild] private Stack select_server_continue_stack; + [GtkChild] private Button select_server_continue; + [GtkChild] private Label register_form_continue_label; + [GtkChild] private ListBox server_list_box; + [GtkChild] private Entry server_entry; + + // Register Form + [GtkChild] private Box register_box; + [GtkChild] private Label register_title; + [GtkChild] private Box form_box; + [GtkChild] private Button register_form_back; + [GtkChild] private Stack register_form_continue_stack; + [GtkChild] private Button register_form_continue; + + private static string[] server_list = new string[]{ + "5222.de", + "jabber.fr", + "movim.eu", + "yax.im" + }; + private HashMap<ListBoxRow, string> list_box_jids = new HashMap<ListBoxRow, string>(); + private Jid? server_jid = null; + private Xep.InBandRegistration.Form? form = null; public AddAccountDialog(StreamInteractor stream_interactor) { - Object(use_header_bar : 1); this.title = _("Add Account"); - cancel_button.clicked.connect(() => { close(); }); - ok_button.clicked.connect(on_ok_button_clicked); + // Sign in jid_entry.changed.connect(on_jid_entry_changed); jid_entry.focus_out_event.connect(on_jid_entry_focus_out_event); + sign_in_continue.clicked.connect(on_sign_in_continue_clicked); + serverlist_button.clicked.connect(show_select_server); + + // Select Server + server_entry.changed.connect(() => { + Jid? jid = Jid.parse(server_entry.text); + select_server_continue.sensitive = jid != null && jid.localpart == null && jid.resourcepart == null; + }); + select_server_continue.clicked.connect(on_select_server_continue); + login_button.clicked.connect(show_sign_in); + + foreach (string server in server_list) { + ListBoxRow list_box_row = new ListBoxRow() { visible=true }; + list_box_row.add(new Label(server) { xalign=0, margin=3, margin_start=7, margin_end=7, visible=true }); + list_box_jids[list_box_row] = server; + server_list_box.add(list_box_row); + } + + // Register Form + register_form_continue.clicked.connect(on_register_form_continue_clicked); + register_form_back.clicked.connect(show_select_server); + + show_sign_in(); + } + + private void show_sign_in() { + sign_in_box.visible = true; + stack.visible_child_name = "login"; + create_account_box.visible = false; + register_box.visible = false; + set_default(sign_in_continue); + animate_window_resize(sign_in_box); + } + + private void show_select_server() { + server_entry.text = ""; + server_entry.grab_focus(); + set_default(select_server_continue); + + server_list_box.row_selected.disconnect(on_server_list_row_selected); + server_list_box.unselect_all(); + server_list_box.row_selected.connect(on_server_list_row_selected); + + create_account_box.visible = true; + stack.visible_child_name = "server"; + sign_in_box.visible = false; + register_box.visible = false; + + animate_window_resize(create_account_box); + } + + private void show_register_form() { + register_box.visible = true; + stack.visible_child_name = "form"; + sign_in_box.visible = false; + create_account_box.visible = false; + + set_default(register_form_continue); + animate_window_resize(register_box); } private void on_jid_entry_changed() { Jid? jid = Jid.parse(jid_entry.text); if (jid != null && jid.localpart != null && jid.resourcepart == null) { - ok_button.set_sensitive(true); + sign_in_continue.set_sensitive(true); jid_entry.secondary_icon_name = null; } else { - ok_button.set_sensitive(false); + sign_in_continue.set_sensitive(false); } } @@ -41,7 +132,6 @@ public class AddAccountDialog : Gtk.Dialog { Jid? jid = Jid.parse(jid_entry.text); if (jid == null || jid.localpart == null || jid.resourcepart != null) { jid_entry.secondary_icon_name = "dialog-warning-symbolic"; - // TODO why doesn't the tooltip work jid_entry.set_icon_tooltip_text(EntryIconPosition.SECONDARY, _("JID should be of the form “user@example.com”")); } else { jid_entry.secondary_icon_name = null; @@ -49,13 +139,131 @@ public class AddAccountDialog : Gtk.Dialog { return false; } - private void on_ok_button_clicked() { + private void on_sign_in_continue_clicked() { Jid jid = new Jid(jid_entry.get_text()); string password = password_entry.get_text(); string alias = alias_entry.get_text(); + store_account(jid, password, alias); + close(); + } + + private void on_select_server_continue() { + server_jid = new Jid(server_entry.text); + request_show_register_form.begin(); + } + + private void on_server_list_row_selected(ListBox box, ListBoxRow? row) { + server_jid = new Jid(list_box_jids[row]); + request_show_register_form.begin(); + } + + private async void request_show_register_form() { + select_server_continue_stack.visible_child_name = "spinner"; + form = yield Register.get_registration_form(server_jid); + if (select_server_continue_stack == null) { + return; + } + select_server_continue_stack.visible_child_name = "label"; + if (form != null) { + set_register_form(server_jid, form); + show_register_form(); + } else { + display_notification(_("No response from server")); + } + } + + private void set_register_form(Jid server, Xep.InBandRegistration.Form form) { + form_box.foreach((widget) => { widget.destroy(); }); + register_title.label = _("Register on %s").printf(server.to_string()); + + if (form.oob != null) { + form_box.add(new Label(_("The server requires to sign up through a website")){ use_markup=true, visible=true } ); + form_box.add(new Label(@"<a href=\"$(form.oob)\">$(form.oob)</a>") { use_markup=true, visible=true }); + register_form_continue_label.label = _("Open Registration"); + register_form_continue.visible = true; + register_form_continue.grab_focus(); + } else if (form.fields.size > 0) { + int i = 0; + foreach (Xep.DataForms.DataForm.Field field in form.fields) { + if (field.label != null && field.label != "") { + form_box.add(new Label(field.label) { xalign=0, margin_top=7, visible=true }); + } + Widget field_widget = Util.get_data_form_fild_widget(field); + if (field_widget != null) { + form_box.add(field_widget); + } + i++; + } + register_form_continue.visible = true; + register_form_continue_label.label = _("Register"); + } else { + form_box.add(new Label(_("Check %s for information on how to sign up").printf(@"<a href=\"http://$(server)\">$(server)</a>")) { use_markup=true, visible=true }); + register_form_continue.visible = false; + } + } + + private async void on_register_form_continue_clicked() { + notification_revealer.set_reveal_child(false); + // Button is opening a registration website + if (form.oob != null) { + try { + AppInfo.launch_default_for_uri(form.oob, null); + } catch (Error e) { } + show_sign_in(); + return; + } + + register_form_continue_stack.visible_child_name = "spinner"; + string? error = yield Register.submit_form(server_jid, form); + if (register_form_continue_stack == null) { + return; + } + register_form_continue_stack.visible_child_name = "label"; + if (error == null) { + string? username = null, password = null; + foreach (Xep.DataForms.DataForm.Field field in form.fields) { + switch (field.var) { + case "username": username = field.get_value_string(); break; + case "password": password = field.get_value_string(); break; + } + } + store_account(new Jid(username + "@" + server_jid.domainpart), password, ""); + close(); + } else { + display_notification(error); + } + } + + private void store_account(Jid jid, string password, string? alias) { Account account = new Account(jid, null, password, alias); added(account); - close(); + } + + private void display_notification(string text) { + notification_label.label = text; + notification_revealer.set_reveal_child(true); + Timeout.add_seconds(5, () => { + notification_revealer.set_reveal_child(false); + return false; + }); + } + + private void animate_window_resize(Widget widget) { // TODO code duplication + int def_height, curr_width, curr_height; + get_size(out curr_width, out curr_height); + widget.get_preferred_height(null, out def_height); + def_height += 5; + int difference = def_height - curr_height; + Timer timer = new Timer(); + Timeout.add((int) (stack.transition_duration / 30), + () => { + ulong microsec; + timer.elapsed(out microsec); + ulong millisec = microsec / 1000; + double partial = double.min(1, (double) millisec / stack.transition_duration); + resize(curr_width, (int) (curr_height + difference * partial)); + return millisec < stack.transition_duration; + }); } } diff --git a/main/src/ui/manage_accounts/dialog.vala b/main/src/ui/manage_accounts/dialog.vala index 5706fc8c..1a370349 100644 --- a/main/src/ui/manage_accounts/dialog.vala +++ b/main/src/ui/manage_accounts/dialog.vala @@ -215,15 +215,6 @@ public class Dialog : Gtk.Dialog { if (error != null) { state_label.label = get_connection_error_description(error); state_label.get_style_context().add_class("is_error"); - - if (error.source == ConnectionManager.ConnectionError.Source.SASL || - error.source == ConnectionManager.ConnectionError.Source.TLS || - error.reconnect_recomendation == ConnectionManager.ConnectionError.Reconnect.NEVER) { - active_switch.state_set.disconnect(change_account_state); - active_switch.active = false; - active_switch.state_set.connect(change_account_state); - } - } else { ConnectionManager.ConnectionState state = stream_interactor.connection_manager.get_state(account); switch (state) { diff --git a/main/src/ui/notifications.vala b/main/src/ui/notifications.vala index f7540a4d..77a290a0 100644 --- a/main/src/ui/notifications.vala +++ b/main/src/ui/notifications.vala @@ -41,19 +41,36 @@ public class Notifications : Object { } public void start() { - stream_interactor.get_module(NotificationEvents.IDENTITY).notify_message.connect(notify_message); + stream_interactor.get_module(NotificationEvents.IDENTITY).notify_content_item.connect(notify_content_item); stream_interactor.get_module(NotificationEvents.IDENTITY).notify_subscription_request.connect(notify_subscription_request); + stream_interactor.get_module(NotificationEvents.IDENTITY).notify_connection_error.connect(notify_connection_error); } - private void notify_message(Entities.Message message, Conversation conversation) { + private void notify_content_item(ContentItem content_item, Conversation conversation) { if (!notifications.has_key(conversation)) { notifications[conversation] = new Notification(""); notifications[conversation].set_default_action_and_target_value("app.open-conversation", new Variant.int32(conversation.id)); } string display_name = Util.get_conversation_display_name(stream_interactor, conversation); - string text = message.body; + string text = ""; + switch (content_item.type_) { + case MessageItem.TYPE: + Message message = (content_item as MessageItem).message; + text = message.body; + break; + case FileItem.TYPE: + FileItem file_item = content_item as FileItem; + FileTransfer transfer = file_item.file_transfer; + + if (transfer.direction == Message.DIRECTION_SENT) { + text = transfer.mime_type.has_prefix("image") ? _("Image sent") : _("File sent"); + } else { + text = transfer.mime_type.has_prefix("image") ? _("Image received") : _("File received"); + } + break; + } if (stream_interactor.get_module(MucManager.IDENTITY).is_groupchat(conversation.counterpart, conversation.account)) { - string muc_occupant = Util.get_display_name(stream_interactor, message.from, conversation.account); + string muc_occupant = Util.get_display_name(stream_interactor, content_item.jid, conversation.account); text = @"$muc_occupant: $text"; } notifications[conversation].set_title(display_name); @@ -79,6 +96,19 @@ public class Notifications : Object { active_ids.add(conversation.id.to_string() + "-subscription"); } + private void notify_connection_error(Account account, ConnectionManager.ConnectionError error) { + Notification notification = new Notification(_("Failed connecting to %s").printf(account.bare_jid.domainpart)); + switch (error.source) { + case ConnectionManager.ConnectionError.Source.SASL: + notification.set_body("Wrong password"); + break; + case ConnectionManager.ConnectionError.Source.TLS: + notification.set_body("Invalid TLS certificate"); + break; + } + window.get_application().send_notification(account.id.to_string() + "-connection-error", notification); + } + private Icon get_pixbuf_icon(Cairo.ImageSurface surface) throws Error { Gdk.Pixbuf avatar = Gdk.pixbuf_get_from_surface(surface, 0, 0, surface.get_width(), surface.get_height()); uint8[] buffer; diff --git a/main/src/ui/unified_window.vala b/main/src/ui/unified_window.vala index e2798def..61a22085 100644 --- a/main/src/ui/unified_window.vala +++ b/main/src/ui/unified_window.vala @@ -1,11 +1,12 @@ using Gee; +using Gdk; using Gtk; using Dino.Entities; namespace Dino.Ui { -public class UnifiedWindow : Window { +public class UnifiedWindow : Gtk.Window { private NoAccountsPlaceholder accounts_placeholder = new NoAccountsPlaceholder() { visible=true }; private NoConversationsPlaceholder conversations_placeholder = new NoConversationsPlaceholder() { visible=true }; @@ -16,7 +17,12 @@ public class UnifiedWindow : Window { private ConversationTitlebar conversation_titlebar; private HeaderBar placeholder_headerbar = new HeaderBar() { title="Dino", show_close_button=true, visible=true }; private Paned headerbar_paned = new Paned(Orientation.HORIZONTAL) { visible=true }; - private Paned paned = new Paned(Orientation.HORIZONTAL) { visible=true }; + private Paned paned; + private Revealer goto_end_revealer; + private Button goto_end_button; + private Revealer search_revealer; + private SearchEntry search_entry; + private GlobalSearch search_box; private Stack stack = new Stack() { visible=true }; private StreamInteractor stream_interactor; @@ -36,8 +42,47 @@ public class UnifiedWindow : Window { setup_unified(); setup_stack(); - conversation_list_titlebar.search_button.bind_property("active", filterable_conversation_list.search_revealer, "reveal-child", - BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); + var vadjustment = conversation_frame.scrolled.vadjustment; + vadjustment.notify["value"].connect(() => { + goto_end_revealer.reveal_child = vadjustment.value < vadjustment.upper - vadjustment.page_size; + }); + goto_end_button.clicked.connect(() => { + conversation_frame.initialize_for_conversation(conversation); + }); + + conversation_titlebar.search_button.clicked.connect(() => { + search_revealer.reveal_child = conversation_titlebar.search_button.active; + }); + search_revealer.notify["child-revealed"].connect(() => { + if (search_revealer.child_revealed) { + if (conversation_frame.conversation != null && search_box.search_entry.text == "") { + reset_search_entry(); + } + search_box.search_entry.grab_focus(); + } + }); + search_box.selected_item.connect((item) => { + on_conversation_selected(item.conversation, false, false); + conversation_frame.initialize_around_message(item.conversation, item); + close_search(); + }); + event.connect((event) => { + if (event.type == EventType.BUTTON_PRESS) { + int dest_x, dest_y; + bool ret = search_box.translate_coordinates(this, 0, 0, out dest_x, out dest_y); + int geometry_x, geometry_y, geometry_width, geometry_height; + this.get_window().get_geometry(out geometry_x, out geometry_y, out geometry_width, out geometry_height); + if (ret && event.button.x_root - geometry_x < dest_x || event.button.y_root - geometry_y < dest_y) { + close_search(); + } + } else if (event.type == EventType.KEY_RELEASE) { + if (event.key.keyval == Gdk.Key.Escape) { + close_search(); + } + } + return false; + }); + paned.bind_property("position", headerbar_paned, "position", BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); focus_in_event.connect(on_focus_in_event); @@ -50,38 +95,60 @@ public class UnifiedWindow : Window { accounts_placeholder.primary_button.clicked.connect(() => { get_application().activate_action("accounts", null); }); conversations_placeholder.primary_button.clicked.connect(() => { get_application().activate_action("add_chat", null); }); conversations_placeholder.secondary_button.clicked.connect(() => { get_application().activate_action("add_conference", null); }); - filterable_conversation_list.conversation_list.conversation_selected.connect(on_conversation_selected); - conversation_list_titlebar.conversation_opened.connect(on_conversation_selected); + filterable_conversation_list.conversation_list.conversation_selected.connect((conversation) => on_conversation_selected(conversation)); + conversation_list_titlebar.conversation_opened.connect((conversation) => on_conversation_selected(conversation)); check_stack(); } - public void on_conversation_selected(Conversation conversation) { + private void reset_search_entry() { + if (conversation_frame.conversation != null) { + switch (conversation.type_) { + case Conversation.Type.CHAT: + case Conversation.Type.GROUPCHAT_PM: + search_box.search_entry.text = @"with:$(conversation.counterpart) "; + break; + case Conversation.Type.GROUPCHAT: + search_box.search_entry.text = @"in:$(conversation.counterpart) "; + break; + } + } + } + + public void on_conversation_selected(Conversation conversation, bool do_reset_search = true, bool default_initialize_conversation = true) { if (this.conversation == null || !this.conversation.equals(conversation)) { this.conversation = conversation; stream_interactor.get_module(ChatInteraction.IDENTITY).on_conversation_selected(conversation); conversation.active = true; // only for conversation_selected filterable_conversation_list.conversation_list.on_conversation_selected(conversation); // only for conversation_opened + if (do_reset_search) { + reset_search_entry(); + } chat_input.initialize_for_conversation(conversation); - conversation_frame.initialize_for_conversation(conversation); + if (default_initialize_conversation) { + conversation_frame.initialize_for_conversation(conversation); + } conversation_titlebar.initialize_for_conversation(conversation); } } + private void close_search() { + conversation_titlebar.search_button.active = false; + search_revealer.reveal_child = false; + } + private void setup_unified() { - chat_input = new ChatInput.View(stream_interactor) { visible=true }; - conversation_frame = new ConversationSummary.ConversationView(stream_interactor) { visible=true }; - filterable_conversation_list = new ConversationSelector.View(stream_interactor) { visible=true }; - - Grid grid = new Grid() { orientation=Orientation.VERTICAL, visible=true }; - grid.get_style_context().add_class("dino-conversation"); - grid.add(conversation_frame); - grid.add(chat_input); - - paned.set_position(300); - paned.pack1(filterable_conversation_list, false, false); - paned.pack2(grid, true, false); + Builder builder = new Builder.from_resource("/im/dino/Dino/unified_main_content.ui"); + paned = (Paned) builder.get_object("paned"); + chat_input = ((ChatInput.View) builder.get_object("chat_input")).init(stream_interactor); + conversation_frame = ((ConversationSummary.ConversationView) builder.get_object("conversation_frame")).init(stream_interactor); + filterable_conversation_list = ((ConversationSelector.View) builder.get_object("conversation_list")).init(stream_interactor); + goto_end_revealer = (Revealer) builder.get_object("goto_end_revealer"); + goto_end_button = (Button) builder.get_object("goto_end_button"); + search_box = ((GlobalSearch) builder.get_object("search_box")).init(stream_interactor); + search_revealer = (Revealer) builder.get_object("search_revealer"); + search_entry = (SearchEntry) builder.get_object("search_entry"); } private void setup_headerbar() { diff --git a/main/src/ui/util/data_forms.vala b/main/src/ui/util/data_forms.vala new file mode 100644 index 00000000..11308462 --- /dev/null +++ b/main/src/ui/util/data_forms.vala @@ -0,0 +1,57 @@ +using Gee; +using Gtk; + +using Dino.Entities; +using Xmpp.Xep; + +namespace Dino.Ui.Util { + +public static Widget? get_data_form_fild_widget(DataForms.DataForm.Field field) { + if (field.type_ == null) return null; + switch (field.type_) { + case DataForms.DataForm.Type.BOOLEAN: + DataForms.DataForm.BooleanField boolean_field = field as DataForms.DataForm.BooleanField; + Switch sw = new Switch() { active=boolean_field.value, valign=Align.CENTER, visible=true }; + sw.state_set.connect((state) => { + boolean_field.value = state; + return false; + }); + return sw; + case DataForms.DataForm.Type.JID_MULTI: + return null; + case DataForms.DataForm.Type.LIST_SINGLE: + DataForms.DataForm.ListSingleField list_single_field = field as DataForms.DataForm.ListSingleField; + ComboBoxText combobox = new ComboBoxText() { valign=Align.CENTER, visible=true }; + for (int i = 0; i < list_single_field.options.size; i++) { + DataForms.DataForm.Option option = list_single_field.options[i]; + combobox.append(option.value, option.label); + if (option.value == list_single_field.value) combobox.active = i; + } + combobox.changed.connect(() => { + list_single_field.value = combobox.get_active_id(); + }); + return combobox; + case DataForms.DataForm.Type.LIST_MULTI: + return null; + case DataForms.DataForm.Type.TEXT_PRIVATE: + DataForms.DataForm.TextPrivateField text_private_field = field as DataForms.DataForm.TextPrivateField; + Entry entry = new Entry() { text=text_private_field.value ?? "", valign=Align.CENTER, visible=true, visibility=false }; + entry.key_release_event.connect(() => { + text_private_field.value = entry.text; + return false; + }); + return entry; + case DataForms.DataForm.Type.TEXT_SINGLE: + DataForms.DataForm.TextSingleField text_single_field = field as DataForms.DataForm.TextSingleField; + Entry entry = new Entry() { text=text_single_field.value ?? "", valign=Align.CENTER, visible=true }; + entry.key_release_event.connect(() => { + text_single_field.value = entry.text; + return false; + }); + return entry; + default: + return null; + } +} + +} diff --git a/main/src/ui/util/helper.vala b/main/src/ui/util/helper.vala index 3cadfffb..e51b8344 100644 --- a/main/src/ui/util/helper.vala +++ b/main/src/ui/util/helper.vala @@ -59,7 +59,13 @@ public static string get_conversation_display_name(StreamInteractor stream_inter } public static string get_display_name(StreamInteractor stream_interactor, Jid jid, Account account) { - if (stream_interactor.get_module(MucManager.IDENTITY).is_groupchat_occupant(jid, account)) { + if (stream_interactor.get_module(MucManager.IDENTITY).is_groupchat(jid, account)) { + string room_name = stream_interactor.get_module(MucManager.IDENTITY).get_room_name(account, jid); + if (room_name != null && room_name != jid.localpart) { + return room_name; + } + return jid.bare_jid.to_string(); + } else if (stream_interactor.get_module(MucManager.IDENTITY).is_groupchat_occupant(jid, account)) { return jid.resourcepart; } else { if (jid.equals_bare(account.bare_jid)) { @@ -118,10 +124,6 @@ public static void force_background(Gtk.Widget widget, string color, string sele force_css(widget, force_background_css.printf(selector, color)); } -public static void force_base_background(Gtk.Widget widget, string selector = "*") { - force_background(widget, "@theme_base_color", selector); -} - public static void force_color(Gtk.Widget widget, string color, string selector = "*") { force_css(widget, force_color_css.printf(selector, color)); } @@ -142,4 +144,63 @@ public static bool is_24h_format() { return settings_format == "24h" || p_format == " "; } +public static string parse_add_markup(string s_, string? highlight_word, bool parse_links, bool parse_text_markup, bool already_escaped_ = false) { + string s = s_; + bool already_escaped = already_escaped_; + + if (parse_links) { + Regex url_regex = new Regex("""(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))"""); + MatchInfo match_info; + url_regex.match(s.down(), 0, out match_info); + if (match_info.matches()) { + int start, end; + match_info.fetch_pos(0, out start, out end); + string link = s[start:end]; + return parse_add_markup(s[0:start], highlight_word, parse_links, parse_text_markup, already_escaped) + + "<a href=\"" + Markup.escape_text(link) + "\">" + parse_add_markup(link, highlight_word, false, false, already_escaped) + "</a>" + + parse_add_markup(s[end:s.length], highlight_word, parse_links, parse_text_markup, already_escaped); + } + } + + if (!already_escaped) { + s = Markup.escape_text(s); + already_escaped = true; + } + + if (highlight_word != null) { + Regex highlight_regex = new Regex("\\b" + Regex.escape_string(highlight_word.down()) + "\\b"); + MatchInfo match_info; + highlight_regex.match(s.down(), 0, out match_info); + if (match_info.matches()) { + int start, end; + match_info.fetch_pos(0, out start, out end); + return parse_add_markup(s[0:start], highlight_word, parse_links, parse_text_markup, already_escaped) + + "<b>" + s[start:end] + "</b>" + + parse_add_markup(s[end:s.length], highlight_word, parse_links, parse_text_markup, already_escaped); + } + } + + if (parse_text_markup) { + string[] markup_string = new string[]{"`", "_", "*"}; + string[] convenience_tag = new string[]{"tt", "i", "b"}; + + for (int i = 0; i < markup_string.length; i++) { + Regex regex = new Regex(Regex.escape_string(markup_string[i]) + ".+" + Regex.escape_string(markup_string[i])); + MatchInfo match_info; + regex.match(s.down(), 0, out match_info); + if (match_info.matches()) { + int start, end; + match_info.fetch_pos(0, out start, out end); + start += markup_string[i].length; + end -= markup_string[i].length; + return parse_add_markup(s[0:start], highlight_word, parse_links, parse_text_markup, already_escaped) + + @"<$(convenience_tag[i])>" + s[start:end] + @"</$(convenience_tag[i])>" + + parse_add_markup(s[end:s.length], highlight_word, parse_links, parse_text_markup, already_escaped); + } + } + } + + return s; +} + } |