diff --git a/kcm/kcm_networkmanagement.desktop b/kcm/kcm_networkmanagement.desktop index 80771bbb..59111a8b 100755 --- a/kcm/kcm_networkmanagement.desktop +++ b/kcm/kcm_networkmanagement.desktop @@ -1,139 +1,141 @@ [Desktop Entry] Exec=kcmshell5 kcm_networkmanagement Icon=preferences-system-network Type=Service X-KDE-ServiceTypes=KCModule X-KDE-Library=kcm_networkmanagement X-KDE-ParentApp=kcontrol X-KDE-System-Settings-Parent-Category=network X-KDE-Weight=40 Name=Connections Name[ar]=الاتّصالات Name[ast]=Conexones Name[ca]=Connexions Name[ca@valencia]=Connexions Name[cs]=Spojení Name[da]=Forbindelser Name[de]=Verbindungen Name[el]=Συνδέσεις Name[en_GB]=Connections Name[es]=Conexiones Name[et]=Ühendused Name[eu]=Konexioak Name[fi]=Yhteydet Name[fr]=Connexions Name[gl]=Conexións Name[he]=חיבורים Name[hu]=Kapcsolatok +Name[ia]=Connexiones Name[id]=Koneksi Name[it]=Connessioni Name[ja]=接続 Name[ko]=연결 Name[lt]=Ryšiai Name[ml]=ബന്ധങ്ങള്‍ Name[nl]=Verbindingen Name[nn]=Tilkoplingar Name[pa]=ਕਨੈਕਸ਼ਨ Name[pl]=Połączenia Name[pt]=Ligações Name[pt_BR]=Conexões Name[ru]=Соединения Name[sk]=Pripojenia Name[sl]=Povezave Name[sr]=Везе Name[sr@ijekavian]=Везе Name[sr@ijekavianlatin]=Veze Name[sr@latin]=Veze Name[sv]=Anslutningar Name[tg]=Пайвастҳо Name[tr]=Bağlantılar Name[uk]=З’єднання Name[x-test]=xxConnectionsxx Name[zh_CN]=连接 Name[zh_TW]=連線 Comment=Edit your Network Connections Comment[ar]=حرّر اتّصالاتك الشّبكيّة Comment[ast]=Edita les conexones de rede Comment[ca]=Edita les connexions de xarxa Comment[ca@valencia]=Edita les connexions de xarxa Comment[cs]=Upravit vaše síťová spojení Comment[da]=Redigér dine netværksforbindelser Comment[de]=Bearbeiten Sie Ihre Netzwerkverbindungen Comment[el]=Επεξεργασία των συνδέσεων δικτύου Comment[en_GB]=Edit your Network Connections Comment[es]=Editar las conexiones de red Comment[et]=Võrguühenduste muutmine Comment[eu]=Editatu zure sareko konexioak Comment[fi]=Verkkoyhteyksien muokkaus Comment[fr]=Modifier vos connexions réseau Comment[gl]=Edite as súas conexións de rede Comment[he]=ערוך את חיבורי הרשת שלך Comment[hu]=A hálózati kapcsolatok szerkesztése +Comment[ia]=Modifica tu Connexiones de Rete Comment[id]=Edit Koneksi Jaringanmu Comment[it]=Modifica le tue connessioni di rete Comment[ja]=ネットワーク接続を編集 Comment[ko]=네트워크 연결 편집 Comment[lt]=Taisyti tinklo ryšius Comment[ml]=നിങ്ങളുടെ നെറ്റ്‌വർക്ക് ബന്ധങ്ങള്‍ എഡിറ്റുചെയ്യുക Comment[nl]=Bewerk uw netwerkverbindingen Comment[nn]=Rediger nettverkstilkoplingar Comment[pa]=ਆਪਣੇ ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨਾਂ ਨੂੰ ਸੋਧੋ Comment[pl]=Edytuj swoje połączenia sieciowe Comment[pt]=Editar as Suas Ligações de Rede Comment[pt_BR]=Edite suas conexões de rede Comment[ru]=Настройка сетевых соединений Comment[sk]=Upraviť vaše sieťové pripojenia Comment[sl]=Uredite vaše omrežne povezave Comment[sr]=Уређујте мрежне везе Comment[sr@ijekavian]=Уређујте мрежне везе Comment[sr@ijekavianlatin]=Uređujte mrežne veze Comment[sr@latin]=Uređujte mrežne veze Comment[sv]=Redigera dina nätverksanslutningar Comment[tr]=Ağ bağlantılarınızı düzenleyin Comment[uk]=Редагування ваших записів з’єднань з мережею Comment[x-test]=xxEdit your Network Connectionsxx Comment[zh_CN]=编辑您的网络连接 Comment[zh_TW]=編輯您的網路連線 X-KDE-Keywords=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic X-KDE-Keywords[ar]=شبكة,واي,فاي,إيثرنت,ايثرنت,هاتف,برودباند,vpn,إنترنت,انترنت X-KDE-Keywords[ast]=rede,wifi,ethernet,móvil,vpn,cobertoria,internet,tráficu,conexón X-KDE-Keywords[ca]=xarxa,wifi,ethernet,mòbil,banda ampla,vpn,internet,tràfic X-KDE-Keywords[ca@valencia]=xarxa,wifi,ethernet,mòbil,banda ampla,vpn,internet,tràfic X-KDE-Keywords[da]=netværk,wifi,ethernet,mobilt,bredbånd,vpn,internet,trafik X-KDE-Keywords[de]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic,netzwerk,mobil,breitband X-KDE-Keywords[el]=δίκτυο,wifi,ethernet,κινητό,ευρυζωνική,vpn,internet,κίνηση X-KDE-Keywords[en_GB]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic X-KDE-Keywords[es]=red,wifi,ethernet,móvil,banda ancha,vpn,internet,tráfico X-KDE-Keywords[et]=võrk,wifi,ethernet,mobiilne,püsiühendus,vpn,internet,liiklus X-KDE-Keywords[eu]=sarea,wifi,ethernet,mugikor,banda zabala,vpn,internet,trafikoa X-KDE-Keywords[fi]=verkko,langaton,ethernet,mobiili,laajakaista,vpn,internet,liikenne X-KDE-Keywords[fr]=réseau,wifi,ethernet,mobile,large bande,vpn,internet,traffic X-KDE-Keywords[gl]=network,rede,wifi,ethernet,mobile,móbil,broadband,banda larga,vpn,Internet,traffic,tráfico X-KDE-Keywords[he]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic,רשת,ויפי,אינטרנט,תעבורה X-KDE-Keywords[hu]=hálózat,wifi,ethernet,mobil,szélessáv,vpn,internet,forgalom X-KDE-Keywords[id]=jaringan,wifi,ethernet,seluler,broadband,vpn,internet,traffic X-KDE-Keywords[it]=rete,wifi,ethernet,mobile,banda larga,vpn,internet,traffico X-KDE-Keywords[ko]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic,네트워크,와이파이,무선랜,이더넷,모바일,광대역,인터넷,트래픽 X-KDE-Keywords[lt]=tinklas,belaidis,bevielis,wifi,laidinis,plačiajuostis,mobilusis,vpn,internetas,duomenų srautas X-KDE-Keywords[ml]=ശൃംഖല,വൈഫൈ,ഈതര്‍നെറ്റ്,മൊബൈൽ,ബ്രോഡ്‌ബാൻഡ്,വിപിഎൻ,ഇന്റർനെറ്റ്,ട്രാഫിക് X-KDE-Keywords[nl]=netwerk,wifi,ethernet,mobiel,breedband,vpn,internet,verkeer X-KDE-Keywords[nn]=nettverk,wifi,trådlaus,Ethernet,mobilt,breiband,VPN,Internett,trafikk,tilkopling,samband X-KDE-Keywords[pa]=ਨੈੱਟਵਰਕ,ਵਾਈਫਾਈ,ਵਾਈ-ਫਾਈ,ਮੋਬਾਈਲ,ਬਰਾਂਡਬੈਂਡ,ਵੀਪੀਐਨ,ਇੰਟਰਨੈੱਟ,ਟਰੈਫਿਕ X-KDE-Keywords[pl]=sieć,wifi,ethernet,komórkowy,mobilny,przenośny,szerokopasmowy,vpn,internet,ruch X-KDE-Keywords[pt]=rede,wifi,ethernet,móvel,banda larga,vpn,internet,tráfego X-KDE-Keywords[pt_BR]=rede,wifi,ethernet,cabeada,móvel,modem,vpn,internet,tráfego X-KDE-Keywords[ru]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic,сеть,беспроводная сеть,мобильный Интернет,широкополосная сеть,Интернет,трафик,вайфай,впн,виртуальная частная сеть,локальная сеть X-KDE-Keywords[sk]=sieť,wifi,ethernet,mobil,broadband,vpn,internet,prenos X-KDE-Keywords[sl]=omrežje,mreža,wifi,eternet,mobilno,širokopasovno,vpn,internet,promet X-KDE-Keywords[sr]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic,мрежа,вај‑фај,етернет,мобилни,широкопојасни,ВПН,Интернет,саобраћај X-KDE-Keywords[sr@ijekavian]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic,мрежа,вај‑фај,етернет,мобилни,широкопојасни,ВПН,Интернет,саобраћај X-KDE-Keywords[sr@ijekavianlatin]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic,mreža,Wi‑Fi,Ethernet,mobilni,širokopojasni,VPN,Internet,saobraćaj X-KDE-Keywords[sr@latin]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic,mreža,Wi‑Fi,Ethernet,mobilni,širokopojasni,VPN,Internet,saobraćaj X-KDE-Keywords[sv]=nätverk,wifi,ethernet,mobil,bredband,vpn,internet,trafik X-KDE-Keywords[tg]=шабака,wifi,интранет,мобилӣ,пайвасти паҳннаворvpn,интернет,равиш X-KDE-Keywords[tr]=ağ,wifi,ethernet,mobil,geniş bant,VPN,internet,trafik,kablosuz X-KDE-Keywords[uk]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic,мережа,вайфай,езернет,мобільна,широкосмугова,впн,інтернет,обмін,даними X-KDE-Keywords[x-test]=xxnetworkxx,xxwifixx,xxethernetxx,xxmobilexx,xxbroadbandxx,xxvpnxx,xxinternetxx,xxtrafficxx X-KDE-Keywords[zh_CN]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic,网络,无线,以太网,移动,宽带,互联网,因特网,流量 X-KDE-Keywords[zh_TW]=network,wifi,ethernet,mobile,broadband,vpn,internet,traffic diff --git a/kded/networkmanagement.desktop b/kded/networkmanagement.desktop index 553ed3bb..148a0225 100644 --- a/kded/networkmanagement.desktop +++ b/kded/networkmanagement.desktop @@ -1,84 +1,85 @@ [Desktop Entry] Name=Plasma Network Management module Name[ca]=Mòdul del Plasma per a la Gestió de la xarxa Name[cs]=Modul Plasma pro správu sítě Name[da]=Plasma netværkshåndteringsmodul Name[de]=Plasma-Netzwerkverwaltungsmodul Name[en_GB]=Plasma Network Management module Name[es]=Modulo de gestión de redes de Plasma Name[et]=Plasma võrguhalduse moodul Name[eu]=Plasmako Sareak Kudeatzeko modulua Name[fi]=Plasman verkonhallintamoduuli Name[fr]=Module de gestion du réseau pour Plasma Name[gl]=Módulo de xestión da rede de Plasma Name[hu]=Plasma hálózatkezelés modul +Name[ia]=Modulo de gestion de rete de Plasma Name[id]=Modul Pengelolaan Jaringan Plasma Name[it]=Modulo della gestione di rete di Plasma Name[lt]=Plasma tinklo valdymo modulis Name[ml]=പ്ലാസ്മ ശൃംഖല നടത്തിപ്പ്‌ മൊഡ്യൂൾ Name[nl]=Plasma module voor netwerkbeheer Name[nn]=Plasma-modul for nettverksstyring Name[pl]=Moduł Plazmy do zarządzania siecią Name[pt]=Módulo de Gestão de Rede do Plasma Name[pt_BR]=Módulo de Gerenciamento de Rede do Plasma Name[ru]=Модуль для управления сетью Name[sk]=Modul Plasma správa siete Name[sv]=Plasma nätverkshanteringsmodul Name[uk]=Модуль керування мережею Плазми Name[x-test]=xxPlasma Network Management modulexx Name[zh_CN]=Plasma 网络管理模块 Name[zh_TW]=Plasma 網路管理模組 Comment=Provides secrets to the NetworkManager daemon Comment[ar]=توفّر الأسرار لعفريت «مديرالشّبكة» Comment[ast]=Forne secretos al degorriu de NetworkManager Comment[bs]=Pruža tajne Upravljaču mreže daemon Comment[ca]=Proporciona secrets al dimoni NetworkManager Comment[ca@valencia]=Proporciona secrets al dimoni NetworkManager Comment[cs]=Poskytuje přihlašovací informace pro službu NetworkManageru Comment[da]=Giver hemmeligheder til NetworkManager-dæmonen Comment[de]=Stellt dem NetworkManager-Dienst vertrauliche Daten zur Verfügung Comment[el]=Παρέχει κωδικούς ασφαλείας στον δαίμονα NetworkManager Comment[en_GB]=Provides secrets to the NetworkManager daemon Comment[es]=Proporciona contraseñas al demonio de NetworkManager Comment[et]=Saladuste edastamine NetworkManageri deemonile Comment[eu]=«NetworkManager» daimonari sekretuak hornitzen dizkio Comment[fi]=Välittää salaisuuksia NetworkManager-palvelulle Comment[fr]=Fournit des mots de passe pour le démon NetworkManager Comment[gl]=Fornece segredos ao servizo de xestión da rede Comment[he]=מספק סיסמאות לשירות מנהל הרשתות Comment[hu]=Titkokat biztosít a NetworkManager démonhoz Comment[ia]=Forni secretos per le demon de NetworkManager Comment[id]=Menyediakan rahasia ke daemon NetworkManager Comment[it]=Fornisce i segreti al demone NetworkManager Comment[ko]=NetworkManager 데몬에 비밀 정보 제공 Comment[lt]=Teikia paslaptis NetworkManager tarnybai Comment[nb]=Forsyner NetworkManager-daemonen med hemmeligheter Comment[nds]=Stellt Anmellinformatschonen för den NetworkManager-Dämoon praat Comment[nl]=Levert secrets aan de NetworkManager-daemon Comment[nn]=Forsyner NetworkManager-tenesta med løyndomar Comment[pa]=ਨੈੱਟਵਰਕਮੈਨੇਜਰ ਡੈਮਨ ਲਈ ਭੇਤ ਦਿੰਦਾ ਹੈ Comment[pl]=Dostarcza danych poufnych do usługi Zarządzania Siecią Comment[pt]=Fornece as senhas do serviço NetworkManager Comment[pt_BR]=Fornece as senhas do serviço NetworkManager Comment[ro]=Furnizează secrete către demonul NetworkManager Comment[ru]=Предоставляет пароли и ключи демону NetworkManager Comment[sk]=Poskytuje tajnosti k démonu NetworkManager Comment[sl]=Ponuja skrivnosti za ozadnji program NetworkManager Comment[sr]=Доставља тајне демону Менаџера мреже Comment[sr@ijekavian]=Доставља тајне демону Менаџера мреже Comment[sr@ijekavianlatin]=Dostavlja tajne demonu Menadžera mreže Comment[sr@latin]=Dostavlja tajne demonu Menadžera mreže Comment[sv]=Tillhandahåller hemligheter till nätverkshanteringsdemonen Comment[tr]=AğYönetici yardımcısına şifreleri sağlar Comment[uk]=Надає реєстраційні дані фоновій службі NetworkManager Comment[x-test]=xxProvides secrets to the NetworkManager daemonxx Comment[zh_CN]=为 NetworkManager 守护程序提供密码 Comment[zh_TW]=提供網路管理員伺服程式的密碼 Type=Service X-KDE-ServiceTypes=KDEDModule X-KDE-ModuleType=Library X-KDE-Library=networkmanagement X-KDE-Kded-autoload=true X-KDE-Kded-load-on-demand=true X-KDE-Kded-phase=1 OnlyShowIn=KDE; diff --git a/kded/networkmanagement.notifyrc b/kded/networkmanagement.notifyrc index e3e33736..b9ed7026 100644 --- a/kded/networkmanagement.notifyrc +++ b/kded/networkmanagement.notifyrc @@ -1,861 +1,862 @@ [Global] IconName=applications-internet Name=Network management Name[ar]=إدارة الشّبكات Name[ast]=Xestión de redes Name[bs]=Upravljanje mrežom Name[ca]=Gestió de la xarxa Name[ca@valencia]=Gestió de la xarxa Name[cs]=Správa sítě Name[da]=Netværkshåndtering Name[de]=Netzwerkverwaltung Name[el]=Διαχείριση δικτύων Name[en_GB]=Network management Name[es]=Gestión de redes Name[et]=Võrguhaldur Name[eu]=Sare-kudeaketa Name[fi]=Verkonhallinta Name[fr]=Gestion du réseau Name[gl]=Xestión da rede Name[he]=ניהול רשת Name[hu]=Hálózatkezelés Name[ia]=Gestion de rete Name[id]=Pengelolaan jaringan Name[it]=Gestione della rete Name[ja]=ネットワーク管理 Name[ko]=네트워크 관리 Name[lt]=Tinklo valdymas Name[ml]=ശൃംഖല നടത്തിപ്പ്‌ Name[nb]=Nettverksstyring Name[nds]=Nettwarkpleeg Name[nl]=Netwerkbeheer Name[nn]=Nettverksstyring Name[pa]=ਨੈੱਟਵਰਕ ਪਰਬੰਧ Name[pl]=Zarządzanie siecią Name[pt]=Gestão de rede Name[pt_BR]=Gerenciamento de redes Name[ru]=Управление сетью Name[sk]=Správa siete Name[sl]=Upravljanje omrežij Name[sr]=Управљање мрежом Name[sr@ijekavian]=Управљање мрежом Name[sr@ijekavianlatin]=Upravljanje mrežom Name[sr@latin]=Upravljanje mrežom Name[sv]=Nätverkshantering Name[tg]=Идоракунии шабака Name[tr]=Ağ yönetimi Name[uk]=Керування мережею Name[x-test]=xxNetwork managementxx Name[zh_CN]=网络管理 Name[zh_TW]=網路管理 Comment=Network management Comment[ar]=إدارة الشّبكات Comment[ast]=Xestión de redes Comment[bs]=Upravljanje mrežom Comment[ca]=Gestió de la xarxa Comment[ca@valencia]=Gestió de la xarxa Comment[cs]=Správa sítě Comment[da]=Netværkshåndtering Comment[de]=Netzwerkverwaltung Comment[el]=Διαχείριση δικτύων Comment[en_GB]=Network management Comment[es]=Gestión de redes Comment[et]=Võrguhaldur Comment[eu]=Sare-kudeaketa Comment[fi]=Verkonhallinta Comment[fr]=Gestion du réseau Comment[gl]=Xestión da rede Comment[he]=ניהול רשת Comment[hu]=Hálózatkezelés Comment[ia]=Gestion de rete Comment[id]=Pengelolaan jaringan Comment[it]=Gestione della rete Comment[ja]=ネットワーク管理 Comment[ko]=네트워크 관리 Comment[lt]=Tinklo valdymas Comment[ml]=ശൃംഖല നടത്തിപ്പ്‌ Comment[nb]=Nettverksstyring Comment[nds]=Nettwarkpleeg Comment[nl]=Netwerkbeheer Comment[nn]=Nettverksstyring Comment[pa]=ਨੈੱਟਵਰਕ ਪਰਬੰਧ Comment[pl]=Zarządzanie siecią Comment[pt]=Gestão de rede Comment[pt_BR]=Gerenciamento de redes Comment[ru]=Управление сетью Comment[sk]=Správa siete Comment[sl]=Upravljanje omrežij Comment[sr]=Управљање мрежом Comment[sr@ijekavian]=Управљање мрежом Comment[sr@ijekavianlatin]=Upravljanje mrežom Comment[sr@latin]=Upravljanje mrežom Comment[sv]=Nätverkshantering Comment[tg]=Идоракунии шабака Comment[tr]=Ağ yönetimi Comment[uk]=Керування мережею Comment[x-test]=xxNetwork managementxx Comment[zh_CN]=网络管理 Comment[zh_TW]=網路管理 [Event/ConnectionActivated] Name=Connection activated Name[ar]=فُعّل الاتّصال Name[ast]=Activóse una conexón Name[bs]=Konekcija aktivirana Name[ca]=Connexió activada Name[ca@valencia]=Connexió activada Name[cs]=Spojení aktivováno Name[da]=Forbindelse aktiveret Name[de]=Verbindung aktiviert Name[el]=Η σύνδεση ενεργοποιήθηκε Name[en_GB]=Connection activated Name[es]=Conexión activada Name[et]=Ühendus on aktiivne Name[eu]=Konexioa aktibatu da Name[fi]=Yhteys muodostettu Name[fr]=Connexion activée Name[gl]=Activouse unha conexión Name[he]=החיבור פעיל Name[hu]=Kapcsolat aktiválva Name[ia]=Connexion activate Name[id]=Koneksi yang diaktifkan Name[it]=Connessione attivata Name[ja]=接続が有効化されました Name[ko]=연결 활성화됨 Name[lt]=Ryšys aktyvuotas Name[ml]=ബന്ധം സജീവമാക്കി Name[nb]=Tilkobling aktivert Name[nds]=Verbinnen anmaakt Name[nl]=Verbinding geactiveerd Name[nn]=Kopla til Name[pa]=ਕੁਨੈਕਸ਼ਨ ਸਰਗਰਮ ਹੈ Name[pl]=Nawiązano połączenie Name[pt]=Ligação activada Name[pt_BR]=Conexão ativada Name[ru]=Соединение установлено Name[sk]=Pripojenie aktivované Name[sl]=Povezava omogočena Name[sr]=Веза активирана Name[sr@ijekavian]=Веза активирана Name[sr@ijekavianlatin]=Veza aktivirana Name[sr@latin]=Veza aktivirana Name[sv]=Anslutning aktiverad Name[tr]=Bağlantı etkinleştirildi Name[uk]=З’єднання задіяно Name[x-test]=xxConnection activatedxx Name[zh_CN]=连接已激活 Name[zh_TW]=連線已啟動 IconName=applications-internet Urgency=Low Action=Popup [Event/ConnectionDeactivated] Name=Connection deactivated Name[ar]=عُطّل الاتّصال Name[ast]=Desactivóse la conexón Name[bs]=Konekcija deaktivirana Name[ca]=Connexió desactivada Name[ca@valencia]=Connexió desactivada Name[cs]=Spojení deaktivováno Name[da]=Forbindelse deaktiveret Name[de]=Verbindung deaktiviert Name[el]=Η σύνδεση απενεργοποιήθηκε Name[en_GB]=Connection deactivated Name[es]=Conexión desactivada Name[et]=Ühendus ei ole aktiivne Name[eu]=Konexioa desaktibatu da Name[fi]=Yhteys katkaistu Name[fr]=Connexion désactivée Name[gl]=Desactivouse a conexión Name[he]=החיבור לא פעיל Name[hu]=Kapcsolat deaktiválva Name[ia]=Connexion deactivate Name[id]=Koneksi yang dinonaktifkan Name[it]=Connessione disattivata Name[ja]=接続が無効化されました Name[ko]=연결 비활성화됨 Name[lt]=Ryšys išjungtas Name[ml]=ബന്ധം നിർജ്ജീവമാക്കി Name[nb]=Tilkobling deaktivert Name[nds]=Verbinnen utmaakt Name[nl]=Verbinding gedeactiveerd Name[nn]=Kopla frå Name[pa]=ਕਨੈਕਸ਼ਨ ਡਿ-ਐਕਟੀਵੇਟ ਹੈ Name[pl]=Zerwano połączenie Name[pt]=Ligação desactivada Name[pt_BR]=Conexão desativada Name[ru]=Соединение отключено Name[sk]=Pripojenie deaktivované Name[sl]=Povezava onemogočena Name[sr]=Веза деактивирана Name[sr@ijekavian]=Веза деактивирана Name[sr@ijekavianlatin]=Veza deaktivirana Name[sr@latin]=Veza deaktivirana Name[sv]=Anslutning inaktiverad Name[tr]=Bağlantı sonlandırıldı Name[uk]=З’єднання вимкнено Name[x-test]=xxConnection deactivatedxx Name[zh_CN]=连接已取消激活 Name[zh_TW]=連線已中止 IconName=applications-internet Urgency=Low Action=Popup [Event/ConnectionAdded] Name=Connection added Name[ar]=أُضيف الاتّصال Name[ast]=Amestóse una conexón Name[bs]=Konekcija dodana Name[ca]=S'ha afegit una connexió Name[ca@valencia]=S'ha afegit una connexió Name[cs]=Spojení bylo přidáno Name[da]=Forbindelse tilføjet Name[de]=Verbindung hinzugefügt Name[el]=Η σύνδεση προστέθηκε Name[en_GB]=Connection added Name[es]=Conexión añadida Name[et]=Ühendus lisati Name[eu]=Konexioa gehitu da Name[fi]=Yhteys lisätty Name[fr]=Connexion ajoutée Name[gl]=Engadiuse unha conexión Name[he]=נוסף חיבור Name[hu]=Kapcsolat hozzáadva Name[ia]=Connexion addite Name[id]=Koneksi yang ditambahkan Name[it]=Connessione aggiunta Name[ja]=接続が追加されました Name[ko]=연결 추가됨 Name[lt]=Ryšys pridėtas Name[ml]=ബന്ധം ചേർത്തു Name[nb]=Tilkobling lagt til Name[nds]=Verbinnen toföögt Name[nl]=Verbinding toegevoegd Name[nn]=Lagt til tilkopling Name[pa]=ਕੁਨੈਕਸ਼ਨ ਜੋੜਿਆ Name[pl]=Dodano połączenie Name[pt]=Ligação adicionada Name[pt_BR]=Conexão adicionada Name[ru]=Соединение добавлено Name[sk]=Pripojenie pridané Name[sl]=Povezava dodana Name[sr]=Веза додата Name[sr@ijekavian]=Веза додата Name[sr@ijekavianlatin]=Veza dodata Name[sr@latin]=Veza dodata Name[sv]=Anslutning har lagts till Name[tr]=Bağlantı eklendi Name[uk]=Додано з’єднання Name[x-test]=xxConnection addedxx Name[zh_CN]=连接已添加 Name[zh_TW]=連線已新增 IconName=applications-internet Action=None [Event/ConnectionRemoved] Name=Connection removed Name[ar]=أُزيل الاتّصال Name[ast]=Desanicióse la conexón Name[bs]=Konekcija uklonjena Name[ca]=S'ha eliminat una connexió Name[ca@valencia]=S'ha eliminat una connexió Name[cs]=Spojení bylo odstraněno Name[da]=Forbindelse fjernet Name[de]=Verbindung entfernt Name[el]=Η σύνδεση αφαιρέθηκε Name[en_GB]=Connection removed Name[es]=Conexión eliminada Name[et]=Ühendus eemaldati Name[eu]=Konexioa kendu da Name[fi]=Yhteys poistettu Name[fr]=Connexion supprimée Name[gl]=Retirouse unha conexión Name[he]=הוסר חיבור Name[hu]=Kapcsolat eltávolítva Name[ia]=Connexion removite Name[id]=Koneksi yang dihapus Name[it]=Connessione rimossa Name[ja]=接続が削除されました Name[ko]=연결 삭제됨 Name[lt]=Ryšys pašalintas Name[ml]=ബന്ധം നീക്കംചെയ്‌തു Name[nb]=Tilkobling fjernet Name[nds]=Verbinnen wegmaakt Name[nl]=Verbinding verwijderd Name[nn]=Fjerna tilkopling Name[pa]=ਕੁਨੈਕਸ਼ਨ ਹਟਾਇਆ Name[pl]=Usunięto połączenie Name[pt]=Ligação removida Name[pt_BR]=Conexão removida Name[ru]=Соединение удалено Name[sk]=Pripojenie odstránené Name[sl]=Povezava odstranjena Name[sr]=Веза уклоњена Name[sr@ijekavian]=Веза уклоњена Name[sr@ijekavianlatin]=Veza uklonjena Name[sr@latin]=Veza uklonjena Name[sv]=Anslutning borttagen Name[tr]=Bağlantı silindi Name[uk]=Вилучено з’єднання Name[x-test]=xxConnection removedxx Name[zh_CN]=连接已删除 Name[zh_TW]=連線已移除 IconName=applications-internet Action=None [Event/ConnectionUpdated] Name=Connection updated Name[ar]=حُدّث الاتّصال Name[ast]=Anovóse la conexón Name[bs]=Konekcija ažurirana Name[ca]=S'ha actualitzat una connexió Name[ca@valencia]=S'ha actualitzat una connexió Name[cs]=Spojení bylo aktualizováno Name[da]=Forbindelse opdateret Name[de]=Verbindung aktualisiert Name[el]=Η σύνδεση ενημερώθηκε Name[en_GB]=Connection updated Name[es]=Conexión actualizada Name[et]=Ühendust uuendati Name[eu]=Konexioa eguneratu da Name[fi]=Yhteys päivitetty Name[fr]=Connexion mise à jour Name[gl]=Actualizouse unha conexión Name[he]=חיבור עודכן Name[hu]=Kapcsolat frissítve Name[ia]=Connexion actualisate Name[id]=Koneksi yang diperbarui Name[it]=Connessione aggiornata Name[ja]=接続が更新されました Name[ko]=연결 업데이트됨 Name[lt]=Ryšys atnaujintas Name[ml]=ബന്ധം പുതുക്കി Name[nb]=Tilkobling oppdatert Name[nds]=Verbinnen opfrischt Name[nl]=Verbinding bijgewerkt Name[nn]=Oppdatert tilkopling Name[pa]=ਕੁਨੈਕਸ਼ਨ ਅੱਪਡੇਟ ਕੀਤਾ Name[pl]=Uaktualniono połączenie Name[pt]=Ligação actualizada Name[pt_BR]=Conexão atualizada Name[ru]=Соединение обновлено Name[sk]=Pripojenie aktualizované Name[sl]=Povezava posodobljena Name[sr]=Веза ажурирана Name[sr@ijekavian]=Веза ажурирана Name[sr@ijekavianlatin]=Veza ažurirana Name[sr@latin]=Veza ažurirana Name[sv]=Anslutning uppdaterad Name[tr]=Bağlantı güncellendi Name[uk]=Оновлено з’єднання Name[x-test]=xxConnection updatedxx Name[zh_CN]=连接已更新 Name[zh_TW]=連線已更新 IconName=applications-internet Action=None [Event/DeviceFailed] Name=Device failed Name[ar]=فشل الجهاز Name[ast]=Falló'l preséu Name[bs]=Uređaj pao Name[ca]=El dispositiu ha fallat Name[ca@valencia]=El dispositiu ha fallat Name[cs]=Zařízení selhalo Name[da]=Enheden fejlede Name[de]=Gerät nicht bereit Name[el]=Η συσκευή απέτυχε Name[en_GB]=Device failed Name[es]=El dispositivo ha fallado Name[et]=Seade nurjus Name[eu]=Gailuak huts egin du Name[fi]=Laite lakkasi toimimasta Name[fr]=Le périphérique a rencontré une erreur Name[gl]=O dispositivo fallou. Name[he]=ההתקן נכשל Name[hu]=Az eszköz meghiúsult Name[ia]=Dispositivo falleva Name[id]=Perangkat yang gagal Name[it]=Dispositivo non funzionante Name[ko]=장치 오류 Name[lt]=Įrenginys patyrė nesėkmę Name[nb]=Enhet sviktet Name[nds]=Reedschap-Fehler Name[nl]=Apparaat is mislukt Name[nn]=Eining svikta Name[pa]=ਜੰਤਰ ਫੇਲ੍ਹ ਹੈ Name[pl]=Niepowodzenie urządzenia Name[pt]=Não foi possível activar o dispositivo Name[pt_BR]=Falha no dispositivo Name[ru]=Сбой устройства Name[sk]=Zariadenie zlyhalo Name[sl]=Naprava je spodletela Name[sr]=Уређај пропао Name[sr@ijekavian]=Уређај пропао Name[sr@ijekavianlatin]=Uređaj propao Name[sr@latin]=Uređaj propao Name[sv]=Enhet misslyckades Name[tr]=Aygıt başarısız oldu Name[uk]=Помилка пристрою Name[x-test]=xxDevice failedxx Name[zh_CN]=设备失败 Name[zh_TW]=裝置失敗 IconName=applications-internet Action=Popup [Event/FailedToActivateConnection] Name=Failed to activate connection Name[ar]=فشل تفعيل الاتّصال Name[ast]=Fallu al activar la conexón Name[bs]=Neuspjela aktivacija konekcije Name[ca]=Ha fallat en activar la connexió Name[ca@valencia]=Ha fallat en activar la connexió Name[cs]=Spojení nelze aktivovat Name[da]=Kunne ikke aktivere forbindelsen Name[de]=Die Verbindung kann nicht aktiviert werden Name[el]=Αποτυχία ενεργοποίησης σύνδεσης Name[en_GB]=Failed to activate connection Name[es]=La activación de la conexión ha fallado Name[et]=Ühenduse aktiveerimine nurjus Name[eu]=Konexioa aktibatzea huts egin du Name[fi]=Yhteyden muodostaminen epäonnistui Name[fr]=Impossible d'activer la connexion Name[gl]=Non se puido activar a conexión Name[he]=נכשל בהפעלת החיבור Name[hu]=Nem sikerült aktiválni a kapcsolatot Name[ia]=Il faleva activar connexion Name[id]=Gagal mengaktifkan koneksi Name[it]=Attivazione del dispositivo non riuscita Name[ja]=接続の有効化に失敗しました Name[ko]=연결을 활성화할 수 없음 Name[lt]=Nepavyko aktyvuoti ryšio Name[nb]=Klarte ikke å aktivere tilkobling Name[nds]=Verbinnen lett sik nich anmaken Name[nl]=Activeren van verbinding is mislukt Name[nn]=Klarte ikkje å starta tilkopling Name[pa]=ਕੁਨੈਕਸ਼ਨ ਸਰਗਰਮ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ Name[pl]=Nieudane nawiązywanie połączenia Name[pt]=Não foi possível activar a ligação Name[pt_BR]=Falha ao ativar a conexão Name[ru]=Не удалось задействовать соединение Name[sk]=Zlyhalo aktivovanie pripojenia Name[sl]=Povezave ni bilo mogoče omogočiti Name[sr]=Пропало активирање везе Name[sr@ijekavian]=Пропало активирање везе Name[sr@ijekavianlatin]=Propalo aktiviranje veze Name[sr@latin]=Propalo aktiviranje veze Name[sv]=Aktivering av anslutningen misslyckades Name[tr]=Bağlantı etkinleştirilemedi Name[uk]=Не вдалося задіяти з’єднання Name[x-test]=xxFailed to activate connectionxx Name[zh_CN]=连接激活失败 Name[zh_TW]=啟動連線失敗 IconName=applications-internet Action=Popup [Event/FailedToAddConnection] Name=Failed to add connection Name[ar]=فشلت إضافة الاتّصال Name[ast]=Fallu al amestar la conexón Name[bs]=Neuspjelo dodavanje konekcije Name[ca]=Ha fallat en afegir la connexió Name[ca@valencia]=Ha fallat en afegir la connexió Name[cs]=Přidání spojení selhalo Name[da]=Kunne ikke tilføje forbindelsen Name[de]=Die Verbindung kann nicht hinzugefügt werden Name[el]=Αποτυχία προσθήκης σύνδεσης Name[en_GB]=Failed to add connection Name[es]=Ha ocurrido un fallo al añadir la conexión Name[et]=Ühenduse lisamine nurjus Name[eu]=Konexioa gehitzea huts egin du Name[fi]=Yhteyden lisääminen epäonnistui Name[fr]=Impossible d'ajouter la connexion Name[gl]=Non se puido engadir a conexión Name[he]=נכשל בהוספת חיבור Name[hu]=Nem sikerült hozzáadni a kapcsolatot Name[ia]=Il falleva adder connexion Name[id]=Gagal menambahkan koneksi Name[it]=Aggiunta della connessione non riuscita Name[ja]=接続の追加に失敗しました Name[ko]=연결을 추가할 수 없음 Name[lt]=Nepavyko pridėti ryšio Name[nb]=Klarte ikke å legge til tilkobling Name[nds]=Verbinnen lett sik nich tofögen Name[nl]=Toevoegen van verbinding is mislukt Name[nn]=Klarte ikkje å leggja til tilkopling Name[pa]=ਕਨੈਕਸ਼ਨ ਜੋੜਨ ਲਈ ਫੇਲ੍ਹ ਹੈ Name[pl]=Nieudane dodawanie połączenia Name[pt]=Não foi possível adicionar a ligação Name[pt_BR]=Falha ao adicionar uma conexão Name[ru]=Не удалось добавить соединение Name[sk]=Zlyhalo pridanie pripojenia Name[sl]=Povezave ni bilo mogoče dodati Name[sr]=Пропало додавање везе Name[sr@ijekavian]=Пропало додавање везе Name[sr@ijekavianlatin]=Propalo dodavanje veze Name[sr@latin]=Propalo dodavanje veze Name[sv]=Tillägg av anslutning misslyckades Name[tr]=Bağlantı eklenemedi Name[uk]=Не вдалося додати з’єднання Name[x-test]=xxFailed to add connectionxx Name[zh_CN]=添加连接失败 Name[zh_TW]=新增連線失敗 IconName=applications-internet Action=Popup [Event/FailedToDeactivateConnection] Name=Failed to deactivate connection Name[ar]=فشل تعطيل الاتّصال Name[ast]=Fallu al desactivar la conexón Name[bs]=Neuspjelo deaktiviranje konekcije Name[ca]=Ha fallat en desactivar la connexió Name[ca@valencia]=Ha fallat en desactivar la connexió Name[cs]=Spojení nelze deaktivovat Name[da]=Kunne ikke deaktivere forbindelsen Name[de]=Die Verbindung kann nicht deaktiviert werden Name[el]=Αποτυχία απενεργοποίησης σύνδεσης Name[en_GB]=Failed to deactivate connection Name[es]=La desactivación de la conexión ha fallado Name[et]=Ühenduse deaktiveerimine nurjus Name[eu]=Konexioa desaktibatzea huts egin du Name[fi]=Yhteyden katkaiseminen epäonnistui Name[fr]=Impossible de désactiver la connexion Name[gl]=Non se puido desactivar a conexión Name[he]=נכשל בכיבוי חיבור Name[hu]=Nem sikerült deaktiválni a kapcsolatot Name[ia]=Il falleva deactivar connexion Name[id]=Gagal menonaktifkan koneksi Name[it]=Disattivazione della connessione non riuscita Name[ja]=接続の無効化に失敗しました Name[ko]=연결을 비활성화할 수 없음 Name[lt]=Nepavyko išjungti ryšio Name[nb]=Klarte ikke å deaktivere tilkobling Name[nds]=Verbinnen lett sik nich utmaken Name[nl]=Deactiveren van verbinding is mislukt Name[nn]=Klarte ikkje å stoppa tilkopling Name[pa]=ਕਨੈਕਸ਼ਨ ਡਿ-ਐਕਟੀਵੇਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ Name[pl]=Nieudane wyłączanie połączenia Name[pt]=Não foi possível desactivar a ligação Name[pt_BR]=Falha ao desativar a conexão Name[ru]=Не удалось отключить соединение Name[sk]=Zlyhala deaktivácia pripojenia Name[sl]=Povezave ni bilo mogoče onemogočiti Name[sr]=Пропало деактивирање везе Name[sr@ijekavian]=Пропало деактивирање везе Name[sr@ijekavianlatin]=Propalo deaktiviranje veze Name[sr@latin]=Propalo deaktiviranje veze Name[sv]=Inaktivering av anslutningen misslyckades Name[tr]=Bağlantı kapatılamadı Name[uk]=Не вдалося вимкнути з’єднання Name[x-test]=xxFailed to deactivate connectionxx Name[zh_CN]=取消激活连接失败 Name[zh_TW]=中止連線失敗 IconName=applications-internet Action=Popup [Event/FailedToRemoveConnection] Name=Failed to remove connection Name[ar]=فشلت إزالة الاتّصال Name[ast]=Fallu al desaniciar la conexón Name[bs]=Neuspjelo uklanjanje konekcije Name[ca]=Ha fallat en eliminar la connexió Name[ca@valencia]=Ha fallat en eliminar la connexió Name[cs]=Spojení nelze odstranit Name[da]=Kunne ikke fjerne forbindelsen Name[de]=Die Verbindung kann nicht entfernt werden Name[el]=Αποτυχία αφαίρεσης σύνδεσης Name[en_GB]=Failed to remove connection Name[es]=La eliminación de la conexión ha fallado Name[et]=Ühenduse eemaldamine nurjus Name[eu]=Konexioa kentzea huts egin du Name[fi]=Yhteyden poisto epäonnistui Name[fr]=Impossible de supprimer la connexion Name[gl]=Non se puido retirar a conexión Name[he]=נכשל בהסרת חיבור Name[hu]=Nem sikerült eltávolítani a kapcsolatot Name[ia]=Il afelleva remover connexion Name[id]=Gagal menghapus koneksi Name[it]=Rimozione della connessione non riuscita Name[ja]=接続の削除に失敗しました Name[ko]=연결을 삭제할 수 없음 Name[lt]=Nepavyko pašalinti ryšio Name[nb]=Klarte ikke å fjerne tilkobling Name[nds]=Verbinnen lett sik nich wegmaken Name[nl]=Verwijderen van verbinding is mislukt Name[nn]=Klarte ikkje å fjerna tilkopling Name[pa]=ਕਨੈਕਸ਼ਨ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ ਹੈ Name[pl]=Nieudane usuwanie połączenia Name[pt]=Não foi possível remover a ligação Name[pt_BR]=Falha ao remover a conexão Name[ru]=Не удалось удалить соединение Name[sk]=Zlyhalo odstránenie pripojenie Name[sl]=Povezave ni bilo mogoče odstraniti Name[sr]=Пропало уклањање везе Name[sr@ijekavian]=Пропало уклањање везе Name[sr@ijekavianlatin]=Propalo uklanjanje veze Name[sr@latin]=Propalo uklanjanje veze Name[sv]=Borttagning av anslutning misslyckades Name[tr]=Bağlantı silinemedi Name[uk]=Не вдалося вилучити з’єднання Name[x-test]=xxFailed to remove connectionxx Name[zh_CN]=删除连接失败 Name[zh_TW]=移除連線失敗 IconName=applications-internet Action=Popup [Event/FailedToGetSecrets] Name=Failed to get secrets Name[ar]=فشل جلب الأسرار Name[ast]=Fallu al consiguir los secretos Name[bs]=Nesupjelo uzimanje tajni Name[ca]=Ha fallat en obtenir els secrets Name[ca@valencia]=Ha fallat en obtindre els secrets Name[cs]=Selhalo získávání přístupu Name[da]=Kunne ikke hente hemmeligheder Name[de]=Anmeldedaten können nicht bezogen werden Name[el]=Αποτυχία ανάκτησης κωδικών Name[en_GB]=Failed to get secrets Name[es]=La obtención de claves secretas ha fallado Name[et]=Saladuste hankimine nurjus Name[eu]=Sekretuak lortzea huts egin du Name[fi]=Salaisuuksien saaminen epäonnistui Name[fr]=Impossible d'obtenir les informations secrètes Name[gl]=Non se puideron obter os segredos Name[he]=נכשל בקבלת סיסמאות Name[hu]=Nem sikerült megszerezni a titkos adatokat Name[ia]=Il falleva obtener secretos Name[id]=Gagal mendapatkan rahasiaan Name[it]=Impossibile ottenere i segreti Name[ja]=シークレットの取得に失敗しました Name[ko]=비밀 정보를 가져올 수 없음 Name[lt]=Nepavyko gauti paslapčių Name[nb]=Klarte ikke hente hemmeligheter Name[nds]=Anmellinformatschonen laat sik nich halen Name[nl]=Geheimen ophalen is mislukt Name[nn]=Klarte ikkje henta løyndomar Name[pa]=ਭੇਤ ਲੈਣ ਲਈ ਫੇਲ੍ਹ ਹੈ Name[pl]=Nieudane uzyskiwanie danych poufnych Name[pt]=Não foi possível obter as senhas Name[pt_BR]=Falha ao obter as senhas Name[ru]=Не удалось получить пароли и ключи Name[sk]=Zlyhalo získanie secrets Name[sl]=Ni bilo mogoče dobiti skrivnosti Name[sr]=Пропало добављање тајни Name[sr@ijekavian]=Пропало добављање тајни Name[sr@ijekavianlatin]=Propalo dobavljanje tajni Name[sr@latin]=Propalo dobavljanje tajni Name[sv]=Misslyckades hämta hemligheter Name[tr]=Sırlar alınamadı Name[uk]=Не вдалося отримати дані для розпізнавання Name[x-test]=xxFailed to get secretsxx Name[zh_CN]=获取密码失败 Name[zh_TW]=取得密碼失敗 IconName=applications-internet Action=Popup [Event/FailedToUpdateConnection] Name=Failed to update connection Name[ar]=فشل تحدي الاتّصال Name[ast]=Fallu al anovar la conexón Name[bs]=Neuspjelo ažuriranje konekcije Name[ca]=Ha fallat en actualitzar la connexió Name[ca@valencia]=Ha fallat en actualitzar la connexió Name[cs]=Spojení nelze aktualizovat Name[da]=Kunne ikke opdatere forbindelsen Name[de]=Die Verbindung kann nicht aktualisiert werden Name[el]=Αποτυχία ενημέρωσης σύνδεσης Name[en_GB]=Failed to update connection Name[es]=La actualización de la conexión ha fallado Name[et]=Ühenduse uuendamine nurjus Name[eu]=Konexioa eguneratzea huts egin du Name[fi]=Yhteyden päivittäminen epäonnistui Name[fr]=Impossible de mettre à jour la connexion Name[gl]=Non se puido actualizar a conexión Name[he]=נכשל בעדכון חיבור Name[hu]=Nem sikerült frissíteni a kapcsolatot Name[ia]=Il falleva actualisar connexion Name[id]=Gagal memperbarui koneksi Name[it]=Aggiornamento della connessione non riuscito Name[ja]=接続の更新に失敗しました Name[ko]=연결을 업데이트할 수 없음 Name[lt]=Nepavyko atnaujinti ryšio Name[nb]=Klarte ikke å oppdatere tilkobling Name[nds]=Verbinnen lett sik nich opfrischen Name[nl]=Bijwerken van verbinding is mislukt Name[nn]=Klarte ikkje å oppdatera tilkopling Name[pa]=ਕਨੈਕਸ਼ਨ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ Name[pl]=Nieudane uaktualnianie połączenia Name[pt]=Não foi possível actualizar a ligação Name[pt_BR]=Falha ao atualizar a conexão Name[ru]=Не удалось обновить соединение Name[sk]=Zlyhala aktualizácia pripojenia Name[sl]=Povezave ni bilo mogoče posodobiti Name[sr]=Пропало ажурирање везе Name[sr@ijekavian]=Пропало ажурирање везе Name[sr@ijekavianlatin]=Propalo ažuriranje veze Name[sr@latin]=Propalo ažuriranje veze Name[sv]=Misslyckades uppdatera anslutning Name[tr]=Bağlantı güncellenemedi Name[uk]=Не вдалося оновити з’єднання Name[x-test]=xxFailed to update connectionxx Name[zh_CN]=更新连接失败 Name[zh_TW]=更新連線失敗 IconName=applications-internet Action=Popup [Event/MissingVpnPlugin] Name=Missing VPN plugin Name[ar]=ملحقة VPN مفقودة Name[bg]=Лшпсваща приставка за VPN Name[bs]=Nedostaje VPN dodatak Name[ca]=Manca el connector VPN Name[ca@valencia]=Falta el connector VPN Name[cs]=Chybějící modul VPN Name[da]=Mangler VPN-plugin Name[de]=Fehlendes VPN-Modul Name[el]=Λείπει το πρόσθετο VPN Name[en_GB]=Missing VPN plugin Name[es]=Falta el complemento VPN Name[et]=VPN-i plugin puudub Name[eu]=VPN plugina falta da Name[fi]=Puuttuva VPN-liitännäinen Name[fr]=Module VPN manquant Name[gl]=Non se atopou o complemento de VPN Name[he]=חסר תוסף VPN Name[hu]=Hiányzó VPN bővítmény Name[ia]=Plugin de VPN mancante Name[id]=Plugin VPN yang hilang Name[it]=Estensione VPN mancante Name[ja]=VPN プラグインがありません Name[ko]=VPN 플러그인 없음 Name[lt]=Trūksta VPN priedo Name[nb]=Mangler VPN-programtillegg Name[nds]=VPN-Moduul fehlt Name[nl]=VPN-plug-in ontbreekt Name[nn]=Manglar VPN-tillegg Name[pa]=VPN ਪਲੱਗਇਨ ਗ਼ੈਰ-ਮੌਜੂਦ ਹੈ Name[pl]=Brak wtyczki VPN Name[pt]='Plugin' de VPN em falta Name[pt_BR]=Plugin de VPN ausente Name[ru]=Отсутствует модуль VPN Name[sk]=Chýba VPN plugin Name[sl]=Manjka vstavek VPN Name[sr]=Недостаје ВПН прикључак Name[sr@ijekavian]=Недостаје ВПН прикључак Name[sr@ijekavianlatin]=Nedostaje VPN priključak Name[sr@latin]=Nedostaje VPN priključak Name[sv]=Saknar VPN-insticksprogram Name[tr]=VPN eklentisi eksik Name[uk]=Не вистачає додатка VPN Name[x-test]=xxMissing VPN pluginxx Name[zh_CN]=缺少 VPN 插件 Name[zh_TW]=遺失 VPN 外掛程式 IconName=applications-internet Action=Popup [Event/NoLongerConnected] Name=No longer connected to a network Name[ar]=لم تعد متّصلًا بأيّ شّبكة Name[ca]=No connectat a cap xarxa Name[ca@valencia]=No connectat a cap xarxa Name[da]=Ikke længere forbundet til et netværk Name[de]=Nicht mehr mit einem Netzwerk verbunden Name[el]=Χωρίς σύνδεση πλέον σε κάποιο δίκτυο Name[en_GB]=No longer connected to a network Name[es]=Ya no está conectado a una red Name[et]=Pole enam võrku ühendatud Name[eu]=Jada ez dago sare batera konektatuta Name[fi]=Ei enää yhteydessä verkkoon Name[fr]=Vous n'êtes plus connecté à un réseau Name[gl]=Xa non está conectado a unha rede Name[he]=לא מחובר יותר לרשת Name[hu]=Nem kapcsolódik tovább hálózathoz Name[id]=Tidak lagi terkoneksi ke sebuah jaringan Name[it]=Non sei più connesso a una rete Name[ja]=ネットワークに接続できません Name[ko]=더 이상 네트워크에 연결되지 않음 Name[lt]=Daugiau nebeprisijungta prie tinklo Name[nl]=Niet langer verbonden met een netwerk Name[nn]=Ikkje lenger tilkopla eit nettverk Name[pa]=ਹੁਣ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਹੈ Name[pl]=Brak połączenia do sieci Name[pt]=Não está mais ligado a nenhuma rede Name[pt_BR]=Não está mais conectado a uma rede Name[ru]=Вы больше не подключены к сети. Name[sk]=Už nepripojený k sieti Name[sl]=Niste več povezani z omrežjem Name[sr]=Више нисте повезани на мрежу Name[sr@ijekavian]=Више нисте повезани на мрежу Name[sr@ijekavianlatin]=Više niste povezani na mrežu Name[sr@latin]=Više niste povezani na mrežu Name[sv]=Inte längre ansluten till ett nätverk Name[tr]=Artık bir ağa bağlı değil Name[uk]=Більше не з’єднано із мережею Name[x-test]=xxNo longer connected to a networkxx Name[zh_CN]=已断开网络连接 Name[zh_TW]=已不再連線到網路 IconName=applications-internet Action=Popup [Event/CaptivePortal] Name=Captive portal detected Name[ast]=Deteutóse un portal cativu Name[ca]=S'ha detectat un portal captiu Name[ca@valencia]=S'ha detectat un portal captiu Name[da]=Captive portal detekteret Name[de]=Captive-Portal erkannt Name[en_GB]=Captive portal detected Name[es]=Se ha detectado un portal cautivo Name[et]=Tuvastati pääsuleht Name[eu]=Atari gatibua hauteman da Name[fi]=Verkon kirjautumissivu havaittu Name[fr]=Portail captif détecté Name[gl]=Detectouse un portal cativo Name[hu]=Hitelesítési portál észlelve Name[id]=Terdeteksi portal captive Name[it]=Captive portal rilevato Name[ko]=인증 포털 감지됨 Name[lt]=Aptiktas belaisvis portalas Name[nl]=Vangstportaal gedetecteerd Name[nn]=Oppdaga innloggingsside Name[pa]=ਕੈਪਟਿਵ ਪੋਰਟਲ ਖੋਜਿਆ Name[pl]=Wykryto portal Captive Name[pt]=Foi detectado um portal captivo Name[pt_BR]=Captive portal detectado Name[ru]=Обнаружено подключение, требующее дополнительной аутентификации. Name[sk]=Zistil sa zajatý portál Name[sl]=Zaznan prijavni portal Name[sr]=Откривен приступни портал Name[sr@ijekavian]=Откривен приступни портал Name[sr@ijekavianlatin]=Otkriven pristupni portal Name[sr@latin]=Otkriven pristupni portal Name[sv]=Captive portal detekterades Name[tr]=Captive portal tespit edildi Name[uk]=Виявлено керований портал Name[x-test]=xxCaptive portal detectedxx Name[zh_CN]=检测到强制网络门户 Name[zh_TW]=偵測到強制入口 Urgency=Low IconName=dialog-password Action=Popup [Event/FailedToCreateHotspot] Name=Failed to create hotspot Name[ast]=Fallu al crear el puntu d'accesu Name[ca]=Ha fallat en crear el punt d'accés Name[da]=Kunne ikke aktivere internetdeling Name[es]=No se ha podido crear el punto de acceso Name[et]=Pääsupunkti loomine nurjus Name[eu]=Berogunea sortzea huts egin du +Name[ia]=Il falleva a crear hotspot Name[lt]=Nepavyko sukurti viešosios prieigos taško Name[nl]=Hotspot aanmaken is mislukt Name[pt]=Não foi possível criar o ponto de acesso Name[pt_BR]=Falha ao criar o ponto de acesso Name[ru]=Не удалось создать точку доступа Name[sv]=Misslyckade skapa accesspunkt Name[uk]=Не вдалося створити хот-спот Name[x-test]=xxFailed to create hotspotxx Name[zh_TW]=無法建立熱點 Urgency=Low IconName=applications-internet Action=Popup diff --git a/libs/handler.cpp b/libs/handler.cpp index 99e501d4..b0a0da7e 100644 --- a/libs/handler.cpp +++ b/libs/handler.cpp @@ -1,881 +1,884 @@ /* Copyright 2013-2014 Jan Grulich This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #include "handler.h" #include "connectioneditordialog.h" #include "configuration.h" #include "uiutils.h" #include "debug.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if WITH_MODEMMANAGER_SUPPORT #include #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #define AGENT_SERVICE "org.kde.kded5" #define AGENT_PATH "/modules/networkmanagement" #define AGENT_IFACE "org.kde.plasmanetworkmanagement" // 10 seconds #define NM_REQUESTSCAN_LIMIT_RATE 10000 Handler::Handler(QObject *parent) : QObject(parent) , m_tmpWirelessEnabled(NetworkManager::isWirelessEnabled()) , m_tmpWwanEnabled(NetworkManager::isWwanEnabled()) { initKdedModule(); QDBusConnection::sessionBus().connect(QStringLiteral(AGENT_SERVICE), QStringLiteral(AGENT_PATH), QStringLiteral(AGENT_IFACE), QStringLiteral("registered"), this, SLOT(initKdedModule())); QDBusConnection::sessionBus().connect(QStringLiteral(AGENT_SERVICE), QStringLiteral(AGENT_PATH), QStringLiteral(AGENT_IFACE), QStringLiteral("secretsError"), this, SLOT(secretAgentError(QString, QString))); if (!Configuration::hotspotConnectionPath().isEmpty()) { NetworkManager::ActiveConnection::Ptr hotspot = NetworkManager::findActiveConnection(Configuration::hotspotConnectionPath()); if (!hotspot) { Configuration::setHotspotConnectionPath(QString()); - Q_EMIT hotspotDisabled(); } } m_hotspotSupported = checkHotspotSupported(); if (NetworkManager::checkVersion(1, 16, 0)) { - connect(NetworkManager::notifier(), &NetworkManager::Notifier::primaryConnectionTypeChanged, [this] () { - m_hotspotSupported = checkHotspotSupported(); - Q_EMIT hotspotSupportedChanged(m_hotspotSupported); - }); + connect(NetworkManager::notifier(), &NetworkManager::Notifier::primaryConnectionTypeChanged, this, &Handler::primaryConnectionTypeChanged); } } Handler::~Handler() { } void Handler::activateConnection(const QString& connection, const QString& device, const QString& specificObject) { NetworkManager::Connection::Ptr con = NetworkManager::findConnection(connection); if (!con) { qCWarning(PLASMA_NM) << "Not possible to activate this connection"; return; } if (con->settings()->connectionType() == NetworkManager::ConnectionSettings::Vpn) { NetworkManager::VpnSetting::Ptr vpnSetting = con->settings()->setting(NetworkManager::Setting::Vpn).staticCast(); if (vpnSetting) { qCDebug(PLASMA_NM) << "Checking VPN" << con->name() << "type:" << vpnSetting->serviceType(); bool pluginMissing = false; // Check missing plasma-nm VPN plugin const KService::List services = KServiceTypeTrader::self()->query("PlasmaNetworkManagement/VpnUiPlugin", QString::fromLatin1("[X-NetworkManager-Services]=='%1'").arg(vpnSetting->serviceType())); pluginMissing = services.isEmpty(); // Check missing NetworkManager VPN plugin if (!pluginMissing) { GSList *plugins = nullptr; plugins = nm_vpn_plugin_info_list_load(); NMVpnPluginInfo *plugin_info = nm_vpn_plugin_info_list_find_by_service(plugins, vpnSetting->serviceType().toStdString().c_str()); pluginMissing = !plugin_info; } if (pluginMissing) { qCWarning(PLASMA_NM) << "VPN" << vpnSetting->serviceType() << "not found, skipping"; KNotification *notification = new KNotification("MissingVpnPlugin", KNotification::CloseOnTimeout, this); notification->setComponentName("networkmanagement"); notification->setTitle(con->name()); notification->setText(i18n("Missing VPN plugin")); notification->setIconName(QStringLiteral("dialog-warning")); notification->sendEvent(); return; } } } #if WITH_MODEMMANAGER_SUPPORT if (con->settings()->connectionType() == NetworkManager::ConnectionSettings::Gsm) { NetworkManager::ModemDevice::Ptr nmModemDevice = NetworkManager::findNetworkInterface(device).objectCast(); if (nmModemDevice) { ModemManager::ModemDevice::Ptr mmModemDevice = ModemManager::findModemDevice(nmModemDevice->udi()); if (mmModemDevice) { ModemManager::Modem::Ptr modem = mmModemDevice->interface(ModemManager::ModemDevice::ModemInterface).objectCast(); NetworkManager::GsmSetting::Ptr gsmSetting = con->settings()->setting(NetworkManager::Setting::Gsm).staticCast(); if (gsmSetting && gsmSetting->pinFlags() == NetworkManager::Setting::NotSaved && modem && modem->unlockRequired() > MM_MODEM_LOCK_NONE) { QDBusInterface managerIface("org.kde.plasmanetworkmanagement", "/org/kde/plasmanetworkmanagement", "org.kde.plasmanetworkmanagement", QDBusConnection::sessionBus(), this); managerIface.call("unlockModem", mmModemDevice->uni()); connect(modem.data(), &ModemManager::Modem::unlockRequiredChanged, this, &Handler::unlockRequiredChanged); m_tmpConnectionPath = connection; m_tmpDevicePath = device; m_tmpSpecificPath = specificObject; return; } } } } #endif QDBusPendingReply reply = NetworkManager::activateConnection(connection, device, specificObject); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", Handler::ActivateConnection); watcher->setProperty("connection", con->name()); connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished); } QString Handler::wifiCode(const QString& connectionPath, const QString& ssid, int _securityType) const { NetworkManager::WirelessSecurityType securityType = static_cast(_securityType); QString ret = QStringLiteral("WIFI:S:") + ssid + QLatin1Char(';'); if (securityType != NetworkManager::NoneSecurity) { switch (securityType) { case NetworkManager::NoneSecurity: break; case NetworkManager::StaticWep: ret += "T:WEP;"; break; case NetworkManager::WpaPsk: case NetworkManager::Wpa2Psk: ret += "T:WPA;"; break; default: case NetworkManager::DynamicWep: case NetworkManager::WpaEap: case NetworkManager::Wpa2Eap: case NetworkManager::Leap: return {}; } } NetworkManager::Connection::Ptr connection = NetworkManager::findConnection(connectionPath); if(!connection) return {}; const auto key = QStringLiteral("802-11-wireless-security"); auto reply = connection->secrets(key); const auto secret = reply.argumentAt<0>()[key]; QString pass; switch (securityType) { case NetworkManager::NoneSecurity: break; case NetworkManager::WpaPsk: case NetworkManager::Wpa2Psk: pass = secret["psk"].toString(); break; default: return {}; } if (!pass.isEmpty()) ret += QStringLiteral("P:") + pass + QLatin1Char(';'); return ret + QLatin1Char(';'); } void Handler::addAndActivateConnection(const QString& device, const QString& specificObject, const QString& password) { NetworkManager::AccessPoint::Ptr ap; NetworkManager::WirelessDevice::Ptr wifiDev; for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { if (dev->type() == NetworkManager::Device::Wifi) { wifiDev = dev.objectCast(); ap = wifiDev->findAccessPoint(specificObject); if (ap) { break; } } } if (!ap) { return; } NetworkManager::ConnectionSettings::Ptr settings = NetworkManager::ConnectionSettings::Ptr(new NetworkManager::ConnectionSettings(NetworkManager::ConnectionSettings::Wireless)); settings->setId(ap->ssid()); settings->setUuid(NetworkManager::ConnectionSettings::createNewUuid()); settings->setAutoconnect(true); settings->addToPermissions(KUser().loginName(), QString()); NetworkManager::WirelessSetting::Ptr wifiSetting = settings->setting(NetworkManager::Setting::Wireless).dynamicCast(); wifiSetting->setInitialized(true); wifiSetting = settings->setting(NetworkManager::Setting::Wireless).dynamicCast(); wifiSetting->setSsid(ap->ssid().toUtf8()); if (ap->mode() == NetworkManager::AccessPoint::Adhoc) { wifiSetting->setMode(NetworkManager::WirelessSetting::Adhoc); } NetworkManager::WirelessSecuritySetting::Ptr wifiSecurity = settings->setting(NetworkManager::Setting::WirelessSecurity).dynamicCast(); NetworkManager::WirelessSecurityType securityType = NetworkManager::findBestWirelessSecurity(wifiDev->wirelessCapabilities(), true, (ap->mode() == NetworkManager::AccessPoint::Adhoc), ap->capabilities(), ap->wpaFlags(), ap->rsnFlags()); if (securityType != NetworkManager::NoneSecurity) { wifiSecurity->setInitialized(true); wifiSetting->setSecurity("802-11-wireless-security"); } if (securityType == NetworkManager::Leap || securityType == NetworkManager::DynamicWep || securityType == NetworkManager::Wpa2Eap || securityType == NetworkManager::WpaEap) { if (securityType == NetworkManager::DynamicWep || securityType == NetworkManager::Leap) { wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::Ieee8021x); if (securityType == NetworkManager::Leap) { wifiSecurity->setAuthAlg(NetworkManager::WirelessSecuritySetting::Leap); } } else { wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaEap); } m_tmpConnectionUuid = settings->uuid(); m_tmpDevicePath = device; m_tmpSpecificPath = specificObject; QPointer editor = new ConnectionEditorDialog(settings); editor->show(); KWindowSystem::setState(editor->winId(), NET::KeepAbove); KWindowSystem::forceActiveWindow(editor->winId()); connect(editor.data(), &ConnectionEditorDialog::accepted, [editor, this] () { addConnection(editor->setting()); }); connect(editor.data(), &ConnectionEditorDialog::finished, [editor] () { if (editor) { editor->deleteLater(); } }); editor->setModal(true); editor->show(); } else { if (securityType == NetworkManager::StaticWep) { wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::Wep); wifiSecurity->setWepKey0(password); if (KWallet::Wallet::isEnabled()) { wifiSecurity->setWepKeyFlags(NetworkManager::Setting::AgentOwned); } } else { if (ap->mode() == NetworkManager::AccessPoint::Adhoc) { wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaNone); } else { wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaPsk); } wifiSecurity->setPsk(password); if (KWallet::Wallet::isEnabled()) { wifiSecurity->setPskFlags(NetworkManager::Setting::AgentOwned); } } QDBusPendingReply reply = NetworkManager::addAndActivateConnection(settings->toMap(), device, specificObject); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", Handler::AddAndActivateConnection); watcher->setProperty("connection", settings->name()); connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished); } settings.clear(); } void Handler::addConnection(const NMVariantMapMap& map) { QDBusPendingReply reply = NetworkManager::addConnection(map); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", AddConnection); watcher->setProperty("connection", map.value("connection").value("id")); connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished); } void Handler::deactivateConnection(const QString& connection, const QString& device) { NetworkManager::Connection::Ptr con = NetworkManager::findConnection(connection); if (!con) { qCWarning(PLASMA_NM) << "Not possible to deactivate this connection"; return; } QDBusPendingReply<> reply; for (const NetworkManager::ActiveConnection::Ptr &active : NetworkManager::activeConnections()) { if (active->uuid() == con->uuid() && ((!active->devices().isEmpty() && active->devices().first() == device) || active->vpn())) { if (active->vpn()) { reply = NetworkManager::deactivateConnection(active->path()); } else { NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(active->devices().first()); if (device) { reply = device->disconnectInterface(); } } } } QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", Handler::DeactivateConnection); connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished); } void Handler::disconnectAll() { for (const NetworkManager::Device::Ptr &device : NetworkManager::networkInterfaces()) { device->disconnectInterface(); } } void Handler::enableAirplaneMode(bool enable) { if (enable) { m_tmpWirelessEnabled = NetworkManager::isWirelessEnabled(); m_tmpWwanEnabled = NetworkManager::isWwanEnabled(); enableBluetooth(false); enableWireless(false); enableWwan(false); } else { enableBluetooth(true); if (m_tmpWirelessEnabled) { enableWireless(true); } if (m_tmpWwanEnabled) { enableWwan(true); } } } void Handler::enableBluetooth(bool enable) { qDBusRegisterMetaType< QMap >(); QDBusMessage message = QDBusMessage::createMethodCall("org.bluez", "/", "org.freedesktop.DBus.ObjectManager", "GetManagedObjects"); QDBusPendingReply > reply = QDBusConnection::systemBus().asyncCall(message); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); connect(watcher, &QDBusPendingCallWatcher::finished, [this, enable] (QDBusPendingCallWatcher *watcher) { QDBusPendingReply > reply = *watcher; if (reply.isValid()) { for (const QDBusObjectPath &path : reply.value().keys()) { const QString objPath = path.path(); qCDebug(PLASMA_NM) << "inspecting path" << objPath; const QStringList interfaces = reply.value().value(path).keys(); qCDebug(PLASMA_NM) << "interfaces:" << interfaces; if (interfaces.contains("org.bluez.Adapter1")) { // We need to check previous state first if (!enable) { QDBusMessage message = QDBusMessage::createMethodCall("org.bluez", objPath, "org.freedesktop.DBus.Properties", "Get"); QList arguments; arguments << QLatin1String("org.bluez.Adapter1"); arguments << QLatin1String("Powered"); message.setArguments(arguments); QDBusPendingReply getReply = QDBusConnection::systemBus().asyncCall(message); QDBusPendingCallWatcher *getWatcher = new QDBusPendingCallWatcher(getReply, this); connect(getWatcher, &QDBusPendingCallWatcher::finished, [this, objPath] (QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (reply.isValid()) { m_bluetoothAdapters.insert(objPath, reply.value().toBool()); QDBusMessage message = QDBusMessage::createMethodCall("org.bluez", objPath, "org.freedesktop.DBus.Properties", "Set"); QList arguments; arguments << QLatin1String("org.bluez.Adapter1"); arguments << QLatin1String("Powered"); arguments << QVariant::fromValue(QDBusVariant(QVariant(false))); message.setArguments(arguments); QDBusConnection::systemBus().asyncCall(message); } watcher->deleteLater(); }); } else if (enable && m_bluetoothAdapters.value(objPath)) { QDBusMessage message = QDBusMessage::createMethodCall("org.bluez", objPath, "org.freedesktop.DBus.Properties", "Set"); QList arguments; arguments << QLatin1String("org.bluez.Adapter1"); arguments << QLatin1String("Powered"); arguments << QVariant::fromValue(QDBusVariant(QVariant(enable))); message.setArguments(arguments); QDBusConnection::systemBus().asyncCall(message); } } } } watcher->deleteLater(); }); } void Handler::enableNetworking(bool enable) { NetworkManager::setNetworkingEnabled(enable); } void Handler::enableWireless(bool enable) { NetworkManager::setWirelessEnabled(enable); } void Handler::enableWwan(bool enable) { NetworkManager::setWwanEnabled(enable); } void Handler::removeConnection(const QString& connection) { NetworkManager::Connection::Ptr con = NetworkManager::findConnection(connection); if (!con || con->uuid().isEmpty()) { qCWarning(PLASMA_NM) << "Not possible to remove connection " << connection; return; } // Remove slave connections for (const NetworkManager::Connection::Ptr &connection : NetworkManager::listConnections()) { NetworkManager::ConnectionSettings::Ptr settings = connection->settings(); if (settings->master() == con->uuid()) { connection->remove(); } } QDBusPendingReply<> reply = con->remove(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", Handler::RemoveConnection); watcher->setProperty("connection", con->name()); connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished); } void Handler::updateConnection(const NetworkManager::Connection::Ptr& connection, const NMVariantMapMap& map) { QDBusPendingReply<> reply = connection->update(map); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", UpdateConnection); watcher->setProperty("connection", connection->name()); connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished); } void Handler::requestScan(const QString &interface) { for (NetworkManager::Device::Ptr device : NetworkManager::networkInterfaces()) { if (device->type() == NetworkManager::Device::Wifi) { NetworkManager::WirelessDevice::Ptr wifiDevice = device.objectCast(); if (wifiDevice && wifiDevice->state() != NetworkManager::WirelessDevice::Unavailable) { if (!interface.isEmpty() && interface != wifiDevice->interfaceName()) { continue; } if (!checkRequestScanRateLimit(wifiDevice)) { QDateTime now = QDateTime::currentDateTime(); // for NM < 1.12, lastScan is not available QDateTime lastScan = wifiDevice->lastScan(); QDateTime lastRequestScan = wifiDevice->lastRequestScan(); // Compute the next time we can run a scan int timeout = NM_REQUESTSCAN_LIMIT_RATE; if (lastScan.isValid() && lastScan.msecsTo(now) < NM_REQUESTSCAN_LIMIT_RATE) { timeout = NM_REQUESTSCAN_LIMIT_RATE - lastScan.msecsTo(now); } else if (lastRequestScan.isValid() && lastRequestScan.msecsTo(now) < NM_REQUESTSCAN_LIMIT_RATE) { timeout = NM_REQUESTSCAN_LIMIT_RATE - lastRequestScan.msecsTo(now); } qCDebug(PLASMA_NM) << "Rescheduling a request scan for" << wifiDevice->interfaceName() << "in" << timeout; scheduleRequestScan(wifiDevice->interfaceName(), timeout); if (!interface.isEmpty()) { return; } continue; } else if (m_wirelessScanRetryTimer.contains(interface)){ m_wirelessScanRetryTimer.value(interface)->stop(); delete m_wirelessScanRetryTimer.take(interface); } qCDebug(PLASMA_NM) << "Requesting wifi scan on device" << wifiDevice->interfaceName(); QDBusPendingReply<> reply = wifiDevice->requestScan(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", Handler::RequestScan); watcher->setProperty("interface", wifiDevice->interfaceName()); connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished); } } } } void Handler::createHotspot() { bool foundInactive = false; bool useApMode = false; NetworkManager::WirelessDevice::Ptr wifiDev; NetworkManager::ConnectionSettings::Ptr connectionSettings; connectionSettings = NetworkManager::ConnectionSettings::Ptr(new NetworkManager::ConnectionSettings(NetworkManager::ConnectionSettings::Wireless)); NetworkManager::WirelessSetting::Ptr wifiSetting = connectionSettings->setting(NetworkManager::Setting::Wireless).dynamicCast(); wifiSetting->setMode(NetworkManager::WirelessSetting::Adhoc); wifiSetting->setSsid(Configuration::hotspotName().toUtf8()); for (const NetworkManager::Device::Ptr &device : NetworkManager::networkInterfaces()) { if (device->type() == NetworkManager::Device::Wifi) { wifiDev = device.objectCast(); if (wifiDev) { if (!wifiDev->isActive()) { foundInactive = true; } else { // Prefer previous device if it was inactive if (foundInactive) { break; } } if (wifiDev->wirelessCapabilities().testFlag(NetworkManager::WirelessDevice::ApCap)) { useApMode = true; } // We prefer inactive wireless card with AP capabilities if (foundInactive && useApMode) { break; } } } } if (!wifiDev) { qCWarning(PLASMA_NM) << "Failed to create hotspot: missing wireless device"; return; } wifiSetting->setInitialized(true); wifiSetting->setMode(useApMode ? NetworkManager::WirelessSetting::Ap :NetworkManager::WirelessSetting::Adhoc); if (!Configuration::hotspotPassword().isEmpty()) { NetworkManager::WirelessSecuritySetting::Ptr wifiSecurity = connectionSettings->setting(NetworkManager::Setting::WirelessSecurity).dynamicCast(); wifiSecurity->setInitialized(true); if (useApMode) { // Use WPA2 wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::WpaPsk); wifiSecurity->setPsk(Configuration::hotspotPassword()); wifiSecurity->setPskFlags(NetworkManager::Setting::AgentOwned); } else { // Use WEP wifiSecurity->setKeyMgmt(NetworkManager::WirelessSecuritySetting::Wep); wifiSecurity->setWepKeyType(NetworkManager::WirelessSecuritySetting::Passphrase); wifiSecurity->setWepTxKeyindex(0); wifiSecurity->setWepKey0(Configuration::hotspotPassword()); wifiSecurity->setWepKeyFlags(NetworkManager::Setting::AgentOwned); wifiSecurity->setAuthAlg(NetworkManager::WirelessSecuritySetting::Open); } } NetworkManager::Ipv4Setting::Ptr ipv4Setting = connectionSettings->setting(NetworkManager::Setting::Ipv4).dynamicCast(); ipv4Setting->setMethod(NetworkManager::Ipv4Setting::Shared); ipv4Setting->setInitialized(true); connectionSettings->setId(Configuration::hotspotName()); connectionSettings->setAutoconnect(false); connectionSettings->setUuid(NetworkManager::ConnectionSettings::createNewUuid()); const QVariantMap options = { {QLatin1String("persist"), QLatin1String("volatile")} }; QDBusPendingReply reply = NetworkManager::addAndActivateConnection2(connectionSettings->toMap(), wifiDev->uni(), QString(), options); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", Handler::CreateHotspot); watcher->setProperty("connection", Configuration::hotspotName()); connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished); connect(watcher, &QDBusPendingCallWatcher::finished, this, QOverload::of(&Handler::hotspotCreated)); } void Handler::stopHotspot() { const QString activeConnectionPath = Configuration::hotspotConnectionPath(); if (activeConnectionPath.isEmpty()) { return; } NetworkManager::ActiveConnection::Ptr hotspot = NetworkManager::findActiveConnection(activeConnectionPath); if (!hotspot) { return; } NetworkManager::deactivateConnection(activeConnectionPath); Configuration::setHotspotConnectionPath(QString()); Q_EMIT hotspotDisabled(); } bool Handler::checkRequestScanRateLimit(const NetworkManager::WirelessDevice::Ptr &wifiDevice) { QDateTime now = QDateTime::currentDateTime(); QDateTime lastScan = wifiDevice->lastScan(); QDateTime lastRequestScan = wifiDevice->lastRequestScan(); // if the last scan finished within the last 10 seconds bool ret = lastScan.isValid() && lastScan.msecsTo(now) < NM_REQUESTSCAN_LIMIT_RATE; // or if the last Request was sent within the last 10 seconds ret |= lastRequestScan.isValid() && lastRequestScan.msecsTo(now) < NM_REQUESTSCAN_LIMIT_RATE; // skip the request scan if (ret) { qCDebug(PLASMA_NM) << "Last scan finished " << lastScan.msecsTo(now) << "ms ago and last request scan was sent " << lastRequestScan.msecsTo(now) << "ms ago, Skipping scanning interface:" << wifiDevice->interfaceName(); return false; } return true; } bool Handler::checkHotspotSupported() { if (NetworkManager::checkVersion(1, 16, 0)) { bool unusedWifiFound = false; bool wifiFound = false; for (const NetworkManager::Device::Ptr &device : NetworkManager::networkInterfaces()) { if (device->type() == NetworkManager::Device::Wifi) { wifiFound = true; NetworkManager::WirelessDevice::Ptr wifiDev = device.objectCast(); if (wifiDev && !wifiDev->isActive()) { unusedWifiFound = true; } } } if (!wifiFound) { return false; } if (unusedWifiFound) { return true; } // Check if the primary connection which is used for internet connectivity is not using WiFi if (NetworkManager::primaryConnectionType() != NetworkManager::ConnectionSettings::Wireless) { return true; } } return false; } void Handler::scheduleRequestScan(const QString &interface, int timeout) { QTimer *timer; if (!m_wirelessScanRetryTimer.contains(interface)) { // create a timer for the interface timer = new QTimer(); timer->setSingleShot(true); m_wirelessScanRetryTimer.insert(interface, timer); auto retryAction = [this, interface]() { requestScan(interface); }; connect(timer, &QTimer::timeout, this, retryAction); } else { // set the new value for an existing timer timer = m_wirelessScanRetryTimer.value(interface); if (timer->isActive()) { timer->stop(); } } // +1 ms is added to avoid having the scan being rejetted by nm // because it is run at the exact last millisecond of the requestScan threshold timer->setInterval(timeout + 1); timer->start(); } void Handler::scanRequestFailed(const QString &interface) { scheduleRequestScan(interface, 2000); } void Handler::initKdedModule() { QDBusMessage initMsg = QDBusMessage::createMethodCall(QStringLiteral(AGENT_SERVICE), QStringLiteral(AGENT_PATH), QStringLiteral(AGENT_IFACE), QStringLiteral("init")); QDBusConnection::sessionBus().send(initMsg); } void Handler::secretAgentError(const QString &connectionPath, const QString &message) { // If the password was wrong, forget it removeConnection(connectionPath); emit connectionActivationFailed(connectionPath, message); } void Handler::replyFinished(QDBusPendingCallWatcher * watcher) { QDBusPendingReply<> reply = *watcher; if (reply.isError() || !reply.isValid()) { KNotification *notification = nullptr; QString error = reply.error().message(); Handler::HandlerAction action = (Handler::HandlerAction)watcher->property("action").toUInt(); switch (action) { case Handler::ActivateConnection: notification = new KNotification("FailedToActivateConnection", KNotification::CloseOnTimeout, this); notification->setTitle(i18n("Failed to activate %1", watcher->property("connection").toString())); break; case Handler::AddAndActivateConnection: notification = new KNotification("FailedToAddConnection", KNotification::CloseOnTimeout, this); notification->setTitle(i18n("Failed to add %1", watcher->property("connection").toString())); break; case Handler::AddConnection: notification = new KNotification("FailedToAddConnection", KNotification::CloseOnTimeout, this); notification->setTitle(i18n("Failed to add connection %1", watcher->property("connection").toString())); break; case Handler::DeactivateConnection: notification = new KNotification("FailedToDeactivateConnection", KNotification::CloseOnTimeout, this); notification->setTitle(i18n("Failed to deactivate %1", watcher->property("connection").toString())); break; case Handler::RemoveConnection: notification = new KNotification("FailedToRemoveConnection", KNotification::CloseOnTimeout, this); notification->setTitle(i18n("Failed to remove %1", watcher->property("connection").toString())); break; case Handler::UpdateConnection: notification = new KNotification("FailedToUpdateConnection", KNotification::CloseOnTimeout, this); notification->setTitle(i18n("Failed to update connection %1", watcher->property("connection").toString())); break; case Handler::RequestScan: { const QString interface = watcher->property("interface").toString(); qCWarning(PLASMA_NM) << "Wireless scan on" << interface << "failed:" << error; scanRequestFailed(interface); break; } case Handler::CreateHotspot: notification = new KNotification("FailedToCreateHotspot", KNotification::CloseOnTimeout, this); notification->setTitle(i18n("Failed to create hotspot %1", watcher->property("connection").toString())); break; default: break; } if (notification) { notification->setComponentName("networkmanagement"); notification->setText(error); notification->setIconName(QStringLiteral("dialog-warning")); notification->sendEvent(); } } else { KNotification *notification = nullptr; Handler::HandlerAction action = (Handler::HandlerAction)watcher->property("action").toUInt(); switch (action) { case Handler::AddConnection: notification = new KNotification("ConnectionAdded", KNotification::CloseOnTimeout, this); notification->setText(i18n("Connection %1 has been added", watcher->property("connection").toString())); break; case Handler::RemoveConnection: notification = new KNotification("ConnectionRemoved", KNotification::CloseOnTimeout, this); notification->setText(i18n("Connection %1 has been removed", watcher->property("connection").toString())); break; case Handler::UpdateConnection: notification = new KNotification("ConnectionUpdated", KNotification::CloseOnTimeout, this); notification->setText(i18n("Connection %1 has been updated", watcher->property("connection").toString())); break; case Handler::RequestScan: qCDebug(PLASMA_NM) << "Wireless scan on" << watcher->property("interface").toString() << "succeeded"; break; default: break; } if (notification) { notification->setComponentName("networkmanagement"); notification->setTitle(watcher->property("connection").toString()); notification->setIconName(QStringLiteral("dialog-information")); notification->sendEvent(); } } watcher->deleteLater(); } void Handler::hotspotCreated(QDBusPendingCallWatcher *watcher) { QDBusPendingReply reply = *watcher; if (!reply.isError() && reply.isValid()) { const QString activeConnectionPath = reply.argumentAt(1).value().path(); if (activeConnectionPath.isEmpty()) { return; } Configuration::setHotspotConnectionPath(activeConnectionPath); NetworkManager::ActiveConnection::Ptr hotspot = NetworkManager::findActiveConnection(activeConnectionPath); if (!hotspot) { return; } connect(hotspot.data(), &NetworkManager::ActiveConnection::stateChanged, [=] (NetworkManager::ActiveConnection::State state) { if (state > NetworkManager::ActiveConnection::Activated) { Configuration::setHotspotConnectionPath(QString()); Q_EMIT hotspotDisabled(); } }); Q_EMIT hotspotCreated(); } } +void Handler::primaryConnectionTypeChanged(NetworkManager::ConnectionSettings::ConnectionType type) +{ + Q_UNUSED(type) + m_hotspotSupported = checkHotspotSupported(); + Q_EMIT hotspotSupportedChanged(m_hotspotSupported); +} + #if WITH_MODEMMANAGER_SUPPORT void Handler::unlockRequiredChanged(MMModemLock modemLock) { if (modemLock == MM_MODEM_LOCK_NONE) { activateConnection(m_tmpConnectionPath, m_tmpDevicePath, m_tmpSpecificPath); } } #endif diff --git a/libs/handler.h b/libs/handler.h index 60bb1f5e..b1e7bf66 100644 --- a/libs/handler.h +++ b/libs/handler.h @@ -1,161 +1,162 @@ /* Copyright 2013-2014 Jan Grulich This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #ifndef PLASMA_NM_HANDLER_H #define PLASMA_NM_HANDLER_H #include #include #include #include #include #include #if WITH_MODEMMANAGER_SUPPORT #include #endif class Q_DECL_EXPORT Handler : public QObject { Q_OBJECT public: enum HandlerAction { ActivateConnection, AddAndActivateConnection, AddConnection, DeactivateConnection, RemoveConnection, RequestScan, UpdateConnection, CreateHotspot, }; explicit Handler(QObject* parent = nullptr); ~Handler() override; Q_PROPERTY(bool hotspotSupported READ hotspotSupported NOTIFY hotspotSupportedChanged); public: bool hotspotSupported() const { return m_hotspotSupported; }; public Q_SLOTS: /** * Activates given connection * @connection - d-bus path of the connection you want to activate * @device - d-bus path of the device where the connection should be activated * @specificParameter - d-bus path of the specific object you want to use for this activation, i.e access point */ void activateConnection(const QString &connection, const QString &device, const QString &specificParameter); /** * Adds and activates a new wireless connection * @device - d-bus path of the wireless device where the connection should be activated * @specificParameter - d-bus path of the accesspoint you want to connect to * @password - pre-filled password which should be used for the new wireless connection * @autoConnect - boolean value whether this connection should be activated automatically when it's available * * Works automatically for wireless connections with WEP/WPA security, for wireless connections with WPA/WPA * it will open the connection editor for advanced configuration. * */ void addAndActivateConnection(const QString &device, const QString &specificParameter, const QString &password = QString()); /** * Returns a code that includes the credentials to a said wifi connection * Here's some information on how this information is created, it's generally used to put in QR codes to share. * https://github.com/zxing/zxing/wiki/Barcode-Contents#wi-fi-network-config-android-ios-11 * * @param connectionPath the d-bus path to the connection we want to read * @param ssid the name of the network being displayed * @param securityType the authentication protocol used for this specific ssid */ QString wifiCode(const QString& connectionPath, const QString& ssid, /*NetworkManager::WirelessSecurityType*/ int securityType) const; /** * Adds a new connection * @map - NMVariantMapMap with connection settings */ void addConnection(const NMVariantMapMap &map); /** * Deactivates given connection * @connection - d-bus path of the connection you want to deactivate * @device - d-bus path of the connection where the connection is activated */ void deactivateConnection(const QString &connection, const QString &device); /** * Disconnects all connections */ void disconnectAll(); void enableAirplaneMode(bool enable); void enableNetworking(bool enable); void enableWireless(bool enable); void enableWwan(bool enable); /** * Removes given connection * @connection - d-bus path of the connection you want to edit */ void removeConnection(const QString & connection); /** * Updates given connection * @connection - connection which should be updated * @map - NMVariantMapMap with new connection settings */ void updateConnection(const NetworkManager::Connection::Ptr &connection, const NMVariantMapMap &map); void requestScan(const QString &interface = QString()); void createHotspot(); void stopHotspot(); private Q_SLOTS: void initKdedModule(); void secretAgentError(const QString &connectionPath, const QString &message); void replyFinished(QDBusPendingCallWatcher *watcher); void hotspotCreated(QDBusPendingCallWatcher *watcher); + void primaryConnectionTypeChanged(NetworkManager::ConnectionSettings::ConnectionType type); #if WITH_MODEMMANAGER_SUPPORT void unlockRequiredChanged(MMModemLock modemLock); #endif Q_SIGNALS: void connectionActivationFailed(const QString &connectionPath, const QString &message); void hotspotCreated(); void hotspotDisabled(); void hotspotSupportedChanged(bool hotspotSupported); private: bool m_hotspotSupported; bool m_tmpWirelessEnabled; bool m_tmpWwanEnabled; #if WITH_MODEMMANAGER_SUPPORT QString m_tmpConnectionPath; #endif QString m_tmpConnectionUuid; QString m_tmpDevicePath; QString m_tmpSpecificPath; QMap m_bluetoothAdapters; QMap m_wirelessScanRetryTimer; void enableBluetooth(bool enable); void scanRequestFailed(const QString &interface); bool checkRequestScanRateLimit(const NetworkManager::WirelessDevice::Ptr &wifiDevice); bool checkHotspotSupported(); void scheduleRequestScan(const QString &interface, int timeout); }; #endif // PLASMA_NM_HANDLER_H diff --git a/mobile/broadband/mobilebroadbandsettings.desktop b/mobile/broadband/mobilebroadbandsettings.desktop index 919534fc..b3b519c5 100755 --- a/mobile/broadband/mobilebroadbandsettings.desktop +++ b/mobile/broadband/mobilebroadbandsettings.desktop @@ -1,109 +1,110 @@ [Desktop Entry] Name=Mobile broadband Name[ast]=Banda ancha móvil Name[ca]=Banda ampla per mòbil Name[ca@valencia]=Banda ampla per mòbil Name[cs]=Mobilní Broadband Name[da]=Mobilt bredbånd Name[de]=Mobiles Breitband Name[en_GB]=Mobile broadband Name[es]=Banda ancha móvil Name[et]=Mobiilandmeside Name[eu]=Mugikorreko banda-zabala Name[fi]=Mobiililaajakaista Name[fr]=Haut débit mobile Name[gl]=Banda larga móbil Name[hu]=Mobil szélessáv +Name[ia]=Banda large mobile Name[id]=Mobile broadband Name[it]=Banda larga mobile Name[ko]=모바일 광대역 Name[lt]=Mobilusis plačiajuostis Name[nl]=Mobiel breedband Name[nn]=Mobilt breiband Name[pl]=Komórkowe szerokopasmowe Name[pt]=Banda larga móvel Name[pt_BR]=Banda larga móvel Name[ru]=Мобильный интернет Name[sk]=Mobilné širokopásmové pripojenie Name[sv]=Mobilt bredband Name[uk]=Мобільна радіомережа Name[x-test]=xxMobile broadbandxx Name[zh_CN]=移动宽带 Name[zh_TW]=行動數據 Comment=Mobile broadband setting Comment[ca]=Configuració de la banda ampla per mòbil Comment[ca@valencia]=Configuració de la banda ampla per mòbil Comment[cs]=Nastavení pro Mobilní Broadband Comment[da]=Opsætning af mobilt bredbånd Comment[de]=Einstellungen für Mobiles Breitband Comment[en_GB]=Mobile broadband setting Comment[es]=Preferencias de banda ancha móvil Comment[et]=Mobiilandmeside seadistus Comment[eu]=Mugikorreko banda-zabaleko ezarpena Comment[fi]=Mobiililaajakaista-asetukset Comment[fr]=Paramètre haut débit mobile Comment[gl]=Opción de banda larga móbil Comment[hu]=Mobil szélessáv beállításai Comment[id]=Pengesetan mobile broadband Comment[it]=Impostazioni banda larga mobile Comment[ko]=모바일 광대역 설정 Comment[lt]=Mobiliojo plačiajuosčio nuostata Comment[nl]=Instelling voor mobiel breedband Comment[nn]=Innstilling for mobilt breiband Comment[pl]=Ustawienia sieci komórkowej Comment[pt]=Configuração da banda larga móvel Comment[pt_BR]=Configurações da banda larga móvel Comment[ru]=Параметры мобильного интернета Comment[sk]=Nastavenia mobilného širokopásmového pripojenia Comment[sv]=Inställning av mobilt bredband Comment[uk]=Налаштовування мобільної радіомережі Comment[x-test]=xxMobile broadband settingxx Comment[zh_CN]=移动宽带设置 Comment[zh_TW]=行動數據設定 Icon=smartphone Exec=plasma-settings -m kcm_mobile_broadband Type=Service X-KDE-ServiceTypes=KCModule X-KDE-Library=kcm_mobile_broadband X-KDE-ParentApp=kcontrol X-KDE-FormFactors=handset,tablet,mediacenter X-KDE-System-Settings-Parent-Category=network X-KDE-Weight=70 X-KDE-Keywords=mobile,data,network X-KDE-Keywords[ast]=móvil,datos,rede X-KDE-Keywords[ca]=mòbil,dades,xarxa X-KDE-Keywords[ca@valencia]=mòbil,dades,xarxa X-KDE-Keywords[cs]=mobilní,data,síť X-KDE-Keywords[da]=mobil,data,netværk X-KDE-Keywords[de]=mobil,daten,netzwerk X-KDE-Keywords[en_GB]=mobile,data,network X-KDE-Keywords[es]=móvil,datos,red X-KDE-Keywords[et]=mobiil,mobiilandmeside,andmed,võrk X-KDE-Keywords[eu]=mugikorra,datuak,sarea X-KDE-Keywords[fi]=mobiili,data,verkko X-KDE-Keywords[fr]=mobile,données,réseau X-KDE-Keywords[gl]=móbil,datos,rede X-KDE-Keywords[hu]=mobil,adat,hálózat X-KDE-Keywords[id]=mobile,data,jaringan X-KDE-Keywords[it]=mobile, dati,rete X-KDE-Keywords[ko]=mobile,data,network,모바일,데이터,네트워크 X-KDE-Keywords[lt]=mobilusis,duomenys,mobilieji,tinklas X-KDE-Keywords[nl]=mobiel,gegevens,netwerk X-KDE-Keywords[nn]=mobil,mobilt,data,nettverk X-KDE-Keywords[pl]=komórkowa,mobilna,dane,sieć X-KDE-Keywords[pt]=móvel,dados,rede X-KDE-Keywords[pt_BR]=móvel,dados,rede X-KDE-Keywords[ru]=mobile,data,network,мобильная,данные,сеть X-KDE-Keywords[sk]=mobilný,dáta,sieť X-KDE-Keywords[sv]=mobil,data,nätverk X-KDE-Keywords[tg]=мобилӣ,иттилоотӣ,шабака X-KDE-Keywords[uk]=mobile,data,network,мобільний,дані,мережа X-KDE-Keywords[x-test]=xxmobilexx,xxdataxx,xxnetworkxx X-KDE-Keywords[zh_CN]=mobile,data,network,移动,数据,网络 X-KDE-Keywords[zh_TW]=mobile,data,network,行動,資料,數據,網路 Categories=Qt;KDE;X-KDE-settings-system; diff --git a/mobile/broadband/package/metadata.desktop b/mobile/broadband/package/metadata.desktop index cded38e2..709be251 100644 --- a/mobile/broadband/package/metadata.desktop +++ b/mobile/broadband/package/metadata.desktop @@ -1,78 +1,79 @@ [Desktop Entry] Name=Mobile Broadband Name[ast]=Banda ancha móvil Name[ca]=Banda ampla per mòbil Name[ca@valencia]=Banda ampla per mòbil Name[cs]=Mobilní Broadband Name[da]=Mobilt bredbånd Name[de]=Mobiles Breitband Name[en_GB]=Mobile Broadband Name[es]=Banda ancha móvil Name[et]=Mobiilandmeside Name[eu]=Mugikorreko banda-zabala Name[fi]=Mobiililaajakaista Name[fr]=Haut débit mobile Name[gl]=Banda larga móbil Name[hu]=Mobil szélessáv +Name[ia]=Banda large mobile Name[id]=Mobile Broadband Name[it]=Banda larga mobile Name[ko]=모바일 광대역 Name[lt]=Mobilusis plačiajuostis Name[nl]=Mobiel breedband Name[nn]=Mobilt breiband Name[pl]=Komórkowe szerokopasmowe Name[pt]=Banda Larga Móvel Name[pt_BR]=Banda larga móvel Name[ru]=Мобильный интернет: Name[sk]=Mobilné širokopásmové pripojenie Name[sv]=Mobilt bredband Name[uk]=Мобільна радіомережа Name[x-test]=xxMobile Broadbandxx Name[zh_CN]=移动宽带 Name[zh_TW]=行動數據 Comment=Mobile broadband setting Comment[ca]=Configuració de la banda ampla per mòbil Comment[ca@valencia]=Configuració de la banda ampla per mòbil Comment[cs]=Nastavení pro Mobilní Broadband Comment[da]=Opsætning af mobilt bredbånd Comment[de]=Einstellungen für Mobiles Breitband Comment[en_GB]=Mobile broadband setting Comment[es]=Preferencias de banda ancha móvil Comment[et]=Mobiilandmeside seadistus Comment[eu]=Mugikorreko banda-zabaleko ezarpena Comment[fi]=Mobiililaajakaista-asetukset Comment[fr]=Paramètre haut débit mobile Comment[gl]=Opción de banda larga móbil Comment[hu]=Mobil szélessáv beállításai Comment[id]=Pengesetan mobile broadband Comment[it]=Impostazioni banda larga mobile Comment[ko]=모바일 광대역 설정 Comment[lt]=Mobiliojo plačiajuosčio nuostata Comment[nl]=Instelling voor mobiel breedband Comment[nn]=Innstilling for mobilt breiband Comment[pl]=Ustawienia sieci komórkowej Comment[pt]=Configuração da banda larga móvel Comment[pt_BR]=Configurações da banda larga móvel Comment[ru]=Параметры мобильного интернета Comment[sk]=Nastavenia mobilného širokopásmového pripojenia Comment[sv]=Inställning av mobilt bredband Comment[uk]=Налаштовування мобільної радіомережі Comment[x-test]=xxMobile broadband settingxx Comment[zh_CN]=移动宽带设置 Comment[zh_TW]=行動數據設定 Encoding=UTF-8 Type=Service Icon=smartphone X-KDE-ServiceTypes=KCModule X-KDE-Library=kcm_mobile_broadband X-KDE-PluginInfo-Author=Martin Kacej X-KDE-PluginInfo-Email=m.kacej@atlas.sk X-KDE-PluginInfo-Name=kcm_mobile_broadband X-KDE-PluginInfo-Version=0.1 X-KDE-PluginInfo-Website=https://plasma-mobile.org/ X-KDE-PluginInfo-Category=System Information X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=true X-KDE-FormFactors=handset,tablet,mediacenter X-Plasma-Package=kcm_mobile_broadband X-Plasma-MainScript=ui/main.qml diff --git a/mobile/wifi/package/metadata.desktop b/mobile/wifi/package/metadata.desktop index 4501504a..72382f94 100644 --- a/mobile/wifi/package/metadata.desktop +++ b/mobile/wifi/package/metadata.desktop @@ -1,80 +1,81 @@ [Desktop Entry] Name=Wi-Fi Name[ast]=Wi-Fi Name[ca]=Wi-Fi Name[ca@valencia]=Wi-Fi Name[cs]=Wi-Fi Name[da]=Wi-Fi Name[de]=Wi-Fi Name[en_GB]=Wi-Fi Name[es]=Wi-Fi Name[et]=Wi-Fi Name[eu]=Wi-Fi Name[fi]=Langaton verkko Name[fr]=Wi-Fi Name[gl]=Sen fíos Name[hu]=Wi-Fi +Name[ia]=Wi-Fi Name[id]=Wi-Fi Name[it]=Wi-fi Name[ko]=Wi-Fi Name[lt]=Belaidis (Wi-Fi) Name[nl]=Wi-Fi Name[nn]=Wi-Fi Name[pl]=Wi-Fi Name[pt]=Wi-Fi Name[pt_BR]=Wi-Fi Name[ru]=Wi-Fi Name[sk]=Wi-Fi Name[sv]=WIFI Name[tg]=Wi-Fi Name[uk]=Wi-Fi Name[x-test]=xxWi-Fixx Name[zh_CN]=Wi-Fi Name[zh_TW]=Wi-Fi Comment=Wireless network setting Comment[ca]=Configuració de la xarxa sense fil Comment[ca@valencia]=Configuració de la xarxa sense fil Comment[cs]=Nastavení bezdrátové sítě Comment[da]=Opsætning af trådløst netværk Comment[de]=Einstellungen für drahtloses Netzwerk Comment[en_GB]=Wireless network setting Comment[es]=Preferencias de la red inalámbrica Comment[et]=Juhtmeta võrgu seadistus Comment[eu]=Haririk gabeko sare ezarpena Comment[fi]=Langattoman verkon asetukset Comment[fr]=Paramètre du réseau sans fil Comment[gl]=Opción de rede sen fíos Comment[hu]=Vezeték nélküli hálózati beállítások Comment[id]=Pengesetan jaringan wireless Comment[it]=Impostazioni rete senza fili Comment[ko]=무선 네트워크 설정 Comment[lt]=Belaidžio tinklo nuostata Comment[nl]=Draadloos netwerk instelling Comment[nn]=Innstilling for trådlaust nettverk Comment[pl]=Ustawienia sieci bezprzewodowej Comment[pt]=Configuração da rede sem-fios Comment[pt_BR]=Configurações da rede sem fio Comment[ru]=Параметры беспроводного соединения Comment[sk]=Nastavenia bezdrôtovej siete Comment[sv]=Trådlös nätverksinställning Comment[tg]=Танзимоти шабакаи бесим Comment[uk]=Налаштовування бездротової мережі Comment[x-test]=xxWireless network settingxx Comment[zh_CN]=无线网络设置 Comment[zh_TW]=無線網路設定 Encoding=UTF-8 Type=Service Icon=network-wireless-symbolic X-KDE-ServiceTypes=KCModule X-KDE-Library=kcm_mobile_wifi X-KDE-PluginInfo-Author=Martin Kacej X-KDE-PluginInfo-Email=m.kacej@atlas.sk X-KDE-PluginInfo-Name=kcm_mobile_wifi X-KDE-PluginInfo-Version=0.1 X-KDE-PluginInfo-Website=https://plasma-mobile.org/ X-KDE-PluginInfo-Category=System Information X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=true X-KDE-FormFactors=handset,tablet,mediacenter X-Plasma-Package=kcm_mobile_wifi X-Plasma-MainScript=ui/main.qml diff --git a/mobile/wifi/wifisettings.desktop b/mobile/wifi/wifisettings.desktop index a8a6a23b..9d0349b2 100755 --- a/mobile/wifi/wifisettings.desktop +++ b/mobile/wifi/wifisettings.desktop @@ -1,111 +1,112 @@ [Desktop Entry] Name=Wi-Fi Name[ast]=Wi-Fi Name[ca]=Wi-Fi Name[ca@valencia]=Wi-Fi Name[cs]=Wi-Fi Name[da]=Wi-Fi Name[de]=Wi-Fi Name[en_GB]=Wi-Fi Name[es]=Wi-Fi Name[et]=Wi-Fi Name[eu]=Wi-Fi Name[fi]=Langaton verkko Name[fr]=Wi-Fi Name[gl]=Sen fíos Name[hu]=Wi-Fi +Name[ia]=Wi-Fi Name[id]=Wi-Fi Name[it]=Wi-fi Name[ko]=Wi-Fi Name[lt]=Belaidis (Wi-Fi) Name[nl]=Wi-Fi Name[nn]=Wi-Fi Name[pl]=Wi-Fi Name[pt]=Wi-Fi Name[pt_BR]=Wi-Fi Name[ru]=Wi-Fi Name[sk]=Wi-Fi Name[sv]=WIFI Name[tg]=Wi-Fi Name[uk]=Wi-Fi Name[x-test]=xxWi-Fixx Name[zh_CN]=Wi-Fi Name[zh_TW]=Wi-Fi Comment=Wireless network setting Comment[ca]=Configuració de la xarxa sense fil Comment[ca@valencia]=Configuració de la xarxa sense fil Comment[cs]=Nastavení bezdrátové sítě Comment[da]=Opsætning af trådløst netværk Comment[de]=Einstellungen für drahtloses Netzwerk Comment[en_GB]=Wireless network setting Comment[es]=Preferencias de la red inalámbrica Comment[et]=Juhtmeta võrgu seadistus Comment[eu]=Haririk gabeko sare ezarpena Comment[fi]=Langattoman verkon asetukset Comment[fr]=Paramètre du réseau sans fil Comment[gl]=Opción de rede sen fíos Comment[hu]=Vezeték nélküli hálózati beállítások Comment[id]=Pengesetan jaringan wireless Comment[it]=Impostazioni rete senza fili Comment[ko]=무선 네트워크 설정 Comment[lt]=Belaidžio tinklo nuostata Comment[nl]=Draadloos netwerk instelling Comment[nn]=Innstilling for trådlaust nettverk Comment[pl]=Ustawienia sieci bezprzewodowej Comment[pt]=Configuração da rede sem-fios Comment[pt_BR]=Configurações da rede sem fio Comment[ru]=Параметры беспроводного соединения Comment[sk]=Nastavenia bezdrôtovej siete Comment[sv]=Trådlös nätverksinställning Comment[tg]=Танзимоти шабакаи бесим Comment[uk]=Налаштовування бездротової мережі Comment[x-test]=xxWireless network settingxx Comment[zh_CN]=无线网络设置 Comment[zh_TW]=無線網路設定 Icon=network-wireless-symbolic Exec=plasma-settings -m kcm_mobile_wifi Type=Service X-KDE-ServiceTypes=KCModule X-KDE-Library=kcm_mobile_wifi X-KDE-ParentApp=kcontrol X-KDE-FormFactors=handset,tablet,mediacenter X-KDE-System-Settings-Parent-Category=network X-KDE-Weight=70 X-KDE-Keywords=wifi,network X-KDE-Keywords[ast]=wifi,rede X-KDE-Keywords[ca]=wifi,xarxa X-KDE-Keywords[ca@valencia]=wifi,xarxa X-KDE-Keywords[cs]=wifi,síť X-KDE-Keywords[da]=wifi,netværk X-KDE-Keywords[de]=wifi,netzwerk X-KDE-Keywords[en_GB]=wifi,network X-KDE-Keywords[es]=wifi,red X-KDE-Keywords[et]=wifi,võrk X-KDE-Keywords[eu]=wifi,haririk-gabeko,network,sarea X-KDE-Keywords[fi]=wifi,langaton,verkko X-KDE-Keywords[fr]=wifi,réseau X-KDE-Keywords[gl]=sen fíos,wifi,rede X-KDE-Keywords[hu]=wifi,hálózat X-KDE-Keywords[id]=wifi,jaringan X-KDE-Keywords[it]=wifi,rete X-KDE-Keywords[ko]=wifi,network,네트워크,무선 X-KDE-Keywords[lt]=wifi,belaidis,bevielis,tinklas X-KDE-Keywords[nl]=wifi,netwerk X-KDE-Keywords[nn]=wifi,nettverk,trådlaust X-KDE-Keywords[pl]=wifi,sieć X-KDE-Keywords[pt]=wifi,rede X-KDE-Keywords[pt_BR]=wifi,sem fio,rede X-KDE-Keywords[ru]=wifi,network,сеть X-KDE-Keywords[sk]=wifi,network X-KDE-Keywords[sv]=wifi,nätverk X-KDE-Keywords[tg]=wifi,шабака X-KDE-Keywords[uk]=wifi,network,вайфай,мережа X-KDE-Keywords[x-test]=xxwifixx,xxnetworkxx X-KDE-Keywords[zh_CN]=wifi,network,网络,无线 X-KDE-Keywords[zh_TW]=wifi,network,網路,無線網路 Categories=Qt;KDE;X-KDE-settings-system; diff --git a/vpn/ssh/plasmanetworkmanagement_sshui.desktop b/vpn/ssh/plasmanetworkmanagement_sshui.desktop index 96c980ec..03fcfe5d 100644 --- a/vpn/ssh/plasmanetworkmanagement_sshui.desktop +++ b/vpn/ssh/plasmanetworkmanagement_sshui.desktop @@ -1,99 +1,100 @@ [Desktop Entry] Type=Service Icon= ServiceTypes=PlasmaNetworkManagement/VpnUiPlugin X-KDE-Library=plasmanetworkmanagement_sshui X-NetworkManager-Services=org.freedesktop.NetworkManager.ssh X-KDE-PluginInfo-Author=Jan Grulich X-KDE-PluginInfo-Email=jgrulich@redhat.com X-KDE-PluginInfo-Name=plasmanetworkmanagement_sshui X-KDE-PluginInfo-Version=0.1 X-KDE-PluginInfo-Website= X-KDE-PluginInfo-Category=VPNService X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=false Name=SSH Name[ast]=SSH Name[ca]=SSH Name[ca@valencia]=SSH Name[cs]=SSH Name[da]=SSH Name[de]=SSH Name[el]=SSH Name[en_GB]=SSH Name[es]=SSH Name[et]=SSH Name[eu]=SSH Name[fi]=SSH Name[fr]=SSH Name[gl]=SSH Name[he]=SSH Name[hu]=SSH +Name[ia]=SSH Name[id]=SSH Name[it]=SSH Name[ja]=SSH Name[ko]=SSH Name[lt]=SSH Name[nb]=SSH Name[nl]=SSH Name[nn]=SSH Name[pa]=SSH Name[pl]=SSH Name[pt]=SSH Name[pt_BR]=SSH Name[ru]=SSH Name[sk]=SSH Name[sl]=SSH Name[sr]=ССХ Name[sr@ijekavian]=ССХ Name[sr@ijekavianlatin]=SSH Name[sr@latin]=SSH Name[sv]=SSH Name[tg]=SSH Name[tr]=SSH Name[uk]=SSH Name[x-test]=xxSSHxx Name[zh_CN]=SSH Name[zh_TW]=SSH Comment=Compatible with the SSH server Comment[ar]=متوافق مع خادوم SSH Comment[ast]=Compatible con un sirvidor SSH Comment[ca]=Compatible amb el servidor SSH Comment[ca@valencia]=Compatible amb el servidor SSH Comment[da]=Kompatibel med SSH-serveren Comment[de]=Mit dem SSH-Server kompatibel Comment[el]=Συμβατό με τον διακομιστή SSH Comment[en_GB]=Compatible with the SSH server Comment[es]=Compatible con el servidor SSH Comment[et]=Ühildub SSH-serveritega Comment[eu]=SSH zerbitzariarekin bateragarria Comment[fi]=Yhteensopiva SSH-palvelimen kanssa Comment[fr]=Compatible avec le serveur SSH Comment[gl]=Compatíbel con servidores de SSH. Comment[he]=תאימות עם שרתי SSL Comment[hu]=Kompatibilis az SSH kiszolgálókkal Comment[id]=Kompatibel dengan server SSH Comment[it]=Compatibile con il server SSH Comment[ja]=SSH サーバに対応 Comment[ko]=SSH 서버와 호환됨 Comment[lt]=Suderinamas su SSH serveriu Comment[nl]=Compatibel met de SSH-server Comment[nn]=Kompatibel med SSH-tenaren Comment[pa]=SSH ਸਰਵਰ ਲਈ ਢੁਕਵਾਂ Comment[pl]=Zgodny z serwerem SSH Comment[pt]=Compatível com o servidor SSH Comment[pt_BR]=Compatível com o servidor SSH Comment[ru]=Совместимая с сервером SSH Comment[sk]=Kompatibilné s SSH serverom Comment[sl]=Združljiv s strežnikom SSH Comment[sr]=Сагласно са ССХ сервером Comment[sr@ijekavian]=Сагласно са ССХ сервером Comment[sr@ijekavianlatin]=Saglasno sa SSH serverom Comment[sr@latin]=Saglasno sa SSH serverom Comment[sv]=Kompatibel med SSH-server Comment[tr]=SSH sunucusuyla uyumlu Comment[uk]=Сумісний з сервером SSH Comment[x-test]=xxCompatible with the SSH serverxx Comment[zh_CN]=兼容 SSH 服务器 Comment[zh_TW]=與 SSH 伺服器相容