aboutsummaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/CMakeLists.txt18
-rw-r--r--main/data/conversation_list_titlebar.ui15
-rw-r--r--main/data/conversation_selector/conversation_row.ui1
-rw-r--r--main/data/conversation_selector/view.ui15
-rw-r--r--main/data/conversation_summary/view.ui7
-rw-r--r--main/data/global_search.ui170
-rw-r--r--main/data/im.dino.Dino.appdata.xml53
-rw-r--r--main/data/im.dino.Dino.appdata.xml.in14
-rw-r--r--main/data/manage_accounts/add_account_dialog.ui478
-rw-r--r--main/data/menu_add.ui1
-rw-r--r--main/data/menu_app.ui1
-rw-r--r--main/data/menu_conversation.ui1
-rw-r--r--main/data/search_autocomplete.ui24
-rw-r--r--main/data/theme.css32
-rw-r--r--main/data/unified_main_content.ui100
-rw-r--r--main/po/LINGUAS2
-rw-r--r--main/po/ar.po398
-rw-r--r--main/po/ca.po204
-rw-r--r--main/po/de.po213
-rw-r--r--main/po/dino.pot190
-rw-r--r--main/po/en.po190
-rw-r--r--main/po/eo.po193
-rw-r--r--main/po/es.po213
-rw-r--r--main/po/eu.po215
-rw-r--r--main/po/fi.po204
-rw-r--r--main/po/fr.po212
-rw-r--r--main/po/gl.po659
-rw-r--r--main/po/hu.po662
-rw-r--r--main/po/it.po215
-rw-r--r--main/po/ja.po204
-rw-r--r--main/po/lb.po211
-rw-r--r--main/po/nb.po229
-rw-r--r--main/po/nl.po213
-rw-r--r--main/po/nl_BE.po211
-rw-r--r--main/po/pl.po229
-rw-r--r--main/po/pt_BR.po233
-rw-r--r--main/po/ro.po211
-rw-r--r--main/po/ru.po204
-rw-r--r--main/po/zh_Hans.po204
-rw-r--r--main/src/ui/application.vala2
-rw-r--r--main/src/ui/avatar_image.vala57
-rw-r--r--main/src/ui/chat_input/view.vala3
-rw-r--r--main/src/ui/contact_details/muc_config_form_provider.vala50
-rw-r--r--main/src/ui/conversation_list_titlebar.vala1
-rw-r--r--main/src/ui/conversation_selector/chat_row.vala54
-rw-r--r--main/src/ui/conversation_selector/conversation_row.vala119
-rw-r--r--main/src/ui/conversation_selector/groupchat_pm_row.vala43
-rw-r--r--main/src/ui/conversation_selector/groupchat_row.vala26
-rw-r--r--main/src/ui/conversation_selector/list.vala11
-rw-r--r--main/src/ui/conversation_selector/view.vala33
-rw-r--r--main/src/ui/conversation_summary/chat_state_populator.vala4
-rw-r--r--main/src/ui/conversation_summary/content_item_widget_factory.vala227
-rw-r--r--main/src/ui/conversation_summary/content_populator.vala110
-rw-r--r--main/src/ui/conversation_summary/conversation_item_skeleton.vala2
-rw-r--r--main/src/ui/conversation_summary/conversation_view.vala223
-rw-r--r--main/src/ui/conversation_summary/date_separator_populator.vala4
-rw-r--r--main/src/ui/conversation_summary/default_file_display.vala95
-rw-r--r--main/src/ui/conversation_summary/default_message_display.vala58
-rw-r--r--main/src/ui/conversation_summary/file_populator.vala54
-rw-r--r--main/src/ui/conversation_summary/image_display.vala137
-rw-r--r--main/src/ui/conversation_summary/message_populator.vala81
-rw-r--r--main/src/ui/conversation_summary/message_textview.vala158
-rw-r--r--main/src/ui/conversation_summary/slashme_message_display.vala79
-rw-r--r--main/src/ui/conversation_titlebar/search_entry.vala30
-rw-r--r--main/src/ui/conversation_titlebar/view.vala9
-rw-r--r--main/src/ui/global_search.vala267
-rw-r--r--main/src/ui/manage_accounts/add_account_dialog.vala230
-rw-r--r--main/src/ui/manage_accounts/dialog.vala9
-rw-r--r--main/src/ui/notifications.vala38
-rw-r--r--main/src/ui/unified_window.vala107
-rw-r--r--main/src/ui/util/data_forms.vala57
-rw-r--r--main/src/ui/util/helper.vala71
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;
+}
+
}