From c5643d7185ea9c66bb66ab1a145a7fe40abee7d5 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Mon, 9 Jan 2023 22:30:28 +0000 Subject: [PATCH 01/45] Switch to upstream cctz --- .gitmodules | 2 +- third_party/cctz | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index d5ceec67..e21f1e3b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,4 +9,4 @@ url = https://github.com/znc/znc-docker [submodule "third_party/cctz"] path = third_party/cctz - url = https://github.com/DarthGandalf/cctz + url = https://github.com/google/cctz diff --git a/third_party/cctz b/third_party/cctz index cf0cd21f..49ba88fa 160000 --- a/third_party/cctz +++ b/third_party/cctz @@ -1 +1 @@ -Subproject commit cf0cd21f719cc86b83c7c4b1e8f85411df6b02c2 +Subproject commit 49ba88fa69b8922f84c69d5da5a515a946b55c94 From e6ffa04532bfd7047c3f8c71d6477e36c153e304 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Fri, 13 Jan 2023 21:17:18 +0000 Subject: [PATCH 02/45] Fix build with old cmake Close #1860 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5775a847..8cf7ead4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -286,7 +286,7 @@ if (NOT cctz_FOUND) ${PROJECT_SOURCE_DIR}/third_party/cctz/src/time_zone_posix.cc ${PROJECT_SOURCE_DIR}/third_party/cctz/src/zone_info_source.cc ) - add_library(cctz INTERFACE EXCLUDE_FROM_ALL) + add_library(cctz INTERFACE) add_library(cctz::cctz ALIAS cctz) target_include_directories(cctz INTERFACE $) From 454693147d566b6447ce568e454d6c09aece4c29 Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Thu, 19 Jan 2023 00:30:01 +0000 Subject: [PATCH 03/45] Update translations from Crowdin for pt_PT --- modules/po/clientnotify.pt_PT.po | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/po/clientnotify.pt_PT.po b/modules/po/clientnotify.pt_PT.po index d7f93aca..aee9dec7 100644 --- a/modules/po/clientnotify.pt_PT.po +++ b/modules/po/clientnotify.pt_PT.po @@ -28,17 +28,21 @@ msgstr "" #: clientnotify.cpp:57 msgid "Turns notifications for unseen connections on or off" msgstr "" +"Activa ou desactiva as notificações para as ligações nunca antes vistas" #: clientnotify.cpp:60 msgid "" "Specifies whether you want to be notified about new connections with new IPs" msgstr "" +"Especifica se pertende ser notificado acerca de novas ligações com novos IPs" #: clientnotify.cpp:64 msgid "" "Specifies whether you want to be notified about new connections with new " "client IDs" msgstr "" +"Especifica se pertende ser notificado acerca de novas ligações com novos IDs " +"de cliente" #: clientnotify.cpp:69 msgid "Turns notifications for clients disconnecting on or off" @@ -73,11 +77,11 @@ msgstr "Utilização: NewOnly " #: clientnotify.cpp:173 msgid "Usage: NotifyOnNewIP " -msgstr "" +msgstr "Utilização: NotifyOnNewIP " #: clientnotify.cpp:186 msgid "Usage: NotifyOnNewID " -msgstr "" +msgstr "Utilização: NotifyOnNewID " #: clientnotify.cpp:199 msgid "Usage: OnDisconnect " @@ -88,6 +92,9 @@ msgid "" "Current settings: Method: {1}, for unseen only: {2}, notifyfor unseen IPs: " "{3}, notify for unseen IDs: {4}, notify ondisconnecting clients: {5}" msgstr "" +"Definições actuais: Método: {1}, por nunca vistos apenas: {2}, notificar por " +"IPs nunca vistos: {3}, notificar por IDs nunca vistos: {4}, notificar por " +"clientes a desligar: {5}" #: clientnotify.cpp:224 msgid "" From 3a5f8901f7165ffe1fad21796d0a12389fe3b942 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Tue, 21 Feb 2023 22:41:48 +0000 Subject: [PATCH 04/45] Show more details how exactly cctz is used --- CMakeLists.txt | 5 ++++- NOTICE | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8cf7ead4..a5b422ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -273,7 +273,10 @@ endif() # 2023) packaged, so in my tests it always falls back to submodule find_package(cctz QUIET) set(cctz_cc "") -if (NOT cctz_FOUND) +if (cctz_FOUND) + message(STATUS "Found cctz at ${cctz_DIR}") +else() + message(STATUS "Will build cctz") set(cctz_cc ${PROJECT_SOURCE_DIR}/third_party/cctz/src/civil_time_detail.cc ${PROJECT_SOURCE_DIR}/third_party/cctz/src/time_zone_fixed.cc diff --git a/NOTICE b/NOTICE index c5a14ac3..ee778b1a 100644 --- a/NOTICE +++ b/NOTICE @@ -17,6 +17,7 @@ ZNC includes code from Selectize (http://brianreavis.github.io/selectize.js/), l ZNC includes modified code from CMakeFindFrameworks.cmake by Kitware, Inc., licensed under BSD License. ZNC includes modified code from TestLargeFiles.cmake, licensed under Boost Software License, Version 1.0. ZNC includes code from BackportCpp (https://github.com/bitwizeshift/string_view-standalone), licensed under the MIT license. +ZNC includes code from cctz (https://github.com/google/cctz), licensed under the Apache License 2.0. ZNC is developed by these people: From 64da93f7cf849078195271981075272ab637865a Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Fri, 24 Feb 2023 20:16:34 +0000 Subject: [PATCH 05/45] Remove done todo --- CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a5b422ad..be6f93f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -269,8 +269,6 @@ else() set(CSOCK_USE_POLL true) endif() -# TODO: verify that this find_package works; on Gentoo it's not currently (Jan -# 2023) packaged, so in my tests it always falls back to submodule find_package(cctz QUIET) set(cctz_cc "") if (cctz_FOUND) From 0772dd5718d1022377dde46734b311cbf097fc83 Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Tue, 28 Feb 2023 00:30:31 +0000 Subject: [PATCH 06/45] Update translations from Crowdin for de_DE --- modules/po/clientnotify.de_DE.po | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/po/clientnotify.de_DE.po b/modules/po/clientnotify.de_DE.po index 5559255c..73c4e6a3 100644 --- a/modules/po/clientnotify.de_DE.po +++ b/modules/po/clientnotify.de_DE.po @@ -27,18 +27,22 @@ msgstr "" #: clientnotify.cpp:57 msgid "Turns notifications for unseen connections on or off" -msgstr "" +msgstr "Schaltet Benachrichtigungen für ungesehene Klienten an oder aus" #: clientnotify.cpp:60 msgid "" "Specifies whether you want to be notified about new connections with new IPs" msgstr "" +"Spezifiziert, ob du über neue Verbindungen von neuen IP's benachrichtigt " +"werden möchtest" #: clientnotify.cpp:64 msgid "" "Specifies whether you want to be notified about new connections with new " "client IDs" msgstr "" +"Spezifiziert, ob du über neue Verbindungen mit neuen Client IDs " +"benachrichtigt werden möchtest" #: clientnotify.cpp:69 msgid "Turns notifications for clients disconnecting on or off" @@ -73,11 +77,11 @@ msgstr "Verwendung: NewOnly " #: clientnotify.cpp:173 msgid "Usage: NotifyOnNewIP " -msgstr "" +msgstr "Benutzung: NotifyOnNewIP " #: clientnotify.cpp:186 msgid "Usage: NotifyOnNewID " -msgstr "" +msgstr "Benutzung: NotifyOnNewID " #: clientnotify.cpp:199 msgid "Usage: OnDisconnect " @@ -88,6 +92,9 @@ msgid "" "Current settings: Method: {1}, for unseen only: {2}, notifyfor unseen IPs: " "{3}, notify for unseen IDs: {4}, notify ondisconnecting clients: {5}" msgstr "" +"Momentane Einstellungen: Methode: {1}, nur ungesehene: {2}, benachrichtige " +"für ungesehene IP's: {3}, benachrichtige für ungesehene IDs: {4}, " +"benachrichtige über trennende Klienten: {5}" #: clientnotify.cpp:224 msgid "" From 750eac085cf5f24d4400736d4b14a96199195fbb Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Mon, 20 Mar 2023 00:29:45 +0000 Subject: [PATCH 07/45] Update translations from Crowdin for --- TRANSLATORS.md | 1 - 1 file changed, 1 deletion(-) diff --git a/TRANSLATORS.md b/TRANSLATORS.md index 26c4363a..8976fbe3 100644 --- a/TRANSLATORS.md +++ b/TRANSLATORS.md @@ -12,7 +12,6 @@ These people helped translating ZNC to various languages: * Dreiundachzig * Dremski * eggoez (Baguz Ach) -* Felipefpl (Felipe) * freonesuka (Андрей Вальтер) * gremax * hypech From 47b815ae5b8a8caf04e67597524afe7a51e88b9c Mon Sep 17 00:00:00 2001 From: Peter Ajamian Date: Wed, 9 Aug 2023 19:13:54 +1200 Subject: [PATCH 08/45] Add account to joins for the log module. This commit adds the account name for identified users to "Joins" lines in logs generated by the log module. It can get the account name from either the account tag (if the account-tag capability is requested) or the extended-join info (if the extended-join capability is requested). The current version of ZNC requests both, but this feature will still work if the IRC server only supports one or the other. --- modules/log.cpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/modules/log.cpp b/modules/log.cpp index 2099d14e..3ad6db31 100644 --- a/modules/log.cpp +++ b/modules/log.cpp @@ -99,7 +99,7 @@ class CLogMod : public CModule { const CString& sMessage) override; void OnQuit(const CNick& Nick, const CString& sMessage, const vector& vChans) override; - void OnJoin(const CNick& Nick, CChan& Channel) override; + void OnJoinMessage(CJoinMessage& Message) override; void OnPart(const CNick& Nick, CChan& Channel, const CString& sMessage) override; void OnNick(const CNick& OldNick, const CString& sNewNick, @@ -457,12 +457,26 @@ CModule::EModRet CLogMod::OnSendToIRCMessage(CMessage& Message) { return CONTINUE; } -void CLogMod::OnJoin(const CNick& Nick, CChan& Channel) { - if (NeedJoins()) { - PutLog("*** Joins: " + Nick.GetNick() + " (" + Nick.GetIdent() + "@" + - Nick.GetHost() + ")", - Channel); +void CLogMod::OnJoinMessage(CJoinMessage& Message) { + if (!NeedJoins()) + return; + + const CNick& Nick = Message.GetNick(); + CChan& Channel = *Message.GetChan(); + CString Account = Message.GetTag("account"); + const char* s = " "; + + if (Account.empty()) + Account = Message.GetParam(1); + + if (Account.empty() || Account == "*") { + Account = ""; + s = ""; } + + PutLog("*** Joins: " + Nick.GetNick() + " (" + Nick.GetIdent() + "@" + + Nick.GetHost() + ")" + s + Account, + Channel); } void CLogMod::OnPart(const CNick& Nick, CChan& Channel, From 0a0ce543fa9605209b2438cd2ff5a891f7db250e Mon Sep 17 00:00:00 2001 From: Peter Ajamian Date: Sat, 12 Aug 2023 21:55:09 +1200 Subject: [PATCH 09/45] sAccount for consistency All CString variables should start with the letter s. --- modules/log.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/log.cpp b/modules/log.cpp index 3ad6db31..f81f1e7e 100644 --- a/modules/log.cpp +++ b/modules/log.cpp @@ -463,19 +463,19 @@ void CLogMod::OnJoinMessage(CJoinMessage& Message) { const CNick& Nick = Message.GetNick(); CChan& Channel = *Message.GetChan(); - CString Account = Message.GetTag("account"); + CString sAccount = Message.GetTag("account"); const char* s = " "; - if (Account.empty()) - Account = Message.GetParam(1); + if (sAccount.empty()) + sAccount = Message.GetParam(1); - if (Account.empty() || Account == "*") { - Account = ""; + if (sAccount.empty() || sAccount == "*") { + sAccount = ""; s = ""; } PutLog("*** Joins: " + Nick.GetNick() + " (" + Nick.GetIdent() + "@" + - Nick.GetHost() + ")" + s + Account, + Nick.GetHost() + ")" + s + sAccount, Channel); } From 1240ddc6934b909945556d7da71fa702c97dd3ad Mon Sep 17 00:00:00 2001 From: Peter Ajamian Date: Sun, 13 Aug 2023 22:29:48 +1200 Subject: [PATCH 10/45] Add TODO entry to move account logic to a separate method. --- modules/log.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/log.cpp b/modules/log.cpp index f81f1e7e..2098521b 100644 --- a/modules/log.cpp +++ b/modules/log.cpp @@ -463,6 +463,8 @@ void CLogMod::OnJoinMessage(CJoinMessage& Message) { const CNick& Nick = Message.GetNick(); CChan& Channel = *Message.GetChan(); + + // TODO: Move account logic to a separate Message method. CString sAccount = Message.GetTag("account"); const char* s = " "; From ee9ad2ff8e24848d084c60357fd49e1aee693642 Mon Sep 17 00:00:00 2001 From: KindOne <20209685+RealKindOne@users.noreply.github.com> Date: Fri, 8 Sep 2023 07:21:31 -0400 Subject: [PATCH 11/45] Use module names as the module ident. Some clients will reuse query windows as the client thinks its just a nick change if you have a existing query window with a module and a different one messages you. Fix that by using the modules name as the ident. Update tests to match new modules ident. --- src/Client.cpp | 18 +++++++++++------- test/IRCSockTest.cpp | 2 +- test/integration/tests/core.cpp | 6 +++--- test/integration/tests/modules.cpp | 2 +- test/integration/tests/scripting.cpp | 12 ++++++------ 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/Client.cpp b/src/Client.cpp index 6d215218..f24d69da 100644 --- a/src/Client.cpp +++ b/src/Client.cpp @@ -609,11 +609,13 @@ void CClient::PutModNotice(const CString& sModule, const CString& sLine) { DEBUG("(" << GetFullName() << ") ZNC -> CLI [:" + m_pUser->GetStatusPrefix() + + ((sModule.empty()) ? "status" : sModule) + "!" + ((sModule.empty()) ? "status" : sModule) + - "!znc@znc.in NOTICE " << GetNick() << " :" << sLine - << "]"); + "@znc.in NOTICE " + << GetNick() << " :" << sLine << "]"); Write(":" + m_pUser->GetStatusPrefix() + - ((sModule.empty()) ? "status" : sModule) + "!znc@znc.in NOTICE " + + ((sModule.empty()) ? "status" : sModule) + "!" + + ((sModule.empty()) ? "status" : sModule) + "@znc.in NOTICE " + GetNick() + " :" + sLine + "\r\n"); } @@ -624,16 +626,18 @@ void CClient::PutModule(const CString& sModule, const CString& sLine) { DEBUG("(" << GetFullName() << ") ZNC -> CLI [:" + m_pUser->GetStatusPrefix() + + ((sModule.empty()) ? "status" : sModule) + "!" + ((sModule.empty()) ? "status" : sModule) + - "!znc@znc.in PRIVMSG " << GetNick() << " :" << sLine - << "]"); + "@znc.in PRIVMSG " + << GetNick() << " :" << sLine << "]"); VCString vsLines; sLine.Split("\n", vsLines); for (const CString& s : vsLines) { Write(":" + m_pUser->GetStatusPrefix() + - ((sModule.empty()) ? "status" : sModule) + - "!znc@znc.in PRIVMSG " + GetNick() + " :" + s + "\r\n"); + ((sModule.empty()) ? "status" : sModule) + "!" + + ((sModule.empty()) ? "status" : sModule) + "@znc.in PRIVMSG " + + GetNick() + " :" + s + "\r\n"); } } diff --git a/test/IRCSockTest.cpp b/test/IRCSockTest.cpp index d5485218..8962cb93 100644 --- a/test/IRCSockTest.cpp +++ b/test/IRCSockTest.cpp @@ -211,7 +211,7 @@ TEST_F(IRCSockTest, OnErrorMessage) { EXPECT_THAT( m_pTestClient->vsLines, ElementsAre( - ":*status!znc@znc.in PRIVMSG me :Error from server: foo bar")); + ":*status!status@znc.in PRIVMSG me :Error from server: foo bar")); } TEST_F(IRCSockTest, OnInviteMessage) { diff --git a/test/integration/tests/core.cpp b/test/integration/tests/core.cpp index a0c23a4b..95a7490d 100644 --- a/test/integration/tests/core.cpp +++ b/test/integration/tests/core.cpp @@ -296,15 +296,15 @@ TEST_F(ZNCTest, StatusEchoMessage) { client.Write("CAP REQ :echo-message"); client.Write("PRIVMSG *status :blah"); client.ReadUntil(":nick!user@irc.znc.in PRIVMSG *status :blah"); - client.ReadUntil(":*status!znc@znc.in PRIVMSG nick :Unknown command"); + client.ReadUntil(":*status!status@znc.in PRIVMSG nick :Unknown command"); client.Write("znc delnetwork test"); client.ReadUntil("Network deleted"); auto client2 = LoginClient(); client2.Write("PRIVMSG *status :blah2"); - client2.ReadUntil(":*status!znc@znc.in PRIVMSG nick :Unknown command"); + client2.ReadUntil(":*status!status@znc.in PRIVMSG nick :Unknown command"); auto client3 = LoginClient(); client3.Write("PRIVMSG *status :blah3"); - client3.ReadUntil(":*status!znc@znc.in PRIVMSG nick :Unknown command"); + client3.ReadUntil(":*status!status@znc.in PRIVMSG nick :Unknown command"); } TEST_F(ZNCTest, MoveChannels) { diff --git a/test/integration/tests/modules.cpp b/test/integration/tests/modules.cpp index 6f2737ca..6b87cda3 100644 --- a/test/integration/tests/modules.cpp +++ b/test/integration/tests/modules.cpp @@ -234,7 +234,7 @@ TEST_F(ZNCTest, KeepNickModule) { ircd.ReadUntil("NICK user"); ircd.Write(":server 435 user_ user #error :Nope :-P"); client.ReadUntil( - ":*keepnick!znc@znc.in PRIVMSG user_ " + ":*keepnick!keepnick@znc.in PRIVMSG user_ " ":Unable to obtain nick user: Nope :-P, #error"); } diff --git a/test/integration/tests/scripting.cpp b/test/integration/tests/scripting.cpp index d31fb778..24a45038 100644 --- a/test/integration/tests/scripting.cpp +++ b/test/integration/tests/scripting.cpp @@ -31,7 +31,7 @@ TEST_F(ZNCTest, Modperl) { client.Write("znc loadmod modperl"); client.Write("znc loadmod perleval"); client.Write("PRIVMSG *perleval :2+2"); - client.ReadUntil(":*perleval!znc@znc.in PRIVMSG nick :Result: 4"); + client.ReadUntil(":*perleval!perleval@znc.in PRIVMSG nick :Result: 4"); client.Write("PRIVMSG *perleval :$self->GetUser->GetUsername"); client.ReadUntil("Result: user"); } @@ -48,7 +48,7 @@ TEST_F(ZNCTest, Modpython) { client.Write("znc loadmod modpython"); client.Write("znc loadmod pyeval"); client.Write("PRIVMSG *pyeval :2+2"); - client.ReadUntil(":*pyeval!znc@znc.in PRIVMSG nick :4"); + client.ReadUntil(":*pyeval!pyeval@znc.in PRIVMSG nick :4"); client.Write("PRIVMSG *pyeval :module.GetUser().GetUsername()"); client.ReadUntil("nick :'user'"); ircd.Write(":server 001 nick :Hello"); @@ -60,7 +60,7 @@ TEST_F(ZNCTest, Modpython) { client.Write("PRIVMSG *controlpanel :Set ClientEncoding $me Western"); client.Write("JOIN #a\342"); client.ReadUntil( - ":*controlpanel!znc@znc.in PRIVMSG nick :ClientEncoding = UTF-8"); + ":*controlpanel!controlpanel@znc.in PRIVMSG nick :ClientEncoding = UTF-8"); ircd.ReadUntil("JOIN #a\xEF\xBF\xBD"); } @@ -328,7 +328,7 @@ TEST_F(ZNCTest, ModpythonCommand) { client.Write("znc loadmod modpython"); client.Write("znc loadmod cmdtest"); client.Write("PRIVMSG *cmdtest :ping or"); - client.ReadUntil(":*cmdtest!znc@znc.in PRIVMSG nick :ping or pong"); + client.ReadUntil(":*cmdtest!cmdtest@znc.in PRIVMSG nick :ping or pong"); InstallTranslation("cmdtest", "ru_RU", R"( msgid "" @@ -352,9 +352,9 @@ TEST_F(ZNCTest, ModpythonCommand) { client.Write("PRIVMSG *controlpanel :set language $me ru-RU"); client.Write("PRIVMSG *cmdtest :help"); - client.ReadUntil(":*cmdtest!znc@znc.in PRIVMSG nick :\x02ping аргумент\x0F: бла"); + client.ReadUntil(":*cmdtest!cmdtest@znc.in PRIVMSG nick :\x02ping аргумент\x0F: бла"); client.Write("PRIVMSG *cmdtest :ping"); - client.ReadUntil(":*cmdtest!znc@znc.in PRIVMSG nick :ping понг"); + client.ReadUntil(":*cmdtest!cmdtest@znc.in PRIVMSG nick :ping понг"); } } // namespace From b57643e173a5ecc6fcc921b95c4727d0d75c8bbf Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Sat, 23 Sep 2023 21:09:18 +0000 Subject: [PATCH 12/45] Update translations from Crowdin for bg_BG da_DK de_DE el_GR es_ES fr_FR id_ID it_IT nl_NL pt_BR pt_PT ro_RO ru_RU tr_TR --- TRANSLATORS.md | 2 + modules/po/admindebug.tr_TR.po | 60 + modules/po/adminlog.tr_TR.po | 69 + modules/po/alias.tr_TR.po | 123 ++ modules/po/autoattach.tr_TR.po | 86 ++ modules/po/autocycle.pt_BR.po | 2 +- modules/po/autocycle.tr_TR.po | 73 + modules/po/autoop.tr_TR.po | 179 +++ modules/po/autoreply.fr_FR.po | 2 +- modules/po/autoreply.tr_TR.po | 45 + modules/po/autovoice.tr_TR.po | 114 ++ modules/po/awaystore.tr_TR.po | 118 ++ modules/po/block_motd.fr_FR.po | 6 +- modules/po/block_motd.tr_TR.po | 37 + modules/po/blockuser.fr_FR.po | 2 +- modules/po/blockuser.pt_BR.po | 10 +- modules/po/blockuser.tr_TR.po | 97 ++ modules/po/bouncedcc.tr_TR.po | 135 ++ modules/po/buffextras.pt_BR.po | 2 +- modules/po/buffextras.tr_TR.po | 49 + modules/po/cert.fr_FR.po | 29 +- modules/po/cert.pt_BR.po | 4 +- modules/po/cert.tr_TR.po | 78 + modules/po/certauth.fr_FR.po | 44 +- modules/po/certauth.pt_BR.po | 6 +- modules/po/certauth.tr_TR.po | 111 ++ modules/po/chansaver.tr_TR.po | 18 + modules/po/clearbufferonmsg.tr_TR.po | 18 + modules/po/clientnotify.fr_FR.po | 6 +- modules/po/clientnotify.tr_TR.po | 105 ++ modules/po/controlpanel.pt_BR.po | 54 +- modules/po/controlpanel.tr_TR.po | 741 ++++++++++ modules/po/crypt.pt_BR.po | 2 +- modules/po/crypt.tr_TR.po | 146 ++ modules/po/ctcpflood.pt_BR.po | 2 +- modules/po/ctcpflood.tr_TR.po | 73 + modules/po/cyrusauth.pt_BR.po | 2 +- modules/po/cyrusauth.tr_TR.po | 84 ++ modules/po/dcc.pt_BR.po | 10 +- modules/po/dcc.tr_TR.po | 231 +++ modules/po/disconkick.pt_BR.po | 2 +- modules/po/disconkick.tr_TR.po | 23 + modules/po/fail2ban.pt_BR.po | 12 +- modules/po/fail2ban.tr_TR.po | 124 ++ modules/po/flooddetach.pt_BR.po | 4 +- modules/po/flooddetach.tr_TR.po | 95 ++ modules/po/identfile.pt_BR.po | 2 +- modules/po/identfile.tr_TR.po | 83 ++ modules/po/imapauth.tr_TR.po | 22 + modules/po/keepnick.tr_TR.po | 53 + modules/po/kickrejoin.tr_TR.po | 61 + modules/po/lastseen.pt_BR.po | 14 +- modules/po/lastseen.tr_TR.po | 69 + modules/po/listsockets.pt_BR.po | 12 +- modules/po/listsockets.tr_TR.po | 113 ++ modules/po/log.bg_BG.po | 4 +- modules/po/log.da_DK.po | 4 +- modules/po/log.de_DE.po | 4 +- modules/po/log.el_GR.po | 4 +- modules/po/log.es_ES.po | 4 +- modules/po/log.fr_FR.po | 4 +- modules/po/log.id_ID.po | 4 +- modules/po/log.it_IT.po | 4 +- modules/po/log.nl_NL.po | 4 +- modules/po/log.pot | 4 +- modules/po/log.pt_BR.po | 4 +- modules/po/log.pt_PT.po | 4 +- modules/po/log.ro_RO.po | 4 +- modules/po/log.ru_RU.po | 4 +- modules/po/log.tr_TR.po | 148 ++ modules/po/missingmotd.tr_TR.po | 17 + modules/po/modperl.tr_TR.po | 17 + modules/po/modpython.tr_TR.po | 17 + modules/po/modules_online.tr_TR.po | 17 + modules/po/nickserv.pt_BR.po | 6 +- modules/po/nickserv.tr_TR.po | 82 ++ modules/po/notes.tr_TR.po | 119 ++ modules/po/notify_connect.tr_TR.po | 29 + modules/po/perform.tr_TR.po | 108 ++ modules/po/perleval.tr_TR.po | 31 + modules/po/pyeval.tr_TR.po | 21 + modules/po/raw.tr_TR.po | 17 + modules/po/route_replies.tr_TR.po | 59 + modules/po/sample.pt_BR.po | 4 +- modules/po/sample.tr_TR.po | 119 ++ modules/po/samplewebapi.tr_TR.po | 17 + modules/po/sasl.pt_BR.po | 12 +- modules/po/sasl.tr_TR.po | 174 +++ modules/po/savebuff.tr_TR.po | 62 + modules/po/send_raw.pt_BR.po | 4 +- modules/po/send_raw.tr_TR.po | 109 ++ modules/po/shell.tr_TR.po | 29 + modules/po/simple_away.tr_TR.po | 92 ++ modules/po/stickychan.pt_BR.po | 14 +- modules/po/stickychan.tr_TR.po | 102 ++ modules/po/stripcontrols.tr_TR.po | 18 + modules/po/watch.pt_BR.po | 4 +- modules/po/watch.tr_TR.po | 193 +++ modules/po/webadmin.pt_BR.po | 112 +- modules/po/webadmin.tr_TR.po | 1247 ++++++++++++++++ src/po/znc.bg_BG.po | 20 +- src/po/znc.da_DK.po | 20 +- src/po/znc.de_DE.po | 20 +- src/po/znc.el_GR.po | 20 +- src/po/znc.es_ES.po | 20 +- src/po/znc.fr_FR.po | 28 +- src/po/znc.id_ID.po | 20 +- src/po/znc.it_IT.po | 20 +- src/po/znc.nl_NL.po | 20 +- src/po/znc.pot | 20 +- src/po/znc.pt_BR.po | 42 +- src/po/znc.pt_PT.po | 20 +- src/po/znc.ro_RO.po | 20 +- src/po/znc.ru_RU.po | 20 +- src/po/znc.tr_TR.po | 1998 ++++++++++++++++++++++++++ 115 files changed, 8658 insertions(+), 370 deletions(-) create mode 100644 modules/po/admindebug.tr_TR.po create mode 100644 modules/po/adminlog.tr_TR.po create mode 100644 modules/po/alias.tr_TR.po create mode 100644 modules/po/autoattach.tr_TR.po create mode 100644 modules/po/autocycle.tr_TR.po create mode 100644 modules/po/autoop.tr_TR.po create mode 100644 modules/po/autoreply.tr_TR.po create mode 100644 modules/po/autovoice.tr_TR.po create mode 100644 modules/po/awaystore.tr_TR.po create mode 100644 modules/po/block_motd.tr_TR.po create mode 100644 modules/po/blockuser.tr_TR.po create mode 100644 modules/po/bouncedcc.tr_TR.po create mode 100644 modules/po/buffextras.tr_TR.po create mode 100644 modules/po/cert.tr_TR.po create mode 100644 modules/po/certauth.tr_TR.po create mode 100644 modules/po/chansaver.tr_TR.po create mode 100644 modules/po/clearbufferonmsg.tr_TR.po create mode 100644 modules/po/clientnotify.tr_TR.po create mode 100644 modules/po/controlpanel.tr_TR.po create mode 100644 modules/po/crypt.tr_TR.po create mode 100644 modules/po/ctcpflood.tr_TR.po create mode 100644 modules/po/cyrusauth.tr_TR.po create mode 100644 modules/po/dcc.tr_TR.po create mode 100644 modules/po/disconkick.tr_TR.po create mode 100644 modules/po/fail2ban.tr_TR.po create mode 100644 modules/po/flooddetach.tr_TR.po create mode 100644 modules/po/identfile.tr_TR.po create mode 100644 modules/po/imapauth.tr_TR.po create mode 100644 modules/po/keepnick.tr_TR.po create mode 100644 modules/po/kickrejoin.tr_TR.po create mode 100644 modules/po/lastseen.tr_TR.po create mode 100644 modules/po/listsockets.tr_TR.po create mode 100644 modules/po/log.tr_TR.po create mode 100644 modules/po/missingmotd.tr_TR.po create mode 100644 modules/po/modperl.tr_TR.po create mode 100644 modules/po/modpython.tr_TR.po create mode 100644 modules/po/modules_online.tr_TR.po create mode 100644 modules/po/nickserv.tr_TR.po create mode 100644 modules/po/notes.tr_TR.po create mode 100644 modules/po/notify_connect.tr_TR.po create mode 100644 modules/po/perform.tr_TR.po create mode 100644 modules/po/perleval.tr_TR.po create mode 100644 modules/po/pyeval.tr_TR.po create mode 100644 modules/po/raw.tr_TR.po create mode 100644 modules/po/route_replies.tr_TR.po create mode 100644 modules/po/sample.tr_TR.po create mode 100644 modules/po/samplewebapi.tr_TR.po create mode 100644 modules/po/sasl.tr_TR.po create mode 100644 modules/po/savebuff.tr_TR.po create mode 100644 modules/po/send_raw.tr_TR.po create mode 100644 modules/po/shell.tr_TR.po create mode 100644 modules/po/simple_away.tr_TR.po create mode 100644 modules/po/stickychan.tr_TR.po create mode 100644 modules/po/stripcontrols.tr_TR.po create mode 100644 modules/po/watch.tr_TR.po create mode 100644 modules/po/webadmin.tr_TR.po create mode 100644 src/po/znc.tr_TR.po diff --git a/TRANSLATORS.md b/TRANSLATORS.md index 8976fbe3..55b977c4 100644 --- a/TRANSLATORS.md +++ b/TRANSLATORS.md @@ -3,6 +3,7 @@ These people helped translating ZNC to various languages: * Alcahest ([X] Alcahest) * Altay * bashgeek (Daniel) +* CaPaCuL * casmo (Casper) * ChaosEngine (Andrzej Pauli) * cirinho (Ciro Moniz) @@ -21,6 +22,7 @@ These people helped translating ZNC to various languages: * leon-th (Leon T.) * LiteHell * lorenzosu +* M0onshadow (Maelan) * MikkelDK * mkgeeky (mkgeeky) * moonlightzzz (moonlightz) diff --git a/modules/po/admindebug.tr_TR.po b/modules/po/admindebug.tr_TR.po new file mode 100644 index 00000000..a1101282 --- /dev/null +++ b/modules/po/admindebug.tr_TR.po @@ -0,0 +1,60 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/admindebug.pot\n" +"X-Crowdin-File-ID: 273\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: admindebug.cpp:30 +msgid "Enable Debug Mode" +msgstr "Hata Ayıklama Modunu Etkinleştirme" + +#: admindebug.cpp:32 +msgid "Disable Debug Mode" +msgstr "Hata Ayıklama Modunu Devre Dışı Bırakma" + +#: admindebug.cpp:34 +msgid "Show the Debug Mode status" +msgstr "Hata Ayıklama Modu durumunu göster" + +#: admindebug.cpp:40 admindebug.cpp:49 +msgid "Access denied!" +msgstr "Erişim reddedildi!" + +#: admindebug.cpp:58 +msgid "" +"Failure. We need to be running with a TTY. (is ZNC running with --" +"foreground?)" +msgstr "" +"Arıza. Bir TTY ile çalışmamız gerekiyor. (ZNC --foreground ile mi çalışıyor?)" + +#: admindebug.cpp:66 +msgid "Already enabled." +msgstr "Zaten etkin." + +#: admindebug.cpp:68 +msgid "Already disabled." +msgstr "Zaten devre dışı." + +#: admindebug.cpp:92 +msgid "Debugging mode is on." +msgstr "Hata ayıklama modu açık." + +#: admindebug.cpp:94 +msgid "Debugging mode is off." +msgstr "Hata ayıklama modu kapalı." + +#: admindebug.cpp:96 +msgid "Logging to: stdout." +msgstr "Oturum açılıyor: stdout." + +#: admindebug.cpp:105 +msgid "Enable Debug mode dynamically." +msgstr "Hata Ayıklama modunu dinamik olarak etkinleştirin." diff --git a/modules/po/adminlog.tr_TR.po b/modules/po/adminlog.tr_TR.po new file mode 100644 index 00000000..a70243fd --- /dev/null +++ b/modules/po/adminlog.tr_TR.po @@ -0,0 +1,69 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/adminlog.pot\n" +"X-Crowdin-File-ID: 149\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: adminlog.cpp:29 +msgid "Show the logging target" +msgstr "Günlük hedefini göster" + +#: adminlog.cpp:31 +msgid " [path]" +msgstr " [yol]" + +#: adminlog.cpp:32 +msgid "Set the logging target" +msgstr "Günlük hedefini ayarlayın" + +#: adminlog.cpp:142 +msgid "Access denied" +msgstr "Erişim reddedildi" + +#: adminlog.cpp:156 +msgid "Now logging to file" +msgstr "Şimdi dosyaya giriş yapılıyor" + +#: adminlog.cpp:160 +msgid "Now only logging to syslog" +msgstr "Artık yalnızca sistem günlüğüne giriş yapılıyor" + +#: adminlog.cpp:164 +msgid "Now logging to syslog and file" +msgstr "Şimdi sistem günlüğüne ve dosyaya giriş yapılıyor" + +#: adminlog.cpp:168 +msgid "Usage: Target [path]" +msgstr "Kullanımı: Target [yol]" + +#: adminlog.cpp:170 +msgid "Unknown target" +msgstr "Bilinmeyen hedef" + +#: adminlog.cpp:192 +msgid "Logging is enabled for file" +msgstr "Dosya için günlük kaydı etkinleştirildi" + +#: adminlog.cpp:195 +msgid "Logging is enabled for syslog" +msgstr "Sistem günlüğü için günlük kaydı etkinleştirildi" + +#: adminlog.cpp:198 +msgid "Logging is enabled for both, file and syslog" +msgstr "Günlük kaydı hem dosya hem de sistem günlüğü için etkinleştirildi" + +#: adminlog.cpp:204 +msgid "Log file will be written to {1}" +msgstr "Günlük dosyası {1}'e yazılacak" + +#: adminlog.cpp:222 +msgid "Log ZNC events to file and/or syslog." +msgstr "ZNC olaylarını dosyaya ve/veya sistem günlüğüne kaydedin." diff --git a/modules/po/alias.tr_TR.po b/modules/po/alias.tr_TR.po new file mode 100644 index 00000000..5e5e8505 --- /dev/null +++ b/modules/po/alias.tr_TR.po @@ -0,0 +1,123 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/alias.pot\n" +"X-Crowdin-File-ID: 150\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: alias.cpp:141 +msgid "missing required parameter: {1}" +msgstr "gerekli parametre eksik: {1}" + +#: alias.cpp:201 +msgid "Created alias: {1}" +msgstr "Takma ad oluşturuldu: {1}" + +#: alias.cpp:203 +msgid "Alias already exists." +msgstr "Takma ad zaten mevcut." + +#: alias.cpp:210 +msgid "Deleted alias: {1}" +msgstr "Silinen takma ad: {1}" + +#: alias.cpp:213 alias.cpp:224 alias.cpp:246 alias.cpp:265 alias.cpp:276 +#: alias.cpp:333 +msgid "Alias does not exist." +msgstr "Takma ad mevcut değil." + +#: alias.cpp:222 alias.cpp:244 alias.cpp:263 alias.cpp:274 +msgid "Modified alias." +msgstr "Değiştirilmiş takma ad." + +#: alias.cpp:236 alias.cpp:256 +msgid "Invalid index." +msgstr "Geçersiz dizin." + +#: alias.cpp:282 alias.cpp:298 +msgid "There are no aliases." +msgstr "Takma ad yok." + +#: alias.cpp:289 +msgid "The following aliases exist: {1}" +msgstr "Aşağıdaki takma adlar mevcuttur: {1}" + +#: alias.cpp:290 +msgctxt "list|separator" +msgid ", " +msgstr ", " + +#: alias.cpp:324 +msgid "Actions for alias {1}:" +msgstr "{1} takma adına ilişkin işlemler:" + +#: alias.cpp:331 +msgid "End of actions for alias {1}." +msgstr "{1} takma adına ilişkin işlemlerin sonu." + +#: alias.cpp:338 alias.cpp:341 alias.cpp:352 alias.cpp:357 +msgid "" +msgstr "" + +#: alias.cpp:339 +msgid "Creates a new, blank alias called name." +msgstr "Ad adı verilen yeni, boş bir takma ad oluşturur." + +#: alias.cpp:341 +msgid "Deletes an existing alias." +msgstr "Mevcut bir takma adı siler." + +#: alias.cpp:343 +msgid " " +msgstr " " + +#: alias.cpp:344 +msgid "Adds a line to an existing alias." +msgstr "Mevcut bir takma ada bir satır ekler." + +#: alias.cpp:346 +msgid " " +msgstr " " + +#: alias.cpp:347 +msgid "Inserts a line into an existing alias." +msgstr "Mevcut bir takma ada bir satır ekler." + +#: alias.cpp:349 +msgid " " +msgstr " " + +#: alias.cpp:350 +msgid "Removes a line from an existing alias." +msgstr "Mevcut bir takma addan bir satırı kaldırır." + +#: alias.cpp:353 +msgid "Removes all lines from an existing alias." +msgstr "Mevcut bir takma addan tüm satırları kaldırır." + +#: alias.cpp:355 +msgid "Lists all aliases by name." +msgstr "Tüm takma adları ada göre listeler." + +#: alias.cpp:358 +msgid "Reports the actions performed by an alias." +msgstr "Bir takma ad tarafından gerçekleştirilen eylemleri raporlar." + +#: alias.cpp:362 +msgid "Generate a list of commands to copy your alias config." +msgstr "Takma ad yapılandırmanızı kopyalamak için bir komut listesi oluşturun." + +#: alias.cpp:374 +msgid "Clearing all of them!" +msgstr "Hepsini temizleniyor!" + +#: alias.cpp:409 +msgid "Provides bouncer-side command alias support." +msgstr "Koruma tarafı komut takma adı desteği sağlar." diff --git a/modules/po/autoattach.tr_TR.po b/modules/po/autoattach.tr_TR.po new file mode 100644 index 00000000..1bc5285e --- /dev/null +++ b/modules/po/autoattach.tr_TR.po @@ -0,0 +1,86 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/autoattach.pot\n" +"X-Crowdin-File-ID: 151\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: autoattach.cpp:94 +msgid "Added to list" +msgstr "Listeye eklendi" + +#: autoattach.cpp:96 +msgid "{1} is already added" +msgstr "{1} zaten eklendi" + +#: autoattach.cpp:100 +msgid "Usage: Add [!]<#chan> " +msgstr "Kullanımı: Add [!]<#kanal> " + +#: autoattach.cpp:101 +msgid "Wildcards are allowed" +msgstr "Joker karakterlere izin verilir" + +#: autoattach.cpp:113 +msgid "Removed {1} from list" +msgstr "{1} listeden kaldırıldı" + +#: autoattach.cpp:115 +msgid "Usage: Del [!]<#chan> " +msgstr "Kullanımı: Del [!]<#kanal> " + +#: autoattach.cpp:121 autoattach.cpp:129 +msgid "Neg" +msgstr "Ret" + +#: autoattach.cpp:122 autoattach.cpp:130 +msgid "Chan" +msgstr "Kanal" + +#: autoattach.cpp:123 autoattach.cpp:131 +msgid "Search" +msgstr "Arama" + +#: autoattach.cpp:124 autoattach.cpp:132 +msgid "Host" +msgstr "Host" + +#: autoattach.cpp:138 +msgid "You have no entries." +msgstr "Hiçbir girdiniz yok." + +#: autoattach.cpp:146 autoattach.cpp:149 +msgid "[!]<#chan> " +msgstr "[!]<#kanal> " + +#: autoattach.cpp:147 +msgid "Add an entry, use !#chan to negate and * for wildcards" +msgstr "" +"Bir giriş ekleyin, reddetmek için !#chan ve joker karakterler için * kullanın" + +#: autoattach.cpp:150 +msgid "Remove an entry, needs to be an exact match" +msgstr "Bir girişi kaldırın; tam eşleşme olması gerekiyor" + +#: autoattach.cpp:152 +msgid "List all entries" +msgstr "Tüm girişleri listele" + +#: autoattach.cpp:171 +msgid "Unable to add [{1}]" +msgstr "[{1}] eklenemiyor" + +#: autoattach.cpp:283 +msgid "List of channel masks and channel masks with ! before them." +msgstr "Kanal maskeleri ve kanal maskelerinin listesi ! onlardan önce." + +#: autoattach.cpp:286 +msgid "Reattaches you to channels on activity." +msgstr "Sizi etkinlikteki kanallara yeniden bağlar." diff --git a/modules/po/autocycle.pt_BR.po b/modules/po/autocycle.pt_BR.po index 3b6cc5ff..d2f2a768 100644 --- a/modules/po/autocycle.pt_BR.po +++ b/modules/po/autocycle.pt_BR.po @@ -54,7 +54,7 @@ msgstr "Sintaxe: Del [!]<#canal>" #: autocycle.cpp:85 autocycle.cpp:90 autocycle.cpp:95 msgid "Channel" -msgstr "" +msgstr "Canal" #: autocycle.cpp:101 msgid "You have no entries." diff --git a/modules/po/autocycle.tr_TR.po b/modules/po/autocycle.tr_TR.po new file mode 100644 index 00000000..bde4fe4b --- /dev/null +++ b/modules/po/autocycle.tr_TR.po @@ -0,0 +1,73 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/autocycle.pot\n" +"X-Crowdin-File-ID: 207\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: autocycle.cpp:27 autocycle.cpp:30 +msgid "[!]<#chan>" +msgstr "[!]<#kanal>" + +#: autocycle.cpp:28 +msgid "Add an entry, use !#chan to negate and * for wildcards" +msgstr "" +"Bir giriş ekleyin, reddetmek için !#kanal ve joker karakterler için * " +"kullanın" + +#: autocycle.cpp:31 +msgid "Remove an entry, needs to be an exact match" +msgstr "Bir girişi kaldırın; tam eşleşme olması gerekiyor" + +#: autocycle.cpp:33 +msgid "List all entries" +msgstr "Tüm girişleri listele" + +#: autocycle.cpp:46 +msgid "Unable to add {1}" +msgstr "{1} eklenemiyor" + +#: autocycle.cpp:66 +msgid "{1} is already added" +msgstr "{1} zaten eklendi" + +#: autocycle.cpp:68 +msgid "Added {1} to list" +msgstr "{1} listeye eklendi" + +#: autocycle.cpp:70 +msgid "Usage: Add [!]<#chan>" +msgstr "Kullanımı: Add [!]<#kanal>" + +#: autocycle.cpp:78 +msgid "Removed {1} from list" +msgstr "{1} listeden kaldırıldı" + +#: autocycle.cpp:80 +msgid "Usage: Del [!]<#chan>" +msgstr "Kullanımı: Del [!]<#kanal>" + +#: autocycle.cpp:85 autocycle.cpp:90 autocycle.cpp:95 +msgid "Channel" +msgstr "Kanal" + +#: autocycle.cpp:101 +msgid "You have no entries." +msgstr "Hiçbir girdiniz yok." + +#: autocycle.cpp:230 +msgid "List of channel masks and channel masks with ! before them." +msgstr "Kanal maskeleri ve kanal maskelerinin listesi ! ile onlardan önce." + +#: autocycle.cpp:235 +msgid "Rejoins channels to gain Op if you're the only user left" +msgstr "" +"Geriye kalan tek kullanıcı sizseniz Op kazanmak için kanallara yeniden " +"katılır" diff --git a/modules/po/autoop.tr_TR.po b/modules/po/autoop.tr_TR.po new file mode 100644 index 00000000..cb8d665e --- /dev/null +++ b/modules/po/autoop.tr_TR.po @@ -0,0 +1,179 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/autoop.pot\n" +"X-Crowdin-File-ID: 153\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: autoop.cpp:155 +msgid "List all users" +msgstr "Tüm kullanıcıları listele" + +#: autoop.cpp:157 autoop.cpp:160 +msgid " [channel] ..." +msgstr " [kanal] ..." + +#: autoop.cpp:158 +msgid "Adds channels to a user" +msgstr "Bir kullanıcıya kanal ekler" + +#: autoop.cpp:161 +msgid "Removes channels from a user" +msgstr "Kullanıcıdan kanalları kaldırma" + +#: autoop.cpp:163 autoop.cpp:166 +msgid " ,[mask] ..." +msgstr " [maske] ..." + +#: autoop.cpp:164 +msgid "Adds masks to a user" +msgstr "Kullanıcıdan kanalları kaldırma" + +#: autoop.cpp:167 +msgid "Removes masks from a user" +msgstr "Kullanıcının maskelerini kaldırır" + +#: autoop.cpp:170 +msgid " [,...] [channels]" +msgstr " [,...] [kanallar]" + +#: autoop.cpp:171 +msgid "Adds a user" +msgstr "Bir kullanıcı ekler" + +#: autoop.cpp:173 +msgid "" +msgstr "" + +#: autoop.cpp:173 +msgid "Removes a user" +msgstr "Bir kullanıcıyı kaldırır" + +#: autoop.cpp:276 +msgid "Usage: AddUser [,...] [channels]" +msgstr "" +"Kullanımı: AddUser [,...] " +" [kanallar]" + +#: autoop.cpp:292 +msgid "Usage: DelUser " +msgstr "Kullanımı: DelUser " + +#: autoop.cpp:301 +msgid "There are no users defined" +msgstr "Tanımlanmış kullanıcı yok" + +#: autoop.cpp:307 autoop.cpp:318 autoop.cpp:322 autoop.cpp:324 +msgid "User" +msgstr "Kullanıcı" + +#: autoop.cpp:308 autoop.cpp:326 +msgid "Hostmasks" +msgstr "Host Maskeleri" + +#: autoop.cpp:309 autoop.cpp:319 +msgid "Key" +msgstr "Anahtar" + +#: autoop.cpp:310 autoop.cpp:320 +msgid "Channels" +msgstr "Kanallar" + +#: autoop.cpp:338 +msgid "Usage: AddChans [channel] ..." +msgstr "Kullanımı: AddChans [kanal] ..." + +#: autoop.cpp:345 autoop.cpp:366 autoop.cpp:388 autoop.cpp:409 autoop.cpp:473 +msgid "No such user" +msgstr "Böyle bir kullanıcı yok" + +#: autoop.cpp:350 +msgid "Channel(s) added to user {1}" +msgstr "Kanal(lar) {1} kullanıcısına eklendi" + +#: autoop.cpp:359 +msgid "Usage: DelChans [channel] ..." +msgstr "Kullanımı: DelChans [kanal] ..." + +#: autoop.cpp:372 +msgid "Channel(s) Removed from user {1}" +msgstr "Kanal(lar) {1} kullanıcısından silindi" + +#: autoop.cpp:381 +msgid "Usage: AddMasks ,[mask] ..." +msgstr "Kullanımı: AddMasks ,[maske] ..." + +#: autoop.cpp:393 +msgid "Hostmasks(s) added to user {1}" +msgstr "Host maske(ler) {1} kullanıcısına eklendi" + +#: autoop.cpp:402 +msgid "Usage: DelMasks ,[mask] ..." +msgstr "Kullanımı: DelMasks ,[maske] ..." + +#: autoop.cpp:414 +msgid "Removed user {1} with key {2} and channels {3}" +msgstr "{2} anahtarı ve {3} kanal(lar)ı olan {1} kullanıcısı kaldırıldı" + +#: autoop.cpp:420 +msgid "Hostmasks(s) Removed from user {1}" +msgstr "Host maske(ler) {1} kullanıcısından kaldırıldı" + +#: autoop.cpp:479 +msgid "User {1} removed" +msgstr "{1} kullanıcısı kaldırıldı" + +#: autoop.cpp:485 +msgid "That user already exists" +msgstr "Bu kullanıcı zaten mevcut" + +#: autoop.cpp:491 +msgid "User {1} added with hostmask(s) {2}" +msgstr "{1} kullanıcısı {2} host maskeleriyle eklendi" + +#: autoop.cpp:533 +msgid "" +"[{1}] sent us a challenge but they are not opped in any defined channels." +msgstr "" +"[{1}] bize bir challenge gönderiyor ancak tanımlanmış hiçbir kanalda op " +"değiller." + +#: autoop.cpp:537 +msgid "[{1}] sent us a challenge but they do not match a defined user." +msgstr "" +"[{1}] bize bir challenge gönderiyor ancak tanımlı bir kullanıcıyla " +"eşleşmiyor." + +#: autoop.cpp:545 +msgid "WARNING! [{1}] sent an invalid challenge." +msgstr "UYARI! [{1}] geçersiz bir meydan okuma gönderiyor." + +#: autoop.cpp:561 +msgid "[{1}] sent an unchallenged response. This could be due to lag." +msgstr "" +"[{1}] bize unchallenge bir yanıt gönderdi. Bunun nedeni gecikme olabilir." + +#: autoop.cpp:578 +msgid "" +"WARNING! [{1}] sent a bad response. Please verify that you have their " +"correct password." +msgstr "" +"UYARI! [{1}] kötü bir yanıt gönderiyor. Lütfen doğru şifreye sahip " +"olduğunuzu doğrulayın." + +#: autoop.cpp:587 +msgid "WARNING! [{1}] sent a response but did not match any defined users." +msgstr "" +"UYARI! [{1}] bir yanıt gönderdi ancak tanımlanmış hiçbir kullanıcıyla " +"eşleşmedi." + +#: autoop.cpp:645 +msgid "Auto op the good people" +msgstr "İyi insanları otomatik olarak op yapar" diff --git a/modules/po/autoreply.fr_FR.po b/modules/po/autoreply.fr_FR.po index 0f959521..560587bd 100644 --- a/modules/po/autoreply.fr_FR.po +++ b/modules/po/autoreply.fr_FR.po @@ -14,7 +14,7 @@ msgstr "" #: autoreply.cpp:25 msgid "" -msgstr "" +msgstr "" #: autoreply.cpp:25 msgid "Sets a new reply" diff --git a/modules/po/autoreply.tr_TR.po b/modules/po/autoreply.tr_TR.po new file mode 100644 index 00000000..d0a92e5b --- /dev/null +++ b/modules/po/autoreply.tr_TR.po @@ -0,0 +1,45 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/autoreply.pot\n" +"X-Crowdin-File-ID: 154\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: autoreply.cpp:25 +msgid "" +msgstr "" + +#: autoreply.cpp:25 +msgid "Sets a new reply" +msgstr "Yeni bir yanıt ayarlar" + +#: autoreply.cpp:27 +msgid "Displays the current query reply" +msgstr "Geçerli sorgu yanıtını görüntüler" + +#: autoreply.cpp:75 +msgid "Current reply is: {1} ({2})" +msgstr "Geçerli yanıt: {1} ({2})" + +#: autoreply.cpp:81 +msgid "New reply set to: {1} ({2})" +msgstr "Yeni yanıt şu şekilde ayarlandı: {1} ({2})" + +#: autoreply.cpp:94 +msgid "" +"You might specify a reply text. It is used when automatically answering " +"queries, if you are not connected to ZNC." +msgstr "" +"Bir yanıt metni belirtebilirsiniz. ZNC'ye bağlı değilseniz, sorguları " +"otomatik olarak yanıtlarken kullanılır." + +#: autoreply.cpp:98 +msgid "Reply to queries when you are away" +msgstr "Meşgul olduğunuzda sorguları yanıtlayın" diff --git a/modules/po/autovoice.tr_TR.po b/modules/po/autovoice.tr_TR.po new file mode 100644 index 00000000..c7351085 --- /dev/null +++ b/modules/po/autovoice.tr_TR.po @@ -0,0 +1,114 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/autovoice.pot\n" +"X-Crowdin-File-ID: 155\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: autovoice.cpp:120 +msgid "List all users" +msgstr "Tüm kullanıcıları listele" + +#: autovoice.cpp:122 autovoice.cpp:125 +msgid " [channel] ..." +msgstr " [kanal] ..." + +#: autovoice.cpp:123 +msgid "Adds channels to a user" +msgstr "Bir kullanıcıya kanal ekler" + +#: autovoice.cpp:126 +msgid "Removes channels from a user" +msgstr "Bir kullanıcıdan kanalları kaldırır" + +#: autovoice.cpp:128 +msgid " [channels]" +msgstr " [kanallar]" + +#: autovoice.cpp:129 +msgid "Adds a user" +msgstr "Bir kullanıcı ekler" + +#: autovoice.cpp:131 +msgid "" +msgstr "" + +#: autovoice.cpp:131 +msgid "Removes a user" +msgstr "Bir kullanıcıyı kaldırır" + +#: autovoice.cpp:215 +msgid "Usage: AddUser [channels]" +msgstr "Kullanımı: AddUser [kanallar]" + +#: autovoice.cpp:229 +msgid "Usage: DelUser " +msgstr "Kullanımı: DelUser " + +#: autovoice.cpp:238 +msgid "There are no users defined" +msgstr "Tanımlanmış kullanıcı yok" + +#: autovoice.cpp:244 autovoice.cpp:250 +msgid "User" +msgstr "Kullanıcı" + +#: autovoice.cpp:245 autovoice.cpp:251 +msgid "Hostmask" +msgstr "Host Maskesi" + +#: autovoice.cpp:246 autovoice.cpp:252 +msgid "Channels" +msgstr "Kanallar" + +#: autovoice.cpp:263 +msgid "Usage: AddChans [channel] ..." +msgstr "Kullanımı: AddChans [kanal] ..." + +#: autovoice.cpp:270 autovoice.cpp:292 autovoice.cpp:329 +msgid "No such user" +msgstr "Böyle bir kullanıcı yok" + +#: autovoice.cpp:275 +msgid "Channel(s) added to user {1}" +msgstr "Kanal(lar) {1} kullanıcısına eklendi" + +#: autovoice.cpp:285 +msgid "Usage: DelChans [channel] ..." +msgstr "Kullanımı: DelChans [kanal] ..." + +#: autovoice.cpp:298 +msgid "Channel(s) Removed from user {1}" +msgstr "Kanal(lar) {1} kullanıcısından silindi" + +#: autovoice.cpp:335 +msgid "User {1} removed" +msgstr "{1} kullanıcısı kaldırıldı" + +#: autovoice.cpp:341 +msgid "That user already exists" +msgstr "Bu kullanıcı zaten mevcut" + +#: autovoice.cpp:347 +msgid "User {1} added with hostmask {2}" +msgstr "{1} kullanıcısı {2} host maskeleriyle eklendi" + +#: autovoice.cpp:360 +msgid "" +"Each argument is either a channel you want autovoice for (which can include " +"wildcards) or, if it starts with !, it is an exception for autovoice." +msgstr "" +"Her bağımsız değişken otomatik voice istediğiniz bir kanaldır (joker " +"karakterler içerebilir) ya da ! ile başlıyorsa, otomatik voice için bir " +"istisnadır." + +#: autovoice.cpp:365 +msgid "Auto voice the good people" +msgstr "İyi insanlara otomatik olarak voice verir" diff --git a/modules/po/awaystore.tr_TR.po b/modules/po/awaystore.tr_TR.po new file mode 100644 index 00000000..7c40c4ac --- /dev/null +++ b/modules/po/awaystore.tr_TR.po @@ -0,0 +1,118 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/awaystore.pot\n" +"X-Crowdin-File-ID: 156\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: awaystore.cpp:67 +msgid "You have been marked as away" +msgstr "Away olarak işaretlendiniz" + +#: awaystore.cpp:78 awaystore.cpp:385 awaystore.cpp:388 +msgid "Welcome back!" +msgstr "Tekrar hoşgeldiniz!" + +#: awaystore.cpp:100 +msgid "Deleted {1} messages" +msgstr "{1} mesaj silindi" + +#: awaystore.cpp:104 +msgid "USAGE: delete " +msgstr "Kullanımı: delete " + +#: awaystore.cpp:109 +msgid "Illegal message # requested" +msgstr "İllegal mesaj # istendi" + +#: awaystore.cpp:113 +msgid "Message erased" +msgstr "Mesaj silindi" + +#: awaystore.cpp:122 +msgid "Messages saved to disk" +msgstr "Mesajlar diske kaydedildi" + +#: awaystore.cpp:124 +msgid "There are no messages to save" +msgstr "Kaydedilecek mesaj yok" + +#: awaystore.cpp:135 +msgid "Password updated to [{1}]" +msgstr "Şifre [{1}] olarak güncellendi" + +#: awaystore.cpp:147 +msgid "Corrupt message! [{1}]" +msgstr "Bozuk mesaj! [{1}]" + +#: awaystore.cpp:159 +msgid "Corrupt time stamp! [{1}]" +msgstr "Bozuk zaman damgası! [{1}]" + +#: awaystore.cpp:178 +msgid "#--- End of messages" +msgstr "#---Mesajların sonu" + +#: awaystore.cpp:183 +msgid "Timer set to 300 seconds" +msgstr "Zamanlayıcı 300 saniyeye ayarlandı" + +#: awaystore.cpp:188 awaystore.cpp:197 +msgid "Timer disabled" +msgstr "Zamanlayıcı devre dışı" + +#: awaystore.cpp:199 +msgid "Timer set to {1} seconds" +msgstr "Zamanlayıcı {1} saniyeye ayarlandı" + +#: awaystore.cpp:203 +msgid "Current timer setting: {1} seconds" +msgstr "Geçerli zamanlayıcı ayarı: {1} saniye" + +#: awaystore.cpp:278 +msgid "This module needs as an argument a keyphrase used for encryption" +msgstr "" +"Bu modülün argüman olarak şifreleme için kullanılan bir anahtar kelimeye " +"ihtiyacı var" + +#: awaystore.cpp:285 +msgid "" +"Failed to decrypt your saved messages - Did you give the right encryption " +"key as an argument to this module?" +msgstr "" +"Kayıtlı mesajlarınızın şifrelemesi çözülemedi - Bu modüle argüman olarak " +"doğru şifreleme anahtarını verdiniz mi?" + +#: awaystore.cpp:386 awaystore.cpp:389 +msgid "You have {1} messages!" +msgstr "{1} mesajınız var!" + +#: awaystore.cpp:456 +msgid "Unable to find buffer" +msgstr "Arabellek bulunamıyor" + +#: awaystore.cpp:469 +msgid "Unable to decode encrypted messages" +msgstr "Şifrelenmiş mesajların kodu çözülemiyor" + +#: awaystore.cpp:516 +msgid "" +"[ -notimer | -timer N ] [-chans] passw0rd . N is number of seconds, 600 by " +"default." +msgstr "" +"[ -notimer | -timer N ] [-chans] şifre . N saniye sayısı, varsayılan " +"600'dür." + +#: awaystore.cpp:521 +msgid "" +"Adds auto-away with logging, useful when you use ZNC from different locations" +msgstr "" +"ZNC'yi farklı konumlardan kullandığınızda kullanışlı olan günlük kaydıyla " +"otomatik away özelliği ekler" diff --git a/modules/po/block_motd.fr_FR.po b/modules/po/block_motd.fr_FR.po index 7bd94c1a..2bfd1c3f 100644 --- a/modules/po/block_motd.fr_FR.po +++ b/modules/po/block_motd.fr_FR.po @@ -14,19 +14,19 @@ msgstr "" #: block_motd.cpp:26 msgid "[]" -msgstr "" +msgstr "[]" #: block_motd.cpp:27 msgid "" "Override the block with this command. Can optionally specify which server to " "query." msgstr "" -"Écrase le bloc avec cette commande. Un serveur peut-être optionnellement " +"Écrase le bloc avec cette commande. Un serveur peut être optionnellement " "spécifié pour la requête." #: block_motd.cpp:36 msgid "You are not connected to an IRC Server." -msgstr "Vous n'êtes pas connecté à un serveur RIC." +msgstr "Vous n'êtes pas connecté à un serveur IRC." #: block_motd.cpp:58 msgid "MOTD blocked by ZNC" diff --git a/modules/po/block_motd.tr_TR.po b/modules/po/block_motd.tr_TR.po new file mode 100644 index 00000000..35b1489c --- /dev/null +++ b/modules/po/block_motd.tr_TR.po @@ -0,0 +1,37 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/block_motd.pot\n" +"X-Crowdin-File-ID: 157\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: block_motd.cpp:26 +msgid "[]" +msgstr "[]" + +#: block_motd.cpp:27 +msgid "" +"Override the block with this command. Can optionally specify which server to " +"query." +msgstr "" +"Bu komutla bloğu geçersiz kılın. İsteğe bağlı olarak hangi sunucunun " +"sorgulanacağını belirtebilir." + +#: block_motd.cpp:36 +msgid "You are not connected to an IRC Server." +msgstr "Bir IRC Sunucusuna bağlı değilsiniz." + +#: block_motd.cpp:58 +msgid "MOTD blocked by ZNC" +msgstr "MOTD ZNC tarafından engellendi" + +#: block_motd.cpp:104 +msgid "Block the MOTD from IRC so it's not sent to your client(s)." +msgstr "İstemcilerinize gönderilmemesi için MOTD'yi IRC'den engelleyin." diff --git a/modules/po/blockuser.fr_FR.po b/modules/po/blockuser.fr_FR.po index b6c10a3a..488440c1 100644 --- a/modules/po/blockuser.fr_FR.po +++ b/modules/po/blockuser.fr_FR.po @@ -26,7 +26,7 @@ msgstr "Liste des utilisateurs bloqués" #: blockuser.cpp:31 blockuser.cpp:33 msgid "" -msgstr "" +msgstr "" #: blockuser.cpp:31 msgid "Block a user" diff --git a/modules/po/blockuser.pt_BR.po b/modules/po/blockuser.pt_BR.po index 12163fb3..9f16acec 100644 --- a/modules/po/blockuser.pt_BR.po +++ b/modules/po/blockuser.pt_BR.po @@ -14,7 +14,7 @@ msgstr "" #: modules/po/../data/blockuser/tmpl/blockuser_WebadminUser.tmpl:9 msgid "Account is blocked" -msgstr "" +msgstr "Conta bloqueada" #: blockuser.cpp:23 msgid "Your account has been disabled. Contact your administrator." @@ -28,7 +28,7 @@ msgstr "Listar usuários bloqueados" #: blockuser.cpp:31 blockuser.cpp:33 msgid "" -msgstr "" +msgstr "" #: blockuser.cpp:31 msgid "Block a user" @@ -48,7 +48,7 @@ msgstr "Acesso negado" #: blockuser.cpp:85 msgid "No users are blocked" -msgstr "" +msgstr "Nenhum usuário bloqueado" #: blockuser.cpp:88 msgid "Blocked users:" @@ -64,7 +64,7 @@ msgstr "" #: blockuser.cpp:110 blockuser.cpp:152 msgid "Blocked {1}" -msgstr "" +msgstr "O usuário {1} foi bloqueado" #: blockuser.cpp:112 msgid "Could not block {1} (misspelled?)" @@ -92,7 +92,7 @@ msgstr "O usuário {1} não está bloqueado" #: blockuser.cpp:216 msgid "Enter one or more user names. Separate them by spaces." -msgstr "" +msgstr "Insira um ou mais usuários, separados por espaços." #: blockuser.cpp:219 msgid "Block certain users from logging in." diff --git a/modules/po/blockuser.tr_TR.po b/modules/po/blockuser.tr_TR.po new file mode 100644 index 00000000..0290bb7a --- /dev/null +++ b/modules/po/blockuser.tr_TR.po @@ -0,0 +1,97 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/blockuser.pot\n" +"X-Crowdin-File-ID: 158\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules/po/../data/blockuser/tmpl/blockuser_WebadminUser.tmpl:9 +msgid "Account is blocked" +msgstr "Hesap bloke edildi" + +#: blockuser.cpp:23 +msgid "Your account has been disabled. Contact your administrator." +msgstr "Hesabınız engellendi. Yöneticinizle iletişime geçin." + +#: blockuser.cpp:29 +msgid "List blocked users" +msgstr "Bloke edilen kullanıcıları listele" + +#: blockuser.cpp:31 blockuser.cpp:33 +msgid "" +msgstr "" + +#: blockuser.cpp:31 +msgid "Block a user" +msgstr "Bir kullanıcıyı bloke et" + +#: blockuser.cpp:33 +msgid "Unblock a user" +msgstr "Bir kullanıcının blokesini kaldır" + +#: blockuser.cpp:55 +msgid "Could not block {1}" +msgstr "{1} bloke edilemedi" + +#: blockuser.cpp:76 +msgid "Access denied" +msgstr "Erişim reddedildi" + +#: blockuser.cpp:85 +msgid "No users are blocked" +msgstr "Bloke edilen kullanıcı yok" + +#: blockuser.cpp:88 +msgid "Blocked users:" +msgstr "Bloke edilen kullanıcılar:" + +#: blockuser.cpp:100 +msgid "Usage: Block " +msgstr "Kullanımı: Block " + +#: blockuser.cpp:105 blockuser.cpp:147 +msgid "You can't block yourself" +msgstr "Kendinizi kendinizi bloke edemezsiniz" + +#: blockuser.cpp:110 blockuser.cpp:152 +msgid "Blocked {1}" +msgstr "{1} bloke edildi" + +#: blockuser.cpp:112 +msgid "Could not block {1} (misspelled?)" +msgstr "{1} bloke edilemedi (yanlış mı yazılmış?)" + +#: blockuser.cpp:120 +msgid "Usage: Unblock " +msgstr "Kullanımı: UnBlock " + +#: blockuser.cpp:125 blockuser.cpp:161 +msgid "Unblocked {1}" +msgstr "{1} blokesi kaldırıldı" + +#: blockuser.cpp:127 +msgid "This user is not blocked" +msgstr "Bu kullanıcı bloke edilmedi" + +#: blockuser.cpp:155 +msgid "Couldn't block {1}" +msgstr "{1} bloke edilemedi" + +#: blockuser.cpp:164 +msgid "User {1} is not blocked" +msgstr "{1} kullanıcısı bloke edilmedi" + +#: blockuser.cpp:216 +msgid "Enter one or more user names. Separate them by spaces." +msgstr "Bir veya daha fazla kullanıcı adı girin. Bunları boşluklarla ayırın." + +#: blockuser.cpp:219 +msgid "Block certain users from logging in." +msgstr "Belirli kullanıcıların giriş yapmasını bloke edin." diff --git a/modules/po/bouncedcc.tr_TR.po b/modules/po/bouncedcc.tr_TR.po new file mode 100644 index 00000000..85409dd5 --- /dev/null +++ b/modules/po/bouncedcc.tr_TR.po @@ -0,0 +1,135 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/bouncedcc.pot\n" +"X-Crowdin-File-ID: 159\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: bouncedcc.cpp:101 bouncedcc.cpp:119 bouncedcc.cpp:121 +msgctxt "list" +msgid "Type" +msgstr "Tip" + +#: bouncedcc.cpp:102 bouncedcc.cpp:132 +msgctxt "list" +msgid "State" +msgstr "Durum" + +#: bouncedcc.cpp:103 +msgctxt "list" +msgid "Speed" +msgstr "Hız" + +#: bouncedcc.cpp:104 bouncedcc.cpp:115 +msgctxt "list" +msgid "Nick" +msgstr "Nick" + +#: bouncedcc.cpp:105 bouncedcc.cpp:116 +msgctxt "list" +msgid "IP" +msgstr "IP" + +#: bouncedcc.cpp:106 bouncedcc.cpp:122 +msgctxt "list" +msgid "File" +msgstr "Dosya" + +#: bouncedcc.cpp:119 +msgctxt "list" +msgid "Chat" +msgstr "Chat" + +#: bouncedcc.cpp:121 +msgctxt "list" +msgid "Xfer" +msgstr "Xfer" + +#: bouncedcc.cpp:125 +msgid "Waiting" +msgstr "Bekleniyor" + +#: bouncedcc.cpp:127 +msgid "Halfway" +msgstr "Halfway" + +#: bouncedcc.cpp:129 +msgid "Connected" +msgstr "Bağlandı" + +#: bouncedcc.cpp:137 +msgid "You have no active DCCs." +msgstr "Aktif DCCniz bulunmamaktadır." + +#: bouncedcc.cpp:148 +msgid "Use client IP: {1}" +msgstr "İstemci IP'sini kullan: {1}" + +#: bouncedcc.cpp:153 +msgid "List all active DCCs" +msgstr "Tüm etkin DCC'leri listele" + +#: bouncedcc.cpp:156 +msgid "Change the option to use IP of client" +msgstr "İstemcinin IP'sini kullanma seçeneğini değiştirin" + +#: bouncedcc.cpp:383 bouncedcc.cpp:412 bouncedcc.cpp:436 bouncedcc.cpp:451 +msgctxt "type" +msgid "Chat" +msgstr "Chat" + +#: bouncedcc.cpp:383 bouncedcc.cpp:412 bouncedcc.cpp:436 bouncedcc.cpp:451 +msgctxt "type" +msgid "Xfer" +msgstr "Xfer" + +#: bouncedcc.cpp:385 +msgid "DCC {1} Bounce ({2}): Too long line received" +msgstr "DCC {1} Geri Dönme ({2}): Çok uzun satır alındı" + +#: bouncedcc.cpp:418 +msgid "DCC {1} Bounce ({2}): Timeout while connecting to {3} {4}" +msgstr "DCC {1} Geri Dönme ({2}): {3} {4}'e bağlanırken zaman aşımı" + +#: bouncedcc.cpp:422 +msgid "DCC {1} Bounce ({2}): Timeout while connecting." +msgstr "DCC {1} Geri Dönme ({2}): Bağlantı sırasında zaman aşımı." + +#: bouncedcc.cpp:427 +msgid "" +"DCC {1} Bounce ({2}): Timeout while waiting for incoming connection on {3} " +"{4}" +msgstr "" +"DCC {1} Geri Dönme ({2}): {3} {4} üzerinde gelen bağlantı beklenirken zaman " +"aşımı" + +#: bouncedcc.cpp:440 +msgid "DCC {1} Bounce ({2}): Connection refused while connecting to {3} {4}" +msgstr "DCC {1} Geri Döndü ({2}): {3} {4}'e bağlanırken bağlantı reddedildi" + +#: bouncedcc.cpp:444 +msgid "DCC {1} Bounce ({2}): Connection refused while connecting." +msgstr "DCC {1} Geri Dönme ({2}): Bağlanırken bağlantı reddedildi." + +#: bouncedcc.cpp:457 bouncedcc.cpp:465 +msgid "DCC {1} Bounce ({2}): Socket error on {3} {4}: {5}" +msgstr "DCC {1} Geri Dönme ({2}): {3} {4} üzerinde soket hatası: {5}" + +#: bouncedcc.cpp:460 +msgid "DCC {1} Bounce ({2}): Socket error: {3}" +msgstr "DCC {1} Geri Dönme ({2}): Soket hatası: {3}" + +#: bouncedcc.cpp:547 +msgid "" +"Bounces DCC transfers through ZNC instead of sending them directly to the " +"user. " +msgstr "" +"DCC aktarımlarını doğrudan kullanıcıya göndermek yerine ZNC aracılığıyla " +"geri döndürür. " diff --git a/modules/po/buffextras.pt_BR.po b/modules/po/buffextras.pt_BR.po index d8013e9a..d9ce1909 100644 --- a/modules/po/buffextras.pt_BR.po +++ b/modules/po/buffextras.pt_BR.po @@ -18,7 +18,7 @@ msgstr "Servidor" #: buffextras.cpp:47 msgid "{1} set mode: {2} {3}" -msgstr "" +msgstr "{1} definiu o(s) modo(s): {2} {3}" #: buffextras.cpp:55 msgid "{1} kicked {2} with reason: {3}" diff --git a/modules/po/buffextras.tr_TR.po b/modules/po/buffextras.tr_TR.po new file mode 100644 index 00000000..4f68ee95 --- /dev/null +++ b/modules/po/buffextras.tr_TR.po @@ -0,0 +1,49 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/buffextras.pot\n" +"X-Crowdin-File-ID: 160\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: buffextras.cpp:45 +msgid "Server" +msgstr "Sunucu" + +#: buffextras.cpp:47 +msgid "{1} set mode: {2} {3}" +msgstr "{1} modu ayarladı: {2} {3}" + +#: buffextras.cpp:55 +msgid "{1} kicked {2} with reason: {3}" +msgstr "{1}, {2}'yi şu nedenle attı: {3}" + +#: buffextras.cpp:64 +msgid "{1} quit: {2}" +msgstr "{1} çıkış: {2}" + +#: buffextras.cpp:73 +msgid "{1} joined" +msgstr "{1} katıldı" + +#: buffextras.cpp:81 +msgid "{1} parted: {2}" +msgstr "{1} ayrıldı: {2}" + +#: buffextras.cpp:90 +msgid "{1} is now known as {2}" +msgstr "{1} artık {2} olarak biliniyor" + +#: buffextras.cpp:100 +msgid "{1} changed the topic to: {2}" +msgstr "{1} başlığı şu şekilde değiştirdi: {2}" + +#: buffextras.cpp:115 +msgid "Adds joins, parts etc. to the playback buffer" +msgstr "Katılımlar, ayrılmalar vb. oynatma arabelleğine ekler" diff --git a/modules/po/cert.fr_FR.po b/modules/po/cert.fr_FR.po index df0fc7bf..ed4c33a7 100644 --- a/modules/po/cert.fr_FR.po +++ b/modules/po/cert.fr_FR.po @@ -15,7 +15,7 @@ msgstr "" # this text is inserted into `click here` in the other string #: modules/po/../data/cert/tmpl/index.tmpl:5 msgid "here" -msgstr "" +msgstr "ici" # {1} is `here`, translateable in the other string #: modules/po/../data/cert/tmpl/index.tmpl:6 @@ -23,53 +23,60 @@ msgid "" "You already have a certificate set, use the form below to overwrite the " "current certificate. Alternatively click {1} to delete your certificate." msgstr "" +"Vous avez déjà un certificat enregistré, utilisez le formulaire ci-dessous " +"pour écraser le certificat actuel. Alternativement, cliquez sur {1} pour " +"supprimer votre certificat." #: modules/po/../data/cert/tmpl/index.tmpl:8 msgid "You do not have a certificate yet." -msgstr "" +msgstr "Vous n'avez pas encore de certificat." #: modules/po/../data/cert/tmpl/index.tmpl:14 cert.cpp:72 msgid "Certificate" -msgstr "" +msgstr "Certificat" #: modules/po/../data/cert/tmpl/index.tmpl:18 msgid "PEM File:" -msgstr "" +msgstr "Fichier PEM :" #: modules/po/../data/cert/tmpl/index.tmpl:22 msgid "Update" -msgstr "" +msgstr "Mise à jour" #: cert.cpp:28 msgid "Pem file deleted" -msgstr "" +msgstr "Fichier PEM supprimé" #: cert.cpp:31 msgid "The pem file doesn't exist or there was a error deleting the pem file." msgstr "" +"Le fichier PEM n'existe pas, ou bien une erreur est survenue en supprimant " +"le fichier PEM." #: cert.cpp:38 msgid "You have a certificate in {1}" -msgstr "" +msgstr "Vous avez un certificat dans {1}" #: cert.cpp:41 msgid "" "You do not have a certificate. Please use the web interface to add a " "certificate" msgstr "" +"Vous n'avez pas de certificat. Utilisez l'interface web pour ajouter un " +"certificat" #: cert.cpp:44 msgid "Alternatively you can either place one at {1}" -msgstr "" +msgstr "Alternativement, vous pouvez en placer un à {1}" #: cert.cpp:52 msgid "Delete the current certificate" -msgstr "" +msgstr "Supprimer le certificat actuel" #: cert.cpp:54 msgid "Show the current certificate" -msgstr "" +msgstr "Montrer le certificat actuel" #: cert.cpp:105 msgid "Use a ssl certificate to connect to a server" -msgstr "" +msgstr "Utiliser un certificat SSL pour vous connecter à un serveur" diff --git a/modules/po/cert.pt_BR.po b/modules/po/cert.pt_BR.po index 0e933b43..18a92106 100644 --- a/modules/po/cert.pt_BR.po +++ b/modules/po/cert.pt_BR.po @@ -15,7 +15,7 @@ msgstr "" # this text is inserted into `click here` in the other string #: modules/po/../data/cert/tmpl/index.tmpl:5 msgid "here" -msgstr "" +msgstr "aqui" # {1} is `here`, translateable in the other string #: modules/po/../data/cert/tmpl/index.tmpl:6 @@ -26,7 +26,7 @@ msgstr "" #: modules/po/../data/cert/tmpl/index.tmpl:8 msgid "You do not have a certificate yet." -msgstr "" +msgstr "Você não possui um certificado." #: modules/po/../data/cert/tmpl/index.tmpl:14 cert.cpp:72 msgid "Certificate" diff --git a/modules/po/cert.tr_TR.po b/modules/po/cert.tr_TR.po new file mode 100644 index 00000000..6177cf45 --- /dev/null +++ b/modules/po/cert.tr_TR.po @@ -0,0 +1,78 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/cert.pot\n" +"X-Crowdin-File-ID: 161\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +# this text is inserted into `click here` in the other string +#: modules/po/../data/cert/tmpl/index.tmpl:5 +msgid "here" +msgstr "burada" + +# {1} is `here`, translateable in the other string +#: modules/po/../data/cert/tmpl/index.tmpl:6 +msgid "" +"You already have a certificate set, use the form below to overwrite the " +"current certificate. Alternatively click {1} to delete your certificate." +msgstr "" +"Zaten bir sertifika setiniz var, mevcut sertifikanın üzerine yazmak için " +"aşağıdaki formu kullanın. Alternatif olarak sertifikanızı silmek için {1} " +"öğesine tıklayın." + +#: modules/po/../data/cert/tmpl/index.tmpl:8 +msgid "You do not have a certificate yet." +msgstr "Henüz bir sertifikanız yok." + +#: modules/po/../data/cert/tmpl/index.tmpl:14 cert.cpp:72 +msgid "Certificate" +msgstr "Sertifika" + +#: modules/po/../data/cert/tmpl/index.tmpl:18 +msgid "PEM File:" +msgstr "PEM Dosyası:" + +#: modules/po/../data/cert/tmpl/index.tmpl:22 +msgid "Update" +msgstr "Güncelle" + +#: cert.cpp:28 +msgid "Pem file deleted" +msgstr "PEM dosyası silindi" + +#: cert.cpp:31 +msgid "The pem file doesn't exist or there was a error deleting the pem file." +msgstr "PEM dosyası mevcut değil veya PEM dosyası silinirken bir hata oluştu." + +#: cert.cpp:38 +msgid "You have a certificate in {1}" +msgstr "{1} alanında bir sertifikanız var" + +#: cert.cpp:41 +msgid "" +"You do not have a certificate. Please use the web interface to add a " +"certificate" +msgstr "Sertifikanız yok. Sertifika eklemek için lütfen web arayüzünü kullanın" + +#: cert.cpp:44 +msgid "Alternatively you can either place one at {1}" +msgstr "Alternatif olarak {1}'e de bir tane yerleştirebilirsiniz" + +#: cert.cpp:52 +msgid "Delete the current certificate" +msgstr "Mevcut sertifikayı sil" + +#: cert.cpp:54 +msgid "Show the current certificate" +msgstr "Geçerli sertifikayı göster" + +#: cert.cpp:105 +msgid "Use a ssl certificate to connect to a server" +msgstr "Bir sunucuya bağlanmak için SSL sertifikası kullan" diff --git a/modules/po/certauth.fr_FR.po b/modules/po/certauth.fr_FR.po index 26cafec5..73ad9a99 100644 --- a/modules/po/certauth.fr_FR.po +++ b/modules/po/certauth.fr_FR.po @@ -14,95 +14,99 @@ msgstr "" #: modules/po/../data/certauth/tmpl/index.tmpl:7 msgid "Add a key" -msgstr "" +msgstr "Ajouter une clé" #: modules/po/../data/certauth/tmpl/index.tmpl:11 msgid "Key:" -msgstr "" +msgstr "Clé :" #: modules/po/../data/certauth/tmpl/index.tmpl:15 msgid "Add Key" -msgstr "" +msgstr "Ajouter une clé" #: modules/po/../data/certauth/tmpl/index.tmpl:23 msgid "You have no keys." -msgstr "" +msgstr "Vous n'avez pas de clé." #: modules/po/../data/certauth/tmpl/index.tmpl:30 msgctxt "web" msgid "Key" -msgstr "" +msgstr "Clé" #: modules/po/../data/certauth/tmpl/index.tmpl:36 msgid "del" -msgstr "" +msgstr "Suppr" #: certauth.cpp:31 msgid "[pubkey]" -msgstr "" +msgstr "[clé publique]" #: certauth.cpp:32 msgid "Add a public key. If key is not provided will use the current key" msgstr "" +"Ajouter une clé publique. Si aucune clé n'est spécifiée, la clé actuelle " +"sera utilisée" #: certauth.cpp:35 msgid "id" -msgstr "" +msgstr "id" #: certauth.cpp:35 msgid "Delete a key by its number in List" -msgstr "" +msgstr "Supprime une clé via sur numéro dans la liste" #: certauth.cpp:37 msgid "List your public keys" -msgstr "" +msgstr "Lister vos clés publiques" #: certauth.cpp:39 msgid "Print your current key" -msgstr "" +msgstr "Afficher votre clé actuelle" #: certauth.cpp:142 msgid "You are not connected with any valid public key" -msgstr "" +msgstr "Vous n'êtes pas connecté(e) avec une clé publique valide" #: certauth.cpp:144 msgid "Your current public key is: {1}" -msgstr "" +msgstr "Votre clé publique actuelle est : {1}" #: certauth.cpp:157 msgid "You did not supply a public key or connect with one." msgstr "" +"Vous n'avez pas fourni de clé publique ou ne vous êtes pas connecté avec." #: certauth.cpp:160 msgid "Key '{1}' added." -msgstr "" +msgstr "Clé '{1}' ajoutée." #: certauth.cpp:162 msgid "The key '{1}' is already added." -msgstr "" +msgstr "La clé '{1}' a déjà été ajoutée." #: certauth.cpp:170 certauth.cpp:183 msgctxt "list" msgid "Id" -msgstr "" +msgstr "ID" #: certauth.cpp:171 certauth.cpp:184 msgctxt "list" msgid "Key" -msgstr "" +msgstr "Clé" #: certauth.cpp:176 certauth.cpp:190 certauth.cpp:199 msgid "No keys set for your user" -msgstr "" +msgstr "Pas de clés enregistrées pour votre utilisateur" #: certauth.cpp:204 msgid "Invalid #, check \"list\"" -msgstr "" +msgstr "Canal invalide, vérifiez avec \"/list\"." #: certauth.cpp:216 msgid "Removed" -msgstr "" +msgstr "Supprimé" #: certauth.cpp:291 msgid "Allows users to authenticate via SSL client certificates." msgstr "" +"Autorise les utilisateurs à s'authentifier via le certificat SSL client." diff --git a/modules/po/certauth.pt_BR.po b/modules/po/certauth.pt_BR.po index 44ba9e5f..cb9fc366 100644 --- a/modules/po/certauth.pt_BR.po +++ b/modules/po/certauth.pt_BR.po @@ -35,7 +35,7 @@ msgstr "Chave" #: modules/po/../data/certauth/tmpl/index.tmpl:36 msgid "del" -msgstr "" +msgstr "excluir" #: certauth.cpp:31 msgid "[pubkey]" @@ -91,7 +91,7 @@ msgstr "" #: certauth.cpp:171 certauth.cpp:184 msgctxt "list" msgid "Key" -msgstr "" +msgstr "Chave" #: certauth.cpp:176 certauth.cpp:190 certauth.cpp:199 msgid "No keys set for your user" @@ -103,7 +103,7 @@ msgstr "" #: certauth.cpp:216 msgid "Removed" -msgstr "" +msgstr "removida" #: certauth.cpp:291 msgid "Allows users to authenticate via SSL client certificates." diff --git a/modules/po/certauth.tr_TR.po b/modules/po/certauth.tr_TR.po new file mode 100644 index 00000000..80529f85 --- /dev/null +++ b/modules/po/certauth.tr_TR.po @@ -0,0 +1,111 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/certauth.pot\n" +"X-Crowdin-File-ID: 162\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules/po/../data/certauth/tmpl/index.tmpl:7 +msgid "Add a key" +msgstr "Bir anahtar ekle" + +#: modules/po/../data/certauth/tmpl/index.tmpl:11 +msgid "Key:" +msgstr "Anahtar:" + +#: modules/po/../data/certauth/tmpl/index.tmpl:15 +msgid "Add Key" +msgstr "Anahtar Ekle" + +#: modules/po/../data/certauth/tmpl/index.tmpl:23 +msgid "You have no keys." +msgstr "Hiçbir anahtarınız yok." + +#: modules/po/../data/certauth/tmpl/index.tmpl:30 +msgctxt "web" +msgid "Key" +msgstr "Anahtar" + +#: modules/po/../data/certauth/tmpl/index.tmpl:36 +msgid "del" +msgstr "sil" + +#: certauth.cpp:31 +msgid "[pubkey]" +msgstr "[pubkey]" + +#: certauth.cpp:32 +msgid "Add a public key. If key is not provided will use the current key" +msgstr "" +"Ortak anahtar ekleyin. Anahtar sağlanmazsa mevcut anahtar kullanılacaktır" + +#: certauth.cpp:35 +msgid "id" +msgstr "id" + +#: certauth.cpp:35 +msgid "Delete a key by its number in List" +msgstr "Listedeki numarasına göre bir anahtarı silme" + +#: certauth.cpp:37 +msgid "List your public keys" +msgstr "Genel anahtarlarınızı listeleyin" + +#: certauth.cpp:39 +msgid "Print your current key" +msgstr "Mevcut anahtarınızı yazdırın" + +#: certauth.cpp:142 +msgid "You are not connected with any valid public key" +msgstr "Herhangi bir geçerli genel anahtara bağlı değilsiniz" + +#: certauth.cpp:144 +msgid "Your current public key is: {1}" +msgstr "Mevcut genel anahtarınız: {1}" + +#: certauth.cpp:157 +msgid "You did not supply a public key or connect with one." +msgstr "Bir ortak anahtar sağlamadınız veya bir ortak anahtara bağlanmadınız." + +#: certauth.cpp:160 +msgid "Key '{1}' added." +msgstr "'{1}' anahtarı eklendi." + +#: certauth.cpp:162 +msgid "The key '{1}' is already added." +msgstr "'{1}' anahtarı zaten eklenmiş." + +#: certauth.cpp:170 certauth.cpp:183 +msgctxt "list" +msgid "Id" +msgstr "Id" + +#: certauth.cpp:171 certauth.cpp:184 +msgctxt "list" +msgid "Key" +msgstr "Anahtar" + +#: certauth.cpp:176 certauth.cpp:190 certauth.cpp:199 +msgid "No keys set for your user" +msgstr "Kullanıcınız için ayarlanmış anahtar yok" + +#: certauth.cpp:204 +msgid "Invalid #, check \"list\"" +msgstr "Geçersiz #, \"listeyi\" kontrol et" + +#: certauth.cpp:216 +msgid "Removed" +msgstr "Kaldırıldı" + +#: certauth.cpp:291 +msgid "Allows users to authenticate via SSL client certificates." +msgstr "" +"Kullanıcıların SSL istemci sertifikaları aracılığıyla kimlik doğrulaması " +"yapmasına olanak tanır." diff --git a/modules/po/chansaver.tr_TR.po b/modules/po/chansaver.tr_TR.po new file mode 100644 index 00000000..d0857580 --- /dev/null +++ b/modules/po/chansaver.tr_TR.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/chansaver.pot\n" +"X-Crowdin-File-ID: 163\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: chansaver.cpp:91 +msgid "Keeps config up-to-date when user joins/parts." +msgstr "" +"Kullanıcı kanala katıldığında/ayrıldığında yapılandırmayı güncel tutar." diff --git a/modules/po/clearbufferonmsg.tr_TR.po b/modules/po/clearbufferonmsg.tr_TR.po new file mode 100644 index 00000000..d62a5ff9 --- /dev/null +++ b/modules/po/clearbufferonmsg.tr_TR.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/clearbufferonmsg.pot\n" +"X-Crowdin-File-ID: 164\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: clearbufferonmsg.cpp:160 +msgid "Clears all channel and query buffers whenever the user does something" +msgstr "" +"Kullanıcı bir şey yaptığında tüm kanal ve sorgu arabelleklerini temizler" diff --git a/modules/po/clientnotify.fr_FR.po b/modules/po/clientnotify.fr_FR.po index 4252324d..5611f56f 100644 --- a/modules/po/clientnotify.fr_FR.po +++ b/modules/po/clientnotify.fr_FR.po @@ -14,16 +14,16 @@ msgstr "" #: clientnotify.cpp:53 msgid "" -msgstr "" +msgstr "" #: clientnotify.cpp:54 msgid "Sets the notify method" -msgstr "" +msgstr "Définit la méthode de notification" #: clientnotify.cpp:56 clientnotify.cpp:59 clientnotify.cpp:63 #: clientnotify.cpp:68 msgid "" -msgstr "" +msgstr "" #: clientnotify.cpp:57 msgid "Turns notifications for unseen connections on or off" diff --git a/modules/po/clientnotify.tr_TR.po b/modules/po/clientnotify.tr_TR.po new file mode 100644 index 00000000..39f9023e --- /dev/null +++ b/modules/po/clientnotify.tr_TR.po @@ -0,0 +1,105 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/clientnotify.pot\n" +"X-Crowdin-File-ID: 165\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: clientnotify.cpp:53 +msgid "" +msgstr "" + +#: clientnotify.cpp:54 +msgid "Sets the notify method" +msgstr "Bildirim yöntemini ayarlayın" + +#: clientnotify.cpp:56 clientnotify.cpp:59 clientnotify.cpp:63 +#: clientnotify.cpp:68 +msgid "" +msgstr "" + +#: clientnotify.cpp:57 +msgid "Turns notifications for unseen connections on or off" +msgstr "Görünmeyen bağlantılara ilişkin bildirimleri açar veya kapatır" + +#: clientnotify.cpp:60 +msgid "" +"Specifies whether you want to be notified about new connections with new IPs" +msgstr "" +"Yeni IP'lere sahip yeni bağlantılar hakkında bilgilendirilmek isteyip " +"istemediğinizi belirtir" + +#: clientnotify.cpp:64 +msgid "" +"Specifies whether you want to be notified about new connections with new " +"client IDs" +msgstr "" +"Yeni istemci kimlikleriyle yeni bağlantılar hakkında bilgilendirilmek " +"isteyip istemediğinizi belirtir" + +#: clientnotify.cpp:69 +msgid "Turns notifications for clients disconnecting on or off" +msgstr "Bağlantısı kesilen istemciler için bildirimleri açar veya kapatır" + +#: clientnotify.cpp:71 +msgid "Shows the current settings" +msgstr "Geçerli ayarları gösterir" + +#: clientnotify.cpp:104 clientnotify.cpp:134 +msgid "" +msgid_plural "" +"Another client ({1}) authenticated as your user. Use the 'ListClients' " +"command to see all {2} clients." +msgstr[0] "" +msgstr[1] "" +"Başka bir istemcinin ({1}) kullanıcınız olarak kimliği doğrulandı. Tüm {2} " +"istemcilerini görmek için 'ListClients' komutunu kullanın." + +#: clientnotify.cpp:147 +msgid "Usage: Method " +msgstr "Kullanımı: Method " + +#: clientnotify.cpp:153 clientnotify.cpp:166 clientnotify.cpp:179 +#: clientnotify.cpp:192 clientnotify.cpp:205 +msgid "Saved." +msgstr "Kaydedildi" + +#: clientnotify.cpp:160 +msgid "Usage: NewOnly " +msgstr "Kullanımı: NewOnly " + +#: clientnotify.cpp:173 +msgid "Usage: NotifyOnNewIP " +msgstr "Kullanımı: NotifyOnNewIP " + +#: clientnotify.cpp:186 +msgid "Usage: NotifyOnNewID " +msgstr "Kullanımı: NotifyOnNewID " + +#: clientnotify.cpp:199 +msgid "Usage: OnDisconnect " +msgstr "Kullanımı: OnDisconnect " + +#: clientnotify.cpp:210 +msgid "" +"Current settings: Method: {1}, for unseen only: {2}, notifyfor unseen IPs: " +"{3}, notify for unseen IDs: {4}, notify ondisconnecting clients: {5}" +msgstr "" +"Geçerli ayarlar: Yöntem: {1}, yalnızca görülmeyenler için: {2}, görünmeyen " +"IP'ler için bildir: {3}, görünmeyen kimlikler için bildir: {4}, istemcilerin " +"bağlantısı kesildiğinde bildir: {5}" + +#: clientnotify.cpp:224 +msgid "" +"Notifies you when another IRC client logs into or out of your account. " +"Configurable." +msgstr "" +"Başka bir IRC istemcisi hesabınıza giriş yaptığında veya hesabınızdan çıkış " +"yaptığında sizi bilgilendirir. Yapılandırılabilir." diff --git a/modules/po/controlpanel.pt_BR.po b/modules/po/controlpanel.pt_BR.po index 7d59fcc7..74990312 100644 --- a/modules/po/controlpanel.pt_BR.po +++ b/modules/po/controlpanel.pt_BR.po @@ -139,7 +139,7 @@ msgstr "" #: controlpanel.cpp:619 msgid "Error: Invalid network." -msgstr "" +msgstr "Erro: Rede inválida" #: controlpanel.cpp:663 msgid "Usage: SetNetwork " @@ -151,7 +151,7 @@ msgstr "Sintaxe: AddChan " #: controlpanel.cpp:762 msgid "Error: User {1} already has a channel named {2}." -msgstr "" +msgstr "Erro: O usuário {1} já possui o canal {2}" #: controlpanel.cpp:769 msgid "Channel {1} for user {2} added to network {3}." @@ -265,11 +265,11 @@ msgstr "" #: controlpanel.cpp:1058 msgid "Error: Internal error!" -msgstr "" +msgstr "Erro: Erro interno!" #: controlpanel.cpp:1062 msgid "User {1} deleted!" -msgstr "" +msgstr "O usuário {1} foi excluído" #: controlpanel.cpp:1077 msgid "Usage: CloneUser " @@ -320,7 +320,7 @@ msgstr "" #: controlpanel.cpp:1216 controlpanel.cpp:1224 msgctxt "listnetworks" msgid "Network" -msgstr "" +msgstr "Rede" #: controlpanel.cpp:1217 controlpanel.cpp:1226 controlpanel.cpp:1234 msgctxt "listnetworks" @@ -340,11 +340,11 @@ msgstr "" #: controlpanel.cpp:1220 controlpanel.cpp:1231 msgctxt "listnetworks" msgid "Channels" -msgstr "" +msgstr "Canais" #: controlpanel.cpp:1239 msgid "No networks" -msgstr "" +msgstr "Não há redes disponíveis." #: controlpanel.cpp:1250 msgid "Usage: AddServer [[+]port] [password]" @@ -352,7 +352,7 @@ msgstr "Sintaxe: AddServer [[+]porta] [senha]" #: controlpanel.cpp:1269 msgid "Added IRC Server {1} to network {2} for user {3}." -msgstr "" +msgstr "O servidor {1} foi adicionado à rede {2} para o usuário {3}" #: controlpanel.cpp:1273 msgid "Error: Could not add IRC server {1} to network {2} for user {3}." @@ -449,7 +449,7 @@ msgstr "" #: controlpanel.cpp:1492 msgid "Loaded module {1}" -msgstr "" +msgstr "Módulo {1} carregado" #: controlpanel.cpp:1497 msgid "Error: Unable to reload module {1}: {2}" @@ -494,7 +494,7 @@ msgstr "Sintaxe: UnloadNetModule " #: controlpanel.cpp:1611 controlpanel.cpp:1617 msgctxt "listmodules" msgid "Name" -msgstr "" +msgstr "Nome" #: controlpanel.cpp:1612 controlpanel.cpp:1618 msgctxt "listmodules" @@ -503,11 +503,11 @@ msgstr "" #: controlpanel.cpp:1637 msgid "User {1} has no modules loaded." -msgstr "" +msgstr "O usuário {1} não possui módulos carregados." #: controlpanel.cpp:1641 msgid "Modules loaded for user {1}:" -msgstr "" +msgstr "Módulos carregados para o usuário {1}:" #: controlpanel.cpp:1661 msgid "Network {1} of user {2} has no modules loaded." @@ -523,7 +523,7 @@ msgstr "" #: controlpanel.cpp:1674 msgid "Prints help for matching commands and variables" -msgstr "" +msgstr "Exibe ajuda para comandos e variáveis correspondentes" #: controlpanel.cpp:1677 msgid " [username]" @@ -579,11 +579,11 @@ msgstr "" #: controlpanel.cpp:1697 msgid "Adds a new channel" -msgstr "" +msgstr "Adiciona um novo canal" #: controlpanel.cpp:1700 msgid "Deletes a channel" -msgstr "" +msgstr "Exclui um canal" #: controlpanel.cpp:1702 msgid "Lists users" @@ -591,23 +591,23 @@ msgstr "" #: controlpanel.cpp:1704 msgid " " -msgstr "" +msgstr " " #: controlpanel.cpp:1705 msgid "Adds a new user" -msgstr "" +msgstr "Cria um novo usuário" #: controlpanel.cpp:1707 controlpanel.cpp:1730 controlpanel.cpp:1744 msgid "" -msgstr "" +msgstr "" #: controlpanel.cpp:1707 msgid "Deletes a user" -msgstr "" +msgstr "Exclui um usuário" #: controlpanel.cpp:1709 msgid " " -msgstr "" +msgstr " " #: controlpanel.cpp:1710 msgid "Clones a user" @@ -615,11 +615,11 @@ msgstr "" #: controlpanel.cpp:1712 controlpanel.cpp:1715 msgid " " -msgstr "" +msgstr " " #: controlpanel.cpp:1713 msgid "Adds a new IRC server for the given or current user" -msgstr "" +msgstr "Adiciona um novo servidor IRC para o usuário atual ou especificado" #: controlpanel.cpp:1716 msgid "Deletes an IRC server from the given or current user" @@ -643,7 +643,7 @@ msgstr "" #: controlpanel.cpp:1725 msgid "Loads a Module for a user" -msgstr "" +msgstr "Carrega um módulo para um usuário" #: controlpanel.cpp:1727 msgid " " @@ -663,7 +663,7 @@ msgstr "" #: controlpanel.cpp:1735 msgid "Loads a Module for a network" -msgstr "" +msgstr "Carrega um módulo para uma rede" #: controlpanel.cpp:1738 msgid " " @@ -679,7 +679,7 @@ msgstr "" #: controlpanel.cpp:1745 msgid "List the configured CTCP replies" -msgstr "" +msgstr "Lista as respostas CTCP configuradas" #: controlpanel.cpp:1747 msgid " [reply]" @@ -703,7 +703,7 @@ msgstr "" #: controlpanel.cpp:1756 msgid "Add a network for a user" -msgstr "" +msgstr "Adiciona uma rede para o usuário" #: controlpanel.cpp:1759 msgid "Delete a network for a user" @@ -715,7 +715,7 @@ msgstr "" #: controlpanel.cpp:1762 msgid "List all networks for a user" -msgstr "" +msgstr "Lista todas as redes de um usuário" #: controlpanel.cpp:1775 msgid "" diff --git a/modules/po/controlpanel.tr_TR.po b/modules/po/controlpanel.tr_TR.po new file mode 100644 index 00000000..866b85fa --- /dev/null +++ b/modules/po/controlpanel.tr_TR.po @@ -0,0 +1,741 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/controlpanel.pot\n" +"X-Crowdin-File-ID: 166\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: controlpanel.cpp:51 controlpanel.cpp:64 +msgctxt "helptable" +msgid "Type" +msgstr "Tip" + +#: controlpanel.cpp:52 controlpanel.cpp:66 +msgctxt "helptable" +msgid "Variables" +msgstr "Değişkenler" + +#: controlpanel.cpp:78 +msgid "String" +msgstr "Dizi" + +#: controlpanel.cpp:79 +msgid "Boolean (true/false)" +msgstr "Boolean (doğru/yanlış)" + +#: controlpanel.cpp:80 +msgid "Integer" +msgstr "Tamsayı" + +#: controlpanel.cpp:81 +msgid "Number" +msgstr "Numara" + +#: controlpanel.cpp:131 +msgid "The following variables are available when using the Set/Get commands:" +msgstr "Set/Get komutlarını kullanırken aşağıdaki değişkenler kullanılabilir:" + +#: controlpanel.cpp:155 +msgid "" +"The following variables are available when using the SetNetwork/GetNetwork " +"commands:" +msgstr "" +"SetNetwork/GetNetwork komutlarını kullanırken aşağıdaki değişkenler " +"kullanılabilir:" + +#: controlpanel.cpp:169 +msgid "" +"The following variables are available when using the SetChan/GetChan " +"commands:" +msgstr "" +"SetChan/GetChan komutlarını kullanırken aşağıdaki değişkenler kullanılabilir:" + +#: controlpanel.cpp:176 +msgid "" +"You can use $user as the user name and $network as the network name for " +"modifying your own user and network." +msgstr "" +"Kendi kullanıcınızı ve ağınızı değiştirmek için kullanıcı adı olarak $user " +"ve ağ adı olarak $network kullanabilirsiniz." + +#: controlpanel.cpp:186 controlpanel.cpp:1047 controlpanel.cpp:1084 +msgid "Error: User [{1}] does not exist!" +msgstr "Hata: [{1}] kullanıcısı mevcut değil!" + +#: controlpanel.cpp:191 +msgid "Error: You need to have admin rights to modify other users!" +msgstr "" +"Hata: Diğer kullanıcıları değiştirmek için yönetici haklarına sahip olmanız " +"gerekiyor!" + +#: controlpanel.cpp:201 +msgid "Error: You cannot use $network to modify other users!" +msgstr "Hata: Diğer kullanıcıları değiştirmek için $network'ü kullanamazsınız!" + +#: controlpanel.cpp:209 +msgid "Error: User {1} does not have a network named [{2}]." +msgstr "Hata: {1} kullanıcısının [{2}] adında bir ağı yok." + +#: controlpanel.cpp:221 +msgid "Usage: Get [username]" +msgstr "Kullanımı: Get [kullanıcı_adı]" + +#: controlpanel.cpp:321 controlpanel.cpp:576 controlpanel.cpp:651 +#: controlpanel.cpp:739 controlpanel.cpp:874 controlpanel.cpp:959 +msgid "Error: Unknown variable" +msgstr "Hata: Bilinmeyen değişken" + +#: controlpanel.cpp:330 +msgid "Usage: Set " +msgstr "Kullanımı: Set " + +#: controlpanel.cpp:348 controlpanel.cpp:355 controlpanel.cpp:367 +#: controlpanel.cpp:379 controlpanel.cpp:387 controlpanel.cpp:395 +#: controlpanel.cpp:403 controlpanel.cpp:411 controlpanel.cpp:419 +#: controlpanel.cpp:427 controlpanel.cpp:437 controlpanel.cpp:494 +#: controlpanel.cpp:513 controlpanel.cpp:529 controlpanel.cpp:539 +#: controlpanel.cpp:688 controlpanel.cpp:695 controlpanel.cpp:707 +#: controlpanel.cpp:728 controlpanel.cpp:1126 controlpanel.cpp:1176 +#: controlpanel.cpp:1259 controlpanel.cpp:1295 controlpanel.cpp:1428 +#: controlpanel.cpp:1455 +msgid "Access denied!" +msgstr "Erişim reddedildi!" + +#: controlpanel.cpp:360 controlpanel.cpp:700 +msgid "This bind host is already set!" +msgstr "This bind host is already set!" + +#: controlpanel.cpp:445 controlpanel.cpp:454 controlpanel.cpp:923 +msgid "Setting failed, limit for buffer size is {1}" +msgstr "Ayar başarısız oldu, arabellek boyutu sınırı: {1}" + +#: controlpanel.cpp:474 +msgid "Password has been changed!" +msgstr "Şifre değiştirildi!" + +#: controlpanel.cpp:482 +msgid "Timeout can't be less than 30 seconds!" +msgstr "Zaman aşımı 30 saniyeden az olamaz!" + +#: controlpanel.cpp:546 +msgid "That would be a bad idea!" +msgstr "Bu kötü bir fikir olurdu!" + +#: controlpanel.cpp:564 +msgid "Supported languages: {1}" +msgstr "Desteklenen diller: {1}" + +#: controlpanel.cpp:588 +msgid "Usage: GetNetwork [username] [network]" +msgstr "Kullanımı: GetNetwork [kullanıcı_adı] [ağ]" + +#: controlpanel.cpp:607 +msgid "Error: A network must be specified to get another users settings." +msgstr "" +"Hata: Başka bir kullanıcının ayarlarını alabilmek için bir ağ " +"belirtilmelidir." + +#: controlpanel.cpp:613 +msgid "You are not currently attached to a network." +msgstr "" +"Hata: Başka bir kullanıcının ayarlarını alabilmek için bir ağ " +"belirtilmelidir." + +#: controlpanel.cpp:619 +msgid "Error: Invalid network." +msgstr "Hata: Geçersiz ağ." + +#: controlpanel.cpp:663 +msgid "Usage: SetNetwork " +msgstr "Kullanımı: SetNetwork " + +#: controlpanel.cpp:749 +msgid "Usage: AddChan " +msgstr "Kullanımı: AddChan " + +#: controlpanel.cpp:762 +msgid "Error: User {1} already has a channel named {2}." +msgstr "Hata: {1} kullanıcısının zaten {2} adında bir kanalı var." + +#: controlpanel.cpp:769 +msgid "Channel {1} for user {2} added to network {3}." +msgstr "{2} kullanıcısı için {1} kanalı, {3} ağına eklendi." + +#: controlpanel.cpp:773 +msgid "" +"Could not add channel {1} for user {2} to network {3}, does it already exist?" +msgstr "" +"{2} kullanıcısı için {1} kanalı {3} ağına eklenemedi, zaten mevcut olabilir " +"mi?" + +#: controlpanel.cpp:783 +msgid "Usage: DelChan " +msgstr "Kullanımı: DelChan " + +#: controlpanel.cpp:798 +msgid "Error: User {1} does not have any channel matching [{2}] in network {3}" +msgstr "" +"Hata: {1} kullanıcısının, {3} ağında [{2}] ile eşleşen herhangi bir kanalı " +"yok" + +#: controlpanel.cpp:811 +msgid "Channel {1} is deleted from network {2} of user {3}" +msgid_plural "Channels {1} are deleted from network {2} of user {3}" +msgstr[0] "{1} kanalı, {3} kullanıcısının {2} ağından silindi" +msgstr[1] "{1} kanalları, {3} kullanıcısının {2} ağından silindi" + +#: controlpanel.cpp:826 +msgid "Usage: GetChan " +msgstr "Kullanımı: GetChan " + +#: controlpanel.cpp:840 controlpanel.cpp:904 +msgid "Error: No channels matching [{1}] found." +msgstr "Hata: [{1}] ile eşleşen kanal bulunamadı." + +#: controlpanel.cpp:889 +msgid "Usage: SetChan " +msgstr "Kullanımı: SetChan " + +#: controlpanel.cpp:970 controlpanel.cpp:980 +msgctxt "listusers" +msgid "Username" +msgstr "Kullanıcı Adı" + +#: controlpanel.cpp:971 controlpanel.cpp:981 +msgctxt "listusers" +msgid "Realname" +msgstr "Gerçek Adı" + +#: controlpanel.cpp:972 controlpanel.cpp:984 controlpanel.cpp:986 +msgctxt "listusers" +msgid "IsAdmin" +msgstr "Admin mi" + +#: controlpanel.cpp:973 controlpanel.cpp:987 +msgctxt "listusers" +msgid "Nick" +msgstr "Nick" + +#: controlpanel.cpp:974 controlpanel.cpp:988 +msgctxt "listusers" +msgid "AltNick" +msgstr "Alt(ernatif)Nick" + +#: controlpanel.cpp:975 controlpanel.cpp:989 +msgctxt "listusers" +msgid "Ident" +msgstr "Ident" + +#: controlpanel.cpp:976 controlpanel.cpp:990 +msgctxt "listusers" +msgid "BindHost" +msgstr "BindHost" + +#: controlpanel.cpp:984 controlpanel.cpp:1234 +msgid "No" +msgstr "Hayır" + +#: controlpanel.cpp:986 controlpanel.cpp:1226 +msgid "Yes" +msgstr "Evet" + +#: controlpanel.cpp:1000 controlpanel.cpp:1069 +msgid "Error: You need to have admin rights to add new users!" +msgstr "" +"Hata: Yeni kullanıcılar eklemek için yönetici haklarına sahip olmanız " +"gerekiyor!" + +#: controlpanel.cpp:1006 +msgid "Usage: AddUser " +msgstr "Kullanımı: AddUser <şifre>" + +#: controlpanel.cpp:1011 +msgid "Error: User {1} already exists!" +msgstr "" + +#: controlpanel.cpp:1023 controlpanel.cpp:1098 +msgid "Error: User not added: {1}" +msgstr "" + +#: controlpanel.cpp:1027 controlpanel.cpp:1102 +msgid "User {1} added!" +msgstr "" + +#: controlpanel.cpp:1034 +msgid "Error: You need to have admin rights to delete users!" +msgstr "" + +#: controlpanel.cpp:1040 +msgid "Usage: DelUser " +msgstr "" + +#: controlpanel.cpp:1052 +msgid "Error: You can't delete yourself!" +msgstr "" + +#: controlpanel.cpp:1058 +msgid "Error: Internal error!" +msgstr "" + +#: controlpanel.cpp:1062 +msgid "User {1} deleted!" +msgstr "" + +#: controlpanel.cpp:1077 +msgid "Usage: CloneUser " +msgstr "" + +#: controlpanel.cpp:1092 +msgid "Error: Cloning failed: {1}" +msgstr "" + +#: controlpanel.cpp:1121 +msgid "Usage: AddNetwork [user] network" +msgstr "" + +#: controlpanel.cpp:1132 +msgid "" +"Network number limit reached. Ask an admin to increase the limit for you, or " +"delete unneeded networks using /znc DelNetwork " +msgstr "" + +#: controlpanel.cpp:1140 +msgid "Error: User {1} already has a network with the name {2}" +msgstr "" + +#: controlpanel.cpp:1147 +msgid "Network {1} added to user {2}." +msgstr "" + +#: controlpanel.cpp:1151 +msgid "Error: Network [{1}] could not be added for user {2}: {3}" +msgstr "" + +#: controlpanel.cpp:1171 +msgid "Usage: DelNetwork [user] network" +msgstr "" + +#: controlpanel.cpp:1187 +msgid "The currently active network can be deleted via {1}status" +msgstr "" + +#: controlpanel.cpp:1193 +msgid "Network {1} deleted for user {2}." +msgstr "" + +#: controlpanel.cpp:1197 +msgid "Error: Network {1} could not be deleted for user {2}." +msgstr "" + +#: controlpanel.cpp:1216 controlpanel.cpp:1224 +msgctxt "listnetworks" +msgid "Network" +msgstr "" + +#: controlpanel.cpp:1217 controlpanel.cpp:1226 controlpanel.cpp:1234 +msgctxt "listnetworks" +msgid "OnIRC" +msgstr "" + +#: controlpanel.cpp:1218 controlpanel.cpp:1227 +msgctxt "listnetworks" +msgid "IRC Server" +msgstr "" + +#: controlpanel.cpp:1219 controlpanel.cpp:1229 +msgctxt "listnetworks" +msgid "IRC User" +msgstr "" + +#: controlpanel.cpp:1220 controlpanel.cpp:1231 +msgctxt "listnetworks" +msgid "Channels" +msgstr "" + +#: controlpanel.cpp:1239 +msgid "No networks" +msgstr "" + +#: controlpanel.cpp:1250 +msgid "Usage: AddServer [[+]port] [password]" +msgstr "" + +#: controlpanel.cpp:1269 +msgid "Added IRC Server {1} to network {2} for user {3}." +msgstr "" + +#: controlpanel.cpp:1273 +msgid "Error: Could not add IRC server {1} to network {2} for user {3}." +msgstr "" + +#: controlpanel.cpp:1286 +msgid "Usage: DelServer [[+]port] [password]" +msgstr "" + +#: controlpanel.cpp:1306 +msgid "Deleted IRC Server {1} from network {2} for user {3}." +msgstr "" + +#: controlpanel.cpp:1310 +msgid "Error: Could not delete IRC server {1} from network {2} for user {3}." +msgstr "" + +#: controlpanel.cpp:1320 +msgid "Usage: Reconnect " +msgstr "" + +#: controlpanel.cpp:1347 +msgid "Queued network {1} of user {2} for a reconnect." +msgstr "" + +#: controlpanel.cpp:1356 +msgid "Usage: Disconnect " +msgstr "" + +#: controlpanel.cpp:1371 +msgid "Closed IRC connection for network {1} of user {2}." +msgstr "" + +#: controlpanel.cpp:1386 controlpanel.cpp:1391 +msgctxt "listctcp" +msgid "Request" +msgstr "" + +#: controlpanel.cpp:1387 controlpanel.cpp:1392 +msgctxt "listctcp" +msgid "Reply" +msgstr "" + +#: controlpanel.cpp:1396 +msgid "No CTCP replies for user {1} are configured" +msgstr "" + +#: controlpanel.cpp:1399 +msgid "CTCP replies for user {1}:" +msgstr "" + +#: controlpanel.cpp:1415 +msgid "Usage: AddCTCP [user] [request] [reply]" +msgstr "" + +#: controlpanel.cpp:1417 +msgid "" +"This will cause ZNC to reply to the CTCP instead of forwarding it to clients." +msgstr "" + +#: controlpanel.cpp:1420 +msgid "An empty reply will cause the CTCP request to be blocked." +msgstr "" + +#: controlpanel.cpp:1434 +msgid "CTCP requests {1} to user {2} will now be blocked." +msgstr "" + +#: controlpanel.cpp:1438 +msgid "CTCP requests {1} to user {2} will now get reply: {3}" +msgstr "" + +#: controlpanel.cpp:1460 +msgid "Usage: DelCTCP [user] [request]" +msgstr "" + +#: controlpanel.cpp:1466 +msgid "CTCP requests {1} to user {2} will now be sent to IRC clients" +msgstr "" + +#: controlpanel.cpp:1470 +msgid "" +"CTCP requests {1} to user {2} will be sent to IRC clients (nothing has " +"changed)" +msgstr "" + +#: controlpanel.cpp:1480 controlpanel.cpp:1554 +msgid "Loading modules has been disabled." +msgstr "" + +#: controlpanel.cpp:1489 +msgid "Error: Unable to load module {1}: {2}" +msgstr "" + +#: controlpanel.cpp:1492 +msgid "Loaded module {1}" +msgstr "" + +#: controlpanel.cpp:1497 +msgid "Error: Unable to reload module {1}: {2}" +msgstr "" + +#: controlpanel.cpp:1500 +msgid "Reloaded module {1}" +msgstr "" + +#: controlpanel.cpp:1504 +msgid "Error: Unable to load module {1} because it is already loaded" +msgstr "" + +#: controlpanel.cpp:1515 +msgid "Usage: LoadModule [args]" +msgstr "" + +#: controlpanel.cpp:1534 +msgid "Usage: LoadNetModule [args]" +msgstr "" + +#: controlpanel.cpp:1559 +msgid "Please use /znc unloadmod {1}" +msgstr "" + +#: controlpanel.cpp:1565 +msgid "Error: Unable to unload module {1}: {2}" +msgstr "" + +#: controlpanel.cpp:1568 +msgid "Unloaded module {1}" +msgstr "" + +#: controlpanel.cpp:1577 +msgid "Usage: UnloadModule " +msgstr "" + +#: controlpanel.cpp:1594 +msgid "Usage: UnloadNetModule " +msgstr "" + +#: controlpanel.cpp:1611 controlpanel.cpp:1617 +msgctxt "listmodules" +msgid "Name" +msgstr "" + +#: controlpanel.cpp:1612 controlpanel.cpp:1618 +msgctxt "listmodules" +msgid "Arguments" +msgstr "" + +#: controlpanel.cpp:1637 +msgid "User {1} has no modules loaded." +msgstr "" + +#: controlpanel.cpp:1641 +msgid "Modules loaded for user {1}:" +msgstr "" + +#: controlpanel.cpp:1661 +msgid "Network {1} of user {2} has no modules loaded." +msgstr "" + +#: controlpanel.cpp:1666 +msgid "Modules loaded for network {1} of user {2}:" +msgstr "" + +#: controlpanel.cpp:1673 +msgid "[command] [variable]" +msgstr "" + +#: controlpanel.cpp:1674 +msgid "Prints help for matching commands and variables" +msgstr "" + +#: controlpanel.cpp:1677 +msgid " [username]" +msgstr "" + +#: controlpanel.cpp:1678 +msgid "Prints the variable's value for the given or current user" +msgstr "" + +#: controlpanel.cpp:1680 +msgid " " +msgstr "" + +#: controlpanel.cpp:1681 +msgid "Sets the variable's value for the given user" +msgstr "" + +#: controlpanel.cpp:1683 +msgid " [username] [network]" +msgstr "" + +#: controlpanel.cpp:1684 +msgid "Prints the variable's value for the given network" +msgstr "" + +#: controlpanel.cpp:1686 +msgid " " +msgstr "" + +#: controlpanel.cpp:1687 +msgid "Sets the variable's value for the given network" +msgstr "" + +#: controlpanel.cpp:1689 +msgid " [username] " +msgstr "" + +#: controlpanel.cpp:1690 +msgid "Prints the variable's value for the given channel" +msgstr "" + +#: controlpanel.cpp:1693 +msgid " " +msgstr "" + +#: controlpanel.cpp:1694 +msgid "Sets the variable's value for the given channel" +msgstr "" + +#: controlpanel.cpp:1696 controlpanel.cpp:1699 +msgid " " +msgstr "" + +#: controlpanel.cpp:1697 +msgid "Adds a new channel" +msgstr "" + +#: controlpanel.cpp:1700 +msgid "Deletes a channel" +msgstr "" + +#: controlpanel.cpp:1702 +msgid "Lists users" +msgstr "" + +#: controlpanel.cpp:1704 +msgid " " +msgstr "" + +#: controlpanel.cpp:1705 +msgid "Adds a new user" +msgstr "" + +#: controlpanel.cpp:1707 controlpanel.cpp:1730 controlpanel.cpp:1744 +msgid "" +msgstr "" + +#: controlpanel.cpp:1707 +msgid "Deletes a user" +msgstr "" + +#: controlpanel.cpp:1709 +msgid " " +msgstr "" + +#: controlpanel.cpp:1710 +msgid "Clones a user" +msgstr "" + +#: controlpanel.cpp:1712 controlpanel.cpp:1715 +msgid " " +msgstr "" + +#: controlpanel.cpp:1713 +msgid "Adds a new IRC server for the given or current user" +msgstr "" + +#: controlpanel.cpp:1716 +msgid "Deletes an IRC server from the given or current user" +msgstr "" + +#: controlpanel.cpp:1718 controlpanel.cpp:1721 controlpanel.cpp:1741 +msgid " " +msgstr "" + +#: controlpanel.cpp:1719 +msgid "Cycles the user's IRC server connection" +msgstr "" + +#: controlpanel.cpp:1722 +msgid "Disconnects the user from their IRC server" +msgstr "" + +#: controlpanel.cpp:1724 +msgid " [args]" +msgstr "" + +#: controlpanel.cpp:1725 +msgid "Loads a Module for a user" +msgstr "" + +#: controlpanel.cpp:1727 +msgid " " +msgstr "" + +#: controlpanel.cpp:1728 +msgid "Removes a Module of a user" +msgstr "" + +#: controlpanel.cpp:1731 +msgid "Get the list of modules for a user" +msgstr "" + +#: controlpanel.cpp:1734 +msgid " [args]" +msgstr "" + +#: controlpanel.cpp:1735 +msgid "Loads a Module for a network" +msgstr "" + +#: controlpanel.cpp:1738 +msgid " " +msgstr "" + +#: controlpanel.cpp:1739 +msgid "Removes a Module of a network" +msgstr "" + +#: controlpanel.cpp:1742 +msgid "Get the list of modules for a network" +msgstr "" + +#: controlpanel.cpp:1745 +msgid "List the configured CTCP replies" +msgstr "" + +#: controlpanel.cpp:1747 +msgid " [reply]" +msgstr "" + +#: controlpanel.cpp:1748 +msgid "Configure a new CTCP reply" +msgstr "" + +#: controlpanel.cpp:1750 +msgid " " +msgstr "" + +#: controlpanel.cpp:1751 +msgid "Remove a CTCP reply" +msgstr "" + +#: controlpanel.cpp:1755 controlpanel.cpp:1758 +msgid "[username] " +msgstr "" + +#: controlpanel.cpp:1756 +msgid "Add a network for a user" +msgstr "" + +#: controlpanel.cpp:1759 +msgid "Delete a network for a user" +msgstr "" + +#: controlpanel.cpp:1761 +msgid "[username]" +msgstr "" + +#: controlpanel.cpp:1762 +msgid "List all networks for a user" +msgstr "" + +#: controlpanel.cpp:1775 +msgid "" +"Dynamic configuration through IRC. Allows editing only yourself if you're " +"not ZNC admin." +msgstr "" diff --git a/modules/po/crypt.pt_BR.po b/modules/po/crypt.pt_BR.po index 503a9e1b..59dfbb95 100644 --- a/modules/po/crypt.pt_BR.po +++ b/modules/po/crypt.pt_BR.po @@ -132,7 +132,7 @@ msgstr "" #: crypt.cpp:476 crypt.cpp:483 msgctxt "listkeys" msgid "Key" -msgstr "" +msgstr "Chave" #: crypt.cpp:487 msgid "You have no encryption keys set." diff --git a/modules/po/crypt.tr_TR.po b/modules/po/crypt.tr_TR.po new file mode 100644 index 00000000..baf549dd --- /dev/null +++ b/modules/po/crypt.tr_TR.po @@ -0,0 +1,146 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/crypt.pot\n" +"X-Crowdin-File-ID: 167\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: crypt.cpp:199 +msgid "<#chan|Nick>" +msgstr "<#kanal|Nick>" + +#: crypt.cpp:200 +msgid "Remove a key for nick or channel" +msgstr "Nick veya kanal için bir anahtarı kaldırın" + +#: crypt.cpp:202 +msgid "<#chan|Nick> " +msgstr "<#kanal|Nick> " + +#: crypt.cpp:203 +msgid "Set a key for nick or channel" +msgstr "Nick veya kanal için bir anahtar ayarlayın" + +#: crypt.cpp:205 +msgid "List all keys" +msgstr "Tüm anahtarları listeleyin" + +#: crypt.cpp:207 +msgid "" +msgstr "" + +#: crypt.cpp:208 +msgid "Start a DH1080 key exchange with nick" +msgstr "Nick ile bir DH1080 anahtar değişimini başlatın" + +#: crypt.cpp:211 +msgid "Get the nick prefix" +msgstr "Nick önekini alın" + +#: crypt.cpp:214 +msgid "[Prefix]" +msgstr "[Önek]" + +#: crypt.cpp:215 +msgid "Set the nick prefix, with no argument it's disabled." +msgstr "Hiçbir argüman olmadan, devre dışı bırakılan nick önekini ayarlayın." + +#: crypt.cpp:271 +msgid "Received DH1080 public key from {1}, sending mine..." +msgstr "" +"{1} adlı kişiden DH1080 genel anahtarı alındı, benimkini gönderiyorum..." + +#: crypt.cpp:276 crypt.cpp:297 +msgid "Key for {1} successfully set." +msgstr "{1} için anahtar başarıyla ayarlandı." + +#: crypt.cpp:279 crypt.cpp:300 +msgid "Error in {1} with {2}: {3}" +msgstr "{1}'de {2} ile hata: {3}" + +#: crypt.cpp:281 crypt.cpp:302 +msgid "no secret key computed" +msgstr "hesaplanan gizli anahtar yok" + +#: crypt.cpp:396 +msgid "Target [{1}] deleted" +msgstr "[{1}] hedefi silindi" + +#: crypt.cpp:398 +msgid "Target [{1}] not found" +msgstr "[{1}] hedefi bulunamadı" + +#: crypt.cpp:401 +msgid "Usage DelKey <#chan|Nick>" +msgstr "Kullanımı: DelKey <#kanal|Nick>" + +#: crypt.cpp:416 +msgid "Set encryption key for [{1}] to [{2}]" +msgstr "[{1}] için olan şifreleme anahtarını [{2}] olarak ayarlayın" + +#: crypt.cpp:418 +msgid "Usage: SetKey <#chan|Nick> " +msgstr "Kullanımı: SetKey <#kanal|Nick> " + +#: crypt.cpp:429 +msgid "Sent my DH1080 public key to {1}, waiting for reply ..." +msgstr "DH1080 genel anahtarımı {1}'e gönderdim, yanıt bekliyorum..." + +#: crypt.cpp:431 +msgid "Error generating our keys, nothing sent." +msgstr "Anahtarlarımız oluşturulurken hata oluştu, hiçbir şey gönderilmedi." + +#: crypt.cpp:434 +msgid "Usage: KeyX " +msgstr "Kullanımı: KeyX " + +#: crypt.cpp:441 +msgid "Nick Prefix disabled." +msgstr "Nick Öneki devre dışı bırakıldı." + +#: crypt.cpp:443 +msgid "Nick Prefix: {1}" +msgstr "Nick Öneki: {1}" + +#: crypt.cpp:452 +msgid "You cannot use :, even followed by other symbols, as Nick Prefix." +msgstr "" +": karakterini, ardından başka semboller gelse bile Nick Öneki olarak " +"kullanamazsınız." + +#: crypt.cpp:461 +msgid "Overlap with Status Prefix ({1}), this Nick Prefix will not be used!" +msgstr "Durum Öneki ({1}) ile örtüştüğünde, bu Nick Öneki kullanılmayacaktır!" + +#: crypt.cpp:466 +msgid "Disabling Nick Prefix." +msgstr "Nick Öneki'ni devre dışı bırakma." + +#: crypt.cpp:468 +msgid "Setting Nick Prefix to {1}" +msgstr "Nick Öneki {1} olarak ayarlanıyor" + +#: crypt.cpp:475 crypt.cpp:482 +msgctxt "listkeys" +msgid "Target" +msgstr "Hedef" + +#: crypt.cpp:476 crypt.cpp:483 +msgctxt "listkeys" +msgid "Key" +msgstr "Anahtar" + +#: crypt.cpp:487 +msgid "You have no encryption keys set." +msgstr "Ayarlanmış şifreleme anahtarınız yok." + +#: crypt.cpp:509 +msgid "Encryption for channel/private messages" +msgstr "Kanal/özel mesajlar için şifreleme" diff --git a/modules/po/ctcpflood.pt_BR.po b/modules/po/ctcpflood.pt_BR.po index aab58d6a..68109260 100644 --- a/modules/po/ctcpflood.pt_BR.po +++ b/modules/po/ctcpflood.pt_BR.po @@ -50,7 +50,7 @@ msgstr[1] "" msgid "every second" msgid_plural "every {1} seconds" msgstr[0] "" -msgstr[1] "" +msgstr[1] "a cada {1} segundos" #: ctcpflood.cpp:129 msgid "Current limit is {1} {2}" diff --git a/modules/po/ctcpflood.tr_TR.po b/modules/po/ctcpflood.tr_TR.po new file mode 100644 index 00000000..bbf2688c --- /dev/null +++ b/modules/po/ctcpflood.tr_TR.po @@ -0,0 +1,73 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/ctcpflood.pot\n" +"X-Crowdin-File-ID: 168\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: ctcpflood.cpp:25 ctcpflood.cpp:27 +msgid "" +msgstr "" + +#: ctcpflood.cpp:25 +msgid "Set seconds limit" +msgstr "Saniye sınırını ayarla" + +#: ctcpflood.cpp:27 +msgid "Set lines limit" +msgstr "Satır sınırını ayarla" + +#: ctcpflood.cpp:29 +msgid "Show the current limits" +msgstr "Mevcut sınırları göster" + +#: ctcpflood.cpp:76 +msgid "Limit reached by {1}, blocking all CTCP" +msgstr "{1} tarafından sınıra ulaşıldı, tüm CTCP engelleniyor" + +#: ctcpflood.cpp:98 +msgid "Usage: Secs " +msgstr "Kullanımı: Secs " + +#: ctcpflood.cpp:113 +msgid "Usage: Lines " +msgstr "Kullanımı: Lines " + +#: ctcpflood.cpp:125 +msgid "1 CTCP message" +msgid_plural "{1} CTCP messages" +msgstr[0] "1 CTCP mesajı" +msgstr[1] "{1} CTCP mesajı" + +#: ctcpflood.cpp:127 +msgid "every second" +msgid_plural "every {1} seconds" +msgstr[0] "her saniye" +msgstr[1] "her {1} saniye" + +#: ctcpflood.cpp:129 +msgid "Current limit is {1} {2}" +msgstr "Mevcut sınır: {1} {2}" + +#: ctcpflood.cpp:145 +msgid "" +"This user module takes none to two arguments. The first argument is the " +"number of lines after which the flood-protection is triggered. The second " +"argument is the time (sec) to in which the number of lines is reached. The " +"default setting is 4 CTCPs in 2 seconds" +msgstr "" +"Bu kullanıcı modülü, sıfır ile iki arasında değişen sayıda argümanı kabul " +"eder.. İlk argüman, flood korumanın tetiklendiği satır sayısıdır. İkinci " +"argüman, satır sayısına ulaşılması gereken süreyi (saniye cinsinden) " +"belirtir. Varsayılan ayar 2 saniyede 4 CTCP'dir" + +#: ctcpflood.cpp:151 +msgid "Don't forward CTCP floods to clients" +msgstr "CTCP flood saldırılarını istemcilere iletmeyin" diff --git a/modules/po/cyrusauth.pt_BR.po b/modules/po/cyrusauth.pt_BR.po index 3940022f..7ae571b4 100644 --- a/modules/po/cyrusauth.pt_BR.po +++ b/modules/po/cyrusauth.pt_BR.po @@ -27,7 +27,7 @@ msgstr "" #: cyrusauth.cpp:56 msgid "Access denied" -msgstr "" +msgstr "Acesso negado" #: cyrusauth.cpp:70 msgid "Ignoring invalid SASL pwcheck method: {1}" diff --git a/modules/po/cyrusauth.tr_TR.po b/modules/po/cyrusauth.tr_TR.po new file mode 100644 index 00000000..362edc02 --- /dev/null +++ b/modules/po/cyrusauth.tr_TR.po @@ -0,0 +1,84 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/cyrusauth.pot\n" +"X-Crowdin-File-ID: 169\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: cyrusauth.cpp:42 +msgid "Shows current settings" +msgstr "Mevcut ayarları gösterir" + +#: cyrusauth.cpp:44 +msgid "yes|clone |no" +msgstr "evet|klon |hayır" + +#: cyrusauth.cpp:45 +msgid "" +"Create ZNC users upon first successful login, optionally from a template" +msgstr "" +"İlk başarılı oturum açma işleminden sonra isteğe bağlı olarak bir ZNC " +"kullanıcısı oluşturun, bir şablondan olabilir" + +#: cyrusauth.cpp:56 +msgid "Access denied" +msgstr "Erişim reddedildi" + +#: cyrusauth.cpp:70 +msgid "Ignoring invalid SASL pwcheck method: {1}" +msgstr "Geçersiz SASL pwcheck yöntemi yoksayılıyor: {1}" + +#: cyrusauth.cpp:71 +msgid "Ignored invalid SASL pwcheck method" +msgstr "Geçersiz SASL pwcheck yöntemi yoksayıldı" + +#: cyrusauth.cpp:79 +msgid "Need a pwcheck method as argument (saslauthd, auxprop)" +msgstr "" +"Argüman olarak bir pwcheck yöntemine ihtiyacınız var (saslauthd, auxprop)" + +#: cyrusauth.cpp:84 +msgid "SASL Could Not Be Initialized - Halting Startup" +msgstr "SASL Başlatılamadı - Başlatma Durduruluyor" + +#: cyrusauth.cpp:171 cyrusauth.cpp:186 +msgid "We will not create users on their first login" +msgstr "İlk oturum açma işleminde kullanıcılar oluşturmayacağız" + +#: cyrusauth.cpp:174 cyrusauth.cpp:195 +msgid "" +"We will create users on their first login, using user [{1}] as a template" +msgstr "" +"[{1}] kullanıcısını şablon olarak kullanarak ilk girişlerinde kullanıcılar " +"oluşturacağız" + +#: cyrusauth.cpp:177 cyrusauth.cpp:190 +msgid "We will create users on their first login" +msgstr "Kullanıcıları ilk girişlerinde oluşturacağız" + +#: cyrusauth.cpp:199 +msgid "Usage: CreateUsers yes, CreateUsers no, or CreateUsers clone " +msgstr "" +"Kullanımı: CreateUsers yes, CreateUsers no, or CreateUsers clone " +"" + +#: cyrusauth.cpp:232 +msgid "" +"This global module takes up to two arguments - the methods of authentication " +"- auxprop and saslauthd" +msgstr "" +"Bu global modül en fazla iki argüman alır - kimlik doğrulama yöntemleri - " +"auxprop ve saslauthd" + +#: cyrusauth.cpp:238 +msgid "Allow users to authenticate via SASL password verification method" +msgstr "" +"Kullanıcıların SASL şifre doğrulama yöntemiyle kimlik doğrulaması yapmasına " +"izin ver" diff --git a/modules/po/dcc.pt_BR.po b/modules/po/dcc.pt_BR.po index 797b8b8b..843895b1 100644 --- a/modules/po/dcc.pt_BR.po +++ b/modules/po/dcc.pt_BR.po @@ -64,7 +64,7 @@ msgstr "Sintaxe: Get " #: dcc.cpp:215 dcc.cpp:232 dcc.cpp:234 msgctxt "list" msgid "Type" -msgstr "" +msgstr "Tipo" #: dcc.cpp:216 dcc.cpp:238 dcc.cpp:241 msgctxt "list" @@ -74,22 +74,22 @@ msgstr "" #: dcc.cpp:217 dcc.cpp:243 msgctxt "list" msgid "Speed" -msgstr "" +msgstr "Velocidade" #: dcc.cpp:218 dcc.cpp:227 msgctxt "list" msgid "Nick" -msgstr "" +msgstr "Apelido" #: dcc.cpp:219 dcc.cpp:228 msgctxt "list" msgid "IP" -msgstr "" +msgstr "IP" #: dcc.cpp:220 dcc.cpp:229 msgctxt "list" msgid "File" -msgstr "" +msgstr "Arquivo" #: dcc.cpp:232 msgctxt "list-type" diff --git a/modules/po/dcc.tr_TR.po b/modules/po/dcc.tr_TR.po new file mode 100644 index 00000000..a9f8e5b9 --- /dev/null +++ b/modules/po/dcc.tr_TR.po @@ -0,0 +1,231 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/dcc.pot\n" +"X-Crowdin-File-ID: 170\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: dcc.cpp:88 +msgid " " +msgstr " " + +#: dcc.cpp:89 +msgid "Send a file from ZNC to someone" +msgstr "ZNC'den birine dosya gönderin" + +#: dcc.cpp:91 +msgid "" +msgstr "" + +#: dcc.cpp:92 +msgid "Send a file from ZNC to your client" +msgstr "ZNC'den istemcinize bir dosya gönderin" + +#: dcc.cpp:94 +msgid "List current transfers" +msgstr "Mevcut transferleri listele" + +#: dcc.cpp:103 +msgid "You must be admin to use the DCC module" +msgstr "DCC modülünü kullanmak için yönetici olmanız gerekir" + +#: dcc.cpp:140 +msgid "Attempting to send [{1}] to [{2}]." +msgstr "[{1}], [{2}] adresine gönderilmeye çalışılıyor." + +#: dcc.cpp:149 dcc.cpp:554 +msgid "Receiving [{1}] from [{2}]: File already exists." +msgstr "[{2}] cihazından [{1}] alınıyor: Dosya zaten mevcut." + +#: dcc.cpp:167 +msgid "" +"Attempting to connect to [{1} {2}] in order to download [{3}] from [{4}]." +msgstr "" +"[{4}] tarafından [{3}] indirmek için [{1} {2}] tarafına bağlanmaya " +"çalışılıyor." + +#: dcc.cpp:179 +msgid "Usage: Send " +msgstr "Kullanımı: Send " + +#: dcc.cpp:186 dcc.cpp:206 +msgid "Illegal path." +msgstr "İllegal yol." + +#: dcc.cpp:199 +msgid "Usage: Get " +msgstr "Kullanımı: Get " + +#: dcc.cpp:215 dcc.cpp:232 dcc.cpp:234 +msgctxt "list" +msgid "Type" +msgstr "Tip" + +#: dcc.cpp:216 dcc.cpp:238 dcc.cpp:241 +msgctxt "list" +msgid "State" +msgstr "Durum" + +#: dcc.cpp:217 dcc.cpp:243 +msgctxt "list" +msgid "Speed" +msgstr "Hız" + +#: dcc.cpp:218 dcc.cpp:227 +msgctxt "list" +msgid "Nick" +msgstr "Nick" + +#: dcc.cpp:219 dcc.cpp:228 +msgctxt "list" +msgid "IP" +msgstr "IP" + +#: dcc.cpp:220 dcc.cpp:229 +msgctxt "list" +msgid "File" +msgstr "Dosya" + +#: dcc.cpp:232 +msgctxt "list-type" +msgid "Sending" +msgstr "Gönderiliyor" + +#: dcc.cpp:234 +msgctxt "list-type" +msgid "Getting" +msgstr "Alınıyor" + +#: dcc.cpp:239 +msgctxt "list-state" +msgid "Waiting" +msgstr "Bekleniyor" + +#: dcc.cpp:244 +msgid "{1} KiB/s" +msgstr "{1} KiB/sn" + +#: dcc.cpp:250 +msgid "You have no active DCC transfers." +msgstr "Aktif DCC transferiniz bulunmamaktadır." + +#: dcc.cpp:267 +msgid "Attempting to resume send from position {1} of file [{2}] for [{3}]" +msgstr "" +"[{3}] için [{2}] dosyasının {1}. konumundan gönderime devam edilmeye " +"çalışılıyor" + +#: dcc.cpp:277 +msgid "Couldn't resume file [{1}] for [{2}]: not sending anything." +msgstr "[{2}] için [{1}] dosyası devam ettirilemedi: hiçbir şey gönderilmiyor." + +#: dcc.cpp:286 +msgid "Bad DCC file: {1}" +msgstr "Kötü DCC dosyası: {1}" + +#: dcc.cpp:341 +msgid "Sending [{1}] to [{2}]: File not open!" +msgstr "[{1}], [{2}] hedefine gönderiliyor: Dosya açık değil!" + +#: dcc.cpp:345 +msgid "Receiving [{1}] from [{2}]: File not open!" +msgstr "[{2}] cihazından [{1}] alınıyor: Dosya açık değil!" + +#: dcc.cpp:385 +msgid "Sending [{1}] to [{2}]: Connection refused." +msgstr "[{1}], [{2}] hedefine gönderiliyor: Bağlantı reddedildi." + +#: dcc.cpp:389 +msgid "Receiving [{1}] from [{2}]: Connection refused." +msgstr "[{2}] konumundan [{1}] alınıyor: Bağlantı reddedildi." + +#: dcc.cpp:397 +msgid "Sending [{1}] to [{2}]: Timeout." +msgstr "[{1}], [{2}]'a gönderiliyor: Zaman aşımı." + +#: dcc.cpp:401 +msgid "Receiving [{1}] from [{2}]: Timeout." +msgstr "[{2}] cihazından [{1}] alınıyor: Zaman aşımı." + +#: dcc.cpp:411 +msgid "Sending [{1}] to [{2}]: Socket error {3}: {4}" +msgstr "[{1}], [{2}]'e gönderiliyor: Soket hatası {3}: {4}" + +#: dcc.cpp:415 +msgid "Receiving [{1}] from [{2}]: Socket error {3}: {4}" +msgstr "[{2}] cihazından [{1}] alınıyor: Soket hatası {3}: {4}" + +#: dcc.cpp:423 +msgid "Sending [{1}] to [{2}]: Transfer started." +msgstr "[{1}], [{2}] adresine gönderiliyor: Aktarım başladı." + +#: dcc.cpp:427 +msgid "Receiving [{1}] from [{2}]: Transfer started." +msgstr "[{2}] konumundan [{1}] alınıyor: Aktarım başladı." + +#: dcc.cpp:446 +msgid "Sending [{1}] to [{2}]: Too much data!" +msgstr "[{1}], [{2}] hedefine gönderiliyor: Çok fazla veri!" + +#: dcc.cpp:450 +msgid "Receiving [{1}] from [{2}]: Too much data!" +msgstr "[{2}] cihazından [{1}] alınıyor: Çok fazla veri!" + +#: dcc.cpp:456 +msgid "Sending [{1}] to [{2}] completed at {3} KiB/s" +msgstr "[{1}] öğesinin [{2}] hedefine gönderilmesi {3} KiB/sn hızla tamamlandı" + +#: dcc.cpp:461 +msgid "Receiving [{1}] from [{2}] completed at {3} KiB/s" +msgstr "[{2}] noktasından [{1}] alma işlemi {3} KiB/sn hızla tamamlandı" + +#: dcc.cpp:474 +msgid "Sending [{1}] to [{2}]: File closed prematurely." +msgstr "[{1}], [{2}] adresine gönderiliyor: Dosya erken kapatıldı." + +#: dcc.cpp:478 +msgid "Receiving [{1}] from [{2}]: File closed prematurely." +msgstr "[{2}]'dan [{1}] alınıyor: Dosya zamanından önce kapatıldı." + +#: dcc.cpp:501 +msgid "Sending [{1}] to [{2}]: Error reading from file." +msgstr "[{1}], [{2}] hedefine gönderiliyor: Dosyadan okuma hatası." + +#: dcc.cpp:505 +msgid "Receiving [{1}] from [{2}]: Error reading from file." +msgstr "[{2}]'dan [{1}] alınıyor: Dosyadan okuma hatası." + +#: dcc.cpp:537 +msgid "Sending [{1}] to [{2}]: Unable to open file." +msgstr "[{1}], [{2}] hedefine gönderiliyor: Dosya açılamıyor." + +#: dcc.cpp:541 +msgid "Receiving [{1}] from [{2}]: Unable to open file." +msgstr "[{2}] cihazından [{1}] alınıyor: Dosya açılamıyor." + +#: dcc.cpp:563 +msgid "Receiving [{1}] from [{2}]: Could not open file." +msgstr "[{2}] cihazından [{1}] alınıyor: Dosya açılamadı." + +#: dcc.cpp:572 +msgid "Sending [{1}] to [{2}]: Not a file." +msgstr "[{1}], [{2}] adresine gönderiliyor: Dosya değil." + +#: dcc.cpp:581 +msgid "Sending [{1}] to [{2}]: Could not open file." +msgstr "[{1}], [{2}] hedefine gönderiliyor: Dosya açılamadı." + +#: dcc.cpp:593 +msgid "Sending [{1}] to [{2}]: File too large (>4 GiB)." +msgstr "[{1}], [{2}] hedefine gönderiliyor: Dosya çok büyük (>4 GiB)." + +#: dcc.cpp:623 +msgid "This module allows you to transfer files to and from ZNC" +msgstr "Bu modül ZNC'ye ve ZNC'den dosya aktarmanıza olanak tanır" diff --git a/modules/po/disconkick.pt_BR.po b/modules/po/disconkick.pt_BR.po index 22f6cea8..692b64e3 100644 --- a/modules/po/disconkick.pt_BR.po +++ b/modules/po/disconkick.pt_BR.po @@ -14,7 +14,7 @@ msgstr "" #: disconkick.cpp:32 msgid "You have been disconnected from the IRC server" -msgstr "" +msgstr "Você foi desconectado(a) do servidor." #: disconkick.cpp:45 msgid "" diff --git a/modules/po/disconkick.tr_TR.po b/modules/po/disconkick.tr_TR.po new file mode 100644 index 00000000..dcbabd78 --- /dev/null +++ b/modules/po/disconkick.tr_TR.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/disconkick.pot\n" +"X-Crowdin-File-ID: 171\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: disconkick.cpp:32 +msgid "You have been disconnected from the IRC server" +msgstr "IRC sunucusuyla bağlantınız kesildi" + +#: disconkick.cpp:45 +msgid "" +"Kicks the client from all channels when the connection to the IRC server is " +"lost" +msgstr "IRC sunucusuyla bağlantı kesildiğinde istemciyi tüm kanallardan atar" diff --git a/modules/po/fail2ban.pt_BR.po b/modules/po/fail2ban.pt_BR.po index 9bb234f2..60ef2736 100644 --- a/modules/po/fail2ban.pt_BR.po +++ b/modules/po/fail2ban.pt_BR.po @@ -34,11 +34,11 @@ msgstr "" #: fail2ban.cpp:31 msgid "Ban the specified hosts." -msgstr "" +msgstr "Bane os hosts especificados." #: fail2ban.cpp:33 msgid "Unban the specified hosts." -msgstr "" +msgstr "Desbane os hosts especificados." #: fail2ban.cpp:35 msgid "List banned hosts." @@ -53,7 +53,7 @@ msgstr "" #: fail2ban.cpp:77 fail2ban.cpp:100 fail2ban.cpp:123 fail2ban.cpp:146 #: fail2ban.cpp:172 msgid "Access denied" -msgstr "" +msgstr "Acesso negado" #: fail2ban.cpp:86 msgid "Usage: Timeout [minutes]" @@ -69,7 +69,7 @@ msgstr "Sintaxe: Attempts [quantidade]" #: fail2ban.cpp:114 fail2ban.cpp:117 msgid "Attempts: {1}" -msgstr "" +msgstr "Tentativas: {1}" #: fail2ban.cpp:130 msgid "Usage: Ban " @@ -94,12 +94,12 @@ msgstr "" #: fail2ban.cpp:177 fail2ban.cpp:183 msgctxt "list" msgid "Host" -msgstr "" +msgstr "Host" #: fail2ban.cpp:178 fail2ban.cpp:184 msgctxt "list" msgid "Attempts" -msgstr "" +msgstr "Tentativas" #: fail2ban.cpp:188 msgctxt "list" diff --git a/modules/po/fail2ban.tr_TR.po b/modules/po/fail2ban.tr_TR.po new file mode 100644 index 00000000..71f4f6ef --- /dev/null +++ b/modules/po/fail2ban.tr_TR.po @@ -0,0 +1,124 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/fail2ban.pot\n" +"X-Crowdin-File-ID: 172\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: fail2ban.cpp:25 +msgid "[minutes]" +msgstr "[dakika]" + +#: fail2ban.cpp:26 +msgid "The number of minutes IPs are blocked after a failed login." +msgstr "" +"Başarısız bir oturum açma sonrasında IP'lerin engellendiği dakika sayısı." + +#: fail2ban.cpp:28 +msgid "[count]" +msgstr "[sayı]" + +#: fail2ban.cpp:29 +msgid "The number of allowed failed login attempts." +msgstr "İzin verilen başarısız oturum açma denemelerinin sayısı." + +#: fail2ban.cpp:31 fail2ban.cpp:33 +msgid "" +msgstr "" + +#: fail2ban.cpp:31 +msgid "Ban the specified hosts." +msgstr "Belirtilen hostları yasaklayın." + +#: fail2ban.cpp:33 +msgid "Unban the specified hosts." +msgstr "Belirtilen hostarın yasağını kaldırın." + +#: fail2ban.cpp:35 +msgid "List banned hosts." +msgstr "Yasaklanan hostları listeleyin." + +#: fail2ban.cpp:55 +msgid "" +"Invalid argument, must be the number of minutes IPs are blocked after a " +"failed login and can be followed by number of allowed failed login attempts" +msgstr "" +"Geçersiz argüman, başarısız bir oturum açma işleminden sonra IP'lerin " +"engellendiği sürenin dakika cinsinden belirtilmesi gerekmektedir ve bu, izin " +"verilen başarısız oturum açma denemelerinin sayısıyla devam edebilir" + +#: fail2ban.cpp:77 fail2ban.cpp:100 fail2ban.cpp:123 fail2ban.cpp:146 +#: fail2ban.cpp:172 +msgid "Access denied" +msgstr "Erişim reddedildi" + +#: fail2ban.cpp:86 +msgid "Usage: Timeout [minutes]" +msgstr "Kullanımı: Timeout [dakika]" + +#: fail2ban.cpp:91 fail2ban.cpp:94 +msgid "Timeout: {1} min" +msgstr "Zaman aşımı: {1} dk" + +#: fail2ban.cpp:109 +msgid "Usage: Attempts [count]" +msgstr "Kullanımı: Attempts [sayı]" + +#: fail2ban.cpp:114 fail2ban.cpp:117 +msgid "Attempts: {1}" +msgstr "Deneme: {1}" + +#: fail2ban.cpp:130 +msgid "Usage: Ban " +msgstr "Kullanımı: Ban " + +#: fail2ban.cpp:140 +msgid "Banned: {1}" +msgstr "Yasaklandı: {1}" + +#: fail2ban.cpp:153 +msgid "Usage: Unban " +msgstr "Kullanımı: Unban " + +#: fail2ban.cpp:163 +msgid "Unbanned: {1}" +msgstr "Yasak kaldırıldı: {1}" + +#: fail2ban.cpp:165 +msgid "Ignored: {1}" +msgstr "Görmezden gelindi: {1}" + +#: fail2ban.cpp:177 fail2ban.cpp:183 +msgctxt "list" +msgid "Host" +msgstr "Host" + +#: fail2ban.cpp:178 fail2ban.cpp:184 +msgctxt "list" +msgid "Attempts" +msgstr "Deneme" + +#: fail2ban.cpp:188 +msgctxt "list" +msgid "No bans" +msgstr "Yasak yok" + +#: fail2ban.cpp:245 +msgid "" +"You might enter the time in minutes for the IP banning and the number of " +"failed logins before any action is taken." +msgstr "" +"Herhangi bir işlem yapılmadan önce IP yasağının süresini ve başarısız oturum " +"açma sayısını dakika cinsinden girebilirsiniz." + +#: fail2ban.cpp:250 +msgid "Block IPs for some time after a failed login." +msgstr "" +"Başarısız bir oturum açma işleminden sonra IP'leri bir süre engelleyin." diff --git a/modules/po/flooddetach.pt_BR.po b/modules/po/flooddetach.pt_BR.po index 19b92630..7270749f 100644 --- a/modules/po/flooddetach.pt_BR.po +++ b/modules/po/flooddetach.pt_BR.po @@ -49,8 +49,8 @@ msgstr[1] "" #: flooddetach.cpp:188 msgid "every second" msgid_plural "every {1} seconds" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "a cada segundo" +msgstr[1] "a cada {1} segundos" #: flooddetach.cpp:190 msgid "Current limit is {1} {2}" diff --git a/modules/po/flooddetach.tr_TR.po b/modules/po/flooddetach.tr_TR.po new file mode 100644 index 00000000..df2e6f7e --- /dev/null +++ b/modules/po/flooddetach.tr_TR.po @@ -0,0 +1,95 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/flooddetach.pot\n" +"X-Crowdin-File-ID: 173\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: flooddetach.cpp:30 +msgid "Show current limits" +msgstr "Mevcut sınırları göster" + +#: flooddetach.cpp:32 flooddetach.cpp:35 +msgid "[]" +msgstr "[]" + +#: flooddetach.cpp:33 +msgid "Show or set number of seconds in the time interval" +msgstr "Zaman aralığındaki saniye sayısını gösterin veya ayarlayın" + +#: flooddetach.cpp:36 +msgid "Show or set number of lines in the time interval" +msgstr "Zaman aralığındaki satır sayısını gösterin veya ayarlayın" + +#: flooddetach.cpp:39 +msgid "Show or set whether to notify you about detaching and attaching back" +msgstr "" +"Katılma ve ayrılma konusunda size bilgi verilip verilmeyeceğini gösterin " +"veya ayarlayın" + +#: flooddetach.cpp:93 +msgid "Flood in {1} is over, reattaching..." +msgstr "{1} bölgesindeki flood bitti, yeniden bağlanıyor..." + +#: flooddetach.cpp:150 +msgid "Channel {1} was flooded, you've been detached" +msgstr "Kanal {1} ​​floodlandı, koptunuz" + +#: flooddetach.cpp:187 +msgid "1 line" +msgid_plural "{1} lines" +msgstr[0] "1 satır" +msgstr[1] "{1} satır" + +#: flooddetach.cpp:188 +msgid "every second" +msgid_plural "every {1} seconds" +msgstr[0] "her saniye" +msgstr[1] "her {1} saniye" + +#: flooddetach.cpp:190 +msgid "Current limit is {1} {2}" +msgstr "Mevcut sınır: {1} {2}" + +#: flooddetach.cpp:197 +msgid "Seconds limit is {1}" +msgstr "Saniye sınırı: {1}" + +#: flooddetach.cpp:202 +msgid "Set seconds limit to {1}" +msgstr "Saniye sınırını {1} olarak ayarla" + +#: flooddetach.cpp:211 +msgid "Lines limit is {1}" +msgstr "Satır sınırı: {1}" + +#: flooddetach.cpp:216 +msgid "Set lines limit to {1}" +msgstr "Satır sınırını {1} olarak ayarla" + +#: flooddetach.cpp:229 +msgid "Module messages are disabled" +msgstr "Modül mesajları devre dışı bırakıldı" + +#: flooddetach.cpp:231 +msgid "Module messages are enabled" +msgstr "Modül mesajları etkinleştirildi" + +#: flooddetach.cpp:247 +msgid "" +"This user module takes up to two arguments. Arguments are numbers of " +"messages and seconds." +msgstr "" +"Bu kullanıcı modülü en fazla iki argüman alır. Bağımsız değişkenler mesaj " +"sayısı ve saniyedir." + +#: flooddetach.cpp:251 +msgid "Detach channels when flooded" +msgstr "Floodlandığında kanalları ayırın" diff --git a/modules/po/identfile.pt_BR.po b/modules/po/identfile.pt_BR.po index 4712a141..911ad0e1 100644 --- a/modules/po/identfile.pt_BR.po +++ b/modules/po/identfile.pt_BR.po @@ -66,7 +66,7 @@ msgstr "" #: identfile.cpp:86 msgid "Access denied" -msgstr "" +msgstr "Acesso negado" #: identfile.cpp:181 msgid "" diff --git a/modules/po/identfile.tr_TR.po b/modules/po/identfile.tr_TR.po new file mode 100644 index 00000000..ca0032d3 --- /dev/null +++ b/modules/po/identfile.tr_TR.po @@ -0,0 +1,83 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/identfile.pot\n" +"X-Crowdin-File-ID: 174\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: identfile.cpp:30 +msgid "Show file name" +msgstr "" + +#: identfile.cpp:32 +msgid "" +msgstr "" + +#: identfile.cpp:32 +msgid "Set file name" +msgstr "" + +#: identfile.cpp:34 +msgid "Show file format" +msgstr "" + +#: identfile.cpp:36 +msgid "" +msgstr "" + +#: identfile.cpp:36 +msgid "Set file format" +msgstr "" + +#: identfile.cpp:38 +msgid "Show current state" +msgstr "" + +#: identfile.cpp:48 +msgid "File is set to: {1}" +msgstr "" + +#: identfile.cpp:53 +msgid "File has been set to: {1}" +msgstr "" + +#: identfile.cpp:58 +msgid "Format has been set to: {1}" +msgstr "" + +#: identfile.cpp:59 identfile.cpp:65 +msgid "Format would be expanded to: {1}" +msgstr "" + +#: identfile.cpp:64 +msgid "Format is set to: {1}" +msgstr "" + +#: identfile.cpp:78 +msgid "identfile is free" +msgstr "" + +#: identfile.cpp:86 +msgid "Access denied" +msgstr "" + +#: identfile.cpp:181 +msgid "" +"Aborting connection, another user or network is currently connecting and " +"using the ident spoof file" +msgstr "" + +#: identfile.cpp:189 +msgid "[{1}] could not be written, retrying..." +msgstr "" + +#: identfile.cpp:223 +msgid "Write the ident of a user to a file when they are trying to connect." +msgstr "" diff --git a/modules/po/imapauth.tr_TR.po b/modules/po/imapauth.tr_TR.po new file mode 100644 index 00000000..5a501d6d --- /dev/null +++ b/modules/po/imapauth.tr_TR.po @@ -0,0 +1,22 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/imapauth.pot\n" +"X-Crowdin-File-ID: 175\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: imapauth.cpp:168 +msgid "[ server [+]port [ UserFormatString ] ]" +msgstr "[ sunucu [+]port [ KullanıcıBiçimiDizesi ] ]" + +#: imapauth.cpp:171 +msgid "Allow users to authenticate via IMAP." +msgstr "" +"Kullanıcıların IMAP aracılığıyla kimlik doğrulaması yapmasına izin verin." diff --git a/modules/po/keepnick.tr_TR.po b/modules/po/keepnick.tr_TR.po new file mode 100644 index 00000000..35ce4092 --- /dev/null +++ b/modules/po/keepnick.tr_TR.po @@ -0,0 +1,53 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/keepnick.pot\n" +"X-Crowdin-File-ID: 176\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: keepnick.cpp:39 +msgid "Try to get your primary nick" +msgstr "Birincil nickinizi almaya çalışın" + +#: keepnick.cpp:42 keepnick.cpp:196 +msgid "No longer trying to get your primary nick" +msgstr "Artık birincil nickinizi almaya çalışmıyorsunuz" + +#: keepnick.cpp:44 +msgid "Show the current state" +msgstr "Mevcut durumu göster" + +#: keepnick.cpp:158 +msgid "ZNC is already trying to get this nickname" +msgstr "ZNC zaten bu nicki almaya çalışıyor" + +#: keepnick.cpp:173 +msgid "Unable to obtain nick {1}: {2}, {3}" +msgstr "{1} nicki alınamıyor: {2}, {3}" + +#: keepnick.cpp:181 +msgid "Unable to obtain nick {1}" +msgstr "{1} nicki alınamıyor" + +#: keepnick.cpp:191 +msgid "Trying to get your primary nick" +msgstr "Birincil nickinizi almaya çalışıyorum" + +#: keepnick.cpp:201 +msgid "Currently trying to get your primary nick" +msgstr "Şu anda birincil nickinizi almaya çalışıyorum" + +#: keepnick.cpp:203 +msgid "Currently disabled, try 'enable'" +msgstr "Şu anda devre dışı, 'enable' deneyin" + +#: keepnick.cpp:224 +msgid "Keeps trying for your primary nick" +msgstr "Birincil nickinizi almayı denemeye devam ediyor" diff --git a/modules/po/kickrejoin.tr_TR.po b/modules/po/kickrejoin.tr_TR.po new file mode 100644 index 00000000..2a92c85e --- /dev/null +++ b/modules/po/kickrejoin.tr_TR.po @@ -0,0 +1,61 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/kickrejoin.pot\n" +"X-Crowdin-File-ID: 177\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: kickrejoin.cpp:56 +msgid "" +msgstr "" + +#: kickrejoin.cpp:56 +msgid "Set the rejoin delay" +msgstr "" + +#: kickrejoin.cpp:58 +msgid "Show the rejoin delay" +msgstr "" + +#: kickrejoin.cpp:77 +msgid "Illegal argument, must be a positive number or 0" +msgstr "" + +#: kickrejoin.cpp:90 +msgid "Negative delays don't make any sense!" +msgstr "" + +#: kickrejoin.cpp:98 +msgid "Rejoin delay set to 1 second" +msgid_plural "Rejoin delay set to {1} seconds" +msgstr[0] "" +msgstr[1] "" + +#: kickrejoin.cpp:101 +msgid "Rejoin delay disabled" +msgstr "" + +#: kickrejoin.cpp:106 +msgid "Rejoin delay is set to 1 second" +msgid_plural "Rejoin delay is set to {1} seconds" +msgstr[0] "" +msgstr[1] "" + +#: kickrejoin.cpp:109 +msgid "Rejoin delay is disabled" +msgstr "" + +#: kickrejoin.cpp:131 +msgid "You might enter the number of seconds to wait before rejoining." +msgstr "" + +#: kickrejoin.cpp:134 +msgid "Autorejoins on kick" +msgstr "" diff --git a/modules/po/lastseen.pt_BR.po b/modules/po/lastseen.pt_BR.po index 8cf27639..e2b6c3db 100644 --- a/modules/po/lastseen.pt_BR.po +++ b/modules/po/lastseen.pt_BR.po @@ -14,11 +14,11 @@ msgstr "" #: modules/po/../data/lastseen/tmpl/index.tmpl:8 msgid "User" -msgstr "" +msgstr "Usuário" #: modules/po/../data/lastseen/tmpl/index.tmpl:9 lastseen.cpp:99 msgid "Last Seen" -msgstr "" +msgstr "Visto por último" #: modules/po/../data/lastseen/tmpl/index.tmpl:10 msgid "Info" @@ -30,11 +30,11 @@ msgstr "" #: modules/po/../data/lastseen/tmpl/index.tmpl:21 msgid "Edit" -msgstr "" +msgstr "Editar" #: modules/po/../data/lastseen/tmpl/index.tmpl:22 msgid "Delete" -msgstr "" +msgstr "Excluir" #: modules/po/../data/lastseen/tmpl/lastseen_WebadminUser.tmpl:6 msgid "Last login time:" @@ -47,16 +47,16 @@ msgstr "" #: lastseen.cpp:61 lastseen.cpp:67 msgctxt "show" msgid "User" -msgstr "" +msgstr "Usuário" #: lastseen.cpp:62 lastseen.cpp:68 msgctxt "show" msgid "Last Seen" -msgstr "" +msgstr "Visto por último" #: lastseen.cpp:69 lastseen.cpp:125 msgid "never" -msgstr "" +msgstr "nunca" #: lastseen.cpp:79 msgid "Shows list of users and when they last logged in" diff --git a/modules/po/lastseen.tr_TR.po b/modules/po/lastseen.tr_TR.po new file mode 100644 index 00000000..76d26cde --- /dev/null +++ b/modules/po/lastseen.tr_TR.po @@ -0,0 +1,69 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/lastseen.pot\n" +"X-Crowdin-File-ID: 178\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules/po/../data/lastseen/tmpl/index.tmpl:8 +msgid "User" +msgstr "Kullanıcı" + +#: modules/po/../data/lastseen/tmpl/index.tmpl:9 lastseen.cpp:99 +msgid "Last Seen" +msgstr "Son Görülme" + +#: modules/po/../data/lastseen/tmpl/index.tmpl:10 +msgid "Info" +msgstr "Bilgi" + +#: modules/po/../data/lastseen/tmpl/index.tmpl:11 +msgid "Action" +msgstr "İşlem" + +#: modules/po/../data/lastseen/tmpl/index.tmpl:21 +msgid "Edit" +msgstr "Düzenle" + +#: modules/po/../data/lastseen/tmpl/index.tmpl:22 +msgid "Delete" +msgstr "Sil" + +#: modules/po/../data/lastseen/tmpl/lastseen_WebadminUser.tmpl:6 +msgid "Last login time:" +msgstr "Son giriş zamanı:" + +#: lastseen.cpp:53 +msgid "Access denied" +msgstr "Erişim reddedildi" + +#: lastseen.cpp:61 lastseen.cpp:67 +msgctxt "show" +msgid "User" +msgstr "Kullanıcı" + +#: lastseen.cpp:62 lastseen.cpp:68 +msgctxt "show" +msgid "Last Seen" +msgstr "Son Görülme" + +#: lastseen.cpp:69 lastseen.cpp:125 +msgid "never" +msgstr "asla" + +#: lastseen.cpp:79 +msgid "Shows list of users and when they last logged in" +msgstr "" +"Kullanıcıların listesini ve en son ne zaman giriş yaptıklarını gösterir" + +#: lastseen.cpp:154 +msgid "Collects data about when a user last logged in." +msgstr "" +"Bir kullanıcının en son ne zaman oturum açtığına ilişkin verileri toplar." diff --git a/modules/po/listsockets.pt_BR.po b/modules/po/listsockets.pt_BR.po index 08f7f844..6c69ff0c 100644 --- a/modules/po/listsockets.pt_BR.po +++ b/modules/po/listsockets.pt_BR.po @@ -15,7 +15,7 @@ msgstr "" #: modules/po/../data/listsockets/tmpl/index.tmpl:7 listsockets.cpp:213 #: listsockets.cpp:229 msgid "Name" -msgstr "" +msgstr "Nome" #: modules/po/../data/listsockets/tmpl/index.tmpl:8 listsockets.cpp:214 #: listsockets.cpp:230 @@ -30,17 +30,17 @@ msgstr "" #: modules/po/../data/listsockets/tmpl/index.tmpl:10 listsockets.cpp:217 #: listsockets.cpp:234 msgid "SSL" -msgstr "" +msgstr "SSL" #: modules/po/../data/listsockets/tmpl/index.tmpl:11 listsockets.cpp:219 #: listsockets.cpp:239 msgid "Local" -msgstr "" +msgstr "Local" #: modules/po/../data/listsockets/tmpl/index.tmpl:12 listsockets.cpp:220 #: listsockets.cpp:241 msgid "Remote" -msgstr "" +msgstr "Remoto" #: modules/po/../data/listsockets/tmpl/index.tmpl:13 msgid "Data In" @@ -69,12 +69,12 @@ msgstr "" #: listsockets.cpp:115 listsockets.cpp:235 msgctxt "ssl" msgid "Yes" -msgstr "" +msgstr "Sim" #: listsockets.cpp:115 listsockets.cpp:236 msgctxt "ssl" msgid "No" -msgstr "" +msgstr "Não" #: listsockets.cpp:141 msgid "Listener" diff --git a/modules/po/listsockets.tr_TR.po b/modules/po/listsockets.tr_TR.po new file mode 100644 index 00000000..fd487034 --- /dev/null +++ b/modules/po/listsockets.tr_TR.po @@ -0,0 +1,113 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/listsockets.pot\n" +"X-Crowdin-File-ID: 179\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules/po/../data/listsockets/tmpl/index.tmpl:7 listsockets.cpp:213 +#: listsockets.cpp:229 +msgid "Name" +msgstr "" + +#: modules/po/../data/listsockets/tmpl/index.tmpl:8 listsockets.cpp:214 +#: listsockets.cpp:230 +msgid "Created" +msgstr "" + +#: modules/po/../data/listsockets/tmpl/index.tmpl:9 listsockets.cpp:215 +#: listsockets.cpp:231 +msgid "State" +msgstr "" + +#: modules/po/../data/listsockets/tmpl/index.tmpl:10 listsockets.cpp:217 +#: listsockets.cpp:234 +msgid "SSL" +msgstr "" + +#: modules/po/../data/listsockets/tmpl/index.tmpl:11 listsockets.cpp:219 +#: listsockets.cpp:239 +msgid "Local" +msgstr "" + +#: modules/po/../data/listsockets/tmpl/index.tmpl:12 listsockets.cpp:220 +#: listsockets.cpp:241 +msgid "Remote" +msgstr "" + +#: modules/po/../data/listsockets/tmpl/index.tmpl:13 +msgid "Data In" +msgstr "" + +#: modules/po/../data/listsockets/tmpl/index.tmpl:14 +msgid "Data Out" +msgstr "" + +#: listsockets.cpp:62 +msgid "[-n]" +msgstr "" + +#: listsockets.cpp:62 +msgid "Shows the list of active sockets. Pass -n to show IP addresses" +msgstr "" + +#: listsockets.cpp:70 +msgid "You must be admin to use this module" +msgstr "" + +#: listsockets.cpp:95 +msgid "List sockets" +msgstr "" + +#: listsockets.cpp:115 listsockets.cpp:235 +msgctxt "ssl" +msgid "Yes" +msgstr "" + +#: listsockets.cpp:115 listsockets.cpp:236 +msgctxt "ssl" +msgid "No" +msgstr "" + +#: listsockets.cpp:141 +msgid "Listener" +msgstr "" + +#: listsockets.cpp:143 +msgid "Inbound" +msgstr "" + +#: listsockets.cpp:146 +msgid "Outbound" +msgstr "" + +#: listsockets.cpp:148 +msgid "Connecting" +msgstr "" + +#: listsockets.cpp:151 +msgid "UNKNOWN" +msgstr "" + +#: listsockets.cpp:206 +msgid "You have no open sockets." +msgstr "" + +#: listsockets.cpp:221 listsockets.cpp:243 +msgid "In" +msgstr "" + +#: listsockets.cpp:222 listsockets.cpp:245 +msgid "Out" +msgstr "" + +#: listsockets.cpp:261 +msgid "Lists active sockets" +msgstr "" diff --git a/modules/po/log.bg_BG.po b/modules/po/log.bg_BG.po index 50cf4c9a..3c0b0dd2 100644 --- a/modules/po/log.bg_BG.po +++ b/modules/po/log.bg_BG.po @@ -139,10 +139,10 @@ msgstr "" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "" -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "" diff --git a/modules/po/log.da_DK.po b/modules/po/log.da_DK.po index 597b0aa7..b58efbfb 100644 --- a/modules/po/log.da_DK.po +++ b/modules/po/log.da_DK.po @@ -139,10 +139,10 @@ msgstr "" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "" -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "" diff --git a/modules/po/log.de_DE.po b/modules/po/log.de_DE.po index 14710f9e..4d4bcca0 100644 --- a/modules/po/log.de_DE.po +++ b/modules/po/log.de_DE.po @@ -143,10 +143,10 @@ msgstr "Ungültiger Log-Pfad [{1}]" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "Logge nach [{1}] mit Zeitstempelformat '{2}'" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "[-sanitize] Optionaler Pfad zum Speichern von Logs." -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "Schreibt IRC-Logs." diff --git a/modules/po/log.el_GR.po b/modules/po/log.el_GR.po index 3e2747d2..3237efa6 100644 --- a/modules/po/log.el_GR.po +++ b/modules/po/log.el_GR.po @@ -139,10 +139,10 @@ msgstr "" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "" -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "" diff --git a/modules/po/log.es_ES.po b/modules/po/log.es_ES.po index 05afe9e5..c2a3de09 100644 --- a/modules/po/log.es_ES.po +++ b/modules/po/log.es_ES.po @@ -141,10 +141,10 @@ msgstr "Ruta de log no válida [{1}]" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "Registrando a [{1}]. Usando marca de tiempo '{2}'" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "[-sanitize] ruta opcional donde almacenar registros." -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "Guarda registros de IRC." diff --git a/modules/po/log.fr_FR.po b/modules/po/log.fr_FR.po index 9370a8b5..4b87a022 100644 --- a/modules/po/log.fr_FR.po +++ b/modules/po/log.fr_FR.po @@ -139,10 +139,10 @@ msgstr "" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "" -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "" diff --git a/modules/po/log.id_ID.po b/modules/po/log.id_ID.po index c1b54da3..248ca76a 100644 --- a/modules/po/log.id_ID.po +++ b/modules/po/log.id_ID.po @@ -138,10 +138,10 @@ msgstr "" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "" -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "" diff --git a/modules/po/log.it_IT.po b/modules/po/log.it_IT.po index a638f457..d79608d6 100644 --- a/modules/po/log.it_IT.po +++ b/modules/po/log.it_IT.po @@ -145,10 +145,10 @@ msgstr "Percorso di log non valido [{1}]" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "Accesso a [{1}]. Utilizzando il formato timestamp '{2}'" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "[-sanitize] Percorso opzionale dove archiviare i registri (logs)." -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "Scrive un logs IRC." diff --git a/modules/po/log.nl_NL.po b/modules/po/log.nl_NL.po index e6242e8a..b918b2ac 100644 --- a/modules/po/log.nl_NL.po +++ b/modules/po/log.nl_NL.po @@ -147,10 +147,10 @@ msgstr "Ongeldig logboekpad [{1}]" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "Logboek schrijven naar [{1}]. Gebruik tijdstempel: '{2}'" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "[-sanitize] Optioneel pad waar het logboek opgeslagen moet worden." -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "Schrijft IRC logboeken." diff --git a/modules/po/log.pot b/modules/po/log.pot index 044508c1..12bc3333 100644 --- a/modules/po/log.pot +++ b/modules/po/log.pot @@ -130,10 +130,10 @@ msgstr "" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "" -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "" diff --git a/modules/po/log.pt_BR.po b/modules/po/log.pt_BR.po index 75462ebe..1989c661 100644 --- a/modules/po/log.pt_BR.po +++ b/modules/po/log.pt_BR.po @@ -141,10 +141,10 @@ msgstr "" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "" -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "" diff --git a/modules/po/log.pt_PT.po b/modules/po/log.pt_PT.po index bec324e0..e09c2aea 100644 --- a/modules/po/log.pt_PT.po +++ b/modules/po/log.pt_PT.po @@ -144,10 +144,10 @@ msgstr "Caminho de registo inválido [{1}]" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "A registar para [{1}]. A utilizar formato de data e hora '{2}'" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "[-sanitize] Camiho opcional para onde guardar os registos." -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "Escreve registos do IRC." diff --git a/modules/po/log.ro_RO.po b/modules/po/log.ro_RO.po index 296fa597..07beb939 100644 --- a/modules/po/log.ro_RO.po +++ b/modules/po/log.ro_RO.po @@ -141,10 +141,10 @@ msgstr "" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "" -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "" diff --git a/modules/po/log.ru_RU.po b/modules/po/log.ru_RU.po index c6f157eb..35eb8201 100644 --- a/modules/po/log.ru_RU.po +++ b/modules/po/log.ru_RU.po @@ -143,10 +143,10 @@ msgstr "" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "" -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "" diff --git a/modules/po/log.tr_TR.po b/modules/po/log.tr_TR.po new file mode 100644 index 00000000..35349ade --- /dev/null +++ b/modules/po/log.tr_TR.po @@ -0,0 +1,148 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/log.pot\n" +"X-Crowdin-File-ID: 180\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: log.cpp:59 +msgid "" +msgstr "" + +#: log.cpp:60 +msgid "Set logging rules, use !#chan or !query to negate and * " +msgstr "" + +#: log.cpp:62 +msgid "Clear all logging rules" +msgstr "" + +#: log.cpp:64 +msgid "List all logging rules" +msgstr "" + +#: log.cpp:67 +msgid " true|false" +msgstr "" + +#: log.cpp:68 +msgid "Set one of the following options: joins, quits, nickchanges" +msgstr "" + +#: log.cpp:71 +msgid "Show current settings set by Set command" +msgstr "" + +#: log.cpp:143 +msgid "Usage: SetRules " +msgstr "" + +#: log.cpp:144 +msgid "Wildcards are allowed" +msgstr "" + +#: log.cpp:156 log.cpp:179 +msgid "No logging rules. Everything is logged." +msgstr "" + +#: log.cpp:161 +msgid "1 rule removed: {2}" +msgid_plural "{1} rules removed: {2}" +msgstr[0] "" +msgstr[1] "" + +#: log.cpp:168 log.cpp:174 +msgctxt "listrules" +msgid "Rule" +msgstr "" + +#: log.cpp:169 log.cpp:175 +msgctxt "listrules" +msgid "Logging enabled" +msgstr "" + +#: log.cpp:190 +msgid "" +"Usage: Set true|false, where is one of: joins, quits, nickchanges" +msgstr "" + +#: log.cpp:197 +msgid "Will log joins" +msgstr "" + +#: log.cpp:197 +msgid "Will not log joins" +msgstr "" + +#: log.cpp:198 +msgid "Will log quits" +msgstr "" + +#: log.cpp:198 +msgid "Will not log quits" +msgstr "" + +#: log.cpp:200 +msgid "Will log nick changes" +msgstr "" + +#: log.cpp:200 +msgid "Will not log nick changes" +msgstr "" + +#: log.cpp:204 +msgid "Unknown variable. Known variables: joins, quits, nickchanges" +msgstr "" + +#: log.cpp:212 +msgid "Logging joins" +msgstr "" + +#: log.cpp:212 +msgid "Not logging joins" +msgstr "" + +#: log.cpp:213 +msgid "Logging quits" +msgstr "" + +#: log.cpp:213 +msgid "Not logging quits" +msgstr "" + +#: log.cpp:214 +msgid "Logging nick changes" +msgstr "" + +#: log.cpp:215 +msgid "Not logging nick changes" +msgstr "" + +#: log.cpp:352 +msgid "" +"Invalid args [{1}]. Only one log path allowed. Check that there are no " +"spaces in the path." +msgstr "" + +#: log.cpp:402 +msgid "Invalid log path [{1}]" +msgstr "" + +#: log.cpp:405 +msgid "Logging to [{1}]. Using timestamp format '{2}'" +msgstr "" + +#: log.cpp:576 +msgid "[-sanitize] Optional path where to store logs." +msgstr "" + +#: log.cpp:580 +msgid "Writes IRC logs." +msgstr "" diff --git a/modules/po/missingmotd.tr_TR.po b/modules/po/missingmotd.tr_TR.po new file mode 100644 index 00000000..04944a41 --- /dev/null +++ b/modules/po/missingmotd.tr_TR.po @@ -0,0 +1,17 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/missingmotd.pot\n" +"X-Crowdin-File-ID: 181\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: missingmotd.cpp:36 +msgid "Sends 422 to clients when they login" +msgstr "İstemcilere giriş yaptıklarında 422 gönderir" diff --git a/modules/po/modperl.tr_TR.po b/modules/po/modperl.tr_TR.po new file mode 100644 index 00000000..741c1260 --- /dev/null +++ b/modules/po/modperl.tr_TR.po @@ -0,0 +1,17 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/modperl.pot\n" +"X-Crowdin-File-ID: 182\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modperl.cpp:382 +msgid "Loads perl scripts as ZNC modules" +msgstr "Perl komut dosyalarını ZNC modülleri olarak yükler" diff --git a/modules/po/modpython.tr_TR.po b/modules/po/modpython.tr_TR.po new file mode 100644 index 00000000..4d1088a9 --- /dev/null +++ b/modules/po/modpython.tr_TR.po @@ -0,0 +1,17 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/modpython.pot\n" +"X-Crowdin-File-ID: 183\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modpython.cpp:532 +msgid "Loads python scripts as ZNC modules" +msgstr "Python komut dosyalarını ZNC modülleri olarak yükler" diff --git a/modules/po/modules_online.tr_TR.po b/modules/po/modules_online.tr_TR.po new file mode 100644 index 00000000..cb6d12dd --- /dev/null +++ b/modules/po/modules_online.tr_TR.po @@ -0,0 +1,17 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/modules_online.pot\n" +"X-Crowdin-File-ID: 184\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules_online.cpp:117 +msgid "Makes ZNC's *modules to be \"online\"." +msgstr "ZNC'nin *modüllerinin \"çevrimiçi\" olmasını sağlar." diff --git a/modules/po/nickserv.pt_BR.po b/modules/po/nickserv.pt_BR.po index 62104726..28d587bc 100644 --- a/modules/po/nickserv.pt_BR.po +++ b/modules/po/nickserv.pt_BR.po @@ -30,11 +30,11 @@ msgstr "" #: nickserv.cpp:63 msgid "Ok" -msgstr "" +msgstr "OK" #: nickserv.cpp:68 msgid "password" -msgstr "" +msgstr "senha" #: nickserv.cpp:68 msgid "Set your nickserv password" @@ -46,7 +46,7 @@ msgstr "" #: nickserv.cpp:72 msgid "nickname" -msgstr "" +msgstr "apelido" #: nickserv.cpp:73 msgid "" diff --git a/modules/po/nickserv.tr_TR.po b/modules/po/nickserv.tr_TR.po new file mode 100644 index 00000000..6395d2cb --- /dev/null +++ b/modules/po/nickserv.tr_TR.po @@ -0,0 +1,82 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/nickserv.pot\n" +"X-Crowdin-File-ID: 185\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: nickserv.cpp:31 +msgid "Password set" +msgstr "Şifre ayarlandı" + +#: nickserv.cpp:36 nickserv.cpp:46 +msgid "Done" +msgstr "Tamamdır" + +#: nickserv.cpp:41 +msgid "NickServ name set" +msgstr "NickServ adı ayarlandı" + +#: nickserv.cpp:60 +msgid "No such editable command. See ViewCommands for list." +msgstr "Böyle düzenlenebilir bir komut yok. Liste için ViewCommands'a bakın." + +#: nickserv.cpp:63 +msgid "Ok" +msgstr "Tamam" + +#: nickserv.cpp:68 +msgid "password" +msgstr "şifre" + +#: nickserv.cpp:68 +msgid "Set your nickserv password" +msgstr "Nickserv şifrenizi belirleyin" + +#: nickserv.cpp:70 +msgid "Clear your nickserv password" +msgstr "Nickserv şifrenizi temizleyin" + +#: nickserv.cpp:72 +msgid "nickname" +msgstr "takma ad" + +#: nickserv.cpp:73 +msgid "" +"Set NickServ name (Useful on networks like EpiKnet, where NickServ is named " +"Themis" +msgstr "" +"NickServ adını ayarlayın (NickServ'in Themis olarak adlandırıldığı EpiKnet " +"gibi ağlarda kullanışlıdır)" + +#: nickserv.cpp:77 +msgid "Reset NickServ name to default (NickServ)" +msgstr "NickServ adını varsayılana sıfırla (NickServ)" + +#: nickserv.cpp:81 +msgid "Show patterns for lines, which are being sent to NickServ" +msgstr "NickServ'e gönderilen satırların kalıplarını göster" + +#: nickserv.cpp:83 +msgid "cmd new-pattern" +msgstr "cmd new-pattern" + +#: nickserv.cpp:84 +msgid "Set pattern for commands" +msgstr "Komutlar için kalıp ayarla" + +#: nickserv.cpp:146 +msgid "Please enter your nickserv password." +msgstr "Lütfen nickserv şifrenizi giriniz." + +#: nickserv.cpp:150 +msgid "Auths you with NickServ (prefer SASL module instead)" +msgstr "" +"Sizi NickServ ile yetkilendirir (bunun yerine SASL modülünü tercih edin)" diff --git a/modules/po/notes.tr_TR.po b/modules/po/notes.tr_TR.po new file mode 100644 index 00000000..1c6f42a6 --- /dev/null +++ b/modules/po/notes.tr_TR.po @@ -0,0 +1,119 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/notes.pot\n" +"X-Crowdin-File-ID: 186\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules/po/../data/notes/tmpl/index.tmpl:7 +msgid "Add A Note" +msgstr "" + +#: modules/po/../data/notes/tmpl/index.tmpl:11 +msgid "Key:" +msgstr "" + +#: modules/po/../data/notes/tmpl/index.tmpl:15 +msgid "Note:" +msgstr "" + +#: modules/po/../data/notes/tmpl/index.tmpl:19 +msgid "Add Note" +msgstr "" + +#: modules/po/../data/notes/tmpl/index.tmpl:27 +msgid "You have no notes to display." +msgstr "" + +#: modules/po/../data/notes/tmpl/index.tmpl:34 notes.cpp:164 notes.cpp:170 +msgid "Key" +msgstr "" + +#: modules/po/../data/notes/tmpl/index.tmpl:35 notes.cpp:165 notes.cpp:171 +msgid "Note" +msgstr "" + +#: modules/po/../data/notes/tmpl/index.tmpl:41 +msgid "[del]" +msgstr "" + +#: notes.cpp:32 +msgid "That note already exists. Use MOD to overwrite." +msgstr "" + +#: notes.cpp:35 notes.cpp:137 +msgid "Added note {1}" +msgstr "" + +#: notes.cpp:37 notes.cpp:48 notes.cpp:142 +msgid "Unable to add note {1}" +msgstr "" + +#: notes.cpp:46 notes.cpp:139 +msgid "Set note for {1}" +msgstr "" + +#: notes.cpp:56 +msgid "This note doesn't exist." +msgstr "" + +#: notes.cpp:66 notes.cpp:116 +msgid "Deleted note {1}" +msgstr "" + +#: notes.cpp:68 notes.cpp:118 +msgid "Unable to delete note {1}" +msgstr "" + +#: notes.cpp:75 +msgid "List notes" +msgstr "" + +#: notes.cpp:77 notes.cpp:81 +msgid " " +msgstr "" + +#: notes.cpp:77 +msgid "Add a note" +msgstr "" + +#: notes.cpp:79 notes.cpp:83 +msgid "" +msgstr "" + +#: notes.cpp:79 +msgid "Delete a note" +msgstr "" + +#: notes.cpp:81 +msgid "Modify a note" +msgstr "" + +#: notes.cpp:94 +msgid "Notes" +msgstr "" + +#: notes.cpp:133 +msgid "That note already exists. Use /#+ to overwrite." +msgstr "" + +#: notes.cpp:186 notes.cpp:188 +msgid "You have no entries." +msgstr "" + +#: notes.cpp:224 +msgid "" +"This user module takes up to one arguments. It can be -disableNotesOnLogin " +"not to show notes upon client login" +msgstr "" + +#: notes.cpp:228 +msgid "Keep and replay notes" +msgstr "" diff --git a/modules/po/notify_connect.tr_TR.po b/modules/po/notify_connect.tr_TR.po new file mode 100644 index 00000000..5a67fb5d --- /dev/null +++ b/modules/po/notify_connect.tr_TR.po @@ -0,0 +1,29 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/notify_connect.pot\n" +"X-Crowdin-File-ID: 187\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: notify_connect.cpp:24 +msgid "attached" +msgstr "" + +#: notify_connect.cpp:26 +msgid "detached" +msgstr "" + +#: notify_connect.cpp:41 +msgid "{1} {2} from {3}" +msgstr "" + +#: notify_connect.cpp:52 +msgid "Notifies all admin users when a client connects or disconnects." +msgstr "" diff --git a/modules/po/perform.tr_TR.po b/modules/po/perform.tr_TR.po new file mode 100644 index 00000000..f280b2e9 --- /dev/null +++ b/modules/po/perform.tr_TR.po @@ -0,0 +1,108 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/perform.pot\n" +"X-Crowdin-File-ID: 189\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules/po/../data/perform/tmpl/index.tmpl:7 perform.cpp:143 +msgid "Perform" +msgstr "" + +#: modules/po/../data/perform/tmpl/index.tmpl:11 +msgid "Perform commands:" +msgstr "" + +#: modules/po/../data/perform/tmpl/index.tmpl:15 +msgid "Commands sent to the IRC server on connect, one per line." +msgstr "" + +#: modules/po/../data/perform/tmpl/index.tmpl:18 +msgid "Save" +msgstr "" + +#: perform.cpp:24 +msgid "Usage: add " +msgstr "" + +#: perform.cpp:29 +msgid "Added!" +msgstr "" + +#: perform.cpp:37 perform.cpp:82 +msgid "Illegal # Requested" +msgstr "" + +#: perform.cpp:41 +msgid "Command Erased." +msgstr "" + +#: perform.cpp:50 perform.cpp:56 +msgctxt "list" +msgid "Id" +msgstr "" + +#: perform.cpp:51 perform.cpp:57 +msgctxt "list" +msgid "Perform" +msgstr "" + +#: perform.cpp:52 perform.cpp:62 +msgctxt "list" +msgid "Expanded" +msgstr "" + +#: perform.cpp:67 +msgid "No commands in your perform list." +msgstr "" + +#: perform.cpp:73 +msgid "perform commands sent" +msgstr "" + +#: perform.cpp:86 +msgid "Commands Swapped." +msgstr "" + +#: perform.cpp:95 +msgid "" +msgstr "" + +#: perform.cpp:96 +msgid "Adds perform command to be sent to the server on connect" +msgstr "" + +#: perform.cpp:98 +msgid "" +msgstr "" + +#: perform.cpp:98 +msgid "Delete a perform command" +msgstr "" + +#: perform.cpp:100 +msgid "List the perform commands" +msgstr "" + +#: perform.cpp:103 +msgid "Send the perform commands to the server now" +msgstr "" + +#: perform.cpp:105 +msgid " " +msgstr "" + +#: perform.cpp:106 +msgid "Swap two perform commands" +msgstr "" + +#: perform.cpp:192 +msgid "Keeps a list of commands to be executed when ZNC connects to IRC." +msgstr "" diff --git a/modules/po/perleval.tr_TR.po b/modules/po/perleval.tr_TR.po new file mode 100644 index 00000000..54fbdebd --- /dev/null +++ b/modules/po/perleval.tr_TR.po @@ -0,0 +1,31 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/perleval.pot\n" +"X-Crowdin-File-ID: 190\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: perleval.pm:23 +msgid "Evaluates perl code" +msgstr "" + +#: perleval.pm:33 +msgid "Only admin can load this module" +msgstr "" + +#: perleval.pm:44 +#, perl-format +msgid "Error: %s" +msgstr "" + +#: perleval.pm:46 +#, perl-format +msgid "Result: %s" +msgstr "" diff --git a/modules/po/pyeval.tr_TR.po b/modules/po/pyeval.tr_TR.po new file mode 100644 index 00000000..139c9013 --- /dev/null +++ b/modules/po/pyeval.tr_TR.po @@ -0,0 +1,21 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/pyeval.pot\n" +"X-Crowdin-File-ID: 191\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: pyeval.py:49 +msgid "You must have admin privileges to load this module." +msgstr "" + +#: pyeval.py:82 +msgid "Evaluates python code" +msgstr "" diff --git a/modules/po/raw.tr_TR.po b/modules/po/raw.tr_TR.po new file mode 100644 index 00000000..a13bbadf --- /dev/null +++ b/modules/po/raw.tr_TR.po @@ -0,0 +1,17 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/raw.pot\n" +"X-Crowdin-File-ID: 193\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: raw.cpp:43 +msgid "View all of the raw traffic" +msgstr "" diff --git a/modules/po/route_replies.tr_TR.po b/modules/po/route_replies.tr_TR.po new file mode 100644 index 00000000..592bd5a2 --- /dev/null +++ b/modules/po/route_replies.tr_TR.po @@ -0,0 +1,59 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/route_replies.pot\n" +"X-Crowdin-File-ID: 194\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: route_replies.cpp:227 +msgid "[yes|no]" +msgstr "" + +#: route_replies.cpp:228 +msgid "Decides whether to show the timeout messages or not" +msgstr "" + +#: route_replies.cpp:374 +msgid "This module hit a timeout which is probably a connectivity issue." +msgstr "" + +#: route_replies.cpp:377 +msgid "" +"However, if you can provide steps to reproduce this issue, please do report " +"a bug." +msgstr "" + +#: route_replies.cpp:380 +msgid "To disable this message, do \"/msg {1} silent yes\"" +msgstr "" + +#: route_replies.cpp:382 +msgid "Last request: {1}" +msgstr "" + +#: route_replies.cpp:383 +msgid "Expected replies:" +msgstr "" + +#: route_replies.cpp:387 +msgid "{1} (last)" +msgstr "" + +#: route_replies.cpp:459 +msgid "Timeout messages are disabled." +msgstr "" + +#: route_replies.cpp:460 +msgid "Timeout messages are enabled." +msgstr "" + +#: route_replies.cpp:481 +msgid "Send replies (e.g. to /who) to the right client only" +msgstr "" diff --git a/modules/po/sample.pt_BR.po b/modules/po/sample.pt_BR.po index 71c6d77c..078941b8 100644 --- a/modules/po/sample.pt_BR.po +++ b/modules/po/sample.pt_BR.po @@ -26,7 +26,7 @@ msgstr "" #: sample.cpp:65 msgid "TEST!!!!" -msgstr "" +msgstr "TESTE!!!!" #: sample.cpp:74 msgid "I'm being loaded with the arguments: {1}" @@ -100,7 +100,7 @@ msgstr "" #: sample.cpp:207 msgid "{1} is now known as {2}" -msgstr "" +msgstr "{1} trocou de apelido para {2}" #: sample.cpp:269 sample.cpp:276 msgid "{1} changes topic on {2} to {3}" diff --git a/modules/po/sample.tr_TR.po b/modules/po/sample.tr_TR.po new file mode 100644 index 00000000..cbfb7f0a --- /dev/null +++ b/modules/po/sample.tr_TR.po @@ -0,0 +1,119 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/sample.pot\n" +"X-Crowdin-File-ID: 195\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: sample.cpp:31 +msgid "Sample job cancelled" +msgstr "" + +#: sample.cpp:33 +msgid "Sample job destroyed" +msgstr "" + +#: sample.cpp:50 +msgid "Sample job done" +msgstr "" + +#: sample.cpp:65 +msgid "TEST!!!!" +msgstr "" + +#: sample.cpp:74 +msgid "I'm being loaded with the arguments: {1}" +msgstr "" + +#: sample.cpp:85 +msgid "I'm being unloaded!" +msgstr "" + +#: sample.cpp:94 +msgid "You got connected BoyOh." +msgstr "" + +#: sample.cpp:98 +msgid "You got disconnected BoyOh." +msgstr "" + +#: sample.cpp:116 +msgid "{1} {2} set mode on {3} {4}{5} {6}" +msgstr "" + +#: sample.cpp:123 +msgid "{1} {2} opped {3} on {4}" +msgstr "" + +#: sample.cpp:129 +msgid "{1} {2} deopped {3} on {4}" +msgstr "" + +#: sample.cpp:135 +msgid "{1} {2} voiced {3} on {4}" +msgstr "" + +#: sample.cpp:141 +msgid "{1} {2} devoiced {3} on {4}" +msgstr "" + +#: sample.cpp:147 +msgid "* {1} sets mode: {2} {3} on {4}" +msgstr "" + +#: sample.cpp:163 +msgid "{1} kicked {2} from {3} with the msg {4}" +msgstr "" + +#: sample.cpp:169 +msgid "* {1} ({2}@{3}) quits ({4}) from channel: {6}" +msgid_plural "* {1} ({2}@{3}) quits ({4}) from {5} channels: {6}" +msgstr[0] "" +msgstr[1] "" + +#: sample.cpp:177 +msgid "Attempting to join {1}" +msgstr "" + +#: sample.cpp:182 +msgid "* {1} ({2}@{3}) joins {4}" +msgstr "" + +#: sample.cpp:189 +msgid "* {1} ({2}@{3}) parts {4}" +msgstr "" + +#: sample.cpp:196 +msgid "{1} invited us to {2}, ignoring invites to {2}" +msgstr "" + +#: sample.cpp:201 +msgid "{1} invited us to {2}" +msgstr "" + +#: sample.cpp:207 +msgid "{1} is now known as {2}" +msgstr "" + +#: sample.cpp:269 sample.cpp:276 +msgid "{1} changes topic on {2} to {3}" +msgstr "" + +#: sample.cpp:317 +msgid "Hi, I'm your friendly sample module." +msgstr "" + +#: sample.cpp:330 +msgid "Description of module arguments goes here." +msgstr "" + +#: sample.cpp:333 +msgid "To be used as a sample for writing modules" +msgstr "" diff --git a/modules/po/samplewebapi.tr_TR.po b/modules/po/samplewebapi.tr_TR.po new file mode 100644 index 00000000..66fd96f2 --- /dev/null +++ b/modules/po/samplewebapi.tr_TR.po @@ -0,0 +1,17 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/samplewebapi.pot\n" +"X-Crowdin-File-ID: 196\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: samplewebapi.cpp:59 +msgid "Sample Web API module." +msgstr "Örnek Web API modülü." diff --git a/modules/po/sasl.pt_BR.po b/modules/po/sasl.pt_BR.po index 417c65d8..95879c6e 100644 --- a/modules/po/sasl.pt_BR.po +++ b/modules/po/sasl.pt_BR.po @@ -14,7 +14,7 @@ msgstr "" #: modules/po/../data/sasl/tmpl/index.tmpl:7 sasl.cpp:305 msgid "SASL" -msgstr "" +msgstr "SASL" #: modules/po/../data/sasl/tmpl/index.tmpl:11 msgid "Username:" @@ -26,7 +26,7 @@ msgstr "" #: modules/po/../data/sasl/tmpl/index.tmpl:16 msgid "Password:" -msgstr "" +msgstr "Senha:" #: modules/po/../data/sasl/tmpl/index.tmpl:18 msgid "Please enter a password." @@ -34,7 +34,7 @@ msgstr "" #: modules/po/../data/sasl/tmpl/index.tmpl:22 msgid "Options" -msgstr "" +msgstr "Opções" #: modules/po/../data/sasl/tmpl/index.tmpl:25 msgid "Connect only if SASL authentication succeeds." @@ -50,11 +50,11 @@ msgstr "" #: modules/po/../data/sasl/tmpl/index.tmpl:42 msgid "Name" -msgstr "" +msgstr "Nome" #: modules/po/../data/sasl/tmpl/index.tmpl:43 sasl.cpp:89 sasl.cpp:95 msgid "Description" -msgstr "" +msgstr "Descrição" #: modules/po/../data/sasl/tmpl/index.tmpl:57 msgid "Selected mechanisms and their order:" @@ -62,7 +62,7 @@ msgstr "" #: modules/po/../data/sasl/tmpl/index.tmpl:74 msgid "Save" -msgstr "" +msgstr "Salvar" #: sasl.cpp:54 msgid "TLS certificate, for use with the *cert module" diff --git a/modules/po/sasl.tr_TR.po b/modules/po/sasl.tr_TR.po new file mode 100644 index 00000000..49a897b9 --- /dev/null +++ b/modules/po/sasl.tr_TR.po @@ -0,0 +1,174 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/sasl.pot\n" +"X-Crowdin-File-ID: 197\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules/po/../data/sasl/tmpl/index.tmpl:7 sasl.cpp:305 +msgid "SASL" +msgstr "SASL" + +#: modules/po/../data/sasl/tmpl/index.tmpl:11 +msgid "Username:" +msgstr "Kullanıcı Adı:" + +#: modules/po/../data/sasl/tmpl/index.tmpl:13 +msgid "Please enter a username." +msgstr "Lütfen bir kullanıcı adı girin." + +#: modules/po/../data/sasl/tmpl/index.tmpl:16 +msgid "Password:" +msgstr "Şifre:" + +#: modules/po/../data/sasl/tmpl/index.tmpl:18 +msgid "Please enter a password." +msgstr "Lütfen bir şifre girin." + +#: modules/po/../data/sasl/tmpl/index.tmpl:22 +msgid "Options" +msgstr "Seçenekler" + +#: modules/po/../data/sasl/tmpl/index.tmpl:25 +msgid "Connect only if SASL authentication succeeds." +msgstr "" + +#: modules/po/../data/sasl/tmpl/index.tmpl:27 +msgid "Require authentication" +msgstr "Kimlik doğrulaması gerektiriyor" + +#: modules/po/../data/sasl/tmpl/index.tmpl:35 +msgid "Mechanisms" +msgstr "Mekanizmalar" + +#: modules/po/../data/sasl/tmpl/index.tmpl:42 +msgid "Name" +msgstr "Adı" + +#: modules/po/../data/sasl/tmpl/index.tmpl:43 sasl.cpp:89 sasl.cpp:95 +msgid "Description" +msgstr "Açıklama" + +#: modules/po/../data/sasl/tmpl/index.tmpl:57 +msgid "Selected mechanisms and their order:" +msgstr "" + +#: modules/po/../data/sasl/tmpl/index.tmpl:74 +msgid "Save" +msgstr "Kaydet" + +#: sasl.cpp:54 +msgid "TLS certificate, for use with the *cert module" +msgstr "" + +#: sasl.cpp:56 +msgid "" +"Plain text negotiation, this should work always if the network supports SASL" +msgstr "" + +#: sasl.cpp:62 +msgid "search" +msgstr "arama" + +#: sasl.cpp:62 +msgid "Generate this output" +msgstr "Bu çıktıyı oluştur" + +#: sasl.cpp:64 +msgid "[ []]" +msgstr "" + +#: sasl.cpp:65 +msgid "" +"Set username and password for the mechanisms that need them. Password is " +"optional. Without parameters, returns information about current settings." +msgstr "" + +#: sasl.cpp:69 +msgid "[mechanism[ ...]]" +msgstr "" + +#: sasl.cpp:70 +msgid "Set the mechanisms to be attempted (in order)" +msgstr "" + +#: sasl.cpp:72 +msgid "[yes|no]" +msgstr "" + +#: sasl.cpp:73 +msgid "Don't connect unless SASL authentication succeeds" +msgstr "" + +#: sasl.cpp:88 sasl.cpp:94 +msgid "Mechanism" +msgstr "Mekanizma" + +#: sasl.cpp:99 +msgid "The following mechanisms are available:" +msgstr "" + +#: sasl.cpp:109 +msgid "Username is currently not set" +msgstr "" + +#: sasl.cpp:111 +msgid "Username is currently set to '{1}'" +msgstr "" + +#: sasl.cpp:114 +msgid "Password was not supplied" +msgstr "" + +#: sasl.cpp:116 +msgid "Password was supplied" +msgstr "" + +#: sasl.cpp:124 +msgid "Username has been set to [{1}]" +msgstr "" + +#: sasl.cpp:125 +msgid "Password has been set to [{1}]" +msgstr "" + +#: sasl.cpp:145 +msgid "Current mechanisms set: {1}" +msgstr "" + +#: sasl.cpp:154 +msgid "We require SASL negotiation to connect" +msgstr "" + +#: sasl.cpp:156 +msgid "We will connect even if SASL fails" +msgstr "" + +#: sasl.cpp:193 +msgid "Disabling network, we require authentication." +msgstr "" + +#: sasl.cpp:194 +msgid "Use 'RequireAuth no' to disable." +msgstr "" + +#: sasl.cpp:258 +msgid "{1} mechanism succeeded." +msgstr "" + +#: sasl.cpp:270 +msgid "{1} mechanism failed." +msgstr "" + +#: sasl.cpp:350 +msgid "" +"Adds support for sasl authentication capability to authenticate to an IRC " +"server" +msgstr "" diff --git a/modules/po/savebuff.tr_TR.po b/modules/po/savebuff.tr_TR.po new file mode 100644 index 00000000..5bc3b860 --- /dev/null +++ b/modules/po/savebuff.tr_TR.po @@ -0,0 +1,62 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/savebuff.pot\n" +"X-Crowdin-File-ID: 198\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: savebuff.cpp:65 +msgid "" +msgstr "" + +#: savebuff.cpp:65 +msgid "Sets the password" +msgstr "" + +#: savebuff.cpp:67 +msgid "" +msgstr "" + +#: savebuff.cpp:67 +msgid "Replays the buffer" +msgstr "" + +#: savebuff.cpp:69 +msgid "Saves all buffers" +msgstr "" + +#: savebuff.cpp:221 +msgid "" +"Password is unset usually meaning the decryption failed. You can setpass to " +"the appropriate pass and things should start working, or setpass to a new " +"pass and save to reinstantiate" +msgstr "" + +#: savebuff.cpp:232 +msgid "Password set to [{1}]" +msgstr "" + +#: savebuff.cpp:262 +msgid "Replayed {1}" +msgstr "" + +#: savebuff.cpp:341 +msgid "Unable to decode Encrypted file {1}" +msgstr "" + +#: savebuff.cpp:358 +msgid "" +"This user module takes up to one arguments. Either --ask-pass or the " +"password itself (which may contain spaces) or nothing" +msgstr "" + +#: savebuff.cpp:363 +msgid "Stores channel and query buffers to disk, encrypted" +msgstr "" diff --git a/modules/po/send_raw.pt_BR.po b/modules/po/send_raw.pt_BR.po index 778b9e78..cef59d70 100644 --- a/modules/po/send_raw.pt_BR.po +++ b/modules/po/send_raw.pt_BR.po @@ -34,11 +34,11 @@ msgstr "" #: modules/po/../data/send_raw/tmpl/index.tmpl:34 msgid "Client" -msgstr "" +msgstr "Cliente" #: modules/po/../data/send_raw/tmpl/index.tmpl:35 msgid "Server" -msgstr "" +msgstr "Servidor" #: modules/po/../data/send_raw/tmpl/index.tmpl:40 msgid "Line:" diff --git a/modules/po/send_raw.tr_TR.po b/modules/po/send_raw.tr_TR.po new file mode 100644 index 00000000..b56b267f --- /dev/null +++ b/modules/po/send_raw.tr_TR.po @@ -0,0 +1,109 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/send_raw.pot\n" +"X-Crowdin-File-ID: 199\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules/po/../data/send_raw/tmpl/index.tmpl:9 +msgid "Send a raw IRC line" +msgstr "" + +#: modules/po/../data/send_raw/tmpl/index.tmpl:14 +msgid "User:" +msgstr "" + +#: modules/po/../data/send_raw/tmpl/index.tmpl:15 +msgid "To change user, click to Network selector" +msgstr "" + +#: modules/po/../data/send_raw/tmpl/index.tmpl:19 +msgid "User/Network:" +msgstr "" + +#: modules/po/../data/send_raw/tmpl/index.tmpl:32 +msgid "Send to:" +msgstr "" + +#: modules/po/../data/send_raw/tmpl/index.tmpl:34 +msgid "Client" +msgstr "" + +#: modules/po/../data/send_raw/tmpl/index.tmpl:35 +msgid "Server" +msgstr "" + +#: modules/po/../data/send_raw/tmpl/index.tmpl:40 +msgid "Line:" +msgstr "" + +#: modules/po/../data/send_raw/tmpl/index.tmpl:45 +msgid "Send" +msgstr "" + +#: send_raw.cpp:32 +msgid "Sent [{1}] to {2}/{3}" +msgstr "" + +#: send_raw.cpp:36 send_raw.cpp:56 +msgid "Network {1} not found for user {2}" +msgstr "" + +#: send_raw.cpp:40 send_raw.cpp:60 +msgid "User {1} not found" +msgstr "" + +#: send_raw.cpp:52 +msgid "Sent [{1}] to IRC server of {2}/{3}" +msgstr "" + +#: send_raw.cpp:75 +msgid "You must have admin privileges to load this module" +msgstr "" + +#: send_raw.cpp:82 +msgid "Send Raw" +msgstr "" + +#: send_raw.cpp:92 +msgid "User not found" +msgstr "" + +#: send_raw.cpp:99 +msgid "Network not found" +msgstr "" + +#: send_raw.cpp:116 +msgid "Line sent" +msgstr "" + +#: send_raw.cpp:140 send_raw.cpp:143 +msgid "[user] [network] [data to send]" +msgstr "" + +#: send_raw.cpp:141 +msgid "The data will be sent to the user's IRC client(s)" +msgstr "" + +#: send_raw.cpp:144 +msgid "The data will be sent to the IRC server the user is connected to" +msgstr "" + +#: send_raw.cpp:147 +msgid "[data to send]" +msgstr "" + +#: send_raw.cpp:148 +msgid "The data will be sent to your current client" +msgstr "" + +#: send_raw.cpp:159 +msgid "Lets you send some raw IRC lines as/to someone else" +msgstr "" diff --git a/modules/po/shell.tr_TR.po b/modules/po/shell.tr_TR.po new file mode 100644 index 00000000..10b29cb0 --- /dev/null +++ b/modules/po/shell.tr_TR.po @@ -0,0 +1,29 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/shell.pot\n" +"X-Crowdin-File-ID: 200\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: shell.cpp:37 +msgid "Failed to execute: {1}" +msgstr "Yürütülemedi: {1}" + +#: shell.cpp:75 +msgid "You must be admin to use the shell module" +msgstr "Shell modülünü kullanmak için yönetici olmanız gerekir" + +#: shell.cpp:169 +msgid "Gives shell access" +msgstr "Shell erişimi sağlar" + +#: shell.cpp:172 +msgid "Gives shell access. Only ZNC admins can use it." +msgstr "Shell erişimi sağlar. Yalnızca ZNC yöneticileri bunu kullanabilir." diff --git a/modules/po/simple_away.tr_TR.po b/modules/po/simple_away.tr_TR.po new file mode 100644 index 00000000..b1ef2736 --- /dev/null +++ b/modules/po/simple_away.tr_TR.po @@ -0,0 +1,92 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/simple_away.pot\n" +"X-Crowdin-File-ID: 201\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: simple_away.cpp:56 +msgid "[]" +msgstr "" + +#: simple_away.cpp:57 +#, c-format +msgid "" +"Prints or sets the away reason (%awaytime% is replaced with the time you " +"were set away, supports substitutions using ExpandString)" +msgstr "" + +#: simple_away.cpp:63 +msgid "Prints the current time to wait before setting you away" +msgstr "" + +#: simple_away.cpp:65 +msgid "" +msgstr "" + +#: simple_away.cpp:66 +msgid "Sets the time to wait before setting you away" +msgstr "" + +#: simple_away.cpp:69 +msgid "Disables the wait time before setting you away" +msgstr "" + +#: simple_away.cpp:73 +msgid "Get or set the minimum number of clients before going away" +msgstr "" + +#: simple_away.cpp:136 +msgid "Away reason set" +msgstr "" + +#: simple_away.cpp:138 +msgid "Away reason: {1}" +msgstr "" + +#: simple_away.cpp:139 +msgid "Current away reason would be: {1}" +msgstr "" + +#: simple_away.cpp:144 +msgid "Current timer setting: 1 second" +msgid_plural "Current timer setting: {1} seconds" +msgstr[0] "" +msgstr[1] "" + +#: simple_away.cpp:153 simple_away.cpp:161 +msgid "Timer disabled" +msgstr "" + +#: simple_away.cpp:155 +msgid "Timer set to 1 second" +msgid_plural "Timer set to: {1} seconds" +msgstr[0] "" +msgstr[1] "" + +#: simple_away.cpp:166 +msgid "Current MinClients setting: {1}" +msgstr "" + +#: simple_away.cpp:169 +msgid "MinClients set to {1}" +msgstr "" + +#: simple_away.cpp:248 +msgid "" +"You might enter up to 3 arguments, like -notimer awaymessage or -timer 5 " +"awaymessage." +msgstr "" + +#: simple_away.cpp:253 +msgid "" +"This module will automatically set you away on IRC while you are " +"disconnected from the bouncer." +msgstr "" diff --git a/modules/po/stickychan.pt_BR.po b/modules/po/stickychan.pt_BR.po index f443e8ab..d54ed773 100644 --- a/modules/po/stickychan.pt_BR.po +++ b/modules/po/stickychan.pt_BR.po @@ -14,7 +14,7 @@ msgstr "" #: modules/po/../data/stickychan/tmpl/index.tmpl:9 msgid "Name" -msgstr "" +msgstr "Nome" #: modules/po/../data/stickychan/tmpl/index.tmpl:10 msgid "Sticky" @@ -22,11 +22,11 @@ msgstr "" #: modules/po/../data/stickychan/tmpl/index.tmpl:25 msgid "Save" -msgstr "" +msgstr "Salvar" #: modules/po/../data/stickychan/tmpl/stickychan_WebadminChan.tmpl:8 msgid "Channel is sticky" -msgstr "" +msgstr "Canal afixado" #: stickychan.cpp:28 msgid "<#channel> [key]" @@ -34,7 +34,7 @@ msgstr "" #: stickychan.cpp:28 msgid "Sticks a channel" -msgstr "" +msgstr "Afixa um canal" #: stickychan.cpp:30 msgid "<#channel>" @@ -42,11 +42,11 @@ msgstr "" #: stickychan.cpp:30 msgid "Unsticks a channel" -msgstr "" +msgstr "Desafixa um canal" #: stickychan.cpp:32 msgid "Lists sticky channels" -msgstr "" +msgstr "Listar canais afixados" #: stickychan.cpp:75 msgid "Usage: Stick <#channel> [key]" @@ -74,7 +74,7 @@ msgstr "" #: stickychan.cpp:128 msgid "Sticky Channels" -msgstr "" +msgstr "Canais afixados" #: stickychan.cpp:160 msgid "Changes have been saved!" diff --git a/modules/po/stickychan.tr_TR.po b/modules/po/stickychan.tr_TR.po new file mode 100644 index 00000000..d88d51da --- /dev/null +++ b/modules/po/stickychan.tr_TR.po @@ -0,0 +1,102 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/stickychan.pot\n" +"X-Crowdin-File-ID: 202\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules/po/../data/stickychan/tmpl/index.tmpl:9 +msgid "Name" +msgstr "" + +#: modules/po/../data/stickychan/tmpl/index.tmpl:10 +msgid "Sticky" +msgstr "" + +#: modules/po/../data/stickychan/tmpl/index.tmpl:25 +msgid "Save" +msgstr "" + +#: modules/po/../data/stickychan/tmpl/stickychan_WebadminChan.tmpl:8 +msgid "Channel is sticky" +msgstr "" + +#: stickychan.cpp:28 +msgid "<#channel> [key]" +msgstr "" + +#: stickychan.cpp:28 +msgid "Sticks a channel" +msgstr "" + +#: stickychan.cpp:30 +msgid "<#channel>" +msgstr "" + +#: stickychan.cpp:30 +msgid "Unsticks a channel" +msgstr "" + +#: stickychan.cpp:32 +msgid "Lists sticky channels" +msgstr "" + +#: stickychan.cpp:75 +msgid "Usage: Stick <#channel> [key]" +msgstr "" + +#: stickychan.cpp:79 +msgid "Stuck {1}" +msgstr "" + +#: stickychan.cpp:85 +msgid "Usage: Unstick <#channel>" +msgstr "" + +#: stickychan.cpp:89 +msgid "Unstuck {1}" +msgstr "" + +#: stickychan.cpp:101 +msgid " -- End of List" +msgstr "" + +#: stickychan.cpp:115 +msgid "Could not join {1} (# prefix missing?)" +msgstr "" + +#: stickychan.cpp:128 +msgid "Sticky Channels" +msgstr "" + +#: stickychan.cpp:160 +msgid "Changes have been saved!" +msgstr "" + +#: stickychan.cpp:185 +msgid "Channel became sticky!" +msgstr "" + +#: stickychan.cpp:189 +msgid "Channel stopped being sticky!" +msgstr "" + +#: stickychan.cpp:209 +msgid "" +"Channel {1} cannot be joined, it is an illegal channel name. Unsticking." +msgstr "" + +#: stickychan.cpp:246 +msgid "List of channels, separated by comma." +msgstr "" + +#: stickychan.cpp:251 +msgid "configless sticky chans, keeps you there very stickily even" +msgstr "" diff --git a/modules/po/stripcontrols.tr_TR.po b/modules/po/stripcontrols.tr_TR.po new file mode 100644 index 00000000..a2b0fe0f --- /dev/null +++ b/modules/po/stripcontrols.tr_TR.po @@ -0,0 +1,18 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/stripcontrols.pot\n" +"X-Crowdin-File-ID: 203\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: stripcontrols.cpp:63 +msgid "" +"Strips control codes (Colors, Bold, ..) from channel and private messages." +msgstr "" diff --git a/modules/po/watch.pt_BR.po b/modules/po/watch.pt_BR.po index b39abe50..aec2e936 100644 --- a/modules/po/watch.pt_BR.po +++ b/modules/po/watch.pt_BR.po @@ -154,11 +154,11 @@ msgstr "" #: watch.cpp:516 watch.cpp:519 msgid "Yes" -msgstr "" +msgstr "Sim" #: watch.cpp:516 watch.cpp:519 msgid "No" -msgstr "" +msgstr "Não" #: watch.cpp:525 watch.cpp:531 msgid "You have no entries." diff --git a/modules/po/watch.tr_TR.po b/modules/po/watch.tr_TR.po new file mode 100644 index 00000000..a31fbab6 --- /dev/null +++ b/modules/po/watch.tr_TR.po @@ -0,0 +1,193 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/watch.pot\n" +"X-Crowdin-File-ID: 204\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: watch.cpp:178 +msgid " [Target] [Pattern]" +msgstr "" + +#: watch.cpp:178 +msgid "Used to add an entry to watch for." +msgstr "" + +#: watch.cpp:180 +msgid "List all entries being watched." +msgstr "" + +#: watch.cpp:182 +msgid "Dump a list of all current entries to be used later." +msgstr "" + +#: watch.cpp:184 +msgid "" +msgstr "" + +#: watch.cpp:184 +msgid "Deletes Id from the list of watched entries." +msgstr "" + +#: watch.cpp:186 +msgid "Delete all entries." +msgstr "" + +#: watch.cpp:188 watch.cpp:190 +msgid "" +msgstr "" + +#: watch.cpp:188 +msgid "Enable a disabled entry." +msgstr "" + +#: watch.cpp:190 +msgid "Disable (but don't delete) an entry." +msgstr "" + +#: watch.cpp:192 watch.cpp:194 +msgid " " +msgstr "" + +#: watch.cpp:192 +msgid "Enable or disable detached client only for an entry." +msgstr "" + +#: watch.cpp:194 +msgid "Enable or disable detached channel only for an entry." +msgstr "" + +#: watch.cpp:196 +msgid " [#chan priv #foo* !#bar]" +msgstr "" + +#: watch.cpp:196 +msgid "Set the source channels that you care about." +msgstr "" + +#: watch.cpp:237 +msgid "WARNING: malformed entry found while loading" +msgstr "" + +#: watch.cpp:382 +msgid "Disabled all entries." +msgstr "" + +#: watch.cpp:383 +msgid "Enabled all entries." +msgstr "" + +#: watch.cpp:390 watch.cpp:432 watch.cpp:474 watch.cpp:577 watch.cpp:619 +msgid "Invalid Id" +msgstr "" + +#: watch.cpp:399 +msgid "Id {1} disabled" +msgstr "" + +#: watch.cpp:401 +msgid "Id {1} enabled" +msgstr "" + +#: watch.cpp:423 +msgid "Set DetachedClientOnly for all entries to Yes" +msgstr "" + +#: watch.cpp:425 +msgid "Set DetachedClientOnly for all entries to No" +msgstr "" + +#: watch.cpp:441 watch.cpp:483 +msgid "Id {1} set to Yes" +msgstr "" + +#: watch.cpp:443 watch.cpp:485 +msgid "Id {1} set to No" +msgstr "" + +#: watch.cpp:465 +msgid "Set DetachedChannelOnly for all entries to Yes" +msgstr "" + +#: watch.cpp:467 +msgid "Set DetachedChannelOnly for all entries to No" +msgstr "" + +#: watch.cpp:491 watch.cpp:507 +msgid "Id" +msgstr "" + +#: watch.cpp:492 watch.cpp:508 +msgid "HostMask" +msgstr "" + +#: watch.cpp:493 watch.cpp:509 +msgid "Target" +msgstr "" + +#: watch.cpp:494 watch.cpp:510 +msgid "Pattern" +msgstr "" + +#: watch.cpp:495 watch.cpp:511 +msgid "Sources" +msgstr "" + +#: watch.cpp:496 watch.cpp:512 watch.cpp:513 +msgid "Off" +msgstr "" + +#: watch.cpp:497 watch.cpp:515 +msgid "DetachedClientOnly" +msgstr "" + +#: watch.cpp:498 watch.cpp:518 +msgid "DetachedChannelOnly" +msgstr "" + +#: watch.cpp:516 watch.cpp:519 +msgid "Yes" +msgstr "" + +#: watch.cpp:516 watch.cpp:519 +msgid "No" +msgstr "" + +#: watch.cpp:525 watch.cpp:531 +msgid "You have no entries." +msgstr "" + +#: watch.cpp:585 +msgid "Sources set for Id {1}." +msgstr "" + +#: watch.cpp:609 +msgid "All entries cleared." +msgstr "" + +#: watch.cpp:627 +msgid "Id {1} removed." +msgstr "" + +#: watch.cpp:646 +msgid "Entry for {1} already exists." +msgstr "" + +#: watch.cpp:654 +msgid "Adding entry: {1} watching for [{2}] -> {3}" +msgstr "" + +#: watch.cpp:660 +msgid "Watch: Not enough arguments. Try Help" +msgstr "" + +#: watch.cpp:702 +msgid "Copy activity from a specific user into a separate window" +msgstr "" diff --git a/modules/po/webadmin.pt_BR.po b/modules/po/webadmin.pt_BR.po index 09674cc1..d395b271 100644 --- a/modules/po/webadmin.pt_BR.po +++ b/modules/po/webadmin.pt_BR.po @@ -14,11 +14,11 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:12 msgid "Channel Info" -msgstr "" +msgstr "Informações do canal" #: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:17 msgid "Channel Name:" -msgstr "" +msgstr "Nome do canal:" #: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:19 msgid "The channel name." @@ -70,13 +70,13 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:302 #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:438 msgid "Save and return" -msgstr "" +msgstr "Salvar e voltar" #: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:76 #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:303 #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:439 msgid "Save and continue" -msgstr "" +msgstr "Salvar e continuar" #: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:78 msgid "Add Channel and return" @@ -89,12 +89,12 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:12 #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:15 msgid "<password>" -msgstr "" +msgstr "<senha>" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:15 #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:16 msgid "<network>" -msgstr "" +msgstr "<rede>" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:18 msgid "" @@ -104,7 +104,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:28 msgid "Network Info" -msgstr "" +msgstr "Informações da rede" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:29 msgid "" @@ -114,7 +114,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:33 msgid "Network Name:" -msgstr "" +msgstr "Nome da rede:" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:35 msgid "The name of the IRC network." @@ -204,7 +204,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:94 #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:101 msgid "Servers of this IRC network:" -msgstr "" +msgstr "Servidores da rede:" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:98 msgid "One server per line, “host [[+]port] [password]”, + means SSL" @@ -217,16 +217,16 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:107 #: modules/po/../data/webadmin/tmpl/settings.tmpl:13 msgid "Port" -msgstr "" +msgstr "Porta" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:108 #: modules/po/../data/webadmin/tmpl/settings.tmpl:15 msgid "SSL" -msgstr "" +msgstr "SSL" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:109 msgid "Password" -msgstr "" +msgstr "Senha" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:125 msgid "SHA-256 fingerprints of trusted SSL certificates of this IRC network:" @@ -265,7 +265,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:149 msgid "{1} seconds per line" -msgstr "" +msgstr "{1} segundos por linha" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:153 msgid "Flood protection burst:" @@ -293,7 +293,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:169 msgid "{1} seconds" -msgstr "" +msgstr "{1} segundos" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:174 msgid "Character encoding used between ZNC and IRC server." @@ -306,7 +306,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:185 #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:248 msgid "Channels" -msgstr "" +msgstr "Canais" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:187 msgid "" @@ -319,7 +319,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/listusers.tmpl:15 #: modules/po/../data/webadmin/tmpl/settings.tmpl:72 msgid "Add" -msgstr "" +msgstr "Adicionar" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:196 msgid "Index" @@ -329,7 +329,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:449 #: modules/po/../data/webadmin/tmpl/settings.tmpl:237 msgid "Save" -msgstr "" +msgstr "Salvar" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:198 #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:240 @@ -337,7 +337,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:191 #: modules/po/../data/webadmin/tmpl/settings.tmpl:176 msgid "Name" -msgstr "" +msgstr "Nome" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:199 msgid "CurModes" @@ -353,7 +353,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:202 msgid "Options" -msgstr "" +msgstr "Opções" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:204 msgid "← Add a channel (opens in same page)" @@ -363,7 +363,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:161 #: modules/po/../data/webadmin/tmpl/listusers.tmpl:27 msgid "Edit" -msgstr "" +msgstr "Editar" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:214 #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:162 @@ -374,19 +374,19 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:234 #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:185 msgid "Modules" -msgstr "" +msgstr "Módulos" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:241 #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:192 #: modules/po/../data/webadmin/tmpl/settings.tmpl:177 msgid "Arguments" -msgstr "" +msgstr "Parâmetros" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:242 #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:193 #: modules/po/../data/webadmin/tmpl/settings.tmpl:178 msgid "Description" -msgstr "" +msgstr "Descrição" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:243 #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:194 @@ -399,15 +399,15 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:305 msgid "Add Network and return" -msgstr "" +msgstr "Adicionar rede e voltar" #: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:306 msgid "Add Network and continue" -msgstr "" +msgstr "Adicionar rede e continuar" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:19 msgid "Authentication" -msgstr "" +msgstr "Autenticação" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:23 msgid "Username:" @@ -419,7 +419,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:38 msgid "Password:" -msgstr "" +msgstr "Senha:" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:40 msgid "Please enter a password." @@ -446,7 +446,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:54 msgid "Allowed IPs:" -msgstr "" +msgstr "IPs permitidos:" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:58 msgid "" @@ -486,7 +486,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/listusers.tmpl:17 #: modules/po/../data/webadmin/tmpl/traffic.tmpl:39 msgid "Networks" -msgstr "" +msgstr "Redes" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:133 msgid "No networks have been added for you yet." @@ -495,15 +495,15 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:147 #: modules/po/../data/webadmin/tmpl/listusers.tmpl:18 msgid "Clients" -msgstr "" +msgstr "Clientes" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:148 msgid "Current Server" -msgstr "" +msgstr "Servidor atual" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:149 msgid "Nick" -msgstr "" +msgstr "Apelido" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:151 msgid "← Add a network (opens in same page)" @@ -565,7 +565,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:302 msgid "ZNC Behavior" -msgstr "" +msgstr "Comportamento do ZNC" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:303 msgid "" @@ -585,7 +585,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:312 msgid "Timezone:" -msgstr "" +msgstr "Fuso horário:" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:315 msgid "E.g. Europe/Berlin, or GMT-6" @@ -688,7 +688,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:408 msgid "Language:" -msgstr "" +msgstr "Idioma:" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:441 msgid "Clone and return" @@ -713,7 +713,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:453 msgid "Create" -msgstr "" +msgstr "Criar" #: modules/po/../data/webadmin/tmpl/del_network.tmpl:5 msgid "Confirm Network Deletion" @@ -726,12 +726,12 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/del_network.tmpl:14 #: modules/po/../data/webadmin/tmpl/del_user.tmpl:14 msgid "Yes" -msgstr "" +msgstr "Sim" #: modules/po/../data/webadmin/tmpl/del_network.tmpl:17 #: modules/po/../data/webadmin/tmpl/del_user.tmpl:17 msgid "No" -msgstr "" +msgstr "Não" #: modules/po/../data/webadmin/tmpl/del_user.tmpl:5 msgid "Confirm User Deletion" @@ -797,19 +797,19 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/settings.tmpl:16 msgid "IPv4" -msgstr "" +msgstr "IPv4" #: modules/po/../data/webadmin/tmpl/settings.tmpl:17 msgid "IPv6" -msgstr "" +msgstr "IPv6" #: modules/po/../data/webadmin/tmpl/settings.tmpl:18 msgid "IRC" -msgstr "" +msgstr "IRC" #: modules/po/../data/webadmin/tmpl/settings.tmpl:19 msgid "HTTP" -msgstr "" +msgstr "HTTP" #: modules/po/../data/webadmin/tmpl/settings.tmpl:20 msgid "URIPrefix" @@ -880,7 +880,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/settings.tmpl:145 msgid "Hide ZNC Version:" -msgstr "" +msgstr "Ocultar versão do ZNC:" #: modules/po/../data/webadmin/tmpl/settings.tmpl:147 msgid "Hide version number from non-ZNC users" @@ -948,7 +948,7 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/traffic.tmpl:89 #: modules/po/../data/webadmin/tmpl/traffic.tmpl:117 msgid "Total" -msgstr "" +msgstr "Total" #: modules/po/../data/webadmin/tmpl/traffic.tmpl:70 #: modules/po/../data/webadmin/tmpl/traffic.tmpl:115 @@ -965,27 +965,27 @@ msgstr "" #: modules/po/../data/webadmin/tmpl/traffic.tmpl:77 #: modules/po/../data/webadmin/tmpl/traffic.tmpl:104 msgid "Users" -msgstr "" +msgstr "Usuários" #: modules/po/../data/webadmin/tmpl/traffic.tmpl:106 msgid "Traffic" -msgstr "" +msgstr "Tráfego" #: modules/po/../data/webadmin/tmpl/traffic.tmpl:113 msgid "User" -msgstr "" +msgstr "Usuário" #: modules/po/../data/webadmin/tmpl/traffic.tmpl:114 msgid "Network" -msgstr "" +msgstr "Rede" #: webadmin.cpp:91 webadmin.cpp:2023 msgid "Global Settings" -msgstr "" +msgstr "Configurações globais" #: webadmin.cpp:93 msgid "Your Settings" -msgstr "" +msgstr "Suas configurações" #: webadmin.cpp:94 webadmin.cpp:1835 msgid "Traffic Info" @@ -993,7 +993,7 @@ msgstr "" #: webadmin.cpp:97 webadmin.cpp:1814 msgid "Manage Users" -msgstr "" +msgstr "Gerenciar usuários" #: webadmin.cpp:188 msgid "Invalid Submission [Username is required]" @@ -1038,11 +1038,11 @@ msgstr "" #: webadmin.cpp:754 webadmin.cpp:942 webadmin.cpp:1404 msgid "Edit User [{1}]" -msgstr "" +msgstr "Editar usuário [{1}]" #: webadmin.cpp:758 webadmin.cpp:956 msgid "Edit Network [{1}]" -msgstr "" +msgstr "Editar rede [{1}]" #: webadmin.cpp:768 msgid "Edit Channel [{1}] of Network [{2}] of User [{3}]" @@ -1050,7 +1050,7 @@ msgstr "" #: webadmin.cpp:775 msgid "Edit Channel [{1}]" -msgstr "" +msgstr "Editar canal [{1}]" #: webadmin.cpp:783 msgid "Add Channel to Network [{1}] of User [{2}]" @@ -1058,7 +1058,7 @@ msgstr "" #: webadmin.cpp:788 msgid "Add Channel" -msgstr "" +msgstr "Adicionar canal" #: webadmin.cpp:795 webadmin.cpp:1624 msgid "Auto Clear Chan Buffer" @@ -1108,7 +1108,7 @@ msgstr "" #: webadmin.cpp:961 msgid "Add Network" -msgstr "" +msgstr "Adicionar rede" #: webadmin.cpp:1144 msgid "Network name is a required argument" diff --git a/modules/po/webadmin.tr_TR.po b/modules/po/webadmin.tr_TR.po new file mode 100644 index 00000000..1500ad91 --- /dev/null +++ b/modules/po/webadmin.tr_TR.po @@ -0,0 +1,1247 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/modules/po/webadmin.pot\n" +"X-Crowdin-File-ID: 205\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:12 +msgid "Channel Info" +msgstr "Kanal Bilgisi" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:17 +msgid "Channel Name:" +msgstr "Kanal Adı:" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:19 +msgid "The channel name." +msgstr "Kanalın adı." + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:24 +msgid "Key:" +msgstr "Anahtar:" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:26 +msgid "The password of the channel, if there is one." +msgstr "Varsa kanalın şifresi." + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:30 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:258 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:277 +msgid "Buffer Size:" +msgstr "Ara Bellek Boyutu:" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:32 +msgid "The buffer count." +msgstr "Ara bellek sayısı." + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:36 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:252 +msgid "Default Modes:" +msgstr "Varsayılan Modlar:" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:38 +msgid "The default modes of the channel." +msgstr "Kanalın varsayılan modları." + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:46 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:287 +msgid "Flags" +msgstr "Bayraklar" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:51 +msgid "Save to config" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:67 +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:294 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:429 +msgid "Module {1}" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:75 +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:302 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:438 +msgid "Save and return" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:76 +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:303 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:439 +msgid "Save and continue" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:78 +msgid "Add Channel and return" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_chan.tmpl:79 +msgid "Add Channel and continue" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:12 +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:15 +msgid "<password>" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:15 +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:16 +msgid "<network>" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:18 +msgid "" +"To connect to this network from your IRC client, you can set the server " +"password field as {1} or username field as {2}" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:28 +msgid "Network Info" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:29 +msgid "" +"Nick, AltNick, Ident, RealName, BindHost can be left empty to use the value " +"from the user." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:33 +msgid "Network Name:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:35 +msgid "The name of the IRC network." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:39 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:73 +msgid "Nickname:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:41 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:75 +msgid "Your nickname on IRC." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:44 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:78 +msgid "Alt. Nickname:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:46 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:80 +msgid "Your secondary nickname, if the first is not available on IRC." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:50 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:84 +msgid "Ident:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:52 +msgid "Your ident." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:55 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:96 +msgid "Realname:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:57 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:98 +msgid "Your real name." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:62 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:104 +msgid "BindHost:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:69 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:117 +msgid "Quit Message:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:71 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:119 +msgid "You may define a Message shown, when you quit IRC." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:76 +msgid "Active:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:78 +msgid "Connect to IRC & automatically re-connect" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:82 +msgid "Trust all certs:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:84 +msgid "" +"Disable certificate validation (takes precedence over TrustPKI). INSECURE!" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:88 +msgid "Automatically detect trusted certificates (Trust the PKI):" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:90 +msgid "" +"When disabled, manually whitelist all server fingerprints, even if the " +"certificate is valid" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:94 +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:101 +msgid "Servers of this IRC network:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:98 +msgid "One server per line, “host [[+]port] [password]”, + means SSL" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:106 +msgid "Hostname" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:107 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:13 +msgid "Port" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:108 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:15 +msgid "SSL" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:109 +msgid "Password" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:125 +msgid "SHA-256 fingerprints of trusted SSL certificates of this IRC network:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:129 +msgid "" +"When these certificates are encountered, checks for hostname, expiration " +"date, CA are skipped" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:133 +msgid "Flood protection:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:136 +msgid "" +"You might enable the flood protection. This prevents “excess flood” errors, " +"which occur, when your IRC bot is command flooded or spammed. After changing " +"this, reconnect ZNC to server." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:139 +msgctxt "Flood Protection" +msgid "Enabled" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:143 +msgid "Flood protection rate:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:146 +msgid "" +"The number of seconds per line. After changing this, reconnect ZNC to server." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:149 +msgid "{1} seconds per line" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:153 +msgid "Flood protection burst:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:156 +msgid "" +"Defines the number of lines, which can be sent immediately. After changing " +"this, reconnect ZNC to server." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:159 +msgid "{1} lines can be sent immediately" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:163 +msgid "Channel join delay:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:166 +msgid "" +"Defines the delay in seconds, until channels are joined after getting " +"connected." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:169 +msgid "{1} seconds" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:174 +msgid "Character encoding used between ZNC and IRC server." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:175 +msgid "Server encoding:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:185 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:248 +msgid "Channels" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:187 +msgid "" +"You will be able to add + modify channels here after you created the network." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:194 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:140 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:373 +#: modules/po/../data/webadmin/tmpl/listusers.tmpl:15 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:72 +msgid "Add" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:196 +msgid "Index" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:197 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:449 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:237 +msgid "Save" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:198 +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:240 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:146 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:191 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:176 +msgid "Name" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:199 +msgid "CurModes" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:200 +msgid "DefModes" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:201 +msgid "BufferSize" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:202 +msgid "Options" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:204 +msgid "← Add a channel (opens in same page)" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:214 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:161 +#: modules/po/../data/webadmin/tmpl/listusers.tmpl:27 +msgid "Edit" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:214 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:162 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:53 +msgid "Del" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:234 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:185 +msgid "Modules" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:241 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:192 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:177 +msgid "Arguments" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:242 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:193 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:178 +msgid "Description" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:243 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:194 +msgid "Loaded globally" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:244 +msgid "Loaded by user" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:305 +msgid "Add Network and return" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_network.tmpl:306 +msgid "Add Network and continue" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:19 +msgid "Authentication" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:23 +msgid "Username:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:33 +msgid "Please enter a username." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:38 +msgid "Password:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:40 +msgid "Please enter a password." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:43 +msgid "Confirm password:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:45 +msgid "Please re-type the above password." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:48 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:151 +msgid "Auth Only Via Module:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:50 +msgid "" +"Allow user authentication by external modules only, disabling built-in " +"password authentication." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:54 +msgid "Allowed IPs:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:58 +msgid "" +"Leave empty to allow connections from all IPs.
Otherwise, one entry per " +"line, wildcards * and ? are available." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:66 +msgid "IRC Information" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:68 +msgid "" +"Nick, AltNick, Ident, RealName and QuitMsg can be left empty to use default " +"values." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:86 +msgid "The Ident is sent to server as username." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:90 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:102 +msgid "Status Prefix:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:92 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:104 +msgid "The prefix for the status and module queries." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:110 +msgid "DCCBindHost:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:128 +#: modules/po/../data/webadmin/tmpl/listusers.tmpl:17 +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:39 +msgid "Networks" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:133 +msgid "No networks have been added for you yet." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:147 +#: modules/po/../data/webadmin/tmpl/listusers.tmpl:18 +msgid "Clients" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:148 +msgid "Current Server" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:149 +msgid "Nick" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:151 +msgid "← Add a network (opens in same page)" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:177 +msgid "" +"You will be able to add + modify networks here after you have cloned the " +"user." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:179 +msgid "" +"You will be able to add + modify networks here after you have created the " +"user." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:195 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:179 +msgid "Loaded by networks" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:254 +msgid "" +"These are the default modes ZNC will set when you join an empty channel." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:255 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:261 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:280 +msgid "Empty = use standard value" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:260 +msgid "" +"This is the amount of lines that the playback buffer will store for channels " +"before dropping off the oldest line. The buffers are stored in the memory by " +"default." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:268 +msgid "Queries" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:272 +msgid "Max Buffers:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:274 +msgid "Maximum number of query buffers. 0 is unlimited." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:279 +msgid "" +"This is the amount of lines that the playback buffer will store for queries " +"before dropping off the oldest line. The buffers are stored in the memory by " +"default." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:302 +msgid "ZNC Behavior" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:303 +msgid "" +"Any of the following text boxes can be left empty to use their default value." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:307 +msgid "Timestamp Format:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:309 +msgid "" +"The format for the timestamps used in buffers, for example [%H:%M:%S]. This " +"setting is ignored in new IRC clients, which use server-time. If your client " +"supports server-time, change timestamp format in client settings instead." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:312 +msgid "Timezone:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:315 +msgid "E.g. Europe/Berlin, or GMT-6" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:323 +msgid "Character encoding used between IRC client and ZNC." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:324 +msgid "Client encoding:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:329 +msgid "Join Tries:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:331 +msgid "" +"This defines how many times ZNC tries to join a channel, if the first join " +"failed, e.g. due to channel mode +i/+k or if you are banned." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:334 +msgid "Join speed:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:336 +msgid "" +"How many channels are joined in one JOIN command. 0 is unlimited (default). " +"Set to small positive value if you get disconnected with “Max SendQ Exceeded”" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:339 +msgid "Timeout before reconnect:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:341 +msgid "" +"How much time ZNC waits (in seconds) until it receives something from " +"network or declares the connection timeout. This happens after attempts to " +"ping the peer." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:344 +msgid "Max IRC Networks Number:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:346 +msgid "Maximum number of IRC networks allowed for this user." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:349 +msgid "Substitutions" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:351 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:359 +msgid "CTCP Replies:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:355 +msgid "One reply per line. Example: TIME Buy a watch!" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:356 +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:374 +msgid "{1} are available" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:358 +msgid "Empty value means this CTCP request will be ignored" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:364 +msgid "Request" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:365 +msgid "Response" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:392 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:90 +msgid "Skin:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:396 +msgid "- Global -" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:398 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:94 +msgid "Default" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:402 +msgid "No other skins found" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:408 +msgid "Language:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:441 +msgid "Clone and return" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:442 +msgid "Clone and continue" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:444 +msgid "Create and return" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:445 +msgid "Create and continue" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:451 +#: modules/po/../data/webadmin/tmpl/listusers.tmpl:28 +msgid "Clone" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/add_edit_user.tmpl:453 +msgid "Create" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/del_network.tmpl:5 +msgid "Confirm Network Deletion" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/del_network.tmpl:9 +msgid "Are you sure you want to delete network “{2}” of user “{1}”?" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/del_network.tmpl:14 +#: modules/po/../data/webadmin/tmpl/del_user.tmpl:14 +msgid "Yes" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/del_network.tmpl:17 +#: modules/po/../data/webadmin/tmpl/del_user.tmpl:17 +msgid "No" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/del_user.tmpl:5 +msgid "Confirm User Deletion" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/del_user.tmpl:9 +msgid "Are you sure you want to delete user “{1}”?" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/encoding_settings.tmpl:6 +msgid "ZNC is compiled without encodings support. {1} is required for it." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/encoding_settings.tmpl:11 +msgid "Legacy mode is disabled by modpython." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/encoding_settings.tmpl:18 +msgid "Don't ensure any encoding at all (legacy mode, not recommended)" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/encoding_settings.tmpl:22 +msgid "Try to parse as UTF-8 and as {1}, send as UTF-8 (recommended)" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/encoding_settings.tmpl:26 +msgid "Try to parse as UTF-8 and as {1}, send as {1}" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/encoding_settings.tmpl:30 +msgid "Parse and send as {1} only" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/encoding_settings.tmpl:36 +msgid "E.g. UTF-8, or ISO-8859-15" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/index.tmpl:5 +msgid "Welcome to the ZNC webadmin module." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/index.tmpl:6 +msgid "" +"All changes you make will be in effect immediately after you submitted them." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/listusers.tmpl:16 +msgid "Username" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/listusers.tmpl:29 +#: modules/po/../data/webadmin/tmpl/settings.tmpl:21 +msgid "Delete" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:6 +msgid "Listen Port(s)" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:14 +msgid "BindHost" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:16 +msgid "IPv4" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:17 +msgid "IPv6" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:18 +msgid "IRC" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:19 +msgid "HTTP" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:20 +msgid "URIPrefix" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:56 +msgid "" +"To delete port which you use to access webadmin itself, either connect to " +"webadmin via another port, or do it in IRC (/znc DelPort)" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:56 +msgid "Current" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:86 +msgid "Settings" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:105 +msgid "Default for new users only." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:110 +msgid "Maximum Buffer Size:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:112 +msgid "Sets the global Max Buffer Size a user can have." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:117 +msgid "Connect Delay:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:119 +msgid "" +"The time between connection attempts to IRC servers, in seconds. This " +"affects the connection between ZNC and the IRC server; not the connection " +"between your IRC client and ZNC." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:124 +msgid "Server Throttle:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:126 +msgid "" +"The minimal time between two connect attempts to the same hostname, in " +"seconds. Some servers refuse your connection if you reconnect too fast." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:131 +msgid "Anonymous Connection Limit per IP:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:133 +msgid "Limits the number of unidentified connections per IP." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:138 +msgid "Protect Web Sessions:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:140 +msgid "Disallow IP changing during each web session" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:145 +msgid "Hide ZNC Version:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:147 +msgid "Hide version number from non-ZNC users" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:153 +msgid "Allow user authentication by external modules only" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:158 +msgid "MOTD:" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:162 +msgid "“Message of the Day”, sent to all ZNC users on connect." +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:170 +msgid "Global Modules" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/settings.tmpl:180 +msgid "Loaded by users" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:7 +msgid "Information" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:13 +msgid "Uptime" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:18 +msgid "Total Users" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:22 +msgid "Total Networks" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:26 +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:43 +msgid "Attached Networks" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:30 +msgid "Total Client Connections" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:34 +msgid "Total IRC Connections" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:47 +msgid "Client Connections" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:51 +msgid "IRC Connections" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:63 +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:72 +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:89 +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:117 +msgid "Total" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:70 +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:115 +msgctxt "Traffic" +msgid "In" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:71 +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:116 +msgctxt "Traffic" +msgid "Out" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:77 +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:104 +msgid "Users" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:106 +msgid "Traffic" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:113 +msgid "User" +msgstr "" + +#: modules/po/../data/webadmin/tmpl/traffic.tmpl:114 +msgid "Network" +msgstr "" + +#: webadmin.cpp:91 webadmin.cpp:2023 +msgid "Global Settings" +msgstr "" + +#: webadmin.cpp:93 +msgid "Your Settings" +msgstr "" + +#: webadmin.cpp:94 webadmin.cpp:1835 +msgid "Traffic Info" +msgstr "" + +#: webadmin.cpp:97 webadmin.cpp:1814 +msgid "Manage Users" +msgstr "" + +#: webadmin.cpp:188 +msgid "Invalid Submission [Username is required]" +msgstr "" + +#: webadmin.cpp:201 +msgid "Invalid Submission [Passwords do not match]" +msgstr "" + +#: webadmin.cpp:337 +msgid "Timeout can't be less than 30 seconds!" +msgstr "" + +#: webadmin.cpp:436 webadmin.cpp:464 webadmin.cpp:1272 webadmin.cpp:2208 +msgid "Unable to load module [{1}]: {2}" +msgstr "" + +#: webadmin.cpp:441 webadmin.cpp:469 +msgid "Unable to load module [{1}] with arguments [{2}]" +msgstr "" + +#: webadmin.cpp:547 webadmin.cpp:664 webadmin.cpp:689 webadmin.cpp:711 +#: webadmin.cpp:745 webadmin.cpp:1339 +msgid "No such user" +msgstr "" + +#: webadmin.cpp:555 webadmin.cpp:592 webadmin.cpp:925 +msgid "Permission denied" +msgstr "" + +#: webadmin.cpp:568 webadmin.cpp:605 webadmin.cpp:634 webadmin.cpp:650 +msgid "No such user or network" +msgstr "" + +#: webadmin.cpp:615 +msgid "No such channel" +msgstr "" + +#: webadmin.cpp:681 +msgid "Please don't delete yourself, suicide is not the answer!" +msgstr "" + +#: webadmin.cpp:754 webadmin.cpp:942 webadmin.cpp:1404 +msgid "Edit User [{1}]" +msgstr "" + +#: webadmin.cpp:758 webadmin.cpp:956 +msgid "Edit Network [{1}]" +msgstr "" + +#: webadmin.cpp:768 +msgid "Edit Channel [{1}] of Network [{2}] of User [{3}]" +msgstr "" + +#: webadmin.cpp:775 +msgid "Edit Channel [{1}]" +msgstr "" + +#: webadmin.cpp:783 +msgid "Add Channel to Network [{1}] of User [{2}]" +msgstr "" + +#: webadmin.cpp:788 +msgid "Add Channel" +msgstr "" + +#: webadmin.cpp:795 webadmin.cpp:1624 +msgid "Auto Clear Chan Buffer" +msgstr "" + +#: webadmin.cpp:797 +msgid "Automatically Clear Channel Buffer After Playback" +msgstr "" + +#: webadmin.cpp:805 +msgid "Detached" +msgstr "" + +#: webadmin.cpp:812 +msgid "Enabled" +msgstr "" + +#: webadmin.cpp:836 +msgid "Channel name is a required argument" +msgstr "" + +#: webadmin.cpp:845 +msgid "Channel [{1}] already exists" +msgstr "" + +#: webadmin.cpp:852 +msgid "Could not add channel [{1}]" +msgstr "" + +#: webadmin.cpp:900 +msgid "Channel was added/modified, but config file was not written" +msgstr "" + +#: webadmin.cpp:932 +msgid "" +"Network number limit reached. Ask an admin to increase the limit for you, or " +"delete unneeded networks from Your Settings." +msgstr "" + +#: webadmin.cpp:953 +msgid "Edit Network [{1}] of User [{2}]" +msgstr "" + +#: webadmin.cpp:960 +msgid "Add Network for User [{1}]" +msgstr "" + +#: webadmin.cpp:961 +msgid "Add Network" +msgstr "" + +#: webadmin.cpp:1144 +msgid "Network name is a required argument" +msgstr "" + +#: webadmin.cpp:1279 webadmin.cpp:2215 +msgid "Unable to reload module [{1}]: {2}" +msgstr "" + +#: webadmin.cpp:1316 +msgid "Network was added/modified, but config file was not written" +msgstr "" + +#: webadmin.cpp:1345 +msgid "That network doesn't exist for this user" +msgstr "" + +#: webadmin.cpp:1362 +msgid "Network was deleted, but config file was not written" +msgstr "" + +#: webadmin.cpp:1376 +msgid "That channel doesn't exist for this network" +msgstr "" + +#: webadmin.cpp:1385 +msgid "Channel was deleted, but config file was not written" +msgstr "" + +#: webadmin.cpp:1413 +msgid "Clone User [{1}]" +msgstr "" + +#: webadmin.cpp:1626 +msgid "" +"Automatically Clear Channel Buffer After Playback (the default value for new " +"channels)" +msgstr "" + +#: webadmin.cpp:1636 +msgid "Multi Clients" +msgstr "" + +#: webadmin.cpp:1643 +msgid "Append Timestamps" +msgstr "" + +#: webadmin.cpp:1650 +msgid "Prepend Timestamps" +msgstr "" + +#: webadmin.cpp:1658 +msgid "Deny LoadMod" +msgstr "" + +#: webadmin.cpp:1665 +msgid "Admin (dangerous! may gain shell access)" +msgstr "" + +#: webadmin.cpp:1675 +msgid "Deny Setting BindHost" +msgstr "" + +#: webadmin.cpp:1682 +msgid "Deny Setting Ident" +msgstr "" + +#: webadmin.cpp:1689 +msgid "Deny Editing Networks/Servers" +msgstr "" + +#: webadmin.cpp:1691 +msgid "" +"Deny adding/deleting networks, setting network name and editing the server " +"list" +msgstr "" + +#: webadmin.cpp:1698 +msgid "Deny Setting RealName" +msgstr "" + +#: webadmin.cpp:1705 +msgid "Deny Setting Quit Message" +msgstr "" + +#: webadmin.cpp:1712 +msgid "Deny Setting CTCP Replies" +msgstr "" + +#: webadmin.cpp:1720 +msgid "Auto Clear Query Buffer" +msgstr "" + +#: webadmin.cpp:1722 +msgid "Automatically Clear Query Buffer After Playback" +msgstr "" + +#: webadmin.cpp:1746 +msgid "Invalid Submission: User {1} already exists" +msgstr "" + +#: webadmin.cpp:1768 webadmin.cpp:1779 +msgid "Invalid submission: {1}" +msgstr "" + +#: webadmin.cpp:1774 +msgid "User was added, but config file was not written" +msgstr "" + +#: webadmin.cpp:1785 +msgid "User was edited, but config file was not written" +msgstr "" + +#: webadmin.cpp:1943 +msgid "Choose either IPv4 or IPv6 or both." +msgstr "" + +#: webadmin.cpp:1960 +msgid "Choose either IRC or HTTP or both." +msgstr "" + +#: webadmin.cpp:1973 webadmin.cpp:2009 +msgid "Port was changed, but config file was not written" +msgstr "" + +#: webadmin.cpp:1999 +msgid "Invalid request." +msgstr "" + +#: webadmin.cpp:2013 +msgid "The specified listener was not found." +msgstr "" + +#: webadmin.cpp:2244 +msgid "Settings were changed, but config file was not written" +msgstr "" diff --git a/src/po/znc.bg_BG.po b/src/po/znc.bg_BG.po index 6eaeac2c..d2160525 100644 --- a/src/po/znc.bg_BG.po +++ b/src/po/znc.bg_BG.po @@ -228,48 +228,48 @@ msgid "" "You are being disconnected because another user just authenticated as you." msgstr "" -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "" msgstr[1] "" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "" msgstr[1] "" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "" diff --git a/src/po/znc.da_DK.po b/src/po/znc.da_DK.po index 427f88ea..740fda87 100644 --- a/src/po/znc.da_DK.po +++ b/src/po/znc.da_DK.po @@ -228,48 +228,48 @@ msgid "" "You are being disconnected because another user just authenticated as you." msgstr "" -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "" msgstr[1] "" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "" msgstr[1] "" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "" diff --git a/src/po/znc.de_DE.po b/src/po/znc.de_DE.po index 75049938..5292713c 100644 --- a/src/po/znc.de_DE.po +++ b/src/po/znc.de_DE.po @@ -253,51 +253,51 @@ msgstr "" "Deine Verbindung wird getrennt, da ein anderen Benutzer sich als dich " "angemeldet hat." -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "Dein CTCP an {1} wurde verloren, du bist nicht mit dem IRC verbunden!" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "" "Deine Benachrichtigung an {1} wurde verloren, du bist nicht mit dem IRC " "verbunden!" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "Entferne Kanal {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "" "Deine Nachricht an {1} wurde verloren, du bist nicht mit dem IRC verbunden!" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "Hallo. Wie kann ich dir helfen?" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Verwendung: /attach <#Kanal>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "Es gibt einen Kanal, der auf [{2}] passt" msgstr[1] "Es gibt {1} Kanäle, die auf [{2}] passen" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "Zu {1} Kanal verbunden" msgstr[1] "Zu {1} Kanälen verbunden" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "Verwendung: /detach <#Kanäle>" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "Von {1} Kanal getrennt" diff --git a/src/po/znc.el_GR.po b/src/po/znc.el_GR.po index 29d09590..baa2fc2f 100644 --- a/src/po/znc.el_GR.po +++ b/src/po/znc.el_GR.po @@ -228,48 +228,48 @@ msgid "" "You are being disconnected because another user just authenticated as you." msgstr "" -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "" msgstr[1] "" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "" msgstr[1] "" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "" diff --git a/src/po/znc.es_ES.po b/src/po/znc.es_ES.po index 0ec108b8..da668ab9 100644 --- a/src/po/znc.es_ES.po +++ b/src/po/znc.es_ES.po @@ -244,48 +244,48 @@ msgid "" msgstr "" "Estás siendo desconectado porque otro usuario se ha autenticado por ti." -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "Tu CTCP a {1} se ha perdido, ¡no estás conectado al IRC!" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "Tu notice a {1} se ha perdido, ¡no estás conectado al IRC!" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "Eliminando canal {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "Tu mensaje a {1} se ha perdido, ¡no estás conectado al IRC!" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "Hola. ¿En qué te puedo ayudar?" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Uso: /attach <#canales>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "Hay {1} canal que coincide con [{2}]" msgstr[1] "Hay {1} canales que coinciden con [{2}]" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "Vinculado a {1} canal" msgstr[1] "Unido a {1} canales" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "Uso: /detach <#canales>" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "Desvinculado {1} canal" diff --git a/src/po/znc.fr_FR.po b/src/po/znc.fr_FR.po index 748c1462..85c8be04 100644 --- a/src/po/znc.fr_FR.po +++ b/src/po/znc.fr_FR.po @@ -252,49 +252,49 @@ msgstr "" "Vous avez été déconnecté car un autre utilisateur s'est authentifié avec le " "même identifiant." -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "" "Votre connexion CTCP vers {1} a été perdue, vous n'êtes plus connecté à IRC !" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "Votre notice vers {1} a été perdue, vous n'êtes plus connecté à IRC !" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "Suppression du salon {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "Votre message à {1} a été perdu, vous n'êtes pas connecté à IRC !" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "Bonjour. Comment puis-je vous aider ?" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Utilisation : /attach <#salons>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "Il y avait {1} salon correspondant [{2}]" msgstr[1] "Il y avait {1} salons correspondant [{2}]" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "A attaché {1} salon" msgstr[1] "A attaché {1} salons" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "Utilisation : /detach <#salons>" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "A détaché {1} salon" @@ -762,7 +762,7 @@ msgstr "Total : {1}, Rejoint : {2}, Détaché : {3}, Désactivé : {4}" #: ClientCommand.cpp:600 ClientCommand.cpp:636 ClientCommand.cpp:816 #: ClientCommand.cpp:842 msgid "Access denied!" -msgstr "" +msgstr "Accès refusé !" #: ClientCommand.cpp:606 msgid "" @@ -1626,17 +1626,17 @@ msgstr "<#chan> " #: ClientCommand.cpp:1850 msgctxt "helpcmd|MoveChan|desc" msgid "Move channel in sort order" -msgstr "" +msgstr "Déplacer le canal dans l'ordre de tri" #: ClientCommand.cpp:1852 msgctxt "helpcmd|SwapChans|args" msgid "<#chan1> <#chan2>" -msgstr "" +msgstr "<#chan1> <#chan2>" #: ClientCommand.cpp:1853 msgctxt "helpcmd|SwapChans|desc" msgid "Swap channels in sort order" -msgstr "" +msgstr "Échanger les canaux dans l'ordre de tri" #: ClientCommand.cpp:1854 msgctxt "helpcmd|Attach|args" diff --git a/src/po/znc.id_ID.po b/src/po/znc.id_ID.po index be0c5894..2792bb0e 100644 --- a/src/po/znc.id_ID.po +++ b/src/po/znc.id_ID.po @@ -244,46 +244,46 @@ msgid "" "You are being disconnected because another user just authenticated as you." msgstr "Anda terputus karena pengguna lain hanya diautentikasi sebagai anda." -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "CTCP anda untuk {1} tersesat, anda tidak terhubung ke IRC!" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "Notice anda untuk {1} tersesat, anda tidak terhubung ke IRC!" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "Menghapus channel {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "Pesan anda untuk {1} tersesat, anda tidak terhubung ke IRC!" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "Halo. Bagaimana saya bisa membantu anda?" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Gunakan: /attach <#chan>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "Ada {1} pencocokan saluran [{2}]" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "" diff --git a/src/po/znc.it_IT.po b/src/po/znc.it_IT.po index b7e5a1cf..3b1e7de2 100644 --- a/src/po/znc.it_IT.po +++ b/src/po/znc.it_IT.po @@ -250,56 +250,56 @@ msgstr "" "Stai per essere disconnesso perché un altro utente si è appena autenticato " "come te." -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "" "ATTENZIONE: La richiesta di CTCP verso {1} è andata persa. Ora non sei " "connesso ad IRC!" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "" "ATTENZIONE: L'invio del tuo NOTICE verso {1} è andato perso. Ora non sei " "connesso ad IRC!" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "Rimozione del canale {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "" "ATTENZIONE: L'invio del tuo messaggio verso {1} è andato perso. Ora non sei " "connesso ad IRC!" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "" "Ciao! Per ottenere aiuto su questo e tutti i moduli della ZNC digita help " "(da questa finestra) oppure /znc help (in qualsiasi altra finestra)." -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Usa: /attach <#canali>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "Trovato {1} canale corrispondente a [{2}]" msgstr[1] "Ho trovato {1} canali corrispondenti a [{2}]" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "Agganciato {1} canale (Attached)" msgstr[1] "Ho agganciato {1} canali (Attached)" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "Usa: /detach <#canali>" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "Scollegato {1} canale (Detached)" diff --git a/src/po/znc.nl_NL.po b/src/po/znc.nl_NL.po index 20adcaba..bd5ffe45 100644 --- a/src/po/znc.nl_NL.po +++ b/src/po/znc.nl_NL.po @@ -257,50 +257,50 @@ msgstr "" "Je verbinding wordt verbroken omdat een andere gebruiker zich net aangemeld " "heeft als jou." -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "Je CTCP naar {1} is verloren geraakt, je bent niet verbonden met IRC!" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "" "Je notice naar {1} is verloren geraakt, je bent niet verbonden met IRC!" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "Kanaal verwijderen: {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "" "Je bericht naar {1} is verloren geraakt, je bent niet verbonden met IRC!" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "Hallo. Hoe kan ik je helpen?" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Gebruik: /attach <#kanalen>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "Er was {1} kanaal overeenkomend met [{2}]" msgstr[1] "Er waren {1} kanalen overeenkomend met [{2}]" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "Gekoppeld aan {1} kanaal" msgstr[1] "Gekoppeld aan {1} kanalen" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "Gebruik: /detach <#kanalen>" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "Losgekoppeld van {1} kanaal" diff --git a/src/po/znc.pot b/src/po/znc.pot index 1a48befe..305b0496 100644 --- a/src/po/znc.pot +++ b/src/po/znc.pot @@ -219,48 +219,48 @@ msgid "" "You are being disconnected because another user just authenticated as you." msgstr "" -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "" msgstr[1] "" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "" msgstr[1] "" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "" diff --git a/src/po/znc.pt_BR.po b/src/po/znc.pt_BR.po index 97f548b3..d4909120 100644 --- a/src/po/znc.pt_BR.po +++ b/src/po/znc.pt_BR.po @@ -98,7 +98,7 @@ msgstr "Esta rede está sendo excluída ou movida para outro usuário." #: IRCNetwork.cpp:950 msgid "Invalid index" -msgstr "" +msgstr "Índice inválido" #: IRCNetwork.cpp:958 IRCNetwork.cpp:974 IRCNetwork.cpp:982 #: ClientCommand.cpp:1425 @@ -248,48 +248,48 @@ msgstr "" "Você está sendo desconectado porque outro usuário acabou de autenticar-se " "como você." -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "O seu CTCP para {1} foi perdido, você não está conectado ao IRC!" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "O seu aviso para {1} foi perdido, você não está conectado ao IRC!" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "Removendo canal {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "Sua mensagem para {1} foi perdida, você não está conectado ao IRC!" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "Olá. Como posso ajudá-lo(a)?" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Sintaxe: /attach <#canais>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "Foi encontrado {1} canal correspondente a [{2}]" msgstr[1] "Foi encontrado {1} canal correspondentes a [{2}]" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "{1} canal foi anexado" msgstr[1] "{1} canais foram anexados" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "Sintaxe: /detach <#canais>" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "{1} canal foi desanexado" @@ -505,12 +505,12 @@ msgstr "" #: ClientCommand.cpp:203 ClientCommand.cpp:209 msgctxt "listclientscmd" msgid "Host" -msgstr "" +msgstr "Host" #: ClientCommand.cpp:204 ClientCommand.cpp:212 msgctxt "listclientscmd" msgid "Network" -msgstr "" +msgstr "Rede" #: ClientCommand.cpp:205 ClientCommand.cpp:215 msgctxt "listclientscmd" @@ -520,7 +520,7 @@ msgstr "" #: ClientCommand.cpp:223 ClientCommand.cpp:229 msgctxt "listuserscmd" msgid "Username" -msgstr "" +msgstr "Usuário" #: ClientCommand.cpp:224 ClientCommand.cpp:230 msgctxt "listuserscmd" @@ -536,12 +536,12 @@ msgstr "" #: ClientCommand.cpp:263 msgctxt "listallusernetworkscmd" msgid "Username" -msgstr "" +msgstr "Usuário" #: ClientCommand.cpp:241 ClientCommand.cpp:251 ClientCommand.cpp:266 msgctxt "listallusernetworkscmd" msgid "Network" -msgstr "" +msgstr "Rede" #: ClientCommand.cpp:242 ClientCommand.cpp:252 ClientCommand.cpp:268 msgctxt "listallusernetworkscmd" @@ -556,7 +556,7 @@ msgstr "" #: ClientCommand.cpp:244 ClientCommand.cpp:273 msgctxt "listallusernetworkscmd" msgid "IRC Server" -msgstr "" +msgstr "Servidor IRC" #: ClientCommand.cpp:245 ClientCommand.cpp:275 msgctxt "listallusernetworkscmd" @@ -566,7 +566,7 @@ msgstr "" #: ClientCommand.cpp:246 ClientCommand.cpp:277 msgctxt "listallusernetworkscmd" msgid "Channels" -msgstr "" +msgstr "Canais" #: ClientCommand.cpp:251 msgid "N/A" @@ -575,12 +575,12 @@ msgstr "" #: ClientCommand.cpp:272 msgctxt "listallusernetworkscmd" msgid "Yes" -msgstr "" +msgstr "Sim" #: ClientCommand.cpp:281 msgctxt "listallusernetworkscmd" msgid "No" -msgstr "" +msgstr "Não" #: ClientCommand.cpp:291 msgid "Usage: SetMOTD " @@ -686,7 +686,7 @@ msgstr "Não há canais definidos." #: ClientCommand.cpp:539 ClientCommand.cpp:557 msgctxt "listchans" msgid "Index" -msgstr "" +msgstr "Índice" #: ClientCommand.cpp:540 ClientCommand.cpp:558 msgctxt "listchans" diff --git a/src/po/znc.pt_PT.po b/src/po/znc.pt_PT.po index 8c8de2ce..9407d2cd 100644 --- a/src/po/znc.pt_PT.po +++ b/src/po/znc.pt_PT.po @@ -246,48 +246,48 @@ msgid "" msgstr "" "Está a ser desligado porque outro utilizador autenticou-se agora como você." -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "O seu CTCP para {1} foi perdido, não está ligado ao IRC!" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "O seu notice para {1} foi perdido, não está ligado ao IRC!" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "A remover o canal {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "A sua mensagem para {1} foi perdida, não está ligado ao IRC!" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "Olá. Como posso ajudá-lo(a)?" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Utilização: /attach <#canais>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" msgstr[0] "Há {1} canal a coincidir com [{2}]" msgstr[1] "Há {1} canais a coincidir com [{2}]" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "{1} canal unido" msgstr[1] "{1} canais unidos" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "Utilização: /detach <#canais>" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "{1} canal desunido" diff --git a/src/po/znc.ro_RO.po b/src/po/znc.ro_RO.po index 4ecc7515..9fc3f3b3 100644 --- a/src/po/znc.ro_RO.po +++ b/src/po/znc.ro_RO.po @@ -243,31 +243,31 @@ msgid "" "You are being disconnected because another user just authenticated as you." msgstr "" -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "Eliminare canal {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "Salut. Cu ce te pot ajuta?" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Utilizează: /attach <#canale>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" @@ -275,18 +275,18 @@ msgstr[0] "A existat {1} canal care se potrivește cu [{2}]" msgstr[1] "" msgstr[2] "Au existat {1} canale care se potrivesc cu [{2}]" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "Am atașat {1} canal" msgstr[1] "" msgstr[2] "Am atașat {1} canale" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "Utilizează: /detach <#canale>" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "Detașează {1} canal" diff --git a/src/po/znc.ru_RU.po b/src/po/znc.ru_RU.po index 7ebdc675..60655529 100644 --- a/src/po/znc.ru_RU.po +++ b/src/po/znc.ru_RU.po @@ -243,31 +243,31 @@ msgid "" "You are being disconnected because another user just authenticated as you." msgstr "Другой пользователь зашёл под вашим именем, отключаем." -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "Вы не подключены к IRC, ваш CTCP-запрос к {1} утерян!" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "Вы не подключены к IRC, ваше сообщение к {1} утеряно!" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "Убираю канал {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "Вы не подключены к IRC, ваше сообщение к {1} утеряно!" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "Привет, чем могу быть вам полезен?" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Использование: /attach <#каналы>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" @@ -276,7 +276,7 @@ msgstr[1] "{1} канала подходят под маску [{2}]" msgstr[2] "{1} каналов подходят под маску [{2}]" msgstr[3] "{1} каналов подходят под маску [{2}]" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "Прицепляю {1} канал" @@ -284,11 +284,11 @@ msgstr[1] "Прицепляю {1} канала" msgstr[2] "Прицепляю {1} каналов" msgstr[3] "Прицепляю {1} каналов" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "Использование: /detach <#каналы>" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "Отцепляю {1} канал" diff --git a/src/po/znc.tr_TR.po b/src/po/znc.tr_TR.po new file mode 100644 index 00000000..5107cc34 --- /dev/null +++ b/src/po/znc.tr_TR.po @@ -0,0 +1,1998 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: znc-bouncer\n" +"X-Crowdin-Project-ID: 289533\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /master/src/po/znc.pot\n" +"X-Crowdin-File-ID: 146\n" +"Project-Id-Version: znc-bouncer\n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" + +#: webskins/_default_/tmpl/InfoBar.tmpl:6 +msgid "Logged in as: {1}" +msgstr "{1} olarak giriş yapıldı" + +#: webskins/_default_/tmpl/InfoBar.tmpl:8 +msgid "Not logged in" +msgstr "Giriş yapmadınız" + +#: webskins/_default_/tmpl/LoginBar.tmpl:3 +msgid "Logout" +msgstr "Çıkış" + +#: webskins/_default_/tmpl/Menu.tmpl:4 +msgid "Home" +msgstr "Ana Sayfa" + +#: webskins/_default_/tmpl/Menu.tmpl:7 +msgid "Global Modules" +msgstr "Global Modüller" + +#: webskins/_default_/tmpl/Menu.tmpl:20 +msgid "User Modules" +msgstr "Kullanıcı Modülleri" + +#: webskins/_default_/tmpl/Menu.tmpl:35 +msgid "Network Modules ({1})" +msgstr "Ağ Modülleri ({1})" + +#: webskins/_default_/tmpl/index.tmpl:6 +msgid "Welcome to ZNC's web interface!" +msgstr "ZNC'nin web arayüzüne hoşgeldiniz!" + +#: webskins/_default_/tmpl/index.tmpl:11 +msgid "" +"No Web-enabled modules have been loaded. Load modules from IRC (“/msg " +"*status help” and “/msg *status loadmod <module>”). Once you have loaded some Web-enabled modules, the menu will expand." +msgstr "" +"Hiçbir Web özellikli modül yüklenmedi. IRC'den modülleri yükleyin (“/" +"msg *status help” ve “/msg *status loadmod <module>”). Bazı Web özellikli modülleri yükledikten sonra menü genişleyecektir." + +#: znc.cpp:1554 +msgid "User already exists" +msgstr "Kullanıcı zaten var" + +#: znc.cpp:1662 +msgid "IPv6 is not enabled" +msgstr "IPv6 etkin değil" + +#: znc.cpp:1670 +msgid "SSL is not enabled" +msgstr "SSL etkin değil" + +#: znc.cpp:1678 +msgid "Unable to locate pem file: {1}" +msgstr "Pem dosyası bulunamıyor: {1}" + +#: znc.cpp:1697 +msgid "Invalid port" +msgstr "Geçersiz port" + +#: znc.cpp:1813 ClientCommand.cpp:1720 +msgid "Unable to bind: {1}" +msgstr "Bağlanamıyor: {1}" + +#: IRCNetwork.cpp:235 +msgid "Jumping servers because this server is no longer in the list" +msgstr "Bu sunucu artık listede olmadığından sunucular atlanıyor" + +#: IRCNetwork.cpp:671 User.cpp:690 +msgid "Welcome to ZNC" +msgstr "ZNC'ye hoş geldiniz" + +#: IRCNetwork.cpp:759 +msgid "You are currently disconnected from IRC. Use 'connect' to reconnect." +msgstr "" +"Şu anda IRC ile bağlantınız kesilmiştir. Yeniden bağlanmak için 'bağlan'ı " +"kullanın." + +#: IRCNetwork.cpp:789 +msgid "This network is being deleted or moved to another user." +msgstr "Bu ağ siliniyor veya başka bir kullanıcıya taşınıyor." + +#: IRCNetwork.cpp:950 +msgid "Invalid index" +msgstr "Geçersiz dizin" + +#: IRCNetwork.cpp:958 IRCNetwork.cpp:974 IRCNetwork.cpp:982 +#: ClientCommand.cpp:1425 +msgid "You are not on {1}" +msgstr "{1} üzerinde değilsiniz" + +#: IRCNetwork.cpp:1061 +msgid "The channel {1} could not be joined, disabling it." +msgstr "{1} kanalına katılamadığından devre dışı bırakıldı." + +#: IRCNetwork.cpp:1190 +msgid "Your current server was removed, jumping..." +msgstr "Mevcut sunucunuz kaldırıldı, atlanıyor..." + +#: IRCNetwork.cpp:1353 +msgid "Cannot connect to {1}, because ZNC is not compiled with SSL support." +msgstr "ZNC, SSL desteğiyle derlenmediğinden {1}'e bağlanılamıyor." + +#: IRCNetwork.cpp:1374 +msgid "Some module aborted the connection attempt" +msgstr "Bazı modüller bağlantı girişimini iptal etti" + +#: IRCSock.cpp:492 +msgid "Error from server: {1}" +msgstr "Sunucudan gelen hata: {1}" + +#: IRCSock.cpp:694 +msgid "ZNC seems to be connected to itself, disconnecting..." +msgstr "ZNC kendine bağlı görünüyor, bağlantı kesiliyor..." + +#: IRCSock.cpp:741 +msgid "Server {1} redirects us to {2}:{3} with reason: {4}" +msgstr "{1} sunucusu bizi şu nedenle {2}:{3} adresine yönlendiriyor: {4}" + +#: IRCSock.cpp:745 +msgid "Perhaps you want to add it as a new server." +msgstr "Belki onu yeni bir sunucu olarak eklemek istersiniz." + +#: IRCSock.cpp:975 +msgid "Channel {1} is linked to another channel and was thus disabled." +msgstr "{1} kanalı başka bir kanala bağlı olduğundan devre dışı bırakıldı." + +#: IRCSock.cpp:987 +msgid "Switched to SSL (STARTTLS)" +msgstr "SSL'ye (STARTTLS) geçildi" + +#: IRCSock.cpp:1040 +msgid "You quit: {1}" +msgstr "Çıktınız: {1}" + +#: IRCSock.cpp:1246 +msgid "Disconnected from IRC. Reconnecting..." +msgstr "IRC'den bağlantı kesildi. Yeniden bağlanılıyor..." + +#: IRCSock.cpp:1277 +msgid "Cannot connect to IRC ({1}). Retrying..." +msgstr "IRC'ye ({1}) bağlanılamıyor. Yeniden deneniyor..." + +#: IRCSock.cpp:1280 +msgid "Disconnected from IRC ({1}). Reconnecting..." +msgstr "IRC'den bağlantı kesildi. Yeniden bağlanılıyor..." + +#: IRCSock.cpp:1316 +msgid "If you trust this certificate, do /znc AddTrustedServerFingerprint {1}" +msgstr "" +"Bu sertifikaya güveniyorsanız /znc AddTrustedServerFingerprint {1} komutunu " +"kullanın" + +#: IRCSock.cpp:1325 +msgid "IRC connection timed out. Reconnecting..." +msgstr "IRC bağlantısı zaman aşımına uğradı. Yeniden bağlanılıyor..." + +#: IRCSock.cpp:1337 +msgid "Connection Refused. Reconnecting..." +msgstr "Bağlantı reddedildi. Yeniden bağlanılıyor..." + +#: IRCSock.cpp:1345 +msgid "Received a too long line from the IRC server!" +msgstr "IRC sunucusundan çok uzun bir hat alındı!" + +#: IRCSock.cpp:1449 +msgid "No free nick available" +msgstr "Kullanılabilir nick yok" + +#: IRCSock.cpp:1457 +msgid "No free nick found" +msgstr "Kullanılabilir nick bulunamadı" + +#: Client.cpp:74 +msgid "No such module {1}" +msgstr "Böyle bir modül yok: {1}" + +#: Client.cpp:359 +msgid "A client from {1} attempted to login as you, but was rejected: {2}" +msgstr "" +"{1} adresinden bir istemci, sizin adınıza giriş yapmayı denedi ancak " +"reddedildi: {2}" + +#: Client.cpp:394 +msgid "Network {1} doesn't exist." +msgstr "{1} networkü mevcut değil." + +#: Client.cpp:408 +msgid "" +"You have several networks configured, but no network was specified for the " +"connection." +msgstr "" +"Yapılandırılmış birden fazla networkünüz var ancak bağlantı için herhangi " +"bir network belirtilmedi." + +#: Client.cpp:411 +msgid "" +"Selecting network {1}. To see list of all configured networks, use /znc " +"ListNetworks" +msgstr "" +"{1} networkü seçiliyor. Yapılandırılmış tüm netwokrlerin listesini görmek " +"için /znc ListNetworks komutunu kullanın" + +#: Client.cpp:414 +msgid "" +"If you want to choose another network, use /znc JumpNetwork , or " +"connect to ZNC with username {1}/ (instead of just {1})" +msgstr "" +"Başka bir ağ seçmek istiyorsanız, /znc JumpNetwork kullanın veya " +"ZNC'ye kullanıcı adı {1}/ ile bağlanın (yalnızca {1} yerine)" + +#: Client.cpp:420 +msgid "" +"You have no networks configured. Use /znc AddNetwork to add one." +msgstr "" +"Yapılandırılmış networkünüz yok. Bir tane eklemek için /znc AddNetwork " +" kullanın." + +#: Client.cpp:431 +msgid "Closing link: Timeout" +msgstr "Bağlantı kapatılıyor: Zaman aşımı" + +#: Client.cpp:453 +msgid "Closing link: Too long raw line" +msgstr "Bağlantı kapatılıyor: Çok uzun ham hat" + +#: Client.cpp:460 +msgid "" +"You are being disconnected because another user just authenticated as you." +msgstr "" +"Başka bir kullanıcı sizin kimliğinizi doğruladığı için bağlantınız kesiliyor." + +#: Client.cpp:1026 +msgid "Your CTCP to {1} got lost, you are not connected to IRC!" +msgstr "{1}'e giden CTCP bağlantınız kayboldu, IRC'ye bağlı değilsiniz!" + +#: Client.cpp:1152 +msgid "Your notice to {1} got lost, you are not connected to IRC!" +msgstr "{1}'a gönderdiğiniz bildirim kayboldu, IRC'ye bağlı değilsiniz!" + +#: Client.cpp:1191 +msgid "Removing channel {1}" +msgstr "{1} kanalı kaldırılıyor" + +#: Client.cpp:1269 +msgid "Your message to {1} got lost, you are not connected to IRC!" +msgstr "{1}'a gönderdiğiniz mesaj kayboldu, IRC'ye bağlı değilsiniz!" + +#: Client.cpp:1322 Client.cpp:1328 +msgid "Hello. How may I help you?" +msgstr "Merhaba. Size nasıl yardım edebilirim?" + +#: Client.cpp:1342 +msgid "Usage: /attach <#chans>" +msgstr "Kullanımı: attach <#kanallar>" + +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: ClientCommand.cpp:423 ClientCommand.cpp:450 +msgid "There was {1} channel matching [{2}]" +msgid_plural "There were {1} channels matching [{2}]" +msgstr[0] "[{2}] ile eşleşen {1} kanal vardı" +msgstr[1] "[{2}] ile eşleşen {1} kanal vardı" + +#: Client.cpp:1352 ClientCommand.cpp:132 +msgid "Attached {1} channel" +msgid_plural "Attached {1} channels" +msgstr[0] "{1} kanalı eklendi" +msgstr[1] "{1} kanalları eklendi" + +#: Client.cpp:1364 +msgid "Usage: /detach <#chans>" +msgstr "Kullanımı: detach <#kanallar>" + +#: Client.cpp:1374 ClientCommand.cpp:154 +msgid "Detached {1} channel" +msgid_plural "Detached {1} channels" +msgstr[0] "{1} kanalı ayrıldı" +msgstr[1] "{1} kanalları ayrıldı" + +#: Chan.cpp:678 +msgid "Buffer Playback..." +msgstr "Tampon Oynatma..." + +#: Chan.cpp:716 +msgid "Playback Complete." +msgstr "Oynatma Tamamlandı." + +#: Modules.cpp:528 +msgctxt "modhelpcmd" +msgid "" +msgstr "" + +#: Modules.cpp:529 +msgctxt "modhelpcmd" +msgid "Generate this output" +msgstr "Bu çıktıyı oluştur" + +#: Modules.cpp:573 ClientCommand.cpp:1992 +msgid "No matches for '{1}'" +msgstr "'{1}' için eşleşme yok" + +#: Modules.cpp:691 +msgid "This module doesn't implement any commands." +msgstr "Bu modül herhangi bir komutu uygulamaz." + +#: Modules.cpp:693 +msgid "Unknown command!" +msgstr "Bilinmeyen komut!" + +#: Modules.cpp:1633 +msgid "" +"Module names can only contain letters, numbers and underscores, [{1}] is " +"invalid" +msgstr "" +"Modül adları yalnızca harf, sayı ve alt çizgi içerebilir; [{1}] geçersizdir" + +#: Modules.cpp:1652 +msgid "Module {1} already loaded." +msgstr "{1} modülü zaten yüklendi." + +#: Modules.cpp:1666 +msgid "Unable to find module {1}" +msgstr "{1} modülü bulunamıyor" + +#: Modules.cpp:1678 +msgid "Module {1} does not support module type {2}." +msgstr "{1} modülü, {2} modül tipini desteklemiyor." + +#: Modules.cpp:1685 +msgid "Module {1} requires a user." +msgstr "{1} modülü bir kullanıcı gerektirir." + +#: Modules.cpp:1691 +msgid "Module {1} requires a network." +msgstr "{1} modülü bir network gerektirir." + +#: Modules.cpp:1707 +msgid "Caught an exception" +msgstr "Bir istisna yakalandı" + +#: Modules.cpp:1713 +msgid "Module {1} aborted: {2}" +msgstr "{1} modülü iptal edildi: {2}" + +#: Modules.cpp:1715 +msgid "Module {1} aborted." +msgstr "{1} modülü iptal edildi." + +#: Modules.cpp:1739 Modules.cpp:1781 +msgid "Module [{1}] not loaded." +msgstr "Modül [{1}] yüklenmedi." + +#: Modules.cpp:1763 +msgid "Module {1} unloaded." +msgstr "{1} modülü kaldırılamıyor." + +#: Modules.cpp:1768 +msgid "Unable to unload module {1}." +msgstr "{1} modülü kaldırılamıyor." + +#: Modules.cpp:1797 +msgid "Reloaded module {1}." +msgstr "{1} modülü tekrar yüklendi." + +#: Modules.cpp:1816 +msgid "Unable to find module {1}." +msgstr "{1} modülü bulunamıyor." + +#: Modules.cpp:1963 +msgid "Unknown error" +msgstr "Bilinmeyen hata" + +#: Modules.cpp:1964 +msgid "Unable to open module {1}: {2}" +msgstr "{1} modülü açılamıyor: {2}" + +#: Modules.cpp:1973 +msgid "Could not find ZNCModuleEntry in module {1}" +msgstr "{1} modülünde ZNCModuleEntry bulunamadı" + +#: Modules.cpp:1981 +msgid "" +"Version mismatch for module {1}: core is {2}, module is built for {3}. " +"Recompile this module." +msgstr "" +"{1} modülü için sürüm uyuşmazlığı: çekirdek {2}, modül {3} için oluşturuldu. " +"Bu modülü yeniden derleyin." + +#: Modules.cpp:1992 +msgid "" +"Module {1} is built incompatibly: core is '{2}', module is '{3}'. Recompile " +"this module." +msgstr "" +"{1} modülü uyumsuz bir şekilde oluşturulmuş: çekirdek '{2}', modül '{3}'. Bu " +"modülü yeniden derleyin." + +#: Modules.cpp:2023 Modules.cpp:2029 +msgctxt "modhelpcmd" +msgid "Command" +msgstr "Komut" + +#: Modules.cpp:2024 Modules.cpp:2031 +msgctxt "modhelpcmd" +msgid "Description" +msgstr "Açıklama" + +#: ClientCommand.cpp:51 ClientCommand.cpp:115 ClientCommand.cpp:137 +#: ClientCommand.cpp:339 ClientCommand.cpp:390 ClientCommand.cpp:405 +#: ClientCommand.cpp:432 ClientCommand.cpp:459 ClientCommand.cpp:480 +#: ClientCommand.cpp:499 ClientCommand.cpp:824 ClientCommand.cpp:848 +#: ClientCommand.cpp:874 ClientCommand.cpp:908 ClientCommand.cpp:921 +#: ClientCommand.cpp:934 ClientCommand.cpp:949 ClientCommand.cpp:1410 +#: ClientCommand.cpp:1458 ClientCommand.cpp:1490 ClientCommand.cpp:1501 +#: ClientCommand.cpp:1510 ClientCommand.cpp:1522 +msgid "You must be connected with a network to use this command" +msgstr "Bu komutu kullanabilmek için bir networke bağlı olmanız gerekir" + +#: ClientCommand.cpp:58 +msgid "Usage: ListNicks <#chan>" +msgstr "Kullanımı: ListNicks <#kanal>" + +#: ClientCommand.cpp:65 +msgid "You are not on [{1}]" +msgstr "[{1}] üzerinde değilsiniz" + +#: ClientCommand.cpp:70 +msgid "You are not on [{1}] (trying)" +msgstr "[{1}] üzerinde değilsiniz (deneniyor)" + +#: ClientCommand.cpp:79 +msgid "No nicks on [{1}]" +msgstr "[{1}] üzerinde nick yok" + +#: ClientCommand.cpp:91 ClientCommand.cpp:106 +msgid "Nick" +msgstr "Nick" + +#: ClientCommand.cpp:92 ClientCommand.cpp:107 +msgid "Ident" +msgstr "Ident" + +#: ClientCommand.cpp:93 ClientCommand.cpp:108 +msgid "Host" +msgstr "Host" + +#: ClientCommand.cpp:122 +msgid "Usage: Attach <#chans>" +msgstr "Kullanımı: Attach <#kanallar>" + +#: ClientCommand.cpp:144 +msgid "Usage: Detach <#chans>" +msgstr "Kullanımı: Detach <#kanallar>" + +#: ClientCommand.cpp:161 +msgid "There is no MOTD set." +msgstr "Ayarlanan MOTD yok." + +#: ClientCommand.cpp:167 +msgid "Rehashing succeeded!" +msgstr "Yeniden düzenleme (rehash) başarılı oldu!" + +#: ClientCommand.cpp:169 +msgid "Rehashing failed: {1}" +msgstr "Yeniden düzenleme (rehash) başarısız oldu: {1}" + +#: ClientCommand.cpp:173 +msgid "Wrote config to {1}" +msgstr "{1}'a yapılandırma yazıldı" + +#: ClientCommand.cpp:175 +msgid "Error while trying to write config." +msgstr "Yapılandırma yazmaya çalışırken hata oluştu." + +#: ClientCommand.cpp:183 +msgid "Usage: ListClients" +msgstr "Kullanımı: ListClients" + +#: ClientCommand.cpp:190 +msgid "No such user: {1}" +msgstr "Kullanıcı bulunamadı: {1}" + +#: ClientCommand.cpp:198 +msgid "No clients are connected" +msgstr "Bağlı istemci yok" + +#: ClientCommand.cpp:203 ClientCommand.cpp:209 +msgctxt "listclientscmd" +msgid "Host" +msgstr "Host" + +#: ClientCommand.cpp:204 ClientCommand.cpp:212 +msgctxt "listclientscmd" +msgid "Network" +msgstr "Network" + +#: ClientCommand.cpp:205 ClientCommand.cpp:215 +msgctxt "listclientscmd" +msgid "Identifier" +msgstr "Tanımlayıcı" + +#: ClientCommand.cpp:223 ClientCommand.cpp:229 +msgctxt "listuserscmd" +msgid "Username" +msgstr "Kullanıcı Adı" + +#: ClientCommand.cpp:224 ClientCommand.cpp:230 +msgctxt "listuserscmd" +msgid "Networks" +msgstr "Networkler" + +#: ClientCommand.cpp:225 ClientCommand.cpp:232 +msgctxt "listuserscmd" +msgid "Clients" +msgstr "İstemciler" + +#: ClientCommand.cpp:240 ClientCommand.cpp:250 ClientCommand.cpp:260 +#: ClientCommand.cpp:263 +msgctxt "listallusernetworkscmd" +msgid "Username" +msgstr "Kullanıcı Adı" + +#: ClientCommand.cpp:241 ClientCommand.cpp:251 ClientCommand.cpp:266 +msgctxt "listallusernetworkscmd" +msgid "Network" +msgstr "Network" + +#: ClientCommand.cpp:242 ClientCommand.cpp:252 ClientCommand.cpp:268 +msgctxt "listallusernetworkscmd" +msgid "Clients" +msgstr "İstemciler" + +#: ClientCommand.cpp:243 ClientCommand.cpp:271 ClientCommand.cpp:280 +msgctxt "listallusernetworkscmd" +msgid "On IRC" +msgstr "IRC'de" + +#: ClientCommand.cpp:244 ClientCommand.cpp:273 +msgctxt "listallusernetworkscmd" +msgid "IRC Server" +msgstr "IRC Sunucusu" + +#: ClientCommand.cpp:245 ClientCommand.cpp:275 +msgctxt "listallusernetworkscmd" +msgid "IRC User" +msgstr "IRC Kullanıcısı" + +#: ClientCommand.cpp:246 ClientCommand.cpp:277 +msgctxt "listallusernetworkscmd" +msgid "Channels" +msgstr "Kanallar" + +#: ClientCommand.cpp:251 +msgid "N/A" +msgstr "N/A" + +#: ClientCommand.cpp:272 +msgctxt "listallusernetworkscmd" +msgid "Yes" +msgstr "Evet" + +#: ClientCommand.cpp:281 +msgctxt "listallusernetworkscmd" +msgid "No" +msgstr "Hayır" + +#: ClientCommand.cpp:291 +msgid "Usage: SetMOTD " +msgstr "Kullanımı: SetMOTD " + +#: ClientCommand.cpp:294 +msgid "MOTD set to: {1}" +msgstr "MOTD şöyle ayarlandı: {1}" + +#: ClientCommand.cpp:300 +msgid "Usage: AddMOTD " +msgstr "Kullanımı: AddMOTD " + +#: ClientCommand.cpp:303 +msgid "Added [{1}] to MOTD" +msgstr "MOTD'a eklendi: [{1}]" + +#: ClientCommand.cpp:307 +msgid "Cleared MOTD" +msgstr "MOTD temizlendi" + +#: ClientCommand.cpp:329 +msgid "" +"ERROR: Writing config file to disk failed! Aborting. Use {1} FORCE to ignore." +msgstr "" +"HATA: Yapılandırma dosyasını diske yazma işlemi başarısız oldu! İptal " +"ediliyor. Yoksaymak için {1} FORCE'u kullanın." + +#: ClientCommand.cpp:344 ClientCommand.cpp:862 ClientCommand.cpp:903 +msgid "You don't have any servers added." +msgstr "Eklenmiş sunucunuz yok." + +#: ClientCommand.cpp:355 +msgid "Server [{1}] not found" +msgstr "[{1}] sunucusu bulunamadı" + +#: ClientCommand.cpp:375 ClientCommand.cpp:380 +msgid "Connecting to {1}..." +msgstr "{1}'a bağlanıyor..." + +#: ClientCommand.cpp:377 +msgid "Jumping to the next server in the list..." +msgstr "Listede sıradaki sunucuya bağlanıyor..." + +#: ClientCommand.cpp:382 +msgid "Connecting..." +msgstr "Bağlanıyor..." + +#: ClientCommand.cpp:400 +msgid "Disconnected from IRC. Use 'connect' to reconnect." +msgstr "" +"Şu anda IRC ile bağlantınız kesilmiştir. Yeniden bağlanmak için 'connect'i " +"kullanın." + +#: ClientCommand.cpp:412 +msgid "Usage: EnableChan <#chans>" +msgstr "Kullanımı: EnableChan <#kanallar>" + +#: ClientCommand.cpp:426 +msgid "Enabled {1} channel" +msgid_plural "Enabled {1} channels" +msgstr[0] "{1} kanalları etkinleştirildi" +msgstr[1] "{1} kanalları etkinleştirildi" + +#: ClientCommand.cpp:439 +msgid "Usage: DisableChan <#chans>" +msgstr "Kullanımı: DisableChan <#kanallar>" + +#: ClientCommand.cpp:453 +msgid "Disabled {1} channel" +msgid_plural "Disabled {1} channels" +msgstr[0] "{1} kanalı pasifleştirildi" +msgstr[1] "{1} kanalları pasifleştirildi" + +#: ClientCommand.cpp:466 +msgid "Usage: MoveChan <#chan> " +msgstr "Kullanımı: MoveChan <#kanal> " + +#: ClientCommand.cpp:474 +msgid "Moved channel {1} to index {2}" +msgstr "{1} kanalı {2} dizinine taşındı" + +#: ClientCommand.cpp:487 +msgid "Usage: SwapChans <#chan1> <#chan2>" +msgstr "Kullanımı: SwapChans <#kanal1> <#kanal2>" + +#: ClientCommand.cpp:493 +msgid "Swapped channels {1} and {2}" +msgstr "{1} ve {2} kanalları değiştirildi" + +#: ClientCommand.cpp:510 +msgid "Usage: ListChans" +msgstr "Kullanımı: ListChans" + +#: ClientCommand.cpp:517 +msgid "No such user [{1}]" +msgstr "Kullanıcı bulunamadı: [{1}]" + +#: ClientCommand.cpp:523 +msgid "User [{1}] doesn't have network [{2}]" +msgstr "[{1}] Kullanıcısının [{2}] networkü yok" + +#: ClientCommand.cpp:534 +msgid "There are no channels defined." +msgstr "Tanımlanmış kanal yok." + +#: ClientCommand.cpp:539 ClientCommand.cpp:557 +msgctxt "listchans" +msgid "Index" +msgstr "Dizin" + +#: ClientCommand.cpp:540 ClientCommand.cpp:558 +msgctxt "listchans" +msgid "Name" +msgstr "Adı" + +#: ClientCommand.cpp:541 ClientCommand.cpp:561 +msgctxt "listchans" +msgid "Status" +msgstr "Durum" + +#: ClientCommand.cpp:542 ClientCommand.cpp:568 +msgctxt "listchans" +msgid "In config" +msgstr "Yapılandırmada" + +#: ClientCommand.cpp:543 ClientCommand.cpp:570 +msgctxt "listchans" +msgid "Buffer" +msgstr "Arabellek" + +#: ClientCommand.cpp:544 ClientCommand.cpp:574 +msgctxt "listchans" +msgid "Clear" +msgstr "Temizle" + +#: ClientCommand.cpp:545 ClientCommand.cpp:579 +msgctxt "listchans" +msgid "Modes" +msgstr "Modlar" + +#: ClientCommand.cpp:546 ClientCommand.cpp:580 +msgctxt "listchans" +msgid "Users" +msgstr "Kullanıcılar" + +#: ClientCommand.cpp:563 +msgctxt "listchans" +msgid "Detached" +msgstr "Ayrılmış" + +#: ClientCommand.cpp:564 +msgctxt "listchans" +msgid "Joined" +msgstr "Katılmış" + +#: ClientCommand.cpp:565 +msgctxt "listchans" +msgid "Disabled" +msgstr "Pasif" + +#: ClientCommand.cpp:566 +msgctxt "listchans" +msgid "Trying" +msgstr "Deneniyor" + +#: ClientCommand.cpp:569 ClientCommand.cpp:577 +msgctxt "listchans" +msgid "yes" +msgstr "evet" + +#: ClientCommand.cpp:596 +msgid "Total: {1}, Joined: {2}, Detached: {3}, Disabled: {4}" +msgstr "Toplam: {1}, Katılmış: {2}, Ayrılmış: {3}, Pasif: {4}" + +#: ClientCommand.cpp:600 ClientCommand.cpp:636 ClientCommand.cpp:816 +#: ClientCommand.cpp:842 +msgid "Access denied!" +msgstr "Erişim reddedildi!" + +#: ClientCommand.cpp:606 +msgid "" +"Network number limit reached. Ask an admin to increase the limit for you, or " +"delete unneeded networks using /znc DelNetwork " +msgstr "" +"Network sayısı sınırına ulaşıldı. Bir yöneticiden sizin için sınırı " +"artırmasını isteyin veya /znc DelNetwork kullanarak gereksiz " +"networleri silmesini isteyin" + +#: ClientCommand.cpp:615 +msgid "Usage: AddNetwork " +msgstr "Kullanımı: AddNetwork " + +#: ClientCommand.cpp:619 +msgid "Network name should be alphanumeric" +msgstr "Network adı alfasayısal olmalıdır" + +#: ClientCommand.cpp:626 +msgid "" +"Network added. Use /znc JumpNetwork {1}, or connect to ZNC with username {2} " +"(instead of just {3}) to connect to it." +msgstr "" +"Network eklendi. /znc JumpNetwork {1} kullanın veya ZNC'ye bağlanmak için " +"{2} kullanıcı adıyla (yalnızca {3} yerine) ile bağlanın." + +#: ClientCommand.cpp:631 +msgid "Unable to add that network" +msgstr "Bu network eklenemiyor" + +#: ClientCommand.cpp:643 +msgid "Usage: DelNetwork " +msgstr "Kullanımı: DelNetwork " + +#: ClientCommand.cpp:652 +msgid "Network deleted" +msgstr "Network silindi" + +#: ClientCommand.cpp:655 +msgid "Failed to delete network, perhaps this network doesn't exist" +msgstr "Network silinemedi; bu network mevcut olmayabilir" + +#: ClientCommand.cpp:665 +msgid "User {1} not found" +msgstr "{1} kullanıcısı bulunamadı" + +#: ClientCommand.cpp:673 ClientCommand.cpp:681 +msgctxt "listnetworks" +msgid "Network" +msgstr "Network" + +#: ClientCommand.cpp:674 ClientCommand.cpp:683 ClientCommand.cpp:692 +msgctxt "listnetworks" +msgid "On IRC" +msgstr "IRC'de" + +#: ClientCommand.cpp:675 ClientCommand.cpp:685 +msgctxt "listnetworks" +msgid "IRC Server" +msgstr "IRC Sunucusu" + +#: ClientCommand.cpp:676 ClientCommand.cpp:687 +msgctxt "listnetworks" +msgid "IRC User" +msgstr "IRC Kullanıcısı" + +#: ClientCommand.cpp:677 ClientCommand.cpp:689 +msgctxt "listnetworks" +msgid "Channels" +msgstr "Kanallar" + +#: ClientCommand.cpp:684 +msgctxt "listnetworks" +msgid "Yes" +msgstr "Evet" + +#: ClientCommand.cpp:693 +msgctxt "listnetworks" +msgid "No" +msgstr "Hayır" + +#: ClientCommand.cpp:698 +msgctxt "listnetworks" +msgid "No networks" +msgstr "Network yok" + +#: ClientCommand.cpp:702 ClientCommand.cpp:1017 +msgid "Access denied." +msgstr "Erişim reddedildi." + +#: ClientCommand.cpp:713 +msgid "Usage: MoveNetwork [new network]" +msgstr "" +"Kullanımı: MoveNetwork " +"[yeni network]" + +#: ClientCommand.cpp:723 +msgid "Old user {1} not found." +msgstr "{1} eski kullanıcısı bulunamadı." + +#: ClientCommand.cpp:729 +msgid "Old network {1} not found." +msgstr "{1} eski netowrkü bulunamadı." + +#: ClientCommand.cpp:735 +msgid "New user {1} not found." +msgstr "{1} yeni kullanıcısı bulunamadı." + +#: ClientCommand.cpp:740 +msgid "User {1} already has network {2}." +msgstr "{1} kullanıcısı zaten {2} ağına sahip." + +#: ClientCommand.cpp:746 +msgid "Invalid network name [{1}]" +msgstr "Geçersiz ağ adı [{1}]" + +#: ClientCommand.cpp:762 +msgid "Some files seem to be in {1}. You might want to move them to {2}" +msgstr "" +"Bazı dosyalar {1} konumunda görünüyor. Bunları {2} konumuna taşımak " +"isteyebilirsiniz" + +#: ClientCommand.cpp:776 +msgid "Error adding network: {1}" +msgstr "Network eklenirken hata oluştu: {1}" + +#: ClientCommand.cpp:788 +msgid "Success." +msgstr "Başarılı." + +#: ClientCommand.cpp:791 +msgid "Copied the network to new user, but failed to delete old network" +msgstr "Ağ yeni kullanıcıya kopyalandı ancak eski ağ silinemedi" + +#: ClientCommand.cpp:798 +msgid "No network supplied." +msgstr "Network sağlanmadı." + +#: ClientCommand.cpp:803 +msgid "You are already connected with this network." +msgstr "Bu networke zaten bağlısınız." + +#: ClientCommand.cpp:809 +msgid "Switched to {1}" +msgstr "{1}'e geçildi" + +#: ClientCommand.cpp:812 +msgid "You don't have a network named {1}" +msgstr "{1} adında bir ağınız yok" + +#: ClientCommand.cpp:829 +msgid "Usage: AddServer [[+]port] [pass]" +msgstr "Kullanımı: AddServer [[+]port] [şifre]" + +#: ClientCommand.cpp:834 +msgid "Server added" +msgstr "Sunucu eklendi" + +#: ClientCommand.cpp:837 +msgid "" +"Unable to add that server. Perhaps the server is already added or openssl is " +"disabled?" +msgstr "" +"Bu sunucu eklenemiyor. Belki sunucu zaten eklenmiştir veya openssl devre " +"dışı bırakılmıştır?" + +#: ClientCommand.cpp:857 +msgid "Usage: DelServer [port] [pass]" +msgstr "Kullanımı: DelServer [[+] port] [şifre]" + +#: ClientCommand.cpp:867 +msgid "Server removed" +msgstr "Sunucu silindi" + +#: ClientCommand.cpp:869 +msgid "No such server" +msgstr "Böyle bir sunucu yok" + +#: ClientCommand.cpp:882 ClientCommand.cpp:890 +msgctxt "listservers" +msgid "Host" +msgstr "Host" + +#: ClientCommand.cpp:883 ClientCommand.cpp:892 +msgctxt "listservers" +msgid "Port" +msgstr "Port" + +#: ClientCommand.cpp:884 ClientCommand.cpp:895 +msgctxt "listservers" +msgid "SSL" +msgstr "SSL" + +#: ClientCommand.cpp:885 ClientCommand.cpp:897 +msgctxt "listservers" +msgid "Password" +msgstr "Şifre" + +#: ClientCommand.cpp:896 +msgctxt "listservers|cell" +msgid "SSL" +msgstr "SSL" + +#: ClientCommand.cpp:913 +msgid "Usage: AddTrustedServerFingerprint " +msgstr "Kullanımı: AddTrustedServerFingerprint " + +#: ClientCommand.cpp:917 ClientCommand.cpp:930 +msgid "Done." +msgstr "Tamamdır." + +#: ClientCommand.cpp:926 +msgid "Usage: DelTrustedServerFingerprint " +msgstr "Kullanımı: DelTrustedServerFingerprint " + +#: ClientCommand.cpp:939 +msgid "No fingerprints added." +msgstr "Parmak izi eklenmedi." + +#: ClientCommand.cpp:955 ClientCommand.cpp:961 +msgctxt "topicscmd" +msgid "Channel" +msgstr "Kanal" + +#: ClientCommand.cpp:956 ClientCommand.cpp:962 +msgctxt "topicscmd" +msgid "Set By" +msgstr "Ayarla:" + +#: ClientCommand.cpp:957 ClientCommand.cpp:963 +msgctxt "topicscmd" +msgid "Topic" +msgstr "Başlık" + +#: ClientCommand.cpp:970 ClientCommand.cpp:975 +msgctxt "listmods" +msgid "Name" +msgstr "Adı" + +#: ClientCommand.cpp:971 ClientCommand.cpp:976 +msgctxt "listmods" +msgid "Arguments" +msgstr "Argümanlar" + +#: ClientCommand.cpp:985 +msgid "No global modules loaded." +msgstr "Global modül eklenmedi." + +#: ClientCommand.cpp:987 ClientCommand.cpp:1051 +msgid "Global modules:" +msgstr "Global modüller:" + +#: ClientCommand.cpp:996 +msgid "Your user has no modules loaded." +msgstr "Kullanıcınızda yüklü modül yok." + +#: ClientCommand.cpp:998 ClientCommand.cpp:1063 +msgid "User modules:" +msgstr "Kullanıcı modülleri:" + +#: ClientCommand.cpp:1006 +msgid "This network has no modules loaded." +msgstr "Bu ağda yüklü modül yok." + +#: ClientCommand.cpp:1008 ClientCommand.cpp:1075 +msgid "Network modules:" +msgstr "Ağ modülleri:" + +#: ClientCommand.cpp:1023 ClientCommand.cpp:1030 +msgctxt "listavailmods" +msgid "Name" +msgstr "Adı" + +#: ClientCommand.cpp:1024 ClientCommand.cpp:1035 +msgctxt "listavailmods" +msgid "Description" +msgstr "Açıklama" + +#: ClientCommand.cpp:1049 +msgid "No global modules available." +msgstr "Kullanılabilir global modül yok." + +#: ClientCommand.cpp:1061 +msgid "No user modules available." +msgstr "Kullanılabilir kullanıcı modülü yok." + +#: ClientCommand.cpp:1073 +msgid "No network modules available." +msgstr "Kullanılabilir ağ modülü yok." + +#: ClientCommand.cpp:1101 +msgid "Unable to load {1}: Access denied." +msgstr "{1} yüklenemiyor: Erişim reddedildi." + +#: ClientCommand.cpp:1107 +msgid "Usage: LoadMod [--type=global|user|network] [args]" +msgstr "Kullanımı: LoadMod [--type=global|user|network] [argümanlar]" + +#: ClientCommand.cpp:1114 +msgid "Unable to load {1}: {2}" +msgstr "{1} yüklenemiyor: {2}" + +#: ClientCommand.cpp:1124 +msgid "Unable to load global module {1}: Access denied." +msgstr "{1} genel modülü yüklenemiyor: Erişim reddedildi." + +#: ClientCommand.cpp:1130 +msgid "Unable to load network module {1}: Not connected with a network." +msgstr "{1} ağ modülü yüklenemiyor: Bir ağa bağlı değil." + +#: ClientCommand.cpp:1152 +msgid "Unknown module type" +msgstr "Bilinmeyen modül türü" + +#: ClientCommand.cpp:1157 +msgid "Loaded module {1}" +msgstr "{1} modülü yüklendi" + +#: ClientCommand.cpp:1159 +msgid "Loaded module {1}: {2}" +msgstr "{1} modülü yüklendi: {2}" + +#: ClientCommand.cpp:1162 +msgid "Unable to load module {1}: {2}" +msgstr "{1} modülü yüklenemiyor: {2}" + +#: ClientCommand.cpp:1185 +msgid "Unable to unload {1}: Access denied." +msgstr "{1} kaldırılamıyor: Erişim reddedildi." + +#: ClientCommand.cpp:1191 +msgid "Usage: UnloadMod [--type=global|user|network] " +msgstr "Kullanımı: UnLoadMod [--type=global|user|network] " + +#: ClientCommand.cpp:1200 +msgid "Unable to determine type of {1}: {2}" +msgstr "{1} türü belirlenemiyor: {2}" + +#: ClientCommand.cpp:1208 +msgid "Unable to unload global module {1}: Access denied." +msgstr "{1} global modülü kaldırılamıyor: Erişim reddedildi." + +#: ClientCommand.cpp:1215 +msgid "Unable to unload network module {1}: Not connected with a network." +msgstr "{1} ağ modülü kaldırılamıyor: Bir ağa bağlı değil." + +#: ClientCommand.cpp:1234 +msgid "Unable to unload module {1}: Unknown module type" +msgstr "{1} modülü kaldırılamıyor: Bilinmeyen modül türü" + +#: ClientCommand.cpp:1247 +msgid "Unable to reload modules. Access denied." +msgstr "Modüller yeniden yüklenemiyor. Erişim engellendi." + +#: ClientCommand.cpp:1268 +msgid "Usage: ReloadMod [--type=global|user|network] [args]" +msgstr "Kullanımı: ReloadMod [--type=global|user|network] [argümanlar]" + +#: ClientCommand.cpp:1277 +msgid "Unable to reload {1}: {2}" +msgstr "{1} tekrar yüklenemiyor: {2}" + +#: ClientCommand.cpp:1285 +msgid "Unable to reload global module {1}: Access denied." +msgstr "{1} genel modülü tekrar yüklenemiyor: Erişim reddedildi." + +#: ClientCommand.cpp:1292 +msgid "Unable to reload network module {1}: Not connected with a network." +msgstr "{1} ağ modülü tekrar yüklenemiyor: Bir ağa bağlı değil." + +#: ClientCommand.cpp:1314 +msgid "Unable to reload module {1}: Unknown module type" +msgstr "{1} modülü yeniden yüklenemiyor: Bilinmeyen modül türü" + +#: ClientCommand.cpp:1325 +msgid "Usage: UpdateMod " +msgstr "Kullanım: UpdateMod " + +#: ClientCommand.cpp:1329 +msgid "Reloading {1} everywhere" +msgstr "{1} her yere yeniden yükleniyor" + +#: ClientCommand.cpp:1331 +msgid "Done" +msgstr "Tamamdır" + +#: ClientCommand.cpp:1334 +msgid "" +"Done, but there were errors, module {1} could not be reloaded everywhere." +msgstr "" +"Tamamlandı, ancak hatalar vardı; {1} modülü her yere yeniden yüklenemedi." + +#: ClientCommand.cpp:1342 +msgid "" +"You must be connected with a network to use this command. Try " +"SetUserBindHost instead" +msgstr "" +"Bu komutu kullanabilmek için bir ağa bağlı olmanız gerekir. Bunun yerine " +"SetUserBindHost'u deneyin" + +#: ClientCommand.cpp:1349 +msgid "Usage: SetBindHost " +msgstr "Kullanımı: SetBindHost " + +#: ClientCommand.cpp:1354 ClientCommand.cpp:1371 +msgid "You already have this bind host!" +msgstr "Bu bind hotunuz zaten mevcut!" + +#: ClientCommand.cpp:1359 +msgid "Set bind host for network {1} to {2}" +msgstr "{1} ağı için bind hostu {2} olarak ayarlayın" + +#: ClientCommand.cpp:1366 +msgid "Usage: SetUserBindHost " +msgstr "Kullanımı: SetUserBindHost " + +#: ClientCommand.cpp:1376 +msgid "Set default bind host to {1}" +msgstr "Varsayılan bind hostu {1} olarak ayarla" + +#: ClientCommand.cpp:1382 +msgid "" +"You must be connected with a network to use this command. Try " +"ClearUserBindHost instead" +msgstr "" +"Bu komutu kullanabilmek için bir ağa bağlı olmanız gerekir. Bunun yerine " +"ClearUserBindHost'u deneyin" + +#: ClientCommand.cpp:1387 +msgid "Bind host cleared for this network." +msgstr "Bu ağ için bind host temizlendi." + +#: ClientCommand.cpp:1391 +msgid "Default bind host cleared for your user." +msgstr "Kullanıcınız için varsayılan bind host temizlendi." + +#: ClientCommand.cpp:1394 +msgid "This user's default bind host not set" +msgstr "Bu kullanıcının varsayılan bind host ayarlanmadı" + +#: ClientCommand.cpp:1396 +msgid "This user's default bind host is {1}" +msgstr "Bu kullanıcının varsayılan bind hostu {1}" + +#: ClientCommand.cpp:1401 +msgid "This network's bind host not set" +msgstr "Bu ağın bind hostu ayarlanmadı" + +#: ClientCommand.cpp:1403 +msgid "This network's default bind host is {1}" +msgstr "Bu ağın varsayılan bind hostu {1}" + +#: ClientCommand.cpp:1417 +msgid "Usage: PlayBuffer <#chan|query>" +msgstr "Kullanımı: PlayBuffer <#kanal|sorgu>" + +#: ClientCommand.cpp:1430 +msgid "You are not on {1} (trying to join)" +msgstr "{1} üzerinde değilsiniz (katılmaya çalışılıyor)" + +#: ClientCommand.cpp:1435 +msgid "The buffer for channel {1} is empty" +msgstr "{1} kanalının arabelleği boş" + +#: ClientCommand.cpp:1444 +msgid "No active query with {1}" +msgstr "{1} ile etkin sorgu yok" + +#: ClientCommand.cpp:1449 +msgid "The buffer for {1} is empty" +msgstr "{1} için arabellek boş" + +#: ClientCommand.cpp:1465 +msgid "Usage: ClearBuffer <#chan|query>" +msgstr "Kullanımı: ClearBuffer <#kanal|sorgu>" + +#: ClientCommand.cpp:1484 +msgid "{1} buffer matching {2} has been cleared" +msgid_plural "{1} buffers matching {2} have been cleared" +msgstr[0] "{2} ile eşleşen {1} arabellek temizlendi" +msgstr[1] "{2} ile eşleşen {1} arabellek temizlendi" + +#: ClientCommand.cpp:1497 +msgid "All channel buffers have been cleared" +msgstr "Tüm kanal arabellekleri temizlendi" + +#: ClientCommand.cpp:1506 +msgid "All query buffers have been cleared" +msgstr "Tüm sorgu arabellekleri temizlendi" + +#: ClientCommand.cpp:1518 +msgid "All buffers have been cleared" +msgstr "Tüm arabellekler temizlendi" + +#: ClientCommand.cpp:1529 +msgid "Usage: SetBuffer <#chan|query> [linecount]" +msgstr "Kullanımı: SetBuffer <#kanal|sorgu> [satırsayısı]" + +#: ClientCommand.cpp:1550 +msgid "Setting buffer size failed for {1} buffer" +msgid_plural "Setting buffer size failed for {1} buffers" +msgstr[0] "{1} arabellek için arabellek boyutunun ayarlanması başarısız oldu" +msgstr[1] "{1} arabellek için arabellek boyutunun ayarlanması başarısız oldu" + +#: ClientCommand.cpp:1553 +msgid "Maximum buffer size is {1} line" +msgid_plural "Maximum buffer size is {1} lines" +msgstr[0] "Maksimum arabellek boyutu {1} satırdır" +msgstr[1] "Maksimum arabellek boyutu {1} satırdır" + +#: ClientCommand.cpp:1558 +msgid "Size of every buffer was set to {1} line" +msgid_plural "Size of every buffer was set to {1} lines" +msgstr[0] "Her arabelleğin boyutu {1} satıra ayarlandı" +msgstr[1] "Her arabelleğin boyutu {1} satıra ayarlandı" + +#: ClientCommand.cpp:1568 ClientCommand.cpp:1575 ClientCommand.cpp:1586 +#: ClientCommand.cpp:1595 ClientCommand.cpp:1603 +msgctxt "trafficcmd" +msgid "Username" +msgstr "Kullanıcı Adı" + +#: ClientCommand.cpp:1569 ClientCommand.cpp:1576 ClientCommand.cpp:1588 +#: ClientCommand.cpp:1597 ClientCommand.cpp:1605 +msgctxt "trafficcmd" +msgid "In" +msgstr "İçeri" + +#: ClientCommand.cpp:1570 ClientCommand.cpp:1578 ClientCommand.cpp:1589 +#: ClientCommand.cpp:1598 ClientCommand.cpp:1606 +msgctxt "trafficcmd" +msgid "Out" +msgstr "Dışarı" + +#: ClientCommand.cpp:1571 ClientCommand.cpp:1581 ClientCommand.cpp:1591 +#: ClientCommand.cpp:1599 ClientCommand.cpp:1608 +msgctxt "trafficcmd" +msgid "Total" +msgstr "Toplam" + +#: ClientCommand.cpp:1587 +msgctxt "trafficcmd" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1596 +msgctxt "trafficcmd" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1604 +msgctxt "trafficcmd" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1613 +msgid "Running for {1}" +msgstr "{1} boyunca çalışıyor" + +#: ClientCommand.cpp:1619 +msgid "Unknown command, try 'Help'" +msgstr "Bilinmeyen komut, 'Help'i deneyin" + +#: ClientCommand.cpp:1628 ClientCommand.cpp:1639 +msgctxt "listports" +msgid "Port" +msgstr "Port" + +#: ClientCommand.cpp:1629 ClientCommand.cpp:1642 +msgctxt "listports" +msgid "BindHost" +msgstr "BindHost" + +#: ClientCommand.cpp:1630 ClientCommand.cpp:1645 +msgctxt "listports" +msgid "SSL" +msgstr "SSL" + +#: ClientCommand.cpp:1631 ClientCommand.cpp:1650 +msgctxt "listports" +msgid "Protocol" +msgstr "Protokol" + +#: ClientCommand.cpp:1632 ClientCommand.cpp:1657 +msgctxt "listports" +msgid "IRC" +msgstr "IRC" + +#: ClientCommand.cpp:1633 ClientCommand.cpp:1662 +msgctxt "listports" +msgid "Web" +msgstr "Web" + +#: ClientCommand.cpp:1646 +msgctxt "listports|ssl" +msgid "yes" +msgstr "evet" + +#: ClientCommand.cpp:1647 +msgctxt "listports|ssl" +msgid "no" +msgstr "hayır" + +#: ClientCommand.cpp:1651 +msgctxt "listports" +msgid "IPv4 and IPv6" +msgstr "IPv4 ve IPv6" + +#: ClientCommand.cpp:1653 +msgctxt "listports" +msgid "IPv4" +msgstr "IPv4" + +#: ClientCommand.cpp:1654 +msgctxt "listports" +msgid "IPv6" +msgstr "IPv6" + +#: ClientCommand.cpp:1660 +msgctxt "listports|irc" +msgid "yes" +msgstr "evet" + +#: ClientCommand.cpp:1661 +msgctxt "listports|irc" +msgid "no" +msgstr "hayır" + +#: ClientCommand.cpp:1665 +msgctxt "listports|irc" +msgid "yes, on {1}" +msgstr "evet, {1}'de" + +#: ClientCommand.cpp:1667 +msgctxt "listports|web" +msgid "no" +msgstr "hayır" + +#: ClientCommand.cpp:1707 +msgid "" +"Usage: AddPort <[+]port> [bindhost [uriprefix]]" +msgstr "" +"Kullanımı: AddPort <[+]port> [bindhost " +"[uriprefix]]" + +#: ClientCommand.cpp:1723 +msgid "Port added" +msgstr "Port eklendi" + +#: ClientCommand.cpp:1725 +msgid "Couldn't add port" +msgstr "Port eklenemedi" + +#: ClientCommand.cpp:1731 +msgid "Usage: DelPort [bindhost]" +msgstr "Kullanımı: DelPort [bindhost]" + +#: ClientCommand.cpp:1740 +msgid "Deleted Port" +msgstr "Port Silindi" + +#: ClientCommand.cpp:1742 +msgid "Unable to find a matching port" +msgstr "Eşleşen bir port bulunamıyor" + +#: ClientCommand.cpp:1750 ClientCommand.cpp:1765 +msgctxt "helpcmd" +msgid "Command" +msgstr "Komut" + +#: ClientCommand.cpp:1751 ClientCommand.cpp:1767 +msgctxt "helpcmd" +msgid "Description" +msgstr "Açıklama" + +#: ClientCommand.cpp:1756 +msgid "" +"In the following list all occurrences of <#chan> support wildcards (* and ?) " +"except ListNicks" +msgstr "" +"Aşağıdaki listede, ListNicks hariç tüm <#kanal> örnekleri joker karakterleri " +"(* ve ?) destekler" + +#: ClientCommand.cpp:1773 +msgctxt "helpcmd|Version|desc" +msgid "Print which version of ZNC this is" +msgstr "ZNC'nin hangi sürümü olduğunu yazdırın" + +#: ClientCommand.cpp:1776 +msgctxt "helpcmd|ListMods|desc" +msgid "List all loaded modules" +msgstr "Yüklü tüm modülleri listele" + +#: ClientCommand.cpp:1779 +msgctxt "helpcmd|ListAvailMods|desc" +msgid "List all available modules" +msgstr "Mevcut tüm modülleri listele" + +#: ClientCommand.cpp:1783 ClientCommand.cpp:1974 +msgctxt "helpcmd|ListChans|desc" +msgid "List all channels" +msgstr "Tüm kanalları listele" + +#: ClientCommand.cpp:1786 +msgctxt "helpcmd|ListNicks|args" +msgid "<#chan>" +msgstr "<#kanal>" + +#: ClientCommand.cpp:1787 +msgctxt "helpcmd|ListNicks|desc" +msgid "List all nicks on a channel" +msgstr "Bir kanaldaki tüm nickleri listeleme" + +#: ClientCommand.cpp:1790 +msgctxt "helpcmd|ListClients|desc" +msgid "List all clients connected to your ZNC user" +msgstr "ZNC kullanıcınıza bağlı tüm istemcileri listeleyin" + +#: ClientCommand.cpp:1794 +msgctxt "helpcmd|ListServers|desc" +msgid "List all servers of current IRC network" +msgstr "Mevcut IRC ağının tüm sunucularını listele" + +#: ClientCommand.cpp:1798 +msgctxt "helpcmd|AddNetwork|args" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1799 +msgctxt "helpcmd|AddNetwork|desc" +msgid "Add a network to your user" +msgstr "Kullanıcınıza bir ağ ekleyin" + +#: ClientCommand.cpp:1801 +msgctxt "helpcmd|DelNetwork|args" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1802 +msgctxt "helpcmd|DelNetwork|desc" +msgid "Delete a network from your user" +msgstr "Kullanıcınızdan bir ağı silin" + +#: ClientCommand.cpp:1804 +msgctxt "helpcmd|ListNetworks|desc" +msgid "List all networks" +msgstr "Tüm ağları listele" + +#: ClientCommand.cpp:1807 +msgctxt "helpcmd|MoveNetwork|args" +msgid " [new network]" +msgstr " [yeni ağ]" + +#: ClientCommand.cpp:1809 +msgctxt "helpcmd|MoveNetwork|desc" +msgid "Move an IRC network from one user to another" +msgstr "IRC ağını bir kullanıcıdan diğerine taşıma" + +#: ClientCommand.cpp:1813 +msgctxt "helpcmd|JumpNetwork|args" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1814 +msgctxt "helpcmd|JumpNetwork|desc" +msgid "" +"Jump to another network (Alternatively, you can connect to ZNC several " +"times, using `user/network` as username)" +msgstr "" +"Başka bir ağa geçin (Alternatif olarak, kullanıcı adı olarak `user/network`ü " +"kullanarak ZNC'ye birkaç kez bağlanabilirsiniz)" + +#: ClientCommand.cpp:1819 +msgctxt "helpcmd|AddServer|args" +msgid " [[+]port] [pass]" +msgstr " [[+]port] [şifre]" + +#: ClientCommand.cpp:1820 +msgctxt "helpcmd|AddServer|desc" +msgid "" +"Add a server to the list of alternate/backup servers of current IRC network." +msgstr "" +"Mevcut IRC ağının alternatif/yedek sunucuları listesine bir sunucu ekleyin." + +#: ClientCommand.cpp:1824 +msgctxt "helpcmd|DelServer|args" +msgid " [port] [pass]" +msgstr " [port] [şifre]" + +#: ClientCommand.cpp:1825 +msgctxt "helpcmd|DelServer|desc" +msgid "" +"Remove a server from the list of alternate/backup servers of current IRC " +"network" +msgstr "" +"Mevcut IRC ağının alternatif/yedek sunucuları listesinden bir sunucuyu " +"kaldırın" + +#: ClientCommand.cpp:1831 +msgctxt "helpcmd|AddTrustedServerFingerprint|args" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1832 +msgctxt "helpcmd|AddTrustedServerFingerprint|desc" +msgid "" +"Add a trusted server SSL certificate fingerprint (SHA-256) to current IRC " +"network." +msgstr "" +"Geçerli IRC ağına güvenilir bir sunucu SSL sertifikası parmak izi (SHA-256) " +"ekleyin." + +#: ClientCommand.cpp:1837 +msgctxt "helpcmd|DelTrustedServerFingerprint|args" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1838 +msgctxt "helpcmd|DelTrustedServerFingerprint|desc" +msgid "Delete a trusted server SSL certificate from current IRC network." +msgstr "Geçerli IRC ağından güvenilir bir sunucu SSL sertifikasını silin." + +#: ClientCommand.cpp:1842 +msgctxt "helpcmd|ListTrustedServerFingerprints|desc" +msgid "List all trusted server SSL certificates of current IRC network." +msgstr "" +"Geçerli IRC ağının tüm güvenilir sunucu SSL sertifikalarını listeleyin." + +#: ClientCommand.cpp:1845 +msgctxt "helpcmd|EnableChan|args" +msgid "<#chans>" +msgstr "<#kanallar>" + +#: ClientCommand.cpp:1846 +msgctxt "helpcmd|EnableChan|desc" +msgid "Enable channels" +msgstr "Kanalları etkinleştir" + +#: ClientCommand.cpp:1847 +msgctxt "helpcmd|DisableChan|args" +msgid "<#chans>" +msgstr "<#kanallar>" + +#: ClientCommand.cpp:1848 +msgctxt "helpcmd|DisableChan|desc" +msgid "Disable channels" +msgstr "Kanalları pasifleştir" + +#: ClientCommand.cpp:1849 +msgctxt "helpcmd|MoveChan|args" +msgid "<#chan> " +msgstr "<#kanal> " + +#: ClientCommand.cpp:1850 +msgctxt "helpcmd|MoveChan|desc" +msgid "Move channel in sort order" +msgstr "Kanalı sıralama düzenine göre taşı" + +#: ClientCommand.cpp:1852 +msgctxt "helpcmd|SwapChans|args" +msgid "<#chan1> <#chan2>" +msgstr "<#kanal1> <#kanal2>" + +#: ClientCommand.cpp:1853 +msgctxt "helpcmd|SwapChans|desc" +msgid "Swap channels in sort order" +msgstr "Kanalları sıralama düzenine göre değiştirin" + +#: ClientCommand.cpp:1854 +msgctxt "helpcmd|Attach|args" +msgid "<#chans>" +msgstr "<#kanallar>" + +#: ClientCommand.cpp:1855 +msgctxt "helpcmd|Attach|desc" +msgid "Attach to channels" +msgstr "Kanallara ekle" + +#: ClientCommand.cpp:1856 +msgctxt "helpcmd|Detach|args" +msgid "<#chans>" +msgstr "<#kanallar>" + +#: ClientCommand.cpp:1857 +msgctxt "helpcmd|Detach|desc" +msgid "Detach from channels" +msgstr "Kanallardan ayır" + +#: ClientCommand.cpp:1860 +msgctxt "helpcmd|Topics|desc" +msgid "Show topics in all your channels" +msgstr "Başlıkları tüm kanallarınızda gösterin" + +#: ClientCommand.cpp:1863 +msgctxt "helpcmd|PlayBuffer|args" +msgid "<#chan|query>" +msgstr "<#kanal|sorgu>" + +#: ClientCommand.cpp:1864 +msgctxt "helpcmd|PlayBuffer|desc" +msgid "Play back the specified buffer" +msgstr "Belirtilen arabelleği oynat" + +#: ClientCommand.cpp:1866 +msgctxt "helpcmd|ClearBuffer|args" +msgid "<#chan|query>" +msgstr "<#kanal|sorgu>" + +#: ClientCommand.cpp:1867 +msgctxt "helpcmd|ClearBuffer|desc" +msgid "Clear the specified buffer" +msgstr "Belirtilen arabelleği temizle" + +#: ClientCommand.cpp:1869 +msgctxt "helpcmd|ClearAllBuffers|desc" +msgid "Clear all channel and query buffers" +msgstr "Tüm kanal ve sorgu arabelleklerini temizle" + +#: ClientCommand.cpp:1872 +msgctxt "helpcmd|ClearAllChannelBuffers|desc" +msgid "Clear the channel buffers" +msgstr "Kanal arabelleklerini temizle" + +#: ClientCommand.cpp:1876 +msgctxt "helpcmd|ClearAllQueryBuffers|desc" +msgid "Clear the query buffers" +msgstr "Sorgu arabelleklerini temizle" + +#: ClientCommand.cpp:1878 +msgctxt "helpcmd|SetBuffer|args" +msgid "<#chan|query> [linecount]" +msgstr "<#kanal|sorgu> [satırsayısı]" + +#: ClientCommand.cpp:1879 +msgctxt "helpcmd|SetBuffer|desc" +msgid "Set the buffer count" +msgstr "Arabellek sayısını ayarlayın" + +#: ClientCommand.cpp:1883 +msgctxt "helpcmd|SetBindHost|args" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1884 +msgctxt "helpcmd|SetBindHost|desc" +msgid "Set the bind host for this network" +msgstr "Bu ağ için bind hostu ayarlayın" + +#: ClientCommand.cpp:1888 +msgctxt "helpcmd|SetUserBindHost|args" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1889 +msgctxt "helpcmd|SetUserBindHost|desc" +msgid "Set the default bind host for this user" +msgstr "Bu kullanıcı için varsayılan bind hostu ayarlayın" + +#: ClientCommand.cpp:1892 +msgctxt "helpcmd|ClearBindHost|desc" +msgid "Clear the bind host for this network" +msgstr "Bu ağ için bind hostu temizleyin" + +#: ClientCommand.cpp:1895 +msgctxt "helpcmd|ClearUserBindHost|desc" +msgid "Clear the default bind host for this user" +msgstr "Bu kullanıcı için varsayılan bind hostu temizleyin" + +#: ClientCommand.cpp:1901 +msgctxt "helpcmd|ShowBindHost|desc" +msgid "Show currently selected bind host" +msgstr "Şu anda seçili bind hostu göster" + +#: ClientCommand.cpp:1903 +msgctxt "helpcmd|Jump|args" +msgid "[server]" +msgstr "[sunucu]" + +#: ClientCommand.cpp:1904 +msgctxt "helpcmd|Jump|desc" +msgid "Jump to the next or the specified server" +msgstr "Sonraki veya belirtilen sunucuya atla" + +#: ClientCommand.cpp:1905 +msgctxt "helpcmd|Disconnect|args" +msgid "[message]" +msgstr "[mesaj]" + +#: ClientCommand.cpp:1906 +msgctxt "helpcmd|Disconnect|desc" +msgid "Disconnect from IRC" +msgstr "IRC'den bağlantıyı kes" + +#: ClientCommand.cpp:1908 +msgctxt "helpcmd|Connect|desc" +msgid "Reconnect to IRC" +msgstr "IRC'ye yeniden bağlanın" + +#: ClientCommand.cpp:1911 +msgctxt "helpcmd|Uptime|desc" +msgid "Show for how long ZNC has been running" +msgstr "ZNC'nin ne kadar süredir çalıştığını göster" + +#: ClientCommand.cpp:1915 +msgctxt "helpcmd|LoadMod|args" +msgid "[--type=global|user|network] [args]" +msgstr "[--type=global|user|network] [argümanlar]" + +#: ClientCommand.cpp:1917 +msgctxt "helpcmd|LoadMod|desc" +msgid "Load a module" +msgstr "Bir modül yükle" + +#: ClientCommand.cpp:1919 +msgctxt "helpcmd|UnloadMod|args" +msgid "[--type=global|user|network] " +msgstr "[--type=global|user|network] " + +#: ClientCommand.cpp:1921 +msgctxt "helpcmd|UnloadMod|desc" +msgid "Unload a module" +msgstr "Bir modülü kaldır" + +#: ClientCommand.cpp:1923 +msgctxt "helpcmd|ReloadMod|args" +msgid "[--type=global|user|network] [args]" +msgstr "[--type=global|user|network] [argümanlar]" + +#: ClientCommand.cpp:1925 +msgctxt "helpcmd|ReloadMod|desc" +msgid "Reload a module" +msgstr "Bir modülü tekrar yükle" + +#: ClientCommand.cpp:1928 +msgctxt "helpcmd|UpdateMod|args" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1929 +msgctxt "helpcmd|UpdateMod|desc" +msgid "Reload a module everywhere" +msgstr "Bir modülü her yere yeniden yükle" + +#: ClientCommand.cpp:1935 +msgctxt "helpcmd|ShowMOTD|desc" +msgid "Show ZNC's message of the day" +msgstr "ZNC'nin günün mesajını (MOTD) göster" + +#: ClientCommand.cpp:1939 +msgctxt "helpcmd|SetMOTD|args" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1940 +msgctxt "helpcmd|SetMOTD|desc" +msgid "Set ZNC's message of the day" +msgstr "ZNC'nin günün mesajını (MOTD) ayarla" + +#: ClientCommand.cpp:1942 +msgctxt "helpcmd|AddMOTD|args" +msgid "" +msgstr "" + +#: ClientCommand.cpp:1943 +msgctxt "helpcmd|AddMOTD|desc" +msgid "Append to ZNC's MOTD" +msgstr "ZNC'nin MOTD'una ekleyin" + +#: ClientCommand.cpp:1945 +msgctxt "helpcmd|ClearMOTD|desc" +msgid "Clear ZNC's MOTD" +msgstr "ZNC'nin MOTD'unu temizle" + +#: ClientCommand.cpp:1948 +msgctxt "helpcmd|ListPorts|desc" +msgid "Show all active listeners" +msgstr "Tüm aktif dinleyicileri göster" + +#: ClientCommand.cpp:1950 +msgctxt "helpcmd|AddPort|args" +msgid "<[+]port> [bindhost [uriprefix]]" +msgstr "<[+]port> [bindhost [uriprefix]]" + +#: ClientCommand.cpp:1953 +msgctxt "helpcmd|AddPort|desc" +msgid "Add another port for ZNC to listen on" +msgstr "ZNC'nin dinlemesi için başka bir port ekleyin" + +#: ClientCommand.cpp:1957 +msgctxt "helpcmd|DelPort|args" +msgid " [bindhost]" +msgstr " [bindhost]" + +#: ClientCommand.cpp:1958 +msgctxt "helpcmd|DelPort|desc" +msgid "Remove a port from ZNC" +msgstr "ZNC'den bir portu kaldırın" + +#: ClientCommand.cpp:1961 +msgctxt "helpcmd|Rehash|desc" +msgid "Reload global settings, modules, and listeners from znc.conf" +msgstr "" +"Genel ayarları, modülleri ve dinleyicileri znc.conf'tan yeniden yükleyin" + +#: ClientCommand.cpp:1964 +msgctxt "helpcmd|SaveConfig|desc" +msgid "Save the current settings to disk" +msgstr "Geçerli ayarları diske kaydet" + +#: ClientCommand.cpp:1967 +msgctxt "helpcmd|ListUsers|desc" +msgid "List all ZNC users and their connection status" +msgstr "Tüm ZNC kullanıcılarını ve bağlantı durumlarını listeleyin" + +#: ClientCommand.cpp:1970 +msgctxt "helpcmd|ListAllUserNetworks|desc" +msgid "List all ZNC users and their networks" +msgstr "Tüm ZNC kullanıcılarını ve ağlarını listeleyin" + +#: ClientCommand.cpp:1973 +msgctxt "helpcmd|ListChans|args" +msgid "[user ]" +msgstr "[kullanıcı ]" + +#: ClientCommand.cpp:1976 +msgctxt "helpcmd|ListClients|args" +msgid "[user]" +msgstr "[kullanıcı]" + +#: ClientCommand.cpp:1977 +msgctxt "helpcmd|ListClients|desc" +msgid "List all connected clients" +msgstr "Bağlı tüm istemcileri listele" + +#: ClientCommand.cpp:1979 +msgctxt "helpcmd|Traffic|desc" +msgid "Show basic traffic stats for all ZNC users" +msgstr "Tüm ZNC kullanıcıları için temel trafik istatistiklerini göster" + +#: ClientCommand.cpp:1981 +msgctxt "helpcmd|Broadcast|args" +msgid "[message]" +msgstr "[mesaj]" + +#: ClientCommand.cpp:1982 +msgctxt "helpcmd|Broadcast|desc" +msgid "Broadcast a message to all ZNC users" +msgstr "Tüm ZNC kullanıcılarına bir mesaj yayınlayın" + +#: ClientCommand.cpp:1985 +msgctxt "helpcmd|Shutdown|args" +msgid "[message]" +msgstr "[mesaj]" + +#: ClientCommand.cpp:1986 +msgctxt "helpcmd|Shutdown|desc" +msgid "Shut down ZNC completely" +msgstr "ZNC'yi tamamen kapatın" + +#: ClientCommand.cpp:1987 +msgctxt "helpcmd|Restart|args" +msgid "[message]" +msgstr "[mesaj]" + +#: ClientCommand.cpp:1988 +msgctxt "helpcmd|Restart|desc" +msgid "Restart ZNC" +msgstr "ZNC'yi yeniden başlatın" + +#: Socket.cpp:336 +msgid "Can't resolve server hostname" +msgstr "Sunucu hostname çözülemiyor" + +#: Socket.cpp:343 +msgid "" +"Can't resolve bind hostname. Try /znc ClearBindHost and /znc " +"ClearUserBindHost" +msgstr "" +"Bind Hostname çözülemiyor. /znc ClearBindHost ve /znc ClearUserBindHost'u " +"deneyin" + +#: Socket.cpp:348 +msgid "Server address is IPv4-only, but bindhost is IPv6-only" +msgstr "Sunucu adresi yalnızca IPv4'tür, ancak bind host yalnızca IPv6'dır" + +#: Socket.cpp:357 +msgid "Server address is IPv6-only, but bindhost is IPv4-only" +msgstr "Sunucu adresi yalnızca IPv6'dır, ancak bind host yalnızca IPv4'tür" + +#: Socket.cpp:515 +msgid "Some socket reached its max buffer limit and was closed!" +msgstr "Bazı soketler maksimum arabellek sınırına ulaştı ve kapatıldı!" + +#: SSLVerifyHost.cpp:481 +msgid "hostname doesn't match" +msgstr "hostname eşleşmiyor" + +#: SSLVerifyHost.cpp:485 +msgid "malformed hostname in certificate" +msgstr "sertifikada hatalı biçimlendirilmiş hostname" + +#: SSLVerifyHost.cpp:489 +msgid "hostname verification error" +msgstr "hostname doğrulama hatası" + +#: User.cpp:519 +msgid "" +"Invalid network name. It should be alphanumeric. Not to be confused with " +"server name" +msgstr "" +"Geçersiz ağ adı. Alfasayısal olmalıdır. Sunucu adıyla karıştırılmamalıdır" + +#: User.cpp:523 +msgid "Network {1} already exists" +msgstr "{1} ağı zaten mevcut" + +#: User.cpp:789 +msgid "" +"You are being disconnected because your IP is no longer allowed to connect " +"to this user" +msgstr "" +"IP'nizin artık bu kullanıcıya bağlanmasına izin verilmediğinden bağlantınız " +"kesiliyor" + +#: User.cpp:929 +msgid "Password is empty" +msgstr "Şifre boş" + +#: User.cpp:934 +msgid "Username is empty" +msgstr "Kullanıcı adı boş" + +#: User.cpp:939 +msgid "Username is invalid" +msgstr "Kullanıcı adı geçersiz" + +#: User.cpp:1214 +msgid "Unable to find modinfo {1}: {2}" +msgstr "{1} modülü yüklenemiyor: {2}" From 69c8eb0d0460a18f6ae79ad233ccc85a764272dd Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Sun, 24 Sep 2023 00:33:16 +0000 Subject: [PATCH 13/45] Update translations from Crowdin for pl_PL --- modules/po/log.pl_PL.po | 4 ++-- src/po/znc.pl_PL.po | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/po/log.pl_PL.po b/modules/po/log.pl_PL.po index ca02bf8c..968f3c40 100644 --- a/modules/po/log.pl_PL.po +++ b/modules/po/log.pl_PL.po @@ -149,10 +149,10 @@ msgstr "Niepoprawna ścieżka kronikowania [{1}]" msgid "Logging to [{1}]. Using timestamp format '{2}'" msgstr "Kronikowanie do [{1}]. Używanie formatu znacznika czasu '{2}'" -#: log.cpp:560 +#: log.cpp:576 msgid "[-sanitize] Optional path where to store logs." msgstr "[-sanitize] Opcjonalna ścieżka gdzie przechowywać kronikę." -#: log.cpp:564 +#: log.cpp:580 msgid "Writes IRC logs." msgstr "Zapisuje kroniki IRC." diff --git a/src/po/znc.pl_PL.po b/src/po/znc.pl_PL.po index 8af55e02..21950fde 100644 --- a/src/po/znc.pl_PL.po +++ b/src/po/znc.pl_PL.po @@ -249,32 +249,32 @@ msgid "" msgstr "" "Trwa rozłączanie, ponieważ inny użytkownik właśnie uwierzytelnił się jako Ty." -#: Client.cpp:1022 +#: Client.cpp:1026 msgid "Your CTCP to {1} got lost, you are not connected to IRC!" msgstr "Twoje CTCP do {1} zostało zgubione, nie jesteś połączony z IRC!" -#: Client.cpp:1148 +#: Client.cpp:1152 msgid "Your notice to {1} got lost, you are not connected to IRC!" msgstr "" "Twoje powiadomienie do {1} zostało zgubione, nie jesteś połączony z IRC!" -#: Client.cpp:1187 +#: Client.cpp:1191 msgid "Removing channel {1}" msgstr "Usuwanie kanału {1}" -#: Client.cpp:1265 +#: Client.cpp:1269 msgid "Your message to {1} got lost, you are not connected to IRC!" msgstr "Twoja wiadomość do {1} została zgubiona, nie jesteś połączony z IRC!" -#: Client.cpp:1318 Client.cpp:1324 +#: Client.cpp:1322 Client.cpp:1328 msgid "Hello. How may I help you?" msgstr "Witaj. Jak mogę ci pomóc?" -#: Client.cpp:1338 +#: Client.cpp:1342 msgid "Usage: /attach <#chans>" msgstr "Użycie: /attach <#kanały>" -#: Client.cpp:1345 Client.cpp:1367 ClientCommand.cpp:129 ClientCommand.cpp:151 +#: Client.cpp:1349 Client.cpp:1371 ClientCommand.cpp:129 ClientCommand.cpp:151 #: ClientCommand.cpp:423 ClientCommand.cpp:450 msgid "There was {1} channel matching [{2}]" msgid_plural "There were {1} channels matching [{2}]" @@ -283,7 +283,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: Client.cpp:1348 ClientCommand.cpp:132 +#: Client.cpp:1352 ClientCommand.cpp:132 msgid "Attached {1} channel" msgid_plural "Attached {1} channels" msgstr[0] "Podłączony {1} kanał" @@ -291,11 +291,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: Client.cpp:1360 +#: Client.cpp:1364 msgid "Usage: /detach <#chans>" msgstr "Użycie: /detach <#kanały>" -#: Client.cpp:1370 ClientCommand.cpp:154 +#: Client.cpp:1374 ClientCommand.cpp:154 msgid "Detached {1} channel" msgid_plural "Detached {1} channels" msgstr[0] "Odpięto kanał {1}" From a1a254bef1ad017b75ee912bfb33ae16234402c6 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sun, 24 Sep 2023 16:29:42 +0100 Subject: [PATCH 14/45] Update password hashes from SHA-256 to Argon2id These days salted SHA-256 is considered quite weak for passwords. Transparently upgrade existing hashes upon login. Bump cmake requirement to able to use IMPORTED_TARGET, this will allow further cleanup in next commits. --- .appveyor.yml | 2 +- .github/ubuntu_deps.sh | 2 +- CMakeLists.txt | 9 ++++- Dockerfile | 2 ++ configure | 1 + include/znc/User.h | 17 ++++++---- include/znc/Utils.h | 11 +++--- include/znc/version.h | 9 ++++- include/znc/zncconfig.h.cmake.in | 1 + src/CMakeLists.txt | 3 ++ src/User.cpp | 57 ++++++++++++++++++++++++++++---- src/Utils.cpp | 49 +++++++++++++++++++++++---- src/main.cpp | 9 ++--- src/znc.cpp | 6 ++-- test/integration/tests/core.cpp | 45 +++++++++++++++++++++++++ 15 files changed, 183 insertions(+), 40 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 3fabe3e4..d5bcd2e9 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -7,7 +7,7 @@ clone_depth: 10 install: - ps: Invoke-WebRequest https://cygwin.com/setup-x86_64.exe -OutFile c:\cygwin-setup.exe # libcrypt-devel is needed only on x86_64 and only for modperl... probably some dependency problem. - - c:\cygwin-setup.exe --quiet-mode --no-shortcuts --no-startmenu --no-desktop --upgrade-also --only-site --site http://cygwin.mirror.constant.com/ --root c:\cygwin-root --local-package-dir c:\cygwin-setup-cache --packages gcc-g++,make,pkg-config,wget,libssl-devel,libicu-devel,zlib-devel,libcrypt-devel,perl,python3-devel,swig,libsasl2-devel,libQt5Core-devel,cmake,libboost-devel,gettext-devel + - c:\cygwin-setup.exe --quiet-mode --no-shortcuts --no-startmenu --no-desktop --upgrade-also --only-site --site http://cygwin.mirror.constant.com/ --root c:\cygwin-root --local-package-dir c:\cygwin-setup-cache --packages gcc-g++,make,pkg-config,wget,libssl-devel,libicu-devel,zlib-devel,libcrypt-devel,perl,python3-devel,swig,libsasl2-devel,libQt5Core-devel,cmake,libboost-devel,gettext-devel,libargon2-devel - c:\cygwin-root\bin\sh -lc "echo Hi" - c:\cygwin-root\bin\sh -lc "uname -a" - c:\cygwin-root\bin\sh -lc "cat /proc/cpuinfo" diff --git a/.github/ubuntu_deps.sh b/.github/ubuntu_deps.sh index 30684cd8..2e6d12b2 100644 --- a/.github/ubuntu_deps.sh +++ b/.github/ubuntu_deps.sh @@ -1,4 +1,4 @@ sudo apt-get update -sudo apt-get install -y tcl-dev libsasl2-dev libicu-dev swig qtbase5-dev libboost-locale-dev libperl-dev cpanminus gettext clang llvm lcov +sudo apt-get install -y tcl-dev libsasl2-dev libicu-dev swig qtbase5-dev libboost-locale-dev libperl-dev libargon2-dev cpanminus gettext clang llvm lcov sudo apt-get upgrade -y diff --git a/CMakeLists.txt b/CMakeLists.txt index be6f93f0..1e76842c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.13) project(ZNC VERSION 1.9.0 LANGUAGES CXX) set(ZNC_VERSION 1.9.x) set(append_git_version true) @@ -135,6 +135,12 @@ if(WANT_CYRUS) endif() endif() +tristate_option(ARGON "Store password hashes using Argon2id instead of SHA-256") +if(WANT_ARGON) + pkg_check_modules(ARGON ${TRISTATE_ARGON_REQUIRED} IMPORTED_TARGET libargon2) +endif() +set(ZNC_HAVE_ARGON "${ARGON_FOUND}") + tristate_option(ICU "Support character encodings") if(WANT_ICU) pkg_check_modules(ICU ${TRISTATE_ICU_REQUIRED} icu-uc) @@ -447,6 +453,7 @@ summary_line("Cyrus " "${CYRUS_FOUND}") summary_line("Charset " "${ICU_FOUND}") summary_line("Zlib " "${ZLIB_FOUND}") summary_line("i18n " "${HAVE_I18N}") +summary_line("Argon2 " "${ZNC_HAVE_ARGON}") include(render_framed_multiline) render_framed_multiline("${summary_lines}") diff --git a/Dockerfile b/Dockerfile index d13c57fe..798f1062 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,7 @@ RUN set -x \ && adduser -S znc \ && addgroup -S znc RUN apk add --no-cache \ + argon2-libs \ boost \ build-base \ ca-certificates \ @@ -30,6 +31,7 @@ RUN apk add --no-cache \ tini \ tzdata RUN apk add --no-cache --virtual build-dependencies \ + argon2-dev \ boost-dev \ cyrus-sasl-dev \ perl-dev \ diff --git a/configure b/configure index 2ba1f2c9..c20e8c1e 100755 --- a/configure +++ b/configure @@ -83,6 +83,7 @@ tristate('cyrus') tristate('charset', 'ICU') tristate('tcl') tristate('i18n') +tristate('argon') class HandlePython(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): diff --git a/include/znc/User.h b/include/znc/User.h index fddd73e9..17f735c2 100644 --- a/include/znc/User.h +++ b/include/znc/User.h @@ -45,24 +45,27 @@ class CUser : private CCoreTranslationMixin { bool ParseConfig(CConfig* Config, CString& sError); - // TODO refactor this enum eHashType { HASH_NONE, HASH_MD5, HASH_SHA256, + HASH_ARGON2ID, - HASH_DEFAULT = HASH_SHA256 + // This should be kept in sync with CUtils::SaltedHash +#if ZNC_HAVE_ARGON + HASH_DEFAULT = HASH_ARGON2ID, +#else + HASH_DEFAULT = HASH_SHA256, +#endif }; - // If you change the default hash here and in HASH_DEFAULT, - // don't forget CUtils::sDefaultHash! - // TODO refactor this static CString SaltedHash(const CString& sPass, const CString& sSalt) { - return CUtils::SaltedSHA256Hash(sPass, sSalt); + return CUtils::SaltedHash(sPass, sSalt); } CConfig ToConfig() const; - bool CheckPass(const CString& sPass) const; + /** Checks password, may upgrade the hash method. */ + bool CheckPass(const CString& sPass); bool AddAllowedHost(const CString& sHostMask); bool RemAllowedHost(const CString& sHostMask); void ClearAllowedHosts(); diff --git a/include/znc/Utils.h b/include/znc/Utils.h index b4047195..c549dce6 100644 --- a/include/znc/Utils.h +++ b/include/znc/Utils.h @@ -51,15 +51,16 @@ class CUtils { static void PrintAction(const CString& sMessage); static void PrintStatus(bool bSuccess, const CString& sMessage = ""); -#ifndef SWIGPERL - // TODO refactor this - static const CString sDefaultHash; -#endif + /** Asks password from stdin, with confirmation. + * + * @returns Piece of znc.conf with block + * */ + static CString AskSaltedHashPassForConfig(); - static CString GetSaltedHashPass(CString& sSalt); static CString GetSalt(); static CString SaltedMD5Hash(const CString& sPass, const CString& sSalt); static CString SaltedSHA256Hash(const CString& sPass, const CString& sSalt); + static CString SaltedHash(const CString& sPass, const CString& sSalt); static CString GetPass(const CString& sPrompt); static bool GetInput(const CString& sPrompt, CString& sRet, const CString& sDefault = "", diff --git a/include/znc/version.h b/include/znc/version.h index 8cb9479a..191cf0b5 100644 --- a/include/znc/version.h +++ b/include/znc/version.h @@ -57,9 +57,16 @@ extern const char* ZNC_VERSION_EXTRA; #define ZNC_VERSION_TEXT_I18N "no" #endif +// This is only here because HASH_DEFAULT has different value +#ifdef ZNC_HAVE_ARGON +#define ZNC_VERSION_TEXT_ARGON "yes" +#else +#define ZNC_VERSION_TEXT_ARGON "no" +#endif + #define ZNC_COMPILE_OPTIONS_STRING \ "IPv6: " ZNC_VERSION_TEXT_IPV6 ", SSL: " ZNC_VERSION_TEXT_SSL \ ", DNS: " ZNC_VERSION_TEXT_DNS ", charset: " ZNC_VERSION_TEXT_ICU \ - ", i18n: " ZNC_VERSION_TEXT_I18N + ", i18n: " ZNC_VERSION_TEXT_I18N ", Argon2: " ZNC_VERSION_TEXT_ARGON #endif // !ZNC_VERSION_H diff --git a/include/znc/zncconfig.h.cmake.in b/include/znc/zncconfig.h.cmake.in index d2097502..42fc50a3 100644 --- a/include/znc/zncconfig.h.cmake.in +++ b/include/znc/zncconfig.h.cmake.in @@ -35,6 +35,7 @@ #cmakedefine HAVE_IPV6 1 #cmakedefine HAVE_ZLIB 1 #cmakedefine HAVE_I18N 1 +#cmakedefine ZNC_HAVE_ARGON 1 #cmakedefine CSOCK_USE_POLL 1 #cmakedefine HAVE_GETOPT_LONG 1 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c10767d2..c3eb3008 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -82,6 +82,9 @@ if(Boost_FOUND) target_link_libraries(znclib PRIVATE ${Boost_LIBRARIES}) list(APPEND znc_include_dirs ${Boost_INCLUDE_DIRS}) endif() +if(ZNC_HAVE_ARGON) + target_link_libraries(znclib PRIVATE PkgConfig::ARGON) +endif() target_link_libraries(znclib PRIVATE cctz::cctz) target_include_directories(znc PUBLIC ${znc_include_dirs}) target_include_directories(znclib PUBLIC ${znc_include_dirs}) diff --git a/src/User.cpp b/src/User.cpp index 5a240f97..00b43283 100644 --- a/src/User.cpp +++ b/src/User.cpp @@ -25,6 +25,10 @@ #include #include +#ifdef ZNC_HAVE_ARGON +#include +#endif + using std::vector; using std::set; @@ -346,7 +350,12 @@ bool CUser::ParseConfig(CConfig* pConfig, CString& sError) { method = CUser::HASH_MD5; else if (sMethod.Equals("sha256")) method = CUser::HASH_SHA256; - else { + else if (sMethod.Equals("Argon2id")) { + method = CUser::HASH_ARGON2ID; +#ifndef ZNC_HAVE_ARGON + CUtils::PrintError("ZNC is built without Argon2 support, " + GetUsername() + " won't be able to authenticate"); +#endif + } else { sError = "Invalid hash method"; CUtils::PrintError(sError); return false; @@ -958,6 +967,9 @@ CConfig CUser::ToConfig() const { case HASH_SHA256: sHash = "SHA256"; break; + case HASH_ARGON2ID: + sHash = "Argon2id"; + break; } passConfig.AddKeyValuePair("Salt", m_sPassSalt); passConfig.AddKeyValuePair("Method", sHash); @@ -1042,20 +1054,43 @@ CConfig CUser::ToConfig() const { return config; } -bool CUser::CheckPass(const CString& sPass) const { +bool CUser::CheckPass(const CString& sPass) { if(AuthOnlyViaModule() || CZNC::Get().GetAuthOnlyViaModule()) { return false; } + bool bResult = false; + bool bUpgrade = false; switch (m_eHashType) { case HASH_MD5: - return m_sPass.Equals(CUtils::SaltedMD5Hash(sPass, m_sPassSalt)); + bResult = m_sPass.Equals(CUtils::SaltedMD5Hash(sPass, m_sPassSalt)); + bUpgrade = true; + break; case HASH_SHA256: - return m_sPass.Equals(CUtils::SaltedSHA256Hash(sPass, m_sPassSalt)); + bResult = m_sPass.Equals(CUtils::SaltedSHA256Hash(sPass, m_sPassSalt)); +#if ZNC_HAVE_ARGON + bUpgrade = true; +#endif + break; + case HASH_ARGON2ID: +#if ZNC_HAVE_ARGON + return argon2id_verify(m_sPass.c_str(), sPass.data(), sPass.length()) == ARGON2_OK; +#else + CUtils::PrintError("ZNC is built without Argon2 support, " + GetUsername() + " cannot authenticate"); + return false; +#endif case HASH_NONE: - default: + // Don't upgrade hash, since the only valid use case for plain are + // manual tests, where it's simpler this way return (sPass == m_sPass); } + + if (bResult && bUpgrade) { + CString sSalt = CUtils::GetSalt(); + CString sHash = CUser::SaltedHash(sPass, sSalt); + SetPass(sHash, CUser::HASH_DEFAULT, sSalt); + } + return bResult; } /*CClient* CUser::GetClient() { @@ -1271,7 +1306,17 @@ void CUser::SetDCCBindHost(const CString& s) { m_sDCCBindHost = s; } void CUser::SetPass(const CString& s, eHashType eHash, const CString& sSalt) { m_sPass = s; m_eHashType = eHash; - m_sPassSalt = sSalt; + switch (eHash) { + case HASH_NONE: + case HASH_ARGON2ID: + // Salt is embedded in the encoded "hash" in argon + m_sPassSalt = ""; + break; + case HASH_MD5: + case HASH_SHA256: + m_sPassSalt = sSalt; + break; + } } void CUser::SetMultiClients(bool b) { m_bMultiClients = b; } void CUser::SetDenyLoadMod(bool b) { m_bDenyLoadMod = b; } diff --git a/src/Utils.cpp b/src/Utils.cpp index c10dfa60..c8cebc79 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -52,6 +52,10 @@ #include #endif +#ifdef ZNC_HAVE_ARGON +#include +#endif + // Required with GCC 4.3+ if openssl is disabled #include #include @@ -176,12 +180,24 @@ unsigned long CUtils::GetLongIP(const CString& sIP) { return ret; } -// If you change this here and in GetSaltedHashPass(), -// don't forget CUser::HASH_DEFAULT! -// TODO refactor this -const CString CUtils::sDefaultHash = "sha256"; -CString CUtils::GetSaltedHashPass(CString& sSalt) { - sSalt = GetSalt(); +#ifdef ZNC_HAVE_ARGON +static CString SaltedArgonHash(const CString& sPass, const CString& sSalt) { +#define ZNC_ARGON_PARAMS /* iterations */ 6, /* memory */ 6144, /* parallelism */ 1 + constexpr int iHashLen = 32; + CString sOut; + sOut.resize(argon2_encodedlen(ZNC_ARGON_PARAMS, sSalt.length(), iHashLen, Argon2_id) + 1); + int err = argon2id_hash_encoded(ZNC_ARGON_PARAMS, sPass.data(), sPass.length(), sSalt.data(), sSalt.length(), iHashLen, &sOut[0], sOut.length()); + if (err) { + CUtils::PrintError(argon2_error_message(err)); + sOut.clear(); + } + return sOut; +} +#undef ZNC_ARGON_PARAMS +#endif + +CString CUtils::AskSaltedHashPassForConfig() { + CString sSalt = GetSalt(); while (true) { CString pass1; @@ -195,7 +211,18 @@ CString CUtils::GetSaltedHashPass(CString& sSalt) { CUtils::PrintError("The supplied passwords did not match"); } else { // Construct the salted pass - return SaltedSHA256Hash(pass1, sSalt); + VCString vsLines; + vsLines.push_back(""); +#if ZNC_HAVE_ARGON + vsLines.push_back("\tMethod = Argon2id"); + vsLines.push_back("\tHash = " + SaltedArgonHash(pass1, sSalt)); +#else + vsLines.push_back("\tMethod = SHA256"); + vsLines.push_back("\tHash = " + SaltedSHA256Hash(pass1, sSalt)); + vsLines.push_back("\tSalt = " + sSalt); +#endif + vsLines.push_back(""); + return CString("\n").Join(vsLines.begin(), vsLines.end()); } } } @@ -210,6 +237,14 @@ CString CUtils::SaltedSHA256Hash(const CString& sPass, const CString& sSalt) { return CString(sPass + sSalt).SHA256(); } +CString CUtils::SaltedHash(const CString& sPass, const CString& sSalt) { +#ifdef ZNC_HAVE_ARGON + return SaltedArgonHash(sPass, sSalt); +#else + return SaltedSHA256Hash(sPass, sSalt); +#endif +} + CString CUtils::GetPass(const CString& sPrompt) { #ifdef HAVE_TCSETATTR // Disable echo diff --git a/src/main.cpp b/src/main.cpp index d8955c33..b76ce42a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -383,20 +383,15 @@ int main(int argc, char** argv) { #endif /* HAVE_LIBSSL */ if (bMakePass) { - CString sSalt; CUtils::PrintMessage("Type your new password."); - CString sHash = CUtils::GetSaltedHashPass(sSalt); + CString sPass = CUtils::AskSaltedHashPassForConfig(); CUtils::PrintMessage("Kill ZNC process, if it's running."); CUtils::PrintMessage( "Then replace password in the section of your config with " "this:"); // Not PrintMessage(), to remove [**] from the beginning, to ease // copypasting - std::cout << "" << std::endl; - std::cout << "\tMethod = " << CUtils::sDefaultHash << std::endl; - std::cout << "\tHash = " << sHash << std::endl; - std::cout << "\tSalt = " << sSalt << std::endl; - std::cout << "" << std::endl; + std::cout << sPass << std::endl; CUtils::PrintMessage( "After that start ZNC again, and you should be able to login with " "the new password."); diff --git a/src/znc.cpp b/src/znc.cpp index 89dd30ed..b19d7d7a 100644 --- a/src/znc.cpp +++ b/src/znc.cpp @@ -734,10 +734,8 @@ bool CZNC::WriteNewConfig(const CString& sConfigFile) { } while (!CUser::IsValidUsername(sUser)); vsLines.push_back(""); - CString sSalt; - sAnswer = CUtils::GetSaltedHashPass(sSalt); - vsLines.push_back("\tPass = " + CUtils::sDefaultHash + "#" + sAnswer + - "#" + sSalt + "#"); + sAnswer = CUtils::AskSaltedHashPassForConfig(); + vsLines.push_back(sAnswer); vsLines.push_back("\tAdmin = true"); diff --git a/test/integration/tests/core.cpp b/test/integration/tests/core.cpp index 95a7490d..602b995c 100644 --- a/test/integration/tests/core.cpp +++ b/test/integration/tests/core.cpp @@ -19,6 +19,7 @@ #include "znctest.h" using testing::HasSubstr; +using testing::ContainsRegex; namespace znc_inttest { namespace { @@ -430,5 +431,49 @@ TEST_F(ZNCTest, DenyOptions) { client2.ReadUntil("Access denied!"); } +TEST_F(ZNCTest, HashUpgrade) { + QFile conf(m_dir.path() + "/configs/znc.conf"); + ASSERT_TRUE(conf.open(QIODevice::Append | QIODevice::Text)); + QTextStream out(&conf); + out << R"( + + + Method = MD5 + Salt = abc + Hash = defdf93cef7fa7a8ee88e65d0e277b99 + + + )"; + out.flush(); + conf.close(); + auto znc = Run(); + auto ircd = ConnectIRCd(); + + auto client = ConnectClient(); + client.Write("PASS :hunter2"); + client.Write("NICK nick"); + client.Write("USER foo x x :x"); + client.ReadUntil("Welcome"); + client.Close(); + + client = LoginClient(); + client.Write("znc saveconfig"); + client.ReadUntil("Wrote config"); + + ASSERT_TRUE(conf.open(QIODevice::ReadOnly | QIODevice::Text)); + QTextStream in(&conf); + QString config = in.readAll(); + // It was upgraded to either Argon2 or SHA256 + EXPECT_THAT(config.toStdString(), Not(ContainsRegex("Method.*MD5"))); + + // Check that still can login after the upgrade + client = ConnectClient(); + client.Write("PASS :hunter2"); + client.Write("NICK nick"); + client.Write("USER foo x x :x"); + client.ReadUntil("Welcome"); + client.Close(); +} + } // namespace } // namespace znc_inttest From 458063a860ca6ca44469b903a613928b46b86de6 Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Thu, 28 Sep 2023 00:33:39 +0000 Subject: [PATCH 15/45] Update translations from Crowdin for bg_BG da_DK el_GR fr_FR id_ID nl_NL --- src/po/znc.bg_BG.po | 28 ++++++++++++++-------------- src/po/znc.da_DK.po | 28 ++++++++++++++-------------- src/po/znc.el_GR.po | 28 ++++++++++++++-------------- src/po/znc.fr_FR.po | 28 ++++++++++++++-------------- src/po/znc.id_ID.po | 28 ++++++++++++++-------------- src/po/znc.nl_NL.po | 28 ++++++++++++++-------------- src/po/znc.pot | 28 ++++++++++++++-------------- 7 files changed, 98 insertions(+), 98 deletions(-) diff --git a/src/po/znc.bg_BG.po b/src/po/znc.bg_BG.po index d2160525..ad1b58e1 100644 --- a/src/po/znc.bg_BG.po +++ b/src/po/znc.bg_BG.po @@ -51,27 +51,27 @@ msgid "" "code>”). Once you have loaded some Web-enabled modules, the menu will expand." msgstr "" -#: znc.cpp:1554 +#: znc.cpp:1552 msgid "User already exists" msgstr "" -#: znc.cpp:1662 +#: znc.cpp:1660 msgid "IPv6 is not enabled" msgstr "" -#: znc.cpp:1670 +#: znc.cpp:1668 msgid "SSL is not enabled" msgstr "" -#: znc.cpp:1678 +#: znc.cpp:1676 msgid "Unable to locate pem file: {1}" msgstr "" -#: znc.cpp:1697 +#: znc.cpp:1695 msgid "Invalid port" msgstr "" -#: znc.cpp:1813 ClientCommand.cpp:1720 +#: znc.cpp:1811 ClientCommand.cpp:1720 msgid "Unable to bind: {1}" msgstr "" @@ -79,7 +79,7 @@ msgstr "" msgid "Jumping servers because this server is no longer in the list" msgstr "" -#: IRCNetwork.cpp:671 User.cpp:690 +#: IRCNetwork.cpp:671 User.cpp:699 msgid "Welcome to ZNC" msgstr "" @@ -1904,34 +1904,34 @@ msgstr "" msgid "hostname verification error" msgstr "" -#: User.cpp:519 +#: User.cpp:528 msgid "" "Invalid network name. It should be alphanumeric. Not to be confused with " "server name" msgstr "" -#: User.cpp:523 +#: User.cpp:532 msgid "Network {1} already exists" msgstr "" -#: User.cpp:789 +#: User.cpp:798 msgid "" "You are being disconnected because your IP is no longer allowed to connect " "to this user" msgstr "" -#: User.cpp:929 +#: User.cpp:938 msgid "Password is empty" msgstr "" -#: User.cpp:934 +#: User.cpp:943 msgid "Username is empty" msgstr "" -#: User.cpp:939 +#: User.cpp:948 msgid "Username is invalid" msgstr "" -#: User.cpp:1214 +#: User.cpp:1249 msgid "Unable to find modinfo {1}: {2}" msgstr "" diff --git a/src/po/znc.da_DK.po b/src/po/znc.da_DK.po index 740fda87..0a0cf3e3 100644 --- a/src/po/znc.da_DK.po +++ b/src/po/znc.da_DK.po @@ -51,27 +51,27 @@ msgid "" "code>”). Once you have loaded some Web-enabled modules, the menu will expand." msgstr "" -#: znc.cpp:1554 +#: znc.cpp:1552 msgid "User already exists" msgstr "Brugeren eksisterer allerede" -#: znc.cpp:1662 +#: znc.cpp:1660 msgid "IPv6 is not enabled" msgstr "IPv6 er ikke aktiveret" -#: znc.cpp:1670 +#: znc.cpp:1668 msgid "SSL is not enabled" msgstr "SSL er ikke aktiveret" -#: znc.cpp:1678 +#: znc.cpp:1676 msgid "Unable to locate pem file: {1}" msgstr "" -#: znc.cpp:1697 +#: znc.cpp:1695 msgid "Invalid port" msgstr "Ugyldig port" -#: znc.cpp:1813 ClientCommand.cpp:1720 +#: znc.cpp:1811 ClientCommand.cpp:1720 msgid "Unable to bind: {1}" msgstr "" @@ -79,7 +79,7 @@ msgstr "" msgid "Jumping servers because this server is no longer in the list" msgstr "" -#: IRCNetwork.cpp:671 User.cpp:690 +#: IRCNetwork.cpp:671 User.cpp:699 msgid "Welcome to ZNC" msgstr "Velkommen til ZNC" @@ -1904,34 +1904,34 @@ msgstr "" msgid "hostname verification error" msgstr "" -#: User.cpp:519 +#: User.cpp:528 msgid "" "Invalid network name. It should be alphanumeric. Not to be confused with " "server name" msgstr "" -#: User.cpp:523 +#: User.cpp:532 msgid "Network {1} already exists" msgstr "" -#: User.cpp:789 +#: User.cpp:798 msgid "" "You are being disconnected because your IP is no longer allowed to connect " "to this user" msgstr "" -#: User.cpp:929 +#: User.cpp:938 msgid "Password is empty" msgstr "" -#: User.cpp:934 +#: User.cpp:943 msgid "Username is empty" msgstr "" -#: User.cpp:939 +#: User.cpp:948 msgid "Username is invalid" msgstr "" -#: User.cpp:1214 +#: User.cpp:1249 msgid "Unable to find modinfo {1}: {2}" msgstr "" diff --git a/src/po/znc.el_GR.po b/src/po/znc.el_GR.po index baa2fc2f..a0665cd1 100644 --- a/src/po/znc.el_GR.po +++ b/src/po/znc.el_GR.po @@ -51,27 +51,27 @@ msgid "" "code>”). Once you have loaded some Web-enabled modules, the menu will expand." msgstr "" -#: znc.cpp:1554 +#: znc.cpp:1552 msgid "User already exists" msgstr "" -#: znc.cpp:1662 +#: znc.cpp:1660 msgid "IPv6 is not enabled" msgstr "" -#: znc.cpp:1670 +#: znc.cpp:1668 msgid "SSL is not enabled" msgstr "" -#: znc.cpp:1678 +#: znc.cpp:1676 msgid "Unable to locate pem file: {1}" msgstr "" -#: znc.cpp:1697 +#: znc.cpp:1695 msgid "Invalid port" msgstr "" -#: znc.cpp:1813 ClientCommand.cpp:1720 +#: znc.cpp:1811 ClientCommand.cpp:1720 msgid "Unable to bind: {1}" msgstr "" @@ -79,7 +79,7 @@ msgstr "" msgid "Jumping servers because this server is no longer in the list" msgstr "" -#: IRCNetwork.cpp:671 User.cpp:690 +#: IRCNetwork.cpp:671 User.cpp:699 msgid "Welcome to ZNC" msgstr "" @@ -1904,34 +1904,34 @@ msgstr "" msgid "hostname verification error" msgstr "" -#: User.cpp:519 +#: User.cpp:528 msgid "" "Invalid network name. It should be alphanumeric. Not to be confused with " "server name" msgstr "" -#: User.cpp:523 +#: User.cpp:532 msgid "Network {1} already exists" msgstr "" -#: User.cpp:789 +#: User.cpp:798 msgid "" "You are being disconnected because your IP is no longer allowed to connect " "to this user" msgstr "" -#: User.cpp:929 +#: User.cpp:938 msgid "Password is empty" msgstr "" -#: User.cpp:934 +#: User.cpp:943 msgid "Username is empty" msgstr "" -#: User.cpp:939 +#: User.cpp:948 msgid "Username is invalid" msgstr "" -#: User.cpp:1214 +#: User.cpp:1249 msgid "Unable to find modinfo {1}: {2}" msgstr "" diff --git a/src/po/znc.fr_FR.po b/src/po/znc.fr_FR.po index 85c8be04..a6ec5b8e 100644 --- a/src/po/znc.fr_FR.po +++ b/src/po/znc.fr_FR.po @@ -55,27 +55,27 @@ msgstr "" "loadmod <module>”). Les modules avec des capacités web " "apparaîtront ci-dessous." -#: znc.cpp:1554 +#: znc.cpp:1552 msgid "User already exists" msgstr "Cet utilisateur existe déjà" -#: znc.cpp:1662 +#: znc.cpp:1660 msgid "IPv6 is not enabled" msgstr "IPv6 n'est pas activé" -#: znc.cpp:1670 +#: znc.cpp:1668 msgid "SSL is not enabled" msgstr "SSL n'est pas activé" -#: znc.cpp:1678 +#: znc.cpp:1676 msgid "Unable to locate pem file: {1}" msgstr "Impossible de trouver le fichier pem : {1}" -#: znc.cpp:1697 +#: znc.cpp:1695 msgid "Invalid port" msgstr "Port invalide" -#: znc.cpp:1813 ClientCommand.cpp:1720 +#: znc.cpp:1811 ClientCommand.cpp:1720 msgid "Unable to bind: {1}" msgstr "Impossible d'utiliser le port : {1}" @@ -84,7 +84,7 @@ msgid "Jumping servers because this server is no longer in the list" msgstr "" "Connexion au serveur suivant, le serveur actuel n'est plus dans la liste" -#: IRCNetwork.cpp:671 User.cpp:690 +#: IRCNetwork.cpp:671 User.cpp:699 msgid "Welcome to ZNC" msgstr "Bienvenue sur ZNC" @@ -1977,7 +1977,7 @@ msgstr "le nom d'hôte du certificat est incorrect" msgid "hostname verification error" msgstr "erreur de vérification du nom d'hôte" -#: User.cpp:519 +#: User.cpp:528 msgid "" "Invalid network name. It should be alphanumeric. Not to be confused with " "server name" @@ -1985,11 +1985,11 @@ msgstr "" "Nom de réseau invalide. Il devrait être alphanumérique. Ne pas confondre " "avec le nom du serveur" -#: User.cpp:523 +#: User.cpp:532 msgid "Network {1} already exists" msgstr "Le réseau {1} existe déjà" -#: User.cpp:789 +#: User.cpp:798 msgid "" "You are being disconnected because your IP is no longer allowed to connect " "to this user" @@ -1997,18 +1997,18 @@ msgstr "" "Vous avez été déconnecté car votre adresse IP n'est plus autorisée à se " "connecter à cet utilisateur" -#: User.cpp:929 +#: User.cpp:938 msgid "Password is empty" msgstr "Le mot de passe est vide" -#: User.cpp:934 +#: User.cpp:943 msgid "Username is empty" msgstr "L'identifiant est vide" -#: User.cpp:939 +#: User.cpp:948 msgid "Username is invalid" msgstr "L'identifiant est invalide" -#: User.cpp:1214 +#: User.cpp:1249 msgid "Unable to find modinfo {1}: {2}" msgstr "Impossible de trouver d'information sur le module {1} : {2}" diff --git a/src/po/znc.id_ID.po b/src/po/znc.id_ID.po index 2792bb0e..e838ef96 100644 --- a/src/po/znc.id_ID.po +++ b/src/po/znc.id_ID.po @@ -54,27 +54,27 @@ msgstr "" "status help \" dan \"/msg * status loadmod <module>" "\"). Setelah anda memuat beberapa modul Web-enabled, menu ini akan diperluas." -#: znc.cpp:1554 +#: znc.cpp:1552 msgid "User already exists" msgstr "Pengguna sudah ada" -#: znc.cpp:1662 +#: znc.cpp:1660 msgid "IPv6 is not enabled" msgstr "IPv6 tidak diaktifkan" -#: znc.cpp:1670 +#: znc.cpp:1668 msgid "SSL is not enabled" msgstr "SSL tidak diaktifkan" -#: znc.cpp:1678 +#: znc.cpp:1676 msgid "Unable to locate pem file: {1}" msgstr "Tidak dapat menemukan berkas pem: {1}" -#: znc.cpp:1697 +#: znc.cpp:1695 msgid "Invalid port" msgstr "Port tidak valid" -#: znc.cpp:1813 ClientCommand.cpp:1720 +#: znc.cpp:1811 ClientCommand.cpp:1720 msgid "Unable to bind: {1}" msgstr "Tidak dapat mengikat: {1}" @@ -82,7 +82,7 @@ msgstr "Tidak dapat mengikat: {1}" msgid "Jumping servers because this server is no longer in the list" msgstr "Melompati server karena server ini tidak lagi dalam daftar" -#: IRCNetwork.cpp:671 User.cpp:690 +#: IRCNetwork.cpp:671 User.cpp:699 msgid "Welcome to ZNC" msgstr "Selamat datang di ZNC" @@ -1913,34 +1913,34 @@ msgstr "" msgid "hostname verification error" msgstr "" -#: User.cpp:519 +#: User.cpp:528 msgid "" "Invalid network name. It should be alphanumeric. Not to be confused with " "server name" msgstr "" -#: User.cpp:523 +#: User.cpp:532 msgid "Network {1} already exists" msgstr "" -#: User.cpp:789 +#: User.cpp:798 msgid "" "You are being disconnected because your IP is no longer allowed to connect " "to this user" msgstr "" -#: User.cpp:929 +#: User.cpp:938 msgid "Password is empty" msgstr "" -#: User.cpp:934 +#: User.cpp:943 msgid "Username is empty" msgstr "" -#: User.cpp:939 +#: User.cpp:948 msgid "Username is invalid" msgstr "" -#: User.cpp:1214 +#: User.cpp:1249 msgid "Unable to find modinfo {1}: {2}" msgstr "" diff --git a/src/po/znc.nl_NL.po b/src/po/znc.nl_NL.po index bd5ffe45..83604dd8 100644 --- a/src/po/znc.nl_NL.po +++ b/src/po/znc.nl_NL.po @@ -54,27 +54,27 @@ msgstr "" "msg *status help” en “/msg *status loadmod <module>”). Zodra je deze geladen hebt zal dit menu zich uitbreiden." -#: znc.cpp:1554 +#: znc.cpp:1552 msgid "User already exists" msgstr "Gebruiker bestaat al" -#: znc.cpp:1662 +#: znc.cpp:1660 msgid "IPv6 is not enabled" msgstr "IPv6 is niet ingeschakeld" -#: znc.cpp:1670 +#: znc.cpp:1668 msgid "SSL is not enabled" msgstr "SSL is niet ingeschakeld" -#: znc.cpp:1678 +#: znc.cpp:1676 msgid "Unable to locate pem file: {1}" msgstr "Kan PEM bestand niet vinden: {1}" -#: znc.cpp:1697 +#: znc.cpp:1695 msgid "Invalid port" msgstr "Ongeldige poort" -#: znc.cpp:1813 ClientCommand.cpp:1720 +#: znc.cpp:1811 ClientCommand.cpp:1720 msgid "Unable to bind: {1}" msgstr "Kan niet binden: {1}" @@ -84,7 +84,7 @@ msgstr "" "We schakelen over naar een andere server omdat deze server niet langer in de " "lijst staat" -#: IRCNetwork.cpp:671 User.cpp:690 +#: IRCNetwork.cpp:671 User.cpp:699 msgid "Welcome to ZNC" msgstr "Welkom bij ZNC" @@ -1979,7 +1979,7 @@ msgstr "misvormde hostnaam in certificaat" msgid "hostname verification error" msgstr "hostnaam verificatiefout" -#: User.cpp:519 +#: User.cpp:528 msgid "" "Invalid network name. It should be alphanumeric. Not to be confused with " "server name" @@ -1987,11 +1987,11 @@ msgstr "" "Ongeldige netwerknaam. Deze moet alfanumeriek zijn. Niet te verwarren met " "server naam" -#: User.cpp:523 +#: User.cpp:532 msgid "Network {1} already exists" msgstr "Netwerk {1} bestaat al" -#: User.cpp:789 +#: User.cpp:798 msgid "" "You are being disconnected because your IP is no longer allowed to connect " "to this user" @@ -1999,18 +1999,18 @@ msgstr "" "Je verbinding wordt verbroken omdat het niet meer toegestaan is om met jouw " "IP-adres naar deze gebruiker te verbinden" -#: User.cpp:929 +#: User.cpp:938 msgid "Password is empty" msgstr "Wachtwoord is leeg" -#: User.cpp:934 +#: User.cpp:943 msgid "Username is empty" msgstr "Gebruikersnaam is leeg" -#: User.cpp:939 +#: User.cpp:948 msgid "Username is invalid" msgstr "Gebruikersnaam is ongeldig" -#: User.cpp:1214 +#: User.cpp:1249 msgid "Unable to find modinfo {1}: {2}" msgstr "Kan modinfo niet vinden {1}: {2}" diff --git a/src/po/znc.pot b/src/po/znc.pot index 305b0496..fafcf51e 100644 --- a/src/po/znc.pot +++ b/src/po/znc.pot @@ -42,27 +42,27 @@ msgid "" "code>”). Once you have loaded some Web-enabled modules, the menu will expand." msgstr "" -#: znc.cpp:1554 +#: znc.cpp:1552 msgid "User already exists" msgstr "" -#: znc.cpp:1662 +#: znc.cpp:1660 msgid "IPv6 is not enabled" msgstr "" -#: znc.cpp:1670 +#: znc.cpp:1668 msgid "SSL is not enabled" msgstr "" -#: znc.cpp:1678 +#: znc.cpp:1676 msgid "Unable to locate pem file: {1}" msgstr "" -#: znc.cpp:1697 +#: znc.cpp:1695 msgid "Invalid port" msgstr "" -#: znc.cpp:1813 ClientCommand.cpp:1720 +#: znc.cpp:1811 ClientCommand.cpp:1720 msgid "Unable to bind: {1}" msgstr "" @@ -70,7 +70,7 @@ msgstr "" msgid "Jumping servers because this server is no longer in the list" msgstr "" -#: IRCNetwork.cpp:671 User.cpp:690 +#: IRCNetwork.cpp:671 User.cpp:699 msgid "Welcome to ZNC" msgstr "" @@ -1895,34 +1895,34 @@ msgstr "" msgid "hostname verification error" msgstr "" -#: User.cpp:519 +#: User.cpp:528 msgid "" "Invalid network name. It should be alphanumeric. Not to be confused with " "server name" msgstr "" -#: User.cpp:523 +#: User.cpp:532 msgid "Network {1} already exists" msgstr "" -#: User.cpp:789 +#: User.cpp:798 msgid "" "You are being disconnected because your IP is no longer allowed to connect " "to this user" msgstr "" -#: User.cpp:929 +#: User.cpp:938 msgid "Password is empty" msgstr "" -#: User.cpp:934 +#: User.cpp:943 msgid "Username is empty" msgstr "" -#: User.cpp:939 +#: User.cpp:948 msgid "Username is invalid" msgstr "" -#: User.cpp:1214 +#: User.cpp:1249 msgid "Unable to find modinfo {1}: {2}" msgstr "" From b5edca59eb1fbc5c59d91262928044b0f43a2149 Mon Sep 17 00:00:00 2001 From: Eric Mertens Date: Thu, 28 Sep 2023 11:43:01 -0700 Subject: [PATCH 16/45] route_replies: add 337 to whois solanum uses 337 to report when a user's idle time is hidden by umode +I. libera.chat has enabled this mode making the replies available to users today. --- modules/route_replies.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/route_replies.cpp b/modules/route_replies.cpp index a183577f..583b4f33 100644 --- a/modules/route_replies.cpp +++ b/modules/route_replies.cpp @@ -70,6 +70,7 @@ static const struct { {"276", false}, /* oftc-hybrid RPL_WHOISCERTFP */ {"330", false}, /* ratbox RPL_WHOISLOGGEDIN aka ircu RPL_WHOISACCOUNT */ + {"337", false}, /* solanum RPL_WHOISTEXT -- "is hiding their idle time" */ {"338", false}, /* ircu RPL_WHOISACTUALLY -- "actually using host" */ {"378", false}, /* RPL_WHOISHOST -- real address of vhosts */ {"671", false}, /* RPL_WHOISSECURE */ From 8c00ddb33079691fa3386316ac460fa26355b4a1 Mon Sep 17 00:00:00 2001 From: Eric Mertens Date: Thu, 28 Sep 2023 13:02:13 -0700 Subject: [PATCH 17/45] Update route_replies.cpp --- modules/route_replies.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/route_replies.cpp b/modules/route_replies.cpp index 583b4f33..3ed1709e 100644 --- a/modules/route_replies.cpp +++ b/modules/route_replies.cpp @@ -25,7 +25,7 @@ struct reply { // TODO this list is far from complete, no errors are handled static const struct { const char* szRequest; - struct reply vReplies[20]; + struct reply vReplies[21]; } vRouteReplies[] = { {"WHO", {{"402", true}, /* rfc1459 ERR_NOSUCHSERVER */ From 4228754ffb430a10d9ebac38290aaab32391725b Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Thu, 28 Sep 2023 22:11:48 +0100 Subject: [PATCH 18/45] Use imported targets in cmake more consistently --- CMakeLists.txt | 4 ++-- modules/CMakeLists.txt | 3 +-- src/CMakeLists.txt | 12 ++++-------- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e76842c..9e00a4f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,7 +110,7 @@ set(HAVE_ZLIB "${ZLIB_FOUND}") tristate_option(CYRUS "Support authentication with Cyrus") if(WANT_CYRUS) - pkg_check_modules(CYRUS libsasl2) + pkg_check_modules(CYRUS IMPORTED_TARGET libsasl2) if(NOT CYRUS_FOUND) # libsasl2.pc is missing on 2.1.25 which is on ubuntu 14.04 # next ubuntu version has 2.1.26 which has libsasl2.pc @@ -143,7 +143,7 @@ set(ZNC_HAVE_ARGON "${ARGON_FOUND}") tristate_option(ICU "Support character encodings") if(WANT_ICU) - pkg_check_modules(ICU ${TRISTATE_ICU_REQUIRED} icu-uc) + pkg_check_modules(ICU ${TRISTATE_ICU_REQUIRED} IMPORTED_TARGET icu-uc) endif() set(HAVE_ICU "${ICU_FOUND}") diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index 1a0f73eb..a71dcf03 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -54,8 +54,7 @@ function(add_python_module mod modpath) endfunction() if(CYRUS_FOUND) - set(modcompile_cyrusauth PRIVATE ${CYRUS_CFLAGS}) - set(modlink_cyrusauth ${CYRUS_LDFLAGS}) + set(modlink_cyrusauth PkgConfig::CYRUS) else() set(moddisable_cyrusauth true) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c3eb3008..51fc0e3f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -67,20 +67,16 @@ set(znc_include_dirs "$") target_link_libraries(znclib PRIVATE ${CMAKE_DL_LIBS} Threads::Threads) if(OPENSSL_FOUND) - target_link_libraries(znclib PUBLIC ${OPENSSL_LIBRARIES}) - list(APPEND znc_include_dirs "${OPENSSL_INCLUDE_DIR}") + target_link_libraries(znclib PUBLIC OpenSSL::SSL) endif() if(ZLIB_FOUND) - target_link_libraries(znclib PRIVATE ${ZLIB_LIBRARIES}) - list(APPEND znc_include_dirs ${ZLIB_INCLUDE_DIRS}) + target_link_libraries(znclib PRIVATE ZLIB::ZLIB) endif() if(ICU_FOUND) - target_link_libraries(znclib PUBLIC ${ICU_LDFLAGS}) - list(APPEND znc_include_dirs ${ICU_INCLUDE_DIRS}) + target_link_libraries(znclib PUBLIC PkgConfig::ICU) endif() if(Boost_FOUND) - target_link_libraries(znclib PRIVATE ${Boost_LIBRARIES}) - list(APPEND znc_include_dirs ${Boost_INCLUDE_DIRS}) + target_link_libraries(znclib PRIVATE Boost::locale) endif() if(ZNC_HAVE_ARGON) target_link_libraries(znclib PRIVATE PkgConfig::ARGON) From a69e6b8566f0a7a10874c69d5058a463d0301f45 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Thu, 28 Sep 2023 22:36:48 +0100 Subject: [PATCH 19/45] Maybe fix build on macos --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e76842c..ae6cda77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -297,6 +297,10 @@ else() add_library(cctz::cctz ALIAS cctz) target_include_directories(cctz INTERFACE $) + if (APPLE) + find_library(CoreFoundation CoreFoundation REQUIRED) + target_link_libraries(cctz INTERFACE ${CoreFoundation}) + endif() endif() check_cxx_symbol_exists(getopt_long "getopt.h" HAVE_GETOPT_LONG) From 3e65551567d94a64250873f71427721adb8b40a7 Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Fri, 29 Sep 2023 00:34:39 +0000 Subject: [PATCH 20/45] Update translations from Crowdin for bg_BG da_DK de_DE el_GR fr_FR nl_NL --- modules/po/route_replies.bg_BG.po | 22 +++++++++++----------- modules/po/route_replies.da_DK.po | 22 +++++++++++----------- modules/po/route_replies.de_DE.po | 22 +++++++++++----------- modules/po/route_replies.el_GR.po | 22 +++++++++++----------- modules/po/route_replies.fr_FR.po | 22 +++++++++++----------- modules/po/route_replies.nl_NL.po | 22 +++++++++++----------- modules/po/route_replies.pot | 22 +++++++++++----------- src/po/znc.de_DE.po | 28 ++++++++++++++-------------- 8 files changed, 91 insertions(+), 91 deletions(-) diff --git a/modules/po/route_replies.bg_BG.po b/modules/po/route_replies.bg_BG.po index 58718e75..19ef3f0e 100644 --- a/modules/po/route_replies.bg_BG.po +++ b/modules/po/route_replies.bg_BG.po @@ -12,48 +12,48 @@ msgstr "" "Language-Team: Bulgarian\n" "Language: bg_BG\n" -#: route_replies.cpp:227 +#: route_replies.cpp:228 msgid "[yes|no]" msgstr "" -#: route_replies.cpp:228 +#: route_replies.cpp:229 msgid "Decides whether to show the timeout messages or not" msgstr "" -#: route_replies.cpp:374 +#: route_replies.cpp:375 msgid "This module hit a timeout which is probably a connectivity issue." msgstr "" -#: route_replies.cpp:377 +#: route_replies.cpp:378 msgid "" "However, if you can provide steps to reproduce this issue, please do report " "a bug." msgstr "" -#: route_replies.cpp:380 +#: route_replies.cpp:381 msgid "To disable this message, do \"/msg {1} silent yes\"" msgstr "" -#: route_replies.cpp:382 +#: route_replies.cpp:383 msgid "Last request: {1}" msgstr "" -#: route_replies.cpp:383 +#: route_replies.cpp:384 msgid "Expected replies:" msgstr "" -#: route_replies.cpp:387 +#: route_replies.cpp:388 msgid "{1} (last)" msgstr "" -#: route_replies.cpp:459 +#: route_replies.cpp:460 msgid "Timeout messages are disabled." msgstr "" -#: route_replies.cpp:460 +#: route_replies.cpp:461 msgid "Timeout messages are enabled." msgstr "" -#: route_replies.cpp:481 +#: route_replies.cpp:482 msgid "Send replies (e.g. to /who) to the right client only" msgstr "" diff --git a/modules/po/route_replies.da_DK.po b/modules/po/route_replies.da_DK.po index 99193dac..4b3f36e1 100644 --- a/modules/po/route_replies.da_DK.po +++ b/modules/po/route_replies.da_DK.po @@ -12,48 +12,48 @@ msgstr "" "Language-Team: Danish\n" "Language: da_DK\n" -#: route_replies.cpp:227 +#: route_replies.cpp:228 msgid "[yes|no]" msgstr "" -#: route_replies.cpp:228 +#: route_replies.cpp:229 msgid "Decides whether to show the timeout messages or not" msgstr "" -#: route_replies.cpp:374 +#: route_replies.cpp:375 msgid "This module hit a timeout which is probably a connectivity issue." msgstr "" -#: route_replies.cpp:377 +#: route_replies.cpp:378 msgid "" "However, if you can provide steps to reproduce this issue, please do report " "a bug." msgstr "" -#: route_replies.cpp:380 +#: route_replies.cpp:381 msgid "To disable this message, do \"/msg {1} silent yes\"" msgstr "" -#: route_replies.cpp:382 +#: route_replies.cpp:383 msgid "Last request: {1}" msgstr "" -#: route_replies.cpp:383 +#: route_replies.cpp:384 msgid "Expected replies:" msgstr "" -#: route_replies.cpp:387 +#: route_replies.cpp:388 msgid "{1} (last)" msgstr "" -#: route_replies.cpp:459 +#: route_replies.cpp:460 msgid "Timeout messages are disabled." msgstr "" -#: route_replies.cpp:460 +#: route_replies.cpp:461 msgid "Timeout messages are enabled." msgstr "" -#: route_replies.cpp:481 +#: route_replies.cpp:482 msgid "Send replies (e.g. to /who) to the right client only" msgstr "" diff --git a/modules/po/route_replies.de_DE.po b/modules/po/route_replies.de_DE.po index ea86fe17..80c74ab3 100644 --- a/modules/po/route_replies.de_DE.po +++ b/modules/po/route_replies.de_DE.po @@ -12,23 +12,23 @@ msgstr "" "Language-Team: German\n" "Language: de_DE\n" -#: route_replies.cpp:227 +#: route_replies.cpp:228 msgid "[yes|no]" msgstr "[ja|nein]" -#: route_replies.cpp:228 +#: route_replies.cpp:229 msgid "Decides whether to show the timeout messages or not" msgstr "" "Entscheidet ob eine Zeitüberschreitungsnachricht angezeigt werden soll oder " "nicht" -#: route_replies.cpp:374 +#: route_replies.cpp:375 msgid "This module hit a timeout which is probably a connectivity issue." msgstr "" "Dieses Modul hatte eine Zeitüberschreitung, was wahrscheinlich ein " "Verbindungsproblem ist." -#: route_replies.cpp:377 +#: route_replies.cpp:378 msgid "" "However, if you can provide steps to reproduce this issue, please do report " "a bug." @@ -36,30 +36,30 @@ msgstr "" "Falls du allerdings die Schritte zum Reproduzieren dieses Problems angeben " "kannst, dann erstelle bitte einen Fehlerbericht." -#: route_replies.cpp:380 +#: route_replies.cpp:381 msgid "To disable this message, do \"/msg {1} silent yes\"" msgstr "Um diese Nachricht zu deaktivieren, mache \"/msg {1} silent yes\"" -#: route_replies.cpp:382 +#: route_replies.cpp:383 msgid "Last request: {1}" msgstr "Letzte Anfrage: {1}" -#: route_replies.cpp:383 +#: route_replies.cpp:384 msgid "Expected replies:" msgstr "Erwartete Antworten:" -#: route_replies.cpp:387 +#: route_replies.cpp:388 msgid "{1} (last)" msgstr "{1} (letzte)" -#: route_replies.cpp:459 +#: route_replies.cpp:460 msgid "Timeout messages are disabled." msgstr "Zeitüberschreitungsnachrichten sind deaktiviert." -#: route_replies.cpp:460 +#: route_replies.cpp:461 msgid "Timeout messages are enabled." msgstr "Zeitüberschreitungsnachrichten sind aktiviert." -#: route_replies.cpp:481 +#: route_replies.cpp:482 msgid "Send replies (e.g. to /who) to the right client only" msgstr "Sende Antworten (z.B. auf /who) nur zum richtigen Klienten" diff --git a/modules/po/route_replies.el_GR.po b/modules/po/route_replies.el_GR.po index fc44951e..a59b6181 100644 --- a/modules/po/route_replies.el_GR.po +++ b/modules/po/route_replies.el_GR.po @@ -12,48 +12,48 @@ msgstr "" "Language-Team: Greek\n" "Language: el_GR\n" -#: route_replies.cpp:227 +#: route_replies.cpp:228 msgid "[yes|no]" msgstr "" -#: route_replies.cpp:228 +#: route_replies.cpp:229 msgid "Decides whether to show the timeout messages or not" msgstr "" -#: route_replies.cpp:374 +#: route_replies.cpp:375 msgid "This module hit a timeout which is probably a connectivity issue." msgstr "" -#: route_replies.cpp:377 +#: route_replies.cpp:378 msgid "" "However, if you can provide steps to reproduce this issue, please do report " "a bug." msgstr "" -#: route_replies.cpp:380 +#: route_replies.cpp:381 msgid "To disable this message, do \"/msg {1} silent yes\"" msgstr "" -#: route_replies.cpp:382 +#: route_replies.cpp:383 msgid "Last request: {1}" msgstr "" -#: route_replies.cpp:383 +#: route_replies.cpp:384 msgid "Expected replies:" msgstr "" -#: route_replies.cpp:387 +#: route_replies.cpp:388 msgid "{1} (last)" msgstr "" -#: route_replies.cpp:459 +#: route_replies.cpp:460 msgid "Timeout messages are disabled." msgstr "" -#: route_replies.cpp:460 +#: route_replies.cpp:461 msgid "Timeout messages are enabled." msgstr "" -#: route_replies.cpp:481 +#: route_replies.cpp:482 msgid "Send replies (e.g. to /who) to the right client only" msgstr "" diff --git a/modules/po/route_replies.fr_FR.po b/modules/po/route_replies.fr_FR.po index a954162d..e6ae22ce 100644 --- a/modules/po/route_replies.fr_FR.po +++ b/modules/po/route_replies.fr_FR.po @@ -12,48 +12,48 @@ msgstr "" "Language-Team: French\n" "Language: fr_FR\n" -#: route_replies.cpp:227 +#: route_replies.cpp:228 msgid "[yes|no]" msgstr "" -#: route_replies.cpp:228 +#: route_replies.cpp:229 msgid "Decides whether to show the timeout messages or not" msgstr "" -#: route_replies.cpp:374 +#: route_replies.cpp:375 msgid "This module hit a timeout which is probably a connectivity issue." msgstr "" -#: route_replies.cpp:377 +#: route_replies.cpp:378 msgid "" "However, if you can provide steps to reproduce this issue, please do report " "a bug." msgstr "" -#: route_replies.cpp:380 +#: route_replies.cpp:381 msgid "To disable this message, do \"/msg {1} silent yes\"" msgstr "" -#: route_replies.cpp:382 +#: route_replies.cpp:383 msgid "Last request: {1}" msgstr "" -#: route_replies.cpp:383 +#: route_replies.cpp:384 msgid "Expected replies:" msgstr "" -#: route_replies.cpp:387 +#: route_replies.cpp:388 msgid "{1} (last)" msgstr "" -#: route_replies.cpp:459 +#: route_replies.cpp:460 msgid "Timeout messages are disabled." msgstr "" -#: route_replies.cpp:460 +#: route_replies.cpp:461 msgid "Timeout messages are enabled." msgstr "" -#: route_replies.cpp:481 +#: route_replies.cpp:482 msgid "Send replies (e.g. to /who) to the right client only" msgstr "" diff --git a/modules/po/route_replies.nl_NL.po b/modules/po/route_replies.nl_NL.po index 6fc7190a..eceb0a94 100644 --- a/modules/po/route_replies.nl_NL.po +++ b/modules/po/route_replies.nl_NL.po @@ -12,21 +12,21 @@ msgstr "" "Language-Team: Dutch\n" "Language: nl_NL\n" -#: route_replies.cpp:227 +#: route_replies.cpp:228 msgid "[yes|no]" msgstr "[yes|no]" -#: route_replies.cpp:228 +#: route_replies.cpp:229 msgid "Decides whether to show the timeout messages or not" msgstr "Beslist of time-out berichten laten zien worden of niet" -#: route_replies.cpp:374 +#: route_replies.cpp:375 msgid "This module hit a timeout which is probably a connectivity issue." msgstr "" "Deze module heeft een time-out geraakt, dit is waarschijnlijk een " "connectiviteitsprobleem." -#: route_replies.cpp:377 +#: route_replies.cpp:378 msgid "" "However, if you can provide steps to reproduce this issue, please do report " "a bug." @@ -34,30 +34,30 @@ msgstr "" "Maar, als je de stappen kan herproduceren, stuur alsjeblieft een bugrapport " "hier mee." -#: route_replies.cpp:380 +#: route_replies.cpp:381 msgid "To disable this message, do \"/msg {1} silent yes\"" msgstr "Om dit bericht uit te zetten, doe \"/msg {1} silent yes\"" -#: route_replies.cpp:382 +#: route_replies.cpp:383 msgid "Last request: {1}" msgstr "Laatste aanvraag: {1}" -#: route_replies.cpp:383 +#: route_replies.cpp:384 msgid "Expected replies:" msgstr "Verwachte antwoorden:" -#: route_replies.cpp:387 +#: route_replies.cpp:388 msgid "{1} (last)" msgstr "{1} (laatste)" -#: route_replies.cpp:459 +#: route_replies.cpp:460 msgid "Timeout messages are disabled." msgstr "Time-out berichten uitgeschakeld." -#: route_replies.cpp:460 +#: route_replies.cpp:461 msgid "Timeout messages are enabled." msgstr "Time-out berichten ingeschakeld." -#: route_replies.cpp:481 +#: route_replies.cpp:482 msgid "Send replies (e.g. to /who) to the right client only" msgstr "Stuur antwoorden (zoals /who) alleen naar de juiste clients" diff --git a/modules/po/route_replies.pot b/modules/po/route_replies.pot index 4bc76d3f..98e495ca 100644 --- a/modules/po/route_replies.pot +++ b/modules/po/route_replies.pot @@ -3,48 +3,48 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: route_replies.cpp:227 +#: route_replies.cpp:228 msgid "[yes|no]" msgstr "" -#: route_replies.cpp:228 +#: route_replies.cpp:229 msgid "Decides whether to show the timeout messages or not" msgstr "" -#: route_replies.cpp:374 +#: route_replies.cpp:375 msgid "This module hit a timeout which is probably a connectivity issue." msgstr "" -#: route_replies.cpp:377 +#: route_replies.cpp:378 msgid "" "However, if you can provide steps to reproduce this issue, please do report " "a bug." msgstr "" -#: route_replies.cpp:380 +#: route_replies.cpp:381 msgid "To disable this message, do \"/msg {1} silent yes\"" msgstr "" -#: route_replies.cpp:382 +#: route_replies.cpp:383 msgid "Last request: {1}" msgstr "" -#: route_replies.cpp:383 +#: route_replies.cpp:384 msgid "Expected replies:" msgstr "" -#: route_replies.cpp:387 +#: route_replies.cpp:388 msgid "{1} (last)" msgstr "" -#: route_replies.cpp:459 +#: route_replies.cpp:460 msgid "Timeout messages are disabled." msgstr "" -#: route_replies.cpp:460 +#: route_replies.cpp:461 msgid "Timeout messages are enabled." msgstr "" -#: route_replies.cpp:481 +#: route_replies.cpp:482 msgid "Send replies (e.g. to /who) to the right client only" msgstr "" diff --git a/src/po/znc.de_DE.po b/src/po/znc.de_DE.po index 5292713c..1e56ac0d 100644 --- a/src/po/znc.de_DE.po +++ b/src/po/znc.de_DE.po @@ -55,27 +55,27 @@ msgstr "" "code>\"). Sobald einige Web-fähige Module geladen wurden, wird das Menü " "größer." -#: znc.cpp:1554 +#: znc.cpp:1552 msgid "User already exists" msgstr "Benutzer existiert bereits" -#: znc.cpp:1662 +#: znc.cpp:1660 msgid "IPv6 is not enabled" msgstr "IPv6 ist nicht aktiviert" -#: znc.cpp:1670 +#: znc.cpp:1668 msgid "SSL is not enabled" msgstr "SSL ist nicht aktiviert" -#: znc.cpp:1678 +#: znc.cpp:1676 msgid "Unable to locate pem file: {1}" msgstr "Kann PEM-Datei nicht finden: {1}" -#: znc.cpp:1697 +#: znc.cpp:1695 msgid "Invalid port" msgstr "Ungültiger Port" -#: znc.cpp:1813 ClientCommand.cpp:1720 +#: znc.cpp:1811 ClientCommand.cpp:1720 msgid "Unable to bind: {1}" msgstr "Kann nicht horchen: {1}" @@ -84,7 +84,7 @@ msgid "Jumping servers because this server is no longer in the list" msgstr "" "Springe zu einem Server, da dieser Server nicht länger in der Liste ist" -#: IRCNetwork.cpp:671 User.cpp:690 +#: IRCNetwork.cpp:671 User.cpp:699 msgid "Welcome to ZNC" msgstr "Willkommen bei ZNC" @@ -1984,7 +1984,7 @@ msgstr "fehlerhafter Hostname im Zertifikat" msgid "hostname verification error" msgstr "hostnamen-Überprüfung fehlgeschlagen" -#: User.cpp:519 +#: User.cpp:528 msgid "" "Invalid network name. It should be alphanumeric. Not to be confused with " "server name" @@ -1992,11 +1992,11 @@ msgstr "" "Ungültiger Netzwerkname. Er sollte alpha-numerisch sein. Nicht mit Server-" "Namen verwechseln" -#: User.cpp:523 +#: User.cpp:532 msgid "Network {1} already exists" msgstr "Netzwerk {1} existiert bereits" -#: User.cpp:789 +#: User.cpp:798 msgid "" "You are being disconnected because your IP is no longer allowed to connect " "to this user" @@ -2004,18 +2004,18 @@ msgstr "" "Deine Verbindung wird geschlossen da deine IP sich nicht länger zu diesem " "Benutzer verbinden darf" -#: User.cpp:929 +#: User.cpp:938 msgid "Password is empty" msgstr "Passwort ist leer" -#: User.cpp:934 +#: User.cpp:943 msgid "Username is empty" msgstr "Benutzername ist leer" -#: User.cpp:939 +#: User.cpp:948 msgid "Username is invalid" msgstr "Benutzername ist ungültig" -#: User.cpp:1214 +#: User.cpp:1249 msgid "Unable to find modinfo {1}: {2}" msgstr "Kann Modulinformationen für {1} nicht finden: {2}" From 1987eb37aec194ace3a9a7bdcf31911a6c5b11ad Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 00:11:10 +0100 Subject: [PATCH 21/45] Add necessary find_dependency() to ZNCConfig.cmake --- CMakeLists.txt | 8 +++ ZNCConfig.cmake.in | 4 ++ cmake/CMakeFindDependencyMacroPC.cmake | 99 ++++++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 cmake/CMakeFindDependencyMacroPC.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e00a4f1..6906bb45 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,6 +79,8 @@ macro(tristate_option opt help) endif() endmacro() +set(ZNC_CMAKE_FIND_DEPS "") + tristate_option(OPENSSL "Support SSL") if(WANT_OPENSSL) find_package(OpenSSL ${TRISTATE_OPENSSL_REQUIRED}) @@ -95,6 +97,8 @@ if(WANT_OPENSSL) HAVE_SSL_SESSION_get0_cipher) endfunction() check_SSL_SESSION_get0_cipher() + set(ZNC_CMAKE_FIND_DEPS + "${ZNC_CMAKE_FIND_DEPS}\nfind_dependency(OpenSSL)") endif() endif() set(HAVE_LIBSSL "${OPENSSL_FOUND}") @@ -146,6 +150,9 @@ if(WANT_ICU) pkg_check_modules(ICU ${TRISTATE_ICU_REQUIRED} IMPORTED_TARGET icu-uc) endif() set(HAVE_ICU "${ICU_FOUND}") +if(ICU_FOUND) + set(ZNC_CMAKE_FIND_DEPS "${ZNC_CMAKE_FIND_DEPS}\nfind_dependency_pc(ICU icu-uc)") +endif() set(WANT_PERL false CACHE BOOL "Support Perl modules") set(WANT_PYTHON false CACHE BOOL "Support Python modules") @@ -421,6 +428,7 @@ include(CMakePackageConfigHelpers) write_basic_package_version_file("ZNCConfigVersion.cmake" COMPATIBILITY AnyNewerVersion) install(FILES + "${PROJECT_SOURCE_DIR}/cmake/CMakeFindDependencyMacroPC.cmake" "${PROJECT_BINARY_DIR}/ZNCConfig.cmake" "${PROJECT_BINARY_DIR}/ZNCConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_DATADIR}/znc/cmake") diff --git a/ZNCConfig.cmake.in b/ZNCConfig.cmake.in index a41aa78d..68d3e82f 100644 --- a/ZNCConfig.cmake.in +++ b/ZNCConfig.cmake.in @@ -14,6 +14,10 @@ # limitations under the License. # +include(CMakeFindDependencyMacro) +include("${CMAKE_CURRENT_LIST_DIR}/CMakeFindDependencyMacroPC.cmake") +@ZNC_CMAKE_FIND_DEPS@ + include("${CMAKE_CURRENT_LIST_DIR}/znc_internal.cmake") include("${CMAKE_CURRENT_LIST_DIR}/znc_public.cmake") include(CMakeParseArguments) diff --git a/cmake/CMakeFindDependencyMacroPC.cmake b/cmake/CMakeFindDependencyMacroPC.cmake new file mode 100644 index 00000000..6dda0ec4 --- /dev/null +++ b/cmake/CMakeFindDependencyMacroPC.cmake @@ -0,0 +1,99 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#[=======================================================================[.rst: +CMakeFindDependencyMacro +------------------------ + +.. command:: find_dependency + + The ``find_dependency()`` macro wraps a :command:`find_package` call for + a package dependency:: + + find_dependency( [...]) + + It is designed to be used in a + :ref:`Package Configuration File ` + (``Config.cmake``). ``find_dependency`` forwards the correct + parameters for ``QUIET`` and ``REQUIRED`` which were passed to + the original :command:`find_package` call. Any additional arguments + specified are forwarded to :command:`find_package`. + + If the dependency could not be found it sets an informative diagnostic + message and calls :command:`return` to end processing of the calling + package configuration file and return to the :command:`find_package` + command that loaded it. + + .. note:: + + The call to :command:`return` makes this macro unsuitable to call + from :ref:`Find Modules`. + +Package Dependency Search Optimizations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If ``find_dependency`` is called with arguments identical to a previous +call in the same directory, perhaps due to diamond-shaped package +dependencies, the underlying call to :command:`find_package` is optimized +out. This optimization is important to support large package dependency +graphs while avoiding a combinatorial explosion of repeated searches. +However, the heuristic cannot account for ambient variables that +affect package behavior, such as ``_USE_STATIC_LIBS``, +offered by some packages. Therefore package configuration files should +avoid setting such variables before their calls to ``find_dependency``. + +.. versionchanged:: 3.15 + Previously, the underlying call to :command:`find_package` was always + optimized out if the package had already been found. CMake 3.15 + removed the optimization to support cases in which ``find_dependency`` + call arguments request different components. + +.. versionchanged:: 3.26 + The pre-3.15 optimization was restored, but with the above-described + heuristic to account for varying ``find_dependency`` call arguments. + +#]=======================================================================] + +macro(find_dependency_pc dep) +find_dependency(PkgConfig) + string(SHA256 cmake_fd_call_hash "${dep};${ARGN};${${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED}") + if(_CMAKE_${dep}_${cmake_fd_call_hash}_FOUND) + unset(cmake_fd_call_hash) + else() + list(APPEND _CMAKE_${dep}_HASH_STACK ${cmake_fd_call_hash}) + set(cmake_fd_quiet_arg) + if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) + set(cmake_fd_quiet_arg QUIET) + endif() + set(cmake_fd_required_arg) + if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED) + set(cmake_fd_required_arg REQUIRED) + endif() + + get_property(cmake_fd_alreadyTransitive GLOBAL PROPERTY + _CMAKE_${dep}_TRANSITIVE_DEPENDENCY + ) + + pkg_check_modules(${dep} + ${cmake_fd_quiet_arg} + ${cmake_fd_required_arg} + IMPORTED_TARGET ${ARGN} + ) + list(POP_BACK _CMAKE_${dep}_HASH_STACK cmake_fd_call_hash) + set("_CMAKE_${dep}_${cmake_fd_call_hash}_FOUND" "${${dep}_FOUND}") + + if(NOT DEFINED cmake_fd_alreadyTransitive OR cmake_fd_alreadyTransitive) + set_property(GLOBAL PROPERTY _CMAKE_${dep}_TRANSITIVE_DEPENDENCY TRUE) + endif() + + unset(cmake_fd_alreadyTransitive) + unset(cmake_fd_call_hash) + unset(cmake_fd_quiet_arg) + unset(cmake_fd_required_arg) + if (NOT ${dep}_FOUND) + set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency ${dep} could not be found.") + set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False) + return() + endif() + endif() +endmacro() From 901c318028382af08ff18b9291c06840d98625fc Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 03:11:30 +0100 Subject: [PATCH 22/45] Maybe fix macos build again --- CMakeLists.txt | 3 +++ modules/CMakeLists.txt | 5 +---- src/CMakeLists.txt | 7 +------ 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 86a9f62d..2c671de8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,6 +80,7 @@ macro(tristate_option opt help) endmacro() set(ZNC_CMAKE_FIND_DEPS "") +set(zncpubdeps) tristate_option(OPENSSL "Support SSL") if(WANT_OPENSSL) @@ -99,6 +100,7 @@ if(WANT_OPENSSL) check_SSL_SESSION_get0_cipher() set(ZNC_CMAKE_FIND_DEPS "${ZNC_CMAKE_FIND_DEPS}\nfind_dependency(OpenSSL)") + list(APPEND zncpubdeps OpenSSL::SSL) endif() endif() set(HAVE_LIBSSL "${OPENSSL_FOUND}") @@ -152,6 +154,7 @@ endif() set(HAVE_ICU "${ICU_FOUND}") if(ICU_FOUND) set(ZNC_CMAKE_FIND_DEPS "${ZNC_CMAKE_FIND_DEPS}\nfind_dependency_pc(ICU icu-uc)") + list(APPEND zncpubdeps PkgConfig::ICU) endif() set(WANT_PERL false CACHE BOOL "Support Perl modules") diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index a71dcf03..a737285d 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -37,11 +37,8 @@ function(add_cxx_module mod modpath) if(moddepend_${mod}) add_dependencies("module_${mod}" ${moddepend_${mod}}) endif() - # ${znclib_LIB_DEPENDS} is to overcome OSX's need for -undefined suppress - # when accessing symbols exported by dependencies of znclib (e.g. - # openssl), but not used in znclib itself target_link_libraries("module_${mod}" PRIVATE ZNC ${modlink_${mod}} - ${znclib_LIB_DEPENDS}) + ${zncpubdeps}) set_target_properties("module_${mod}" PROPERTIES "" "" ${modprop_${mod}}) install(TARGETS "module_${mod}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/znc") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 51fc0e3f..961ffc95 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -66,21 +66,16 @@ set(znc_include_dirs "$" "$") target_link_libraries(znclib PRIVATE ${CMAKE_DL_LIBS} Threads::Threads) -if(OPENSSL_FOUND) - target_link_libraries(znclib PUBLIC OpenSSL::SSL) -endif() if(ZLIB_FOUND) target_link_libraries(znclib PRIVATE ZLIB::ZLIB) endif() -if(ICU_FOUND) - target_link_libraries(znclib PUBLIC PkgConfig::ICU) -endif() if(Boost_FOUND) target_link_libraries(znclib PRIVATE Boost::locale) endif() if(ZNC_HAVE_ARGON) target_link_libraries(znclib PRIVATE PkgConfig::ARGON) endif() +target_link_libraries(znclib PUBLIC ${zncpubdeps}) target_link_libraries(znclib PRIVATE cctz::cctz) target_include_directories(znc PUBLIC ${znc_include_dirs}) target_include_directories(znclib PUBLIC ${znc_include_dirs}) From 31e883f4a6b05356757d03cc086a3fdfa3268b16 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 03:14:19 +0100 Subject: [PATCH 23/45] Re-enable macos CI --- .github/workflows/build.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 64e1e7cb..7f6fb252 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -100,18 +100,18 @@ jobs: #CXXFLAGS: "-fsanitize=undefined -O1 -fPIE -fno-sanitize-recover" #LDFLAGS: "-fsanitize=undefined -pie -fno-sanitize-recover" - #macos: - #name: macOS - #runs-on: macos-latest - #steps: - #- uses: actions/checkout@v3 - #with: - #submodules: true - #- run: | - #brew update - #brew install icu4c qt5 gettext pkg-config cpanminus boost - #- run: source .github/build.sh - #- uses: codecov/codecov-action@v3 + macos: + name: macOS + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - run: | + brew update + brew install icu4c qt5 gettext pkg-config cpanminus boost + - run: source .github/build.sh + - uses: codecov/codecov-action@v3 docker: name: Docker push From 5f2f3b29347b83ac5edf926fac922263c1e1cb6e Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 09:24:44 +0100 Subject: [PATCH 24/45] Apple libsasl2 is still missing the .pc file --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c671de8..b27d2072 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -132,7 +132,9 @@ if(WANT_CYRUS) CYRUS_HARDCODED) set(CMAKE_REQUIRED_LIBRARIES "${_old_cmake_required_libraries}") if(CYRUS_HARDCODED) - set(CYRUS_LDFLAGS -lsasl2) + add_library(HardcodedCyrusDep INTERFACE) + add_library(PkgConfig::CYRUS ALIAS HardcodedCyrusDep) + target_link_libraries(HardcodedCyrusDep INTERFACE sasl2) set(CYRUS_FOUND true) endif() endif() From 57188cda045a6464e5f995e4c565ac2ad09757fd Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 10:07:21 +0100 Subject: [PATCH 25/45] Pass list of deps to modperl and modpython bindings too --- modules/modperl/CMakeLists.txt | 2 +- modules/modpython/CMakeLists.txt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/modperl/CMakeLists.txt b/modules/modperl/CMakeLists.txt index baac04e0..59befc29 100644 --- a/modules/modperl/CMakeLists.txt +++ b/modules/modperl/CMakeLists.txt @@ -82,7 +82,7 @@ target_include_directories(modperl_lib PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/.." "${CMAKE_CURRENT_SOURCE_DIR}/.." ${PERL_INCLUDE_DIRS}) -target_link_libraries(modperl_lib ${znc_link}) +target_link_libraries(modperl_lib ${znc_link} ${zncpubdeps}) set_target_properties(modperl_lib PROPERTIES PREFIX "" SUFFIX ".${perl_ext}" diff --git a/modules/modpython/CMakeLists.txt b/modules/modpython/CMakeLists.txt index 8c1fcc24..8a217041 100644 --- a/modules/modpython/CMakeLists.txt +++ b/modules/modpython/CMakeLists.txt @@ -75,7 +75,8 @@ target_include_directories(modpython_lib PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/.." "${CMAKE_CURRENT_SOURCE_DIR}/.." ${Python3_INCLUDE_DIRS}) -target_link_libraries(modpython_lib ${znc_link} ${Python3_LDFLAGS}) +target_link_libraries(modpython_lib ${znc_link} ${Python3_LDFLAGS} + ${zncpubdeps}) set_target_properties(modpython_lib PROPERTIES PREFIX "_" OUTPUT_NAME "znc_core" From 40875f1dbda4468482a3febbda7e727486f7ca85 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 10:56:26 +0100 Subject: [PATCH 26/45] Use use_homebrew in znc-buildmod --- CMakeLists.txt | 1 + ZNCConfig.cmake.in | 1 + 2 files changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index b27d2072..63375083 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -438,6 +438,7 @@ write_basic_package_version_file("ZNCConfigVersion.cmake" COMPATIBILITY AnyNewerVersion) install(FILES "${PROJECT_SOURCE_DIR}/cmake/CMakeFindDependencyMacroPC.cmake" + "${PROJECT_SOURCE_DIR}/cmake/use_homebrew.cmake" "${PROJECT_BINARY_DIR}/ZNCConfig.cmake" "${PROJECT_BINARY_DIR}/ZNCConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_DATADIR}/znc/cmake") diff --git a/ZNCConfig.cmake.in b/ZNCConfig.cmake.in index 68d3e82f..1760bb46 100644 --- a/ZNCConfig.cmake.in +++ b/ZNCConfig.cmake.in @@ -16,6 +16,7 @@ include(CMakeFindDependencyMacro) include("${CMAKE_CURRENT_LIST_DIR}/CMakeFindDependencyMacroPC.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/use_homebrew.cmake") @ZNC_CMAKE_FIND_DEPS@ include("${CMAKE_CURRENT_LIST_DIR}/znc_internal.cmake") From 66faa38f6712ccf0d188aa0f470a0a2ea6ad61df Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 11:33:29 +0100 Subject: [PATCH 27/45] Maybe fix znc-buildmod on macos --- ZNCConfig.cmake.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ZNCConfig.cmake.in b/ZNCConfig.cmake.in index 1760bb46..c2591fad 100644 --- a/ZNCConfig.cmake.in +++ b/ZNCConfig.cmake.in @@ -47,7 +47,7 @@ function(znc_setup_module) SUFFIX ".so" NO_SONAME true CXX_VISIBILITY_PRESET "hidden") - target_link_libraries("${znc_mod_TARGET}" PRIVATE ZNC::ZNC) + target_link_libraries("${znc_mod_TARGET}" PRIVATE ZNC::ZNC @zncpubdeps@) endfunction() message(STATUS "Found ZNC @ZNC_VERSION@") From afe94158a75a68ddeb398e96b091008fa2b0c4e0 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 11:59:53 +0100 Subject: [PATCH 28/45] Try to simplify building modules --- ZNCConfig.cmake.in | 2 +- modules/CMakeLists.txt | 3 +-- modules/modperl/CMakeLists.txt | 2 +- modules/modpython/CMakeLists.txt | 3 +-- src/CMakeLists.txt | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/ZNCConfig.cmake.in b/ZNCConfig.cmake.in index c2591fad..1760bb46 100644 --- a/ZNCConfig.cmake.in +++ b/ZNCConfig.cmake.in @@ -47,7 +47,7 @@ function(znc_setup_module) SUFFIX ".so" NO_SONAME true CXX_VISIBILITY_PRESET "hidden") - target_link_libraries("${znc_mod_TARGET}" PRIVATE ZNC::ZNC @zncpubdeps@) + target_link_libraries("${znc_mod_TARGET}" PRIVATE ZNC::ZNC) endfunction() message(STATUS "Found ZNC @ZNC_VERSION@") diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index a737285d..409e1f27 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -37,8 +37,7 @@ function(add_cxx_module mod modpath) if(moddepend_${mod}) add_dependencies("module_${mod}" ${moddepend_${mod}}) endif() - target_link_libraries("module_${mod}" PRIVATE ZNC ${modlink_${mod}} - ${zncpubdeps}) + target_link_libraries("module_${mod}" PRIVATE ZNC ${modlink_${mod}}) set_target_properties("module_${mod}" PROPERTIES "" "" ${modprop_${mod}}) install(TARGETS "module_${mod}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/znc") diff --git a/modules/modperl/CMakeLists.txt b/modules/modperl/CMakeLists.txt index 59befc29..4edf5191 100644 --- a/modules/modperl/CMakeLists.txt +++ b/modules/modperl/CMakeLists.txt @@ -82,7 +82,7 @@ target_include_directories(modperl_lib PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/.." "${CMAKE_CURRENT_SOURCE_DIR}/.." ${PERL_INCLUDE_DIRS}) -target_link_libraries(modperl_lib ${znc_link} ${zncpubdeps}) +target_link_libraries(modperl_lib ZNC) set_target_properties(modperl_lib PROPERTIES PREFIX "" SUFFIX ".${perl_ext}" diff --git a/modules/modpython/CMakeLists.txt b/modules/modpython/CMakeLists.txt index 8a217041..bc92b428 100644 --- a/modules/modpython/CMakeLists.txt +++ b/modules/modpython/CMakeLists.txt @@ -75,8 +75,7 @@ target_include_directories(modpython_lib PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/.." "${CMAKE_CURRENT_SOURCE_DIR}/.." ${Python3_INCLUDE_DIRS}) -target_link_libraries(modpython_lib ${znc_link} ${Python3_LDFLAGS} - ${zncpubdeps}) +target_link_libraries(modpython_lib ZNC ${Python3_LDFLAGS}) set_target_properties(modpython_lib PROPERTIES PREFIX "_" OUTPUT_NAME "znc_core" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 961ffc95..cf919088 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -100,7 +100,7 @@ target_compile_features(znc PUBLIC ${required_cxx11_features}) target_compile_features(znclib PUBLIC ${required_cxx11_features}) add_library(ZNC INTERFACE) -target_link_libraries(ZNC INTERFACE ${znc_link}) +target_link_libraries(ZNC INTERFACE ${znc_link} ${zncpubdeps}) target_compile_definitions(ZNC INTERFACE "znc_export_lib_EXPORTS") if(HAVE_I18N) From 72d1544dc2c87e6971884df508665741b721ac15 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 12:02:01 +0100 Subject: [PATCH 29/45] Use llvm-cov in macos CI --- .github/build.sh | 3 +++ .github/workflows/build.yml | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/.github/build.sh b/.github/build.sh index 3a277a6b..527e9196 100644 --- a/.github/build.sh +++ b/.github/build.sh @@ -43,6 +43,9 @@ case "${CC:-gcc}" in lcov --list lcov-coverage.txt ;; clang) + if [[ x$(uname) == xDarwin ]]; then + export PATH=$PATH:/Library/Developer/CommandLineTools/usr/bin + fi llvm-profdata merge unittest.profraw -o unittest.profdata llvm-profdata merge inttest.profraw -o inttest.profdata llvm-cov show -show-line-counts-or-regions -instr-profile=unittest.profdata test/unittest_bin > unittest-cmake-coverage.txt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7f6fb252..7bd10638 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -103,6 +103,10 @@ jobs: macos: name: macOS runs-on: macos-latest + env: + # This doesn't make big difference, since it's the same compiler, but we also use this variable to select lcov vs llvm-cov + CXX: clang++ + CC: clang steps: - uses: actions/checkout@v3 with: From 2b9a582d3e37780d93e3ba2e97637198c88477e9 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 14:43:15 +0100 Subject: [PATCH 30/45] Bump cmake requirements in subprojects too --- cmake/cxx11check/CMakeLists.txt | 2 +- cmake/perl_check/CMakeLists.txt | 2 +- src/CMakeLists.txt | 5 ----- test/integration/CMakeLists.txt | 2 +- znc-buildmod.cmake.in | 2 +- 5 files changed, 4 insertions(+), 9 deletions(-) diff --git a/cmake/cxx11check/CMakeLists.txt b/cmake/cxx11check/CMakeLists.txt index eef4b966..c9da4946 100644 --- a/cmake/cxx11check/CMakeLists.txt +++ b/cmake/cxx11check/CMakeLists.txt @@ -14,7 +14,7 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.13) project(cxx11check LANGUAGES CXX) set(CMAKE_VERBOSE_MAKEFILE true) diff --git a/cmake/perl_check/CMakeLists.txt b/cmake/perl_check/CMakeLists.txt index c8f02258..7ecf7504 100644 --- a/cmake/perl_check/CMakeLists.txt +++ b/cmake/perl_check/CMakeLists.txt @@ -14,7 +14,7 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.13) project(perl_check LANGUAGES CXX) set(CMAKE_VERBOSE_MAKEFILE true) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cf919088..d9ef245c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,11 +14,6 @@ # limitations under the License. # -if(CMAKE_VERSION VERSION_LESS 3.2) - # Since 3.2 it does this automatically from BYPRODUCTS - set_source_files_properties("versionc.cpp" PROPERTIES GENERATED true) -endif() - set(znc_cpp "ZNCString.cpp" "znc.cpp" "IRCNetwork.cpp" "Translation.cpp" "IRCSock.cpp" "Client.cpp" "Chan.cpp" "Nick.cpp" "Server.cpp" "Modules.cpp" "MD5.cpp" "Buffer.cpp" "Utils.cpp" "FileUtils.cpp" diff --git a/test/integration/CMakeLists.txt b/test/integration/CMakeLists.txt index 211998ea..5b16001f 100644 --- a/test/integration/CMakeLists.txt +++ b/test/integration/CMakeLists.txt @@ -14,7 +14,7 @@ # limitations under the License. # -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.13) project(ZNCIntegrationTest LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) diff --git a/znc-buildmod.cmake.in b/znc-buildmod.cmake.in index 9645d060..aae49ede 100755 --- a/znc-buildmod.cmake.in +++ b/znc-buildmod.cmake.in @@ -56,7 +56,7 @@ args = parser.parse_args() with tempfile.TemporaryDirectory() as cmdir: with open(os.path.join(cmdir, 'CMakeLists.txt'), 'w') as cm: - print('cmake_minimum_required(VERSION 3.1)', file=cm) + print('cmake_minimum_required(VERSION 3.13)', file=cm) print('project(ExternalModules LANGUAGES CXX)', file=cm) print('find_package(ZNC @ZNC_VERSION_MAJOR@.@ZNC_VERSION_MINOR@ HINTS ' '@CMAKE_INSTALL_FULL_DATADIR@/znc REQUIRED)', file=cm) From ce04d4c6d40db1afea4b24be90c953f1185c2b6d Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 30 Sep 2023 21:39:13 +0100 Subject: [PATCH 31/45] Add a comment --- cmake/CMakeFindDependencyMacroPC.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/CMakeFindDependencyMacroPC.cmake b/cmake/CMakeFindDependencyMacroPC.cmake index 6dda0ec4..9857838b 100644 --- a/cmake/CMakeFindDependencyMacroPC.cmake +++ b/cmake/CMakeFindDependencyMacroPC.cmake @@ -1,3 +1,5 @@ +# This is directly based on CMake's CMakeFindDependencyMacro from 3.26.5, the only change is that it uses pkg_check_modules instead of find_package + # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. From aa6fa65c032989784aca333695b4a967fbce2a6c Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Sun, 1 Oct 2023 00:33:48 +0000 Subject: [PATCH 32/45] Update translations from Crowdin for --- TRANSLATORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TRANSLATORS.md b/TRANSLATORS.md index 55b977c4..6d75d100 100644 --- a/TRANSLATORS.md +++ b/TRANSLATORS.md @@ -2,6 +2,7 @@ These people helped translating ZNC to various languages: * Alcahest ([X] Alcahest) * Altay +* aycanuAydemir * bashgeek (Daniel) * CaPaCuL * casmo (Casper) From cd275d23dd044a69649cfd9137a70075159c8717 Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Wed, 4 Oct 2023 00:33:59 +0000 Subject: [PATCH 33/45] Update translations from Crowdin for id_ID --- modules/po/route_replies.id_ID.po | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/po/route_replies.id_ID.po b/modules/po/route_replies.id_ID.po index cea478db..760644c0 100644 --- a/modules/po/route_replies.id_ID.po +++ b/modules/po/route_replies.id_ID.po @@ -12,48 +12,48 @@ msgstr "" "Language-Team: Indonesian\n" "Language: id_ID\n" -#: route_replies.cpp:227 +#: route_replies.cpp:228 msgid "[yes|no]" msgstr "" -#: route_replies.cpp:228 +#: route_replies.cpp:229 msgid "Decides whether to show the timeout messages or not" msgstr "" -#: route_replies.cpp:374 +#: route_replies.cpp:375 msgid "This module hit a timeout which is probably a connectivity issue." msgstr "" -#: route_replies.cpp:377 +#: route_replies.cpp:378 msgid "" "However, if you can provide steps to reproduce this issue, please do report " "a bug." msgstr "" -#: route_replies.cpp:380 +#: route_replies.cpp:381 msgid "To disable this message, do \"/msg {1} silent yes\"" msgstr "" -#: route_replies.cpp:382 +#: route_replies.cpp:383 msgid "Last request: {1}" msgstr "" -#: route_replies.cpp:383 +#: route_replies.cpp:384 msgid "Expected replies:" msgstr "" -#: route_replies.cpp:387 +#: route_replies.cpp:388 msgid "{1} (last)" msgstr "" -#: route_replies.cpp:459 +#: route_replies.cpp:460 msgid "Timeout messages are disabled." msgstr "" -#: route_replies.cpp:460 +#: route_replies.cpp:461 msgid "Timeout messages are enabled." msgstr "" -#: route_replies.cpp:481 +#: route_replies.cpp:482 msgid "Send replies (e.g. to /who) to the right client only" msgstr "" From bf5805d9a93e4ca020556fddebeb46e1ff790f72 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Tue, 10 Oct 2023 20:30:01 +0100 Subject: [PATCH 34/45] Update docker alpine to 3.18 To prepare for https://github.com/znc/znc-docker/pull/32 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 798f1062..daa10120 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.17 +FROM alpine:3.18 ARG VERSION_EXTRA="" From aa5016657baa13d0d5045ddf33c937c671ba3f37 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Thu, 26 Oct 2023 00:29:03 +0100 Subject: [PATCH 35/45] Fix modpython to show list of available modules In 1.8.0 I switched from deprecated imp to importlib for loading module by name, but forgot about this function Close #1884 --- modules/modpython.cpp | 41 +++++----------------------- modules/modpython/znc.py | 27 ------------------ test/integration/tests/scripting.cpp | 5 ++++ 3 files changed, 12 insertions(+), 61 deletions(-) diff --git a/modules/modpython.cpp b/modules/modpython.cpp index bf1c2ddb..52c394e4 100644 --- a/modules/modpython.cpp +++ b/modules/modpython.cpp @@ -289,42 +289,17 @@ class CModPython : public CModule { return HALT; } - void TryAddModInfo(const CString& sPath, const CString& sName, + void TryAddModInfo(const CString& sName, set& ssMods, set& ssAlready, CModInfo::EModuleType eType) { if (ssAlready.count(sName)) { return; } - PyObject* pyFunc = - PyObject_GetAttrString(m_PyZNCModule, "get_mod_info_path"); - if (!pyFunc) { - CString sRetMsg = GetPyExceptionStr(); - DEBUG("modpython tried to get info about [" - << sPath << "] (1) but: " << sRetMsg); - return; - } CModInfo ModInfo; - PyObject* pyRes = PyObject_CallFunction( - pyFunc, const_cast("ssN"), sPath.c_str(), sName.c_str(), - SWIG_NewInstanceObj(&ModInfo, SWIG_TypeQuery("CModInfo*"), 0)); - if (!pyRes) { - CString sRetMsg = GetPyExceptionStr(); - DEBUG("modpython tried to get info about [" - << sPath << "] (2) but: " << sRetMsg); - Py_CLEAR(pyFunc); - return; - } - Py_CLEAR(pyFunc); - long int x = PyLong_AsLong(pyRes); - if (PyErr_Occurred()) { - CString sRetMsg = GetPyExceptionStr(); - DEBUG("modpython tried to get info about [" - << sPath << "] (3) but: " << sRetMsg); - Py_CLEAR(pyRes); - return; - } - Py_CLEAR(pyRes); - if (x && ModInfo.SupportsType(eType)) { + bool bSuccess = false; + CString sRetMsg; + OnGetModInfo(ModInfo, sName, bSuccess, sRetMsg); + if (bSuccess && ModInfo.SupportsType(eType)) { ssMods.insert(ModInfo); ssAlready.insert(sName); } @@ -342,20 +317,18 @@ class CModPython : public CModule { for (unsigned int a = 0; a < Dir.size(); a++) { CFile& File = *Dir[a]; CString sName = File.GetShortName(); - CString sPath = File.GetLongName(); - sPath.TrimSuffix(sName); if (!File.IsDir()) { if (sName.WildCmp("*.pyc")) { sName.RightChomp(4); - } else if (sName.WildCmp("*.py") || sName.WildCmp("*.so")) { + } else if (sName.WildCmp("*.py")) { sName.RightChomp(3); } else { continue; } } - TryAddModInfo(sPath, sName, ssMods, already, eType); + TryAddModInfo(sName, ssMods, already, eType); } dirs.pop(); diff --git a/modules/modpython/znc.py b/modules/modpython/znc.py index 4e8fc295..bc641cde 100644 --- a/modules/modpython/znc.py +++ b/modules/modpython/znc.py @@ -940,33 +940,6 @@ def get_mod_info(modname, retmsg, modinfo): return 2 -def get_mod_info_path(path, modname, modinfo): - try: - x = imp.find_module(modname, [path]) - except ImportError: - return 0 - # x == (, - # './modules/admin.so', ('.so', 'rb', 3)) - # x == (, - # './modules/pythontest.py', ('.py', 'U', 1)) - if x[0] is None and x[2][2] != imp.PKG_DIRECTORY: - return 0 - try: - pymodule = imp.load_module(modname, *x) - except ImportError: - return 0 - finally: - if x[0]: - x[0].close() - if modname not in pymodule.__dict__: - return 0 - cl = pymodule.__dict__[modname] - modinfo.SetName(modname) - modinfo.SetPath(pymodule.__file__) - gather_mod_info(cl, modinfo) - return 1 - - CONTINUE = CModule.CONTINUE HALT = CModule.HALT HALTMODS = CModule.HALTMODS diff --git a/test/integration/tests/scripting.cpp b/test/integration/tests/scripting.cpp index 24a45038..2ef87589 100644 --- a/test/integration/tests/scripting.cpp +++ b/test/integration/tests/scripting.cpp @@ -277,6 +277,11 @@ TEST_F(ZNCTest, ModpythonPackage) { client.Write("znc updatemod packagetest"); client.Write("PRIVMSG *packagetest :foo"); client.ReadUntil("value = b"); + // Test if python modules are viewable via *status. + // https://github.com/znc/znc/issues/1884 + client.Write("znc listavailmods"); + client.ReadUntil(":*status!status@znc.in PRIVMSG nick :\x02 packagetest"); + client.ReadUntil(":*status!status@znc.in PRIVMSG nick :\x02 pyeval\x0F: Evaluates python code"); } TEST_F(ZNCTest, ModpythonModperl) { From edd5dac89fb0e71df21a04c45961843c72eb2930 Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Thu, 26 Oct 2023 00:33:58 +0000 Subject: [PATCH 36/45] Update translations from Crowdin for bg_BG da_DK de_DE fr_FR nl_NL --- modules/po/modpython.bg_BG.po | 2 +- modules/po/modpython.da_DK.po | 2 +- modules/po/modpython.de_DE.po | 2 +- modules/po/modpython.fr_FR.po | 2 +- modules/po/modpython.nl_NL.po | 2 +- modules/po/modpython.pot | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/po/modpython.bg_BG.po b/modules/po/modpython.bg_BG.po index 8fc39f62..34fb10bd 100644 --- a/modules/po/modpython.bg_BG.po +++ b/modules/po/modpython.bg_BG.po @@ -12,6 +12,6 @@ msgstr "" "Language-Team: Bulgarian\n" "Language: bg_BG\n" -#: modpython.cpp:532 +#: modpython.cpp:505 msgid "Loads python scripts as ZNC modules" msgstr "" diff --git a/modules/po/modpython.da_DK.po b/modules/po/modpython.da_DK.po index 06963354..cd3b1209 100644 --- a/modules/po/modpython.da_DK.po +++ b/modules/po/modpython.da_DK.po @@ -12,6 +12,6 @@ msgstr "" "Language-Team: Danish\n" "Language: da_DK\n" -#: modpython.cpp:532 +#: modpython.cpp:505 msgid "Loads python scripts as ZNC modules" msgstr "" diff --git a/modules/po/modpython.de_DE.po b/modules/po/modpython.de_DE.po index b5d8b6a2..5b23a613 100644 --- a/modules/po/modpython.de_DE.po +++ b/modules/po/modpython.de_DE.po @@ -12,6 +12,6 @@ msgstr "" "Language-Team: German\n" "Language: de_DE\n" -#: modpython.cpp:532 +#: modpython.cpp:505 msgid "Loads python scripts as ZNC modules" msgstr "Lade Python-Skripte als ZNC-Module" diff --git a/modules/po/modpython.fr_FR.po b/modules/po/modpython.fr_FR.po index b05eeb1b..083ca8f6 100644 --- a/modules/po/modpython.fr_FR.po +++ b/modules/po/modpython.fr_FR.po @@ -12,6 +12,6 @@ msgstr "" "Language-Team: French\n" "Language: fr_FR\n" -#: modpython.cpp:532 +#: modpython.cpp:505 msgid "Loads python scripts as ZNC modules" msgstr "" diff --git a/modules/po/modpython.nl_NL.po b/modules/po/modpython.nl_NL.po index 1c6bd357..7985d1ea 100644 --- a/modules/po/modpython.nl_NL.po +++ b/modules/po/modpython.nl_NL.po @@ -12,6 +12,6 @@ msgstr "" "Language-Team: Dutch\n" "Language: nl_NL\n" -#: modpython.cpp:532 +#: modpython.cpp:505 msgid "Loads python scripts as ZNC modules" msgstr "Laad python scripts als ZNC modulen" diff --git a/modules/po/modpython.pot b/modules/po/modpython.pot index eeb17376..0548caf2 100644 --- a/modules/po/modpython.pot +++ b/modules/po/modpython.pot @@ -3,6 +3,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: modpython.cpp:532 +#: modpython.cpp:505 msgid "Loads python scripts as ZNC modules" msgstr "" From 397b8e5ced91af79fe913358c2e082fc520fab4d Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Mon, 30 Oct 2023 00:34:05 +0000 Subject: [PATCH 37/45] Update translations from Crowdin for el_GR id_ID --- modules/po/modpython.el_GR.po | 2 +- modules/po/modpython.id_ID.po | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/po/modpython.el_GR.po b/modules/po/modpython.el_GR.po index 73894024..e895be0d 100644 --- a/modules/po/modpython.el_GR.po +++ b/modules/po/modpython.el_GR.po @@ -12,6 +12,6 @@ msgstr "" "Language-Team: Greek\n" "Language: el_GR\n" -#: modpython.cpp:532 +#: modpython.cpp:505 msgid "Loads python scripts as ZNC modules" msgstr "" diff --git a/modules/po/modpython.id_ID.po b/modules/po/modpython.id_ID.po index 89249c8b..cf6f06a4 100644 --- a/modules/po/modpython.id_ID.po +++ b/modules/po/modpython.id_ID.po @@ -12,6 +12,6 @@ msgstr "" "Language-Team: Indonesian\n" "Language: id_ID\n" -#: modpython.cpp:532 +#: modpython.cpp:505 msgid "Loads python scripts as ZNC modules" msgstr "" From 3f2d7d5e87f1d19c7bec2aedf9c703c8238245be Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Sat, 4 Nov 2023 00:32:22 +0000 Subject: [PATCH 38/45] Update translations from Crowdin for it_IT --- modules/po/modpython.it_IT.po | 2 +- modules/po/route_replies.it_IT.po | 22 +++++++++++----------- src/po/znc.it_IT.po | 28 ++++++++++++++-------------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/modules/po/modpython.it_IT.po b/modules/po/modpython.it_IT.po index 4b01c797..4df29074 100644 --- a/modules/po/modpython.it_IT.po +++ b/modules/po/modpython.it_IT.po @@ -12,6 +12,6 @@ msgstr "" "Language-Team: Italian\n" "Language: it_IT\n" -#: modpython.cpp:532 +#: modpython.cpp:505 msgid "Loads python scripts as ZNC modules" msgstr "Carica gli script di python come moduli ZNC" diff --git a/modules/po/route_replies.it_IT.po b/modules/po/route_replies.it_IT.po index 1459435e..81eae1ff 100644 --- a/modules/po/route_replies.it_IT.po +++ b/modules/po/route_replies.it_IT.po @@ -12,21 +12,21 @@ msgstr "" "Language-Team: Italian\n" "Language: it_IT\n" -#: route_replies.cpp:227 +#: route_replies.cpp:228 msgid "[yes|no]" msgstr "[si|no]" -#: route_replies.cpp:228 +#: route_replies.cpp:229 msgid "Decides whether to show the timeout messages or not" msgstr "Decide se mostrare o meno i messaggi di timeout" -#: route_replies.cpp:374 +#: route_replies.cpp:375 msgid "This module hit a timeout which is probably a connectivity issue." msgstr "" "Questo modulo ha riscontrato un timeout che probabilmente è un problema di " "connettività." -#: route_replies.cpp:377 +#: route_replies.cpp:378 msgid "" "However, if you can provide steps to reproduce this issue, please do report " "a bug." @@ -34,30 +34,30 @@ msgstr "" "Tuttavia, se puoi fornire i passaggi per riprodurre questo problema, segnala " "un bug." -#: route_replies.cpp:380 +#: route_replies.cpp:381 msgid "To disable this message, do \"/msg {1} silent yes\"" msgstr "Per disabilitare questo messaggio, digita \"/msg {1} silent yes\"" -#: route_replies.cpp:382 +#: route_replies.cpp:383 msgid "Last request: {1}" msgstr "Ultima richiesta: {1}" -#: route_replies.cpp:383 +#: route_replies.cpp:384 msgid "Expected replies:" msgstr "Risposte attese:" -#: route_replies.cpp:387 +#: route_replies.cpp:388 msgid "{1} (last)" msgstr "{1} (ultimo)" -#: route_replies.cpp:459 +#: route_replies.cpp:460 msgid "Timeout messages are disabled." msgstr "I messaggi di timeout sono disabilitati." -#: route_replies.cpp:460 +#: route_replies.cpp:461 msgid "Timeout messages are enabled." msgstr "I messaggi di timeout sono abilitati." -#: route_replies.cpp:481 +#: route_replies.cpp:482 msgid "Send replies (e.g. to /who) to the right client only" msgstr "Invia le risposte (come ad esempio /who) solamente al cliente giusto" diff --git a/src/po/znc.it_IT.po b/src/po/znc.it_IT.po index 3b1e7de2..12f4e6ee 100644 --- a/src/po/znc.it_IT.po +++ b/src/po/znc.it_IT.po @@ -55,27 +55,27 @@ msgstr "" "loadmod <nome del modulo>”). Dopo aver caricato alcuni moduli " "abilitati per il web, il menù si espanderà." -#: znc.cpp:1554 +#: znc.cpp:1552 msgid "User already exists" msgstr "Utente già esistente" -#: znc.cpp:1662 +#: znc.cpp:1660 msgid "IPv6 is not enabled" msgstr "IPv6 non è abilitato" -#: znc.cpp:1670 +#: znc.cpp:1668 msgid "SSL is not enabled" msgstr "SSL non è abilitata" -#: znc.cpp:1678 +#: znc.cpp:1676 msgid "Unable to locate pem file: {1}" msgstr "Impossibile localizzare il file pem: {1}" -#: znc.cpp:1697 +#: znc.cpp:1695 msgid "Invalid port" msgstr "Porta non valida" -#: znc.cpp:1813 ClientCommand.cpp:1720 +#: znc.cpp:1811 ClientCommand.cpp:1720 msgid "Unable to bind: {1}" msgstr "Impossibile associare: {1}" @@ -83,7 +83,7 @@ msgstr "Impossibile associare: {1}" msgid "Jumping servers because this server is no longer in the list" msgstr "Salta il server perché non è più in elenco" -#: IRCNetwork.cpp:671 User.cpp:690 +#: IRCNetwork.cpp:671 User.cpp:699 msgid "Welcome to ZNC" msgstr "Benvenuti nello ZNC" @@ -1996,7 +1996,7 @@ msgstr "hostname malformato nel certificato" msgid "hostname verification error" msgstr "errore di verifica dell'hostname" -#: User.cpp:519 +#: User.cpp:528 msgid "" "Invalid network name. It should be alphanumeric. Not to be confused with " "server name" @@ -2004,11 +2004,11 @@ msgstr "" "Nome del network non valido. Deve essere alfanumerico. Da non confondere con " "il nome del server" -#: User.cpp:523 +#: User.cpp:532 msgid "Network {1} already exists" msgstr "Network {1} già esistente" -#: User.cpp:789 +#: User.cpp:798 msgid "" "You are being disconnected because your IP is no longer allowed to connect " "to this user" @@ -2016,18 +2016,18 @@ msgstr "" "Sei stato disconnesso perché il tuo indirizzo IP non è più autorizzato a " "connettersi a questo utente" -#: User.cpp:929 +#: User.cpp:938 msgid "Password is empty" msgstr "Password è vuota" -#: User.cpp:934 +#: User.cpp:943 msgid "Username is empty" msgstr "Username è vuoto" -#: User.cpp:939 +#: User.cpp:948 msgid "Username is invalid" msgstr "Username non è valido" -#: User.cpp:1214 +#: User.cpp:1249 msgid "Unable to find modinfo {1}: {2}" msgstr "Impossibile trovare modinfo {1}: {2}" From 5e950e65fb499cc7ab81924c6e3081fc9892b1a2 Mon Sep 17 00:00:00 2001 From: ZNC-Jenkins Date: Tue, 7 Nov 2023 00:33:08 +0000 Subject: [PATCH 39/45] Update translations from Crowdin for pl_PL --- modules/po/modpython.pl_PL.po | 2 +- modules/po/route_replies.pl_PL.po | 22 +++++++++++----------- src/po/znc.pl_PL.po | 28 ++++++++++++++-------------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/modules/po/modpython.pl_PL.po b/modules/po/modpython.pl_PL.po index de68cc16..8eaf2f09 100644 --- a/modules/po/modpython.pl_PL.po +++ b/modules/po/modpython.pl_PL.po @@ -14,6 +14,6 @@ msgstr "" "Language-Team: Polish\n" "Language: pl_PL\n" -#: modpython.cpp:532 +#: modpython.cpp:505 msgid "Loads python scripts as ZNC modules" msgstr "Ładuje skrypty pythona jako moduły ZNC" diff --git a/modules/po/route_replies.pl_PL.po b/modules/po/route_replies.pl_PL.po index 63d844bd..4f05e086 100644 --- a/modules/po/route_replies.pl_PL.po +++ b/modules/po/route_replies.pl_PL.po @@ -14,48 +14,48 @@ msgstr "" "Language-Team: Polish\n" "Language: pl_PL\n" -#: route_replies.cpp:227 +#: route_replies.cpp:228 msgid "[yes|no]" msgstr "[yes|no]" -#: route_replies.cpp:228 +#: route_replies.cpp:229 msgid "Decides whether to show the timeout messages or not" msgstr "" -#: route_replies.cpp:374 +#: route_replies.cpp:375 msgid "This module hit a timeout which is probably a connectivity issue." msgstr "" -#: route_replies.cpp:377 +#: route_replies.cpp:378 msgid "" "However, if you can provide steps to reproduce this issue, please do report " "a bug." msgstr "" -#: route_replies.cpp:380 +#: route_replies.cpp:381 msgid "To disable this message, do \"/msg {1} silent yes\"" msgstr "Aby wyłączyć tą wiadomość, zrób \"/msg {1} silent yes\"" -#: route_replies.cpp:382 +#: route_replies.cpp:383 msgid "Last request: {1}" msgstr "" -#: route_replies.cpp:383 +#: route_replies.cpp:384 msgid "Expected replies:" msgstr "" -#: route_replies.cpp:387 +#: route_replies.cpp:388 msgid "{1} (last)" msgstr "" -#: route_replies.cpp:459 +#: route_replies.cpp:460 msgid "Timeout messages are disabled." msgstr "" -#: route_replies.cpp:460 +#: route_replies.cpp:461 msgid "Timeout messages are enabled." msgstr "" -#: route_replies.cpp:481 +#: route_replies.cpp:482 msgid "Send replies (e.g. to /who) to the right client only" msgstr "Wysyła odpowiedzi (np. takie jak /who) tylko do właściwych klientów" diff --git a/src/po/znc.pl_PL.po b/src/po/znc.pl_PL.po index 21950fde..1dcb2d5d 100644 --- a/src/po/znc.pl_PL.po +++ b/src/po/znc.pl_PL.po @@ -56,27 +56,27 @@ msgstr "" "msg *status help” i “/msg *status loadmod <moduł>”). Jak już załadujesz jakieś moduły WWW to menu się rozwinie." -#: znc.cpp:1554 +#: znc.cpp:1552 msgid "User already exists" msgstr "Użytkownik już istnieje" -#: znc.cpp:1662 +#: znc.cpp:1660 msgid "IPv6 is not enabled" msgstr "IPv6 nie jest włączone" -#: znc.cpp:1670 +#: znc.cpp:1668 msgid "SSL is not enabled" msgstr "SSL nie jest włączone" -#: znc.cpp:1678 +#: znc.cpp:1676 msgid "Unable to locate pem file: {1}" msgstr "Nie udało się odnaleźć pliku pem: {1}" -#: znc.cpp:1697 +#: znc.cpp:1695 msgid "Invalid port" msgstr "Nieprawidłowy port" -#: znc.cpp:1813 ClientCommand.cpp:1720 +#: znc.cpp:1811 ClientCommand.cpp:1720 msgid "Unable to bind: {1}" msgstr "Nie udało się przypiąć: {1}" @@ -85,7 +85,7 @@ msgid "Jumping servers because this server is no longer in the list" msgstr "" "Przeskakiwanie na inne serwery, ponieważ tego serwera nie ma już na liście" -#: IRCNetwork.cpp:671 User.cpp:690 +#: IRCNetwork.cpp:671 User.cpp:699 msgid "Welcome to ZNC" msgstr "Witamy w ZNC" @@ -1985,7 +1985,7 @@ msgstr "zniekształcona nazwa hosta w certyfikacie" msgid "hostname verification error" msgstr "błąd weryfikacji hosta" -#: User.cpp:519 +#: User.cpp:528 msgid "" "Invalid network name. It should be alphanumeric. Not to be confused with " "server name" @@ -1993,11 +1993,11 @@ msgstr "" "Nieprawidłowa nazwa sieci. Powinna być alfanumeryczna. Nie należy mylić jej " "z nazwą serwera" -#: User.cpp:523 +#: User.cpp:532 msgid "Network {1} already exists" msgstr "Sieć {1} już istnieje" -#: User.cpp:789 +#: User.cpp:798 msgid "" "You are being disconnected because your IP is no longer allowed to connect " "to this user" @@ -2005,18 +2005,18 @@ msgstr "" "Jesteś rozłączany, ponieważ Twój adres IP nie może już łączyć się z tym " "użytkownikiem" -#: User.cpp:929 +#: User.cpp:938 msgid "Password is empty" msgstr "Nie podano hasła" -#: User.cpp:934 +#: User.cpp:943 msgid "Username is empty" msgstr "Nazwa użytkownika jest pusta" -#: User.cpp:939 +#: User.cpp:948 msgid "Username is invalid" msgstr "Nazwa użytkownika jest niepoprawna" -#: User.cpp:1214 +#: User.cpp:1249 msgid "Unable to find modinfo {1}: {2}" msgstr "Nie można znaleźć modinfo {1}: {2}" From 53f0751fd5a09cc38bfe1a9f4d2d2c2871d49de3 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 18 Nov 2023 11:15:27 +0000 Subject: [PATCH 40/45] Use C++17 --- CMakeLists.txt | 8 +++--- README.md | 2 +- cmake/{TestCXX11.cmake => TestCXX17.cmake} | 28 +++++++++---------- .../{cxx11check => cxx17check}/CMakeLists.txt | 2 +- cmake/{cxx11check => cxx17check}/main.cpp | 2 ++ test/integration/CMakeLists.txt | 2 +- 6 files changed, 23 insertions(+), 21 deletions(-) rename cmake/{TestCXX11.cmake => TestCXX17.cmake} (56%) rename cmake/{cxx11check => cxx17check}/CMakeLists.txt (96%) rename cmake/{cxx11check => cxx17check}/main.cpp (96%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 63375083..5b659762 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,12 +41,12 @@ endfunction() list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") -include(TestCXX11) -set(CMAKE_CXX_STANDARD 11) +include(TestCXX17) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED true) if(NOT CYGWIN) - # We don't want to use -std=gnu++11 instead of -std=c++11, but among other - # things, -std=c++11 on cygwin defines __STRICT_ANSI__ which makes cygwin + # We don't want to use -std=gnu++17 instead of -std=c++17, but among other + # things, -std=c++17 on cygwin defines __STRICT_ANSI__ which makes cygwin # not to compile: undefined references to strerror_r, to fdopen, to # strcasecmp, etc (their declarations in system headers are between ifdef) set(CMAKE_CXX_EXTENSIONS false) diff --git a/README.md b/README.md index 60336595..8a7345e9 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Core: * GNU make * pkg-config -* GCC 4.8 or clang 3.2 +* GCC 8 or clang 5 * CMake ## Optional Requirements diff --git a/cmake/TestCXX11.cmake b/cmake/TestCXX17.cmake similarity index 56% rename from cmake/TestCXX11.cmake rename to cmake/TestCXX17.cmake index a55652fb..61fc739e 100644 --- a/cmake/TestCXX11.cmake +++ b/cmake/TestCXX17.cmake @@ -14,26 +14,26 @@ # limitations under the License. # -if(NOT DEFINED cxx11check) - message(STATUS "Checking for C++11 support") - get_filename_component(_CXX11Check_dir "${CMAKE_CURRENT_LIST_FILE}" +if(NOT DEFINED cxx17check) + message(STATUS "Checking for C++17 support") + get_filename_component(_CXX17Check_dir "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY) - try_compile(cxx11_supported - "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/cxx11check" - "${_CXX11Check_dir}/cxx11check" cxx11check - OUTPUT_VARIABLE _CXX11Check_tryout) - if(cxx11_supported) - message(STATUS "Checking for C++11 support - supported") - SET(cxx11check 1 CACHE INTERNAL "C++11 support") + try_compile(cxx17_supported + "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/cxx17check" + "${_CXX17Check_dir}/cxx17check" cxx17check + OUTPUT_VARIABLE _CXX17Check_tryout) + if(cxx17_supported) + message(STATUS "Checking for C++17 support - supported") + SET(cxx17check 1 CACHE INTERNAL "C++17 support") file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log" - "Output of C++11 check:\n${_CXX11Check_tryout}\n") + "Output of C++17 check:\n${_CXX17Check_tryout}\n") else() file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log" - "Error in C++11 check:\n${_CXX11Check_tryout}\n") - message(STATUS "Checking for C++11 support - not supported") + "Error in C++17 check:\n${_CXX17Check_tryout}\n") + message(STATUS "Checking for C++17 support - not supported") message(FATAL_ERROR " Upgrade your compiler.\n" - " GCC 4.8+ and Clang 3.2+ are known to work.") + " GCC 8+ and Clang 5+ should work.") endif() endif() diff --git a/cmake/cxx11check/CMakeLists.txt b/cmake/cxx17check/CMakeLists.txt similarity index 96% rename from cmake/cxx11check/CMakeLists.txt rename to cmake/cxx17check/CMakeLists.txt index c9da4946..ed9d69e5 100644 --- a/cmake/cxx11check/CMakeLists.txt +++ b/cmake/cxx17check/CMakeLists.txt @@ -18,6 +18,6 @@ cmake_minimum_required(VERSION 3.13) project(cxx11check LANGUAGES CXX) set(CMAKE_VERBOSE_MAKEFILE true) -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED true) add_executable(main main.cpp) diff --git a/cmake/cxx11check/main.cpp b/cmake/cxx17check/main.cpp similarity index 96% rename from cmake/cxx11check/main.cpp rename to cmake/cxx17check/main.cpp index 0436ab5b..3e704c31 100644 --- a/cmake/cxx11check/main.cpp +++ b/cmake/cxx17check/main.cpp @@ -11,6 +11,7 @@ // warranty. #include +#include template struct check { @@ -59,5 +60,6 @@ void test() { func(0); } int main() { std::map m; m.emplace(2, 4); + auto [x, y] = *m.begin(); return 0; } diff --git a/test/integration/CMakeLists.txt b/test/integration/CMakeLists.txt index 5b16001f..cc63a3aa 100644 --- a/test/integration/CMakeLists.txt +++ b/test/integration/CMakeLists.txt @@ -17,7 +17,7 @@ cmake_minimum_required(VERSION 3.13) project(ZNCIntegrationTest LANGUAGES CXX) -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED true) set(CMAKE_THREAD_PREFER_PTHREAD true) From ba0351e426acc14fb839985701d9c7dc2720871f Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 18 Nov 2023 11:19:41 +0000 Subject: [PATCH 41/45] Use std::string_view instead of backported one --- NOTICE | 1 - src/CMakeLists.txt | 1 - src/Message.cpp | 17 +- third_party/bpstd/bpstd/string_view.hpp | 1424 ----------------------- 4 files changed, 9 insertions(+), 1434 deletions(-) delete mode 100644 third_party/bpstd/bpstd/string_view.hpp diff --git a/NOTICE b/NOTICE index ee778b1a..e08eeaa5 100644 --- a/NOTICE +++ b/NOTICE @@ -16,7 +16,6 @@ ZNC includes code from jQuery UI (http://jqueryui.com/), licensed under the MIT ZNC includes code from Selectize (http://brianreavis.github.io/selectize.js/), licensed under the Apache License 2.0. ZNC includes modified code from CMakeFindFrameworks.cmake by Kitware, Inc., licensed under BSD License. ZNC includes modified code from TestLargeFiles.cmake, licensed under Boost Software License, Version 1.0. -ZNC includes code from BackportCpp (https://github.com/bitwizeshift/string_view-standalone), licensed under the MIT license. ZNC includes code from cctz (https://github.com/google/cctz), licensed under the Apache License 2.0. ZNC is developed by these people: diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d9ef245c..1697bf30 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -56,7 +56,6 @@ add_custom_target(version add_dependencies(znclib copy_csocket_h copy_csocket_cc version) set(znc_include_dirs - "$" "$" "$" "$") diff --git a/src/Message.cpp b/src/Message.cpp index 6a6af073..a8ae5026 100644 --- a/src/Message.cpp +++ b/src/Message.cpp @@ -14,9 +14,10 @@ * limitations under the License. */ +#include + #include #include -#include "bpstd/string_view.hpp" CMessage::CMessage(const CString& sMessage) { Parse(sMessage); @@ -165,7 +166,7 @@ void CMessage::Parse(const CString& sMessage) { // Find the end of the first word const char* p = begin; while (p < end && *p != ' ') ++p; - bpstd::string_view result(begin, p - begin); + std::string_view result(begin, p - begin); begin = p; // Prepare for the following word while (begin < end && *begin == ' ') ++begin; @@ -175,12 +176,12 @@ void CMessage::Parse(const CString& sMessage) { // m_mssTags.clear(); if (begin < end && *begin == '@') { - bpstd::string_view svTags = next_word().substr(1); - std::vector vsTags; + std::string_view svTags = next_word().substr(1); + std::vector vsTags; // Split by ';' while (true) { auto delim = svTags.find_first_of(';'); - if (delim == bpstd::string_view::npos) { + if (delim == std::string_view::npos) { vsTags.push_back(svTags); break; } @@ -188,10 +189,10 @@ void CMessage::Parse(const CString& sMessage) { svTags = svTags.substr(delim + 1); } // Save key and value - for (bpstd::string_view svTag : vsTags) { + for (std::string_view svTag : vsTags) { auto delim = svTag.find_first_of('='); - CString sKey = std::string(delim == bpstd::string_view::npos ? svTag : svTag.substr(0, delim)); - CString sValue = delim == bpstd::string_view::npos ? std::string() : std::string(svTag.substr(delim + 1)); + CString sKey = std::string(delim == std::string_view::npos ? svTag : svTag.substr(0, delim)); + CString sValue = delim == std::string_view::npos ? std::string() : std::string(svTag.substr(delim + 1)); m_mssTags[sKey] = sValue.Escape(CString::EMSGTAG, CString::CString::EASCII); } diff --git a/third_party/bpstd/bpstd/string_view.hpp b/third_party/bpstd/bpstd/string_view.hpp deleted file mode 100644 index 691ef00e..00000000 --- a/third_party/bpstd/bpstd/string_view.hpp +++ /dev/null @@ -1,1424 +0,0 @@ -// https://github.com/bitwizeshift/string_view-standalone/raw/v1.1.0/single_include/bpstd/string_view.hpp - -/** - * \file string_view.hpp - * - * \brief This header contains the definition of the string_view type, as - * described by the C++17 standard. - * - * \author Matthew Rodusek (matthew.rodusek@gmail.com) - * \copyright Matthew Rodusek - */ - -/* - * The MIT License (MIT) - * - * Licensed under the MIT License . - * Copyright (c) 2016 Matthew Rodusek - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef BPSTD_STRING_VIEW_HPP -#define BPSTD_STRING_VIEW_HPP - -#include // std:: -#include // std::char_traits -#include // std::basic_ostream -#include // std::size_t -#include // std::allocator -#include // std::out_of_range -#include // std::reverse_iterator -namespace bpstd { // back-port std - - //////////////////////////////////////////////////////////////////////////// - /// \brief A wrapper around non-owned strings. - /// - /// This is an implementation of the C++17 string_view proposal - /// - /// \ingroup core - //////////////////////////////////////////////////////////////////////////// - template< - typename CharT, - typename Traits = std::char_traits - > - class basic_string_view final - { - //------------------------------------------------------------------------ - // Public Member Types - //------------------------------------------------------------------------ - public: - - using char_type = CharT; - using traits_type = Traits; - using size_type = std::size_t; - - using value_type = CharT; - using reference = value_type&; - using const_reference = const value_type&; - using pointer = value_type*; - using const_pointer = const value_type*; - - using iterator = const CharT*; - using const_iterator = const CharT*; - using reverse_iterator = std::reverse_iterator; - using const_reverse_iterator = std::reverse_iterator; - - //------------------------------------------------------------------------ - // Public Members - //------------------------------------------------------------------------ - public: - - static constexpr size_type npos = size_type(-1); - - //------------------------------------------------------------------------ - // Constructors - //------------------------------------------------------------------------ - public: - - /// \brief Default constructs a basic_string_view without any content - constexpr basic_string_view() noexcept; - - /// \brief Constructs a basic_string_view by copying another one - /// - /// \param other the string view being copied - constexpr basic_string_view(const basic_string_view& other) noexcept = default; - - /// \brief Constructs a basic_string_view by moving anothe rone - /// - /// \param other the string view being moved - constexpr basic_string_view(basic_string_view&& other) noexcept = default; - - /// \brief Constructs a basic_string_view from a std::basic_string - /// - /// \param str the string to view - template - basic_string_view(const std::basic_string& str) noexcept; - - /// \brief Constructs a basic_string_view from an ansi-string - /// - /// \param str the string to view - constexpr basic_string_view(const char_type* str) noexcept; - - /// \brief Constructs a basic_string_view from an ansi string of a given size - /// - /// \param str the string to view - /// \param count the size of the string - constexpr basic_string_view(const char_type* str, size_type count) noexcept; - - //------------------------------------------------------------------------ - // Assignment - //------------------------------------------------------------------------ - public: - - /// \brief Assigns a basic_string_view from an ansi-string - /// - /// \param view the string to view - /// \return reference to \c (*this) - basic_string_view& operator=(const basic_string_view& view) = default; - - //------------------------------------------------------------------------ - // Capacity - //------------------------------------------------------------------------ - public: - - /// \brief Returns the length of the string, in terms of bytes - /// - /// \return the length of the string, in terms of bytes - constexpr size_type size() const noexcept; - - /// \copydoc basic_string_view::size - constexpr size_type length() const noexcept; - - /// \brief The largest possible number of char-like objects that can be - /// referred to by a basic_string_view. - /// \return Maximum number of characters - constexpr size_type max_size() const noexcept; - - /// \brief Returns whether the basic_string_view is empty - /// (i.e. whether its length is 0). - /// - /// \return whether the basic_string_view is empty - constexpr bool empty() const noexcept; - - //------------------------------------------------------------------------ - // Element Access - //------------------------------------------------------------------------ - public: - - /// \brief Gets the ansi-string of the current basic_string_view - /// - /// \return the ansi-string pointer - constexpr const char_type* c_str() const noexcept; - - /// \brief Gets the data of the current basic_string_view - /// - /// \note This is an alias of #c_str - /// - /// \return the data this basic_string_view contains - constexpr const char_type* data() const noexcept; - - /// \brief Accesses the element at index \p pos - /// - /// \param pos the index to access - /// \return const reference to the character - constexpr const_reference operator[](size_type pos) const noexcept; - - /// \brief Accesses the element at index \p pos - /// - /// \param pos the index to access - /// \return const reference to the character - constexpr const_reference at(size_type pos) const; - - /// \brief Access the first character of the string - /// - /// \note Undefined behavior if basic_string_view is empty - /// - /// \return reference to the first character of the string - constexpr const_reference front() const noexcept; - - /// \brief References the last character of the string - /// - /// \note Undefined behavior if basic_string_view is empty - /// - /// \return reference to the last character of the string - constexpr const_reference back() const noexcept; - - //------------------------------------------------------------------------ - // Modifiers - //------------------------------------------------------------------------ - public: - - /// \brief Moves the start of the view forward by n characters. - /// - /// The behavior is undefined if n > size(). - /// - /// \param n number of characters to remove from the start of the view - void remove_prefix(size_type n) noexcept; - - /// \brief Moves the end of the view back by n characters. - /// - /// The behavior is undefined if n > size(). - /// - /// \param n number of characters to remove from the end of the view - void remove_suffix(size_type n) noexcept; - - /// \brief Exchanges the view with that of v. - /// - /// \param v view to swap with - void swap(basic_string_view& v) noexcept; - - //------------------------------------------------------------------------ - // Conversions - //------------------------------------------------------------------------ - public: - - /// \brief Creates a basic_string with a copy of the content of the current view. - /// - /// \tparam Allocator type used to allocate internal storage - /// \param a Allocator instance to use for allocating the new string - /// - /// \return A basic_string containing a copy of the characters of the current view. - template> - constexpr std::basic_string - to_string(const Allocator& a = Allocator()) const; - - /// \copydoc basic_string_view::to_string - template - explicit constexpr operator std::basic_string() const; - - //------------------------------------------------------------------------ - // Operations - //------------------------------------------------------------------------ - public: - - /// \brief Copies the substring [pos, pos + rcount) to the character string pointed - /// to by dest, where rcount is the smaller of count and size() - pos. - /// - /// \param dest pointer to the destination character string - /// \param count requested substring length - /// \param pos position of the first character - size_type copy( char_type* dest, - size_type count = npos, - size_type pos = 0 ) const; - - /// \brief Returns a substring of this viewed string - /// - /// \param pos the position of the first character in the substring - /// \param len the length of the substring - /// \return the created substring - basic_string_view substr(size_t pos = 0, size_t len = npos) const; - - //------------------------------------------------------------------------ - - /// \brief Compares two character sequences - /// - /// \param v view to compare - /// \return negative value if this view is less than the other character - /// sequence, zero if the both character sequences are equal, positive - /// value if this view is greater than the other character sequence. - int compare(basic_string_view v) const noexcept; - - /// \brief Compares two character sequences - /// - /// \param pos position of the first character in this view to compare - /// \param count number of characters of this view to compare - /// \param v view to compare - /// \return negative value if this view is less than the other character - /// sequence, zero if the both character sequences are equal, positive - /// value if this view is greater than the other character sequence. - int compare(size_type pos, size_type count, basic_string_view v) const; - - /// \brief Compares two character sequences - /// - /// \param pos1 position of the first character in this view to compare - /// \param count1 number of characters of this view to compare - /// \param v view to compare - /// \param pos2 position of the second character in this view to compare - /// \param count2 number of characters of the given view to compare - /// \return negative value if this view is less than the other character - /// sequence, zero if the both character sequences are equal, positive - /// value if this view is greater than the other character sequence. - int compare( size_type pos1, size_type count1, basic_string_view v, - size_type pos2, size_type count2 ) const; - - /// \brief Compares two character sequences - /// - /// \param s pointer to the character string to compare to - /// \return negative value if this view is less than the other character - /// sequence, zero if the both character sequences are equal, positive - /// value if this view is greater than the other character sequence. - int compare(const char_type* s) const; - - /// \brief Compares two character sequences - /// - /// \param pos position of the first character in this view to compare - /// \param count number of characters of this view to compare - /// \param s pointer to the character string to compare to - /// \return negative value if this view is less than the other character - /// sequence, zero if the both character sequences are equal, positive - /// value if this view is greater than the other character sequence. - int compare(size_type pos, size_type count, const char_type* s) const; - - /// \brief Compares two character sequences - /// - /// \param pos position of the first character in this view to compare - /// \param count1 number of characters of this view to compare - /// \param s pointer to the character string to compare to - /// \param count2 number of characters of the given view to compare - /// \return negative value if this view is less than the other character - /// sequence, zero if the both character sequences are equal, positive - /// value if this view is greater than the other character sequence. - int compare( size_type pos, size_type count1, const char_type* s, - size_type count2 ) const; - - //------------------------------------------------------------------------ - - size_type find(basic_string_view v, size_type pos = 0) const; - - size_type find(char_type c, size_type pos = 0) const; - - size_type find(const char_type* s, size_type pos, size_type count) const; - - size_type find(const char_type* s, size_type pos = 0) const; - - //------------------------------------------------------------------------ - - size_type rfind(basic_string_view v, size_type pos = npos) const; - - size_type rfind(char_type c, size_type pos = npos) const; - - size_type rfind(const char_type* s, size_type pos, size_type count) const; - - size_type rfind(const char_type* s, size_type pos = npos) const; - - //------------------------------------------------------------------------ - - size_type find_first_of(basic_string_view v, size_type pos = 0) const; - - size_type find_first_of(char_type c, size_type pos = 0) const; - - size_type find_first_of(const char_type* s, size_type pos, size_type count) const; - - size_type find_first_of(const char_type* s, size_type pos = 0) const; - - //------------------------------------------------------------------------ - - size_type find_last_of(basic_string_view v, size_type pos = npos) const; - - size_type find_last_of(char_type c, size_type pos = npos) const; - - size_type find_last_of(const char_type* s, size_type pos, size_type count) const; - - size_type find_last_of(const char_type* s, size_type pos = npos) const; - - //------------------------------------------------------------------------ - - size_type find_first_not_of(basic_string_view v, size_type pos = 0) const; - - size_type find_first_not_of(char_type c, size_type pos = 0) const; - - size_type find_first_not_of(const char_type* s, size_type pos, size_type count) const; - - size_type find_first_not_of(const char_type* s, size_type pos = 0) const; - - //------------------------------------------------------------------------ - - size_type find_last_not_of(basic_string_view v, size_type pos = npos) const; - - size_type find_last_not_of(char_type c, size_type pos = npos) const; - - size_type find_last_not_of(const char_type* s, size_type pos, size_type count) const; - - size_type find_last_not_of(const char_type* s, size_type pos = npos) const; - - //------------------------------------------------------------------------ - // Iterators - //------------------------------------------------------------------------ - public: - - /// \{ - /// \brief Retrieves the begin iterator for this basic_string_view - /// - /// \return the begin iterator - const_iterator begin() const noexcept; - const_iterator cbegin() const noexcept; - /// \} - - /// \{ - /// \brief Retrieves the end iterator for this basic_string_view - /// - /// \return the end iterator - const_iterator end() const noexcept; - const_iterator cend() const noexcept; - /// \} - - /// \{ - /// \brief Retrieves the reverse begin iterator for this basic_string_view - /// - /// \return the reverse begin iterator - const_reverse_iterator rbegin() const noexcept; - const_reverse_iterator rend() const noexcept; - /// \} - - /// \{ - /// \brief Retrieves the reverse end iterator for this basic_string_view - /// - /// \return the reverse end iterator - const_reverse_iterator crbegin() const noexcept; - const_reverse_iterator crend() const noexcept; - /// \} - - //------------------------------------------------------------------------ - // Private Member - //------------------------------------------------------------------------ - private: - - const char_type* m_str; ///< The internal string type - size_type m_size; ///< The size of this string - - /// \brief Checks whether \p c is one of the characters in \p str - /// - /// \param c the character to check - /// \param str the characters to compare against - /// \return true if \p c is one of the characters in \p str - static bool is_one_of(CharT c, basic_string_view str); - }; - - template - const typename basic_string_view::size_type - basic_string_view::npos; - - //-------------------------------------------------------------------------- - // Public Functions - //-------------------------------------------------------------------------- - - /// \brief Overload for ostream output of basic_string_view - /// - /// \param o The output stream to print to - /// \param str the string to print - /// \return reference to the output stream - template - std::basic_ostream& operator<<(std::basic_ostream& o, - const basic_string_view& str); - - template - void swap(basic_string_view& lhs, - basic_string_view& rhs) noexcept; - - //-------------------------------------------------------------------------- - // Comparison Functions - //-------------------------------------------------------------------------- - - template - bool operator==(const basic_string_view& lhs, - const basic_string_view& rhs) noexcept; - template - bool operator!=(const basic_string_view& lhs, - const basic_string_view& rhs) noexcept; - template - bool operator<(const basic_string_view& lhs, - const basic_string_view& rhs) noexcept; - template - bool operator>(const basic_string_view& lhs, - const basic_string_view& rhs) noexcept; - template - bool operator<=(const basic_string_view& lhs, - const basic_string_view& rhs) noexcept; - template - bool operator>=(const basic_string_view& lhs, - const basic_string_view& rhs) noexcept; - - //-------------------------------------------------------------------------- - // Type Aliases - //-------------------------------------------------------------------------- - - using string_view = basic_string_view; - using wstring_view = basic_string_view; - using u16string_view = basic_string_view; - using u32string_view = basic_string_view; - -} // namespace bpstd - -#ifndef BPSTD_DETAIL_STRING_VIEW_INL -#define BPSTD_DETAIL_STRING_VIEW_INL - -namespace bpstd { - - //-------------------------------------------------------------------------- - // Constructor - //-------------------------------------------------------------------------- - - template - inline constexpr basic_string_view::basic_string_view() - noexcept - : m_str(nullptr), - m_size(0) - { - - } - - template - template - inline basic_string_view::basic_string_view(const std::basic_string& str) - noexcept - : m_str(str.c_str()), - m_size(str.size()) - { - - } - - template - inline constexpr basic_string_view::basic_string_view(const char_type* str) - noexcept - : m_str(str), - m_size(traits_type::length(str)) - { - - } - - template - inline constexpr basic_string_view::basic_string_view(const char_type* str, size_type count) - noexcept - : m_str(str), - m_size(count) - { - - } - - //-------------------------------------------------------------------------- - // Capacity - //-------------------------------------------------------------------------- - - template - inline constexpr typename basic_string_view::size_type - basic_string_view::size() - const noexcept - { - return m_size; - } - - template - inline constexpr typename basic_string_view::size_type - basic_string_view::length() - const noexcept - { - return size(); - } - - template - inline constexpr typename basic_string_view::size_type - basic_string_view::max_size() - const noexcept - { - return npos - 1; - } - - template - inline constexpr bool basic_string_view::empty() - const noexcept - { - return m_size == 0; - } - - //-------------------------------------------------------------------------- - // Element Access - //-------------------------------------------------------------------------- - - template - inline constexpr const typename basic_string_view::char_type* - basic_string_view::c_str() - const noexcept - { - return m_str; - } - - template - inline constexpr const typename basic_string_view::char_type* - basic_string_view::data() - const noexcept - { - return m_str; - } - - template - inline constexpr typename basic_string_view::const_reference - basic_string_view::operator[](size_type pos) - const noexcept - { - return m_str[pos]; - } - - template - inline constexpr typename basic_string_view::const_reference - basic_string_view::at(size_type pos) - const - { - return pos < m_size ? m_str[pos] : throw std::out_of_range("Input out of range in basic_string_view::at"), m_str[pos]; - } - - template - inline constexpr typename basic_string_view::const_reference - basic_string_view::front( ) - const noexcept - { - return *m_str; - } - - template - inline constexpr typename basic_string_view::const_reference - basic_string_view::back( ) - const noexcept - { - return m_str[m_size-1]; - } - - //-------------------------------------------------------------------------- - // Modifiers - //-------------------------------------------------------------------------- - - template - inline void - basic_string_view::remove_prefix(size_type n) - noexcept - { - m_str += n, m_size -= n; - } - - template - inline void - basic_string_view::remove_suffix(size_type n) - noexcept - { - m_size -= n; - } - - template - inline void - basic_string_view::swap(basic_string_view& v) - noexcept - { - using std::swap; - swap(m_size,v.m_size); - swap(m_str,v.m_str); - } - - //-------------------------------------------------------------------------- - // Conversions - //-------------------------------------------------------------------------- - - template - template - inline constexpr std::basic_string - basic_string_view::to_string(const Allocator& a) - const - { - return std::basic_string(m_str, m_size, a); - } - - template - template - inline constexpr basic_string_view::operator - std::basic_string() - const - { - return std::basic_string(m_str, m_size); - } - - //-------------------------------------------------------------------------- - // String Operations - //-------------------------------------------------------------------------- - - template - inline typename basic_string_view::size_type - basic_string_view::copy(char_type* dest, - size_type count, - size_type pos) - const - { - if(pos >= m_size) { - throw std::out_of_range("Index out of range in basic_string_view::copy"); - } - - const size_type rcount = std::min(m_size - pos,count+1); - std::copy( m_str + pos, m_str + pos + rcount, dest); - return rcount; - } - - template - inline basic_string_view - basic_string_view::substr(size_type pos, - size_type len) - const - { - const size_type max_length = pos > m_size ? 0 : m_size - pos; - - if (pos > size()) { - throw std::out_of_range("Index out of range in basic_string_view::substr"); - } - - return basic_string_view(m_str + pos, std::min(len, max_length) ); - } - - //-------------------------------------------------------------------------- - - template - inline int basic_string_view::compare(basic_string_view v) - const noexcept - { - const size_type rlen = std::min(m_size,v.m_size); - const int compare = Traits::compare(m_str,v.m_str,rlen); - - return (compare ? compare : (m_size < v.m_size ? -1 : (m_size > v.m_size ? 1 : 0))); - } - - template - inline int basic_string_view::compare(size_type pos, - size_type count, - basic_string_view v) - const - { - return substr(pos,count).compare(v); - } - - template - inline int basic_string_view::compare(size_type pos1, - size_type count1, - basic_string_view v, - size_type pos2, - size_type count2) - const - { - return substr(pos1,count1).compare(v.substr(pos2,count2)); - } - - template - inline int basic_string_view::compare(const char_type* s) - const - { - return compare(basic_string_view(s)); - } - - template - inline int basic_string_view::compare(size_type pos, - size_type count, - const char_type* s) - const - { - return substr(pos, count).compare(basic_string_view(s)); - } - - template - inline int basic_string_view::compare(size_type pos, - size_type count1, - const char_type* s, - size_type count2) - const - { - return substr(pos, count1).compare(basic_string_view(s, count2)); - } - - //-------------------------------------------------------------------------- - - template - inline typename basic_string_view::size_type - basic_string_view::find(basic_string_view v, - size_type pos) - const - { - // Can't find a substring if the substring is bigger than this - if (pos > size()) { - return npos; - } - if ((pos + v.size()) > size()) { - return npos; - } - - const auto offset = pos; - const auto increments = size() - v.size(); - - for (auto i = 0u; i <= increments; ++i) { - const auto j = i + offset; - if (substr(j, v.size()) == v) { - return j; - } - } - return npos; - } - - template - inline typename basic_string_view::size_type - basic_string_view::find(char_type c, - size_type pos) - const - { - return find(basic_string_view(&c, 1), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::find(const char_type* s, size_type pos, - size_type count) - const - { - return find(basic_string_view(s, count), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::find(const char_type* s, - size_type pos) - const - { - return find(basic_string_view(s), pos); - } - - //-------------------------------------------------------------------------- - - template - inline typename basic_string_view::size_type - basic_string_view::rfind(basic_string_view v, - size_type pos) - const - { - if (empty()) { - return v.empty() ? 0u : npos; - } - if (v.empty()) { - return std::min(size() - 1, pos); - } - if (v.size() > size()) { - return npos; - } - - auto i = std::min(pos, (size() - v.size())); - while (i != npos) { - if (substr(i, v.size()) == v) { - return i; - } - --i; - } - - return npos; - } - - template - inline typename basic_string_view::size_type - basic_string_view::rfind(char_type c, - size_type pos) - const - { - return rfind(basic_string_view(&c, 1), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::rfind(const char_type* s, size_type pos, - size_type count) - const - { - return rfind(basic_string_view(s, count), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::rfind(const char_type* s, - size_type pos) - const - { - return rfind(basic_string_view(s), pos); - } - - //-------------------------------------------------------------------------- - - template - inline typename basic_string_view::size_type - basic_string_view::find_first_of(basic_string_view v, - size_type pos) - const - { - const auto max_index = size(); - for (auto i = pos; i < max_index; ++i) { - if (is_one_of(m_str[i],v)) { - return i; - } - } - - return npos; - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_first_of(char_type c, - size_type pos) - const - { - return find_first_of(basic_string_view(&c, 1), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_first_of(const char_type* s, size_type pos, - size_type count) - const - { - return find_first_of(basic_string_view(s, count), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_first_of(const char_type* s, - size_type pos) - const - { - return find_first_of(basic_string_view(s), pos); - } - - //-------------------------------------------------------------------------- - - template - inline typename basic_string_view::size_type - basic_string_view::find_last_of(basic_string_view v, - size_type pos) - const - { - if (empty()) { - return npos; - } - const auto max_index = std::min(size() - 1, pos); - for (auto i = 0u; i <= max_index; ++i) { - const auto j = max_index - i; - - if (is_one_of(m_str[j],v)) { - return j; - } - } - - return npos; - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_last_of(char_type c, - size_type pos) - const - { - return find_last_of(basic_string_view(&c, 1), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_last_of(const char_type* s, size_type pos, - size_type count) - const - { - return find_last_of(basic_string_view(s, count), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_last_of(const char_type* s, - size_type pos) - const - { - return find_last_of(basic_string_view(s), pos); - } - - //-------------------------------------------------------------------------- - - template - inline typename basic_string_view::size_type - basic_string_view::find_first_not_of(basic_string_view v, - size_type pos) - const - { - const auto max_index = size(); - for (auto i = pos; i < max_index; ++i) { - if (!is_one_of(m_str[i],v)) { - return i; - } - } - - return npos; - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_first_not_of(char_type c, - size_type pos) - const - { - return find_first_not_of(basic_string_view(&c, 1), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_first_not_of(const char_type* s, - size_type pos, - size_type count) - const - { - return find_first_not_of(basic_string_view(s, count), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_first_not_of(const char_type* s, - size_type pos) - const - { - return find_first_not_of(basic_string_view(s), pos); - } - - //-------------------------------------------------------------------------- - - template - inline typename basic_string_view::size_type - basic_string_view::find_last_not_of(basic_string_view v, - size_type pos) - const - { - if (empty()) { - return npos; - } - const auto max_index = std::min(size() - 1, pos); - for (auto i = 0u; i <= max_index; ++i) { - const auto j = max_index - i; - - if (!is_one_of(m_str[j],v)) { - return j; - } - } - - return npos; - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_last_not_of(char_type c, - size_type pos) - const - { - return find_last_not_of(basic_string_view(&c, 1), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_last_not_of(const char_type* s, - size_type pos, - size_type count) - const - { - return find_last_not_of(basic_string_view(s, count), pos); - } - - template - inline typename basic_string_view::size_type - basic_string_view::find_last_not_of(const char_type* s, - size_type pos) - const - { - return find_last_not_of(basic_string_view(s), pos); - } - - //-------------------------------------------------------------------------- - // Iterator - //-------------------------------------------------------------------------- - - template - inline typename basic_string_view::const_iterator - basic_string_view::begin() - const noexcept - { - return m_str; - } - - template - inline typename basic_string_view::const_iterator - basic_string_view::cbegin() - const noexcept - { - return begin(); - } - - template - inline typename basic_string_view::const_iterator - basic_string_view::end() - const noexcept - { - return m_str + m_size; - } - - template - inline typename basic_string_view::const_iterator - basic_string_view::cend() - const noexcept - { - return cend(); - } - - template - inline typename basic_string_view::const_reverse_iterator - basic_string_view::rbegin() - const noexcept - { - return const_reverse_iterator{end()}; - } - - template - inline typename basic_string_view::const_reverse_iterator - basic_string_view::crbegin() - const noexcept - { - return rbegin(); - } - - template - inline typename basic_string_view::const_reverse_iterator - basic_string_view::rend() - const noexcept - { - return const_reverse_iterator{begin()}; - } - - template - inline typename basic_string_view::const_reverse_iterator - basic_string_view::crend() - const noexcept - { - return crend(); - } - - template - inline bool basic_string_view::is_one_of(CharT c, - basic_string_view str) - { - for (auto s : str) { - if (c == s) { - return true; - } - } - return false; - } - - //-------------------------------------------------------------------------- - // Public Functions - //-------------------------------------------------------------------------- - - template - std::basic_ostream& operator<<(std::basic_ostream& o, - const basic_string_view& str) - { - o.write(str.data(),str.size()); - return o; - } - - template - inline void swap(basic_string_view& lhs, - basic_string_view& rhs) - noexcept - { - lhs.swap(rhs); - } - - //-------------------------------------------------------------------------- - // Comparison Functions - //-------------------------------------------------------------------------- - - template - inline bool operator==(const basic_string_view& lhs, - const basic_string_view& rhs) - noexcept - { - return lhs.compare(rhs) == 0; - } - - template - inline bool operator==(basic_string_view lhs, - const CharT* rhs) - noexcept - { - return lhs == basic_string_view(rhs); - } - - template - inline bool operator==(const CharT* lhs, - const basic_string_view& rhs) - noexcept - { - return basic_string_view(lhs) == rhs; - } - - template - inline bool operator==(const std::basic_string& lhs, - const basic_string_view& rhs) - { - return basic_string_view(lhs) == rhs; - } - - template - inline bool operator==(const basic_string_view& lhs, - const std::basic_string& rhs) - { - return lhs == basic_string_view(rhs); - } - - //-------------------------------------------------------------------------- - - template - inline bool operator!=(const basic_string_view& lhs, - const basic_string_view& rhs) - noexcept - { - return lhs.compare(rhs) != 0; - } - - template - inline bool operator!=(const basic_string_view& lhs, - const CharT* rhs) - noexcept - { - return lhs != basic_string_view(rhs); - } - - template - inline bool operator!=(const CharT* lhs, - const basic_string_view& rhs) - noexcept - { - return basic_string_view(lhs) != rhs; - } - - template - inline bool operator!=(const std::basic_string& lhs, - const basic_string_view& rhs) - { - return basic_string_view(lhs) != rhs; - } - - template - inline bool operator!=(const basic_string_view& lhs, - const std::basic_string& rhs) - { - return lhs != basic_string_view(rhs); - } - //-------------------------------------------------------------------------- - - template - inline bool operator<(const basic_string_view& lhs, - const basic_string_view& rhs) - noexcept - { - return lhs.compare(rhs) < 0; - } - - template - inline bool operator<(const basic_string_view& lhs, - const CharT* rhs) - noexcept - { - return lhs < basic_string_view(rhs); - } - - template - inline bool operator<(const CharT* lhs, - const basic_string_view& rhs) - noexcept - { - return basic_string_view(lhs) < rhs; - } - - template - inline bool operator<(const std::basic_string& lhs, - const basic_string_view& rhs) - { - return basic_string_view(lhs) < rhs; - } - - template - inline bool operator<(const basic_string_view& lhs, - const std::basic_string& rhs) - { - return lhs < basic_string_view(rhs); - } - - //-------------------------------------------------------------------------- - - template - inline bool operator>(const basic_string_view& lhs, - const basic_string_view& rhs) - noexcept - { - return lhs.compare(rhs) > 0; - } - - template - inline bool operator>(const basic_string_view& lhs, - const CharT* rhs) - noexcept - { - return lhs > basic_string_view(rhs); - } - - template - inline bool operator>(const CharT* lhs, - const basic_string_view& rhs) - noexcept - { - return basic_string_view(lhs) > rhs; - } - - template - inline bool operator>(const std::basic_string& lhs, - const basic_string_view& rhs) - { - return basic_string_view(lhs) > rhs; - } - - template - inline bool operator>(const basic_string_view& lhs, - const std::basic_string& rhs) - { - return lhs > basic_string_view(rhs); - } - - //-------------------------------------------------------------------------- - - template - inline bool operator<=(const basic_string_view& lhs, - const basic_string_view& rhs) - noexcept - { - return lhs.compare(rhs) <= 0; - } - - template - inline bool operator<=(const basic_string_view& lhs, - const CharT* rhs) - noexcept - { - return lhs <= basic_string_view(rhs); - } - - template - inline bool operator<=(const CharT* lhs, - const basic_string_view& rhs) - noexcept - { - return basic_string_view(lhs) <= rhs; - } - - template - inline bool operator<=(const std::basic_string& lhs, - const basic_string_view& rhs) - { - return basic_string_view(lhs) <= rhs; - } - - template - inline bool operator<=(const basic_string_view& lhs, - const std::basic_string& rhs) - { - return lhs <= basic_string_view(rhs); - } - - //-------------------------------------------------------------------------- - - template - inline bool operator>=(const basic_string_view& lhs, - const basic_string_view& rhs) - noexcept - { - return lhs.compare(rhs) >= 0; - } - - template - inline bool operator>=(const basic_string_view& lhs, - const CharT* rhs) - noexcept - { - return lhs >= basic_string_view(rhs); - } - - template - inline bool operator>=(const CharT* lhs, - const basic_string_view& rhs) - noexcept - { - return basic_string_view(lhs) >= rhs; - } - - template - inline bool operator>=(const std::basic_string& lhs, - const basic_string_view& rhs) - { - return basic_string_view(lhs) >= rhs; - } - - template - inline bool operator>=(const basic_string_view& lhs, - const std::basic_string& rhs) - { - return lhs >= basic_string_view(rhs); - } - -} // namespace bpstd - -#endif /* BPSTD_DETAIL_STRING_VIEW_INL */ - -#endif /* BPSTD_STRING_VIEW_HPP */ From 9835f76939eef4218a87bbf33dacfaf4206476fd Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 18 Nov 2023 13:39:18 +0000 Subject: [PATCH 42/45] Use std::variant to save a bit of RAM --- include/znc/Translation.h | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/include/znc/Translation.h b/include/znc/Translation.h index f830e3d2..3673493b 100644 --- a/include/znc/Translation.h +++ b/include/znc/Translation.h @@ -19,6 +19,7 @@ #include #include +#include struct CTranslationInfo { static std::map GetTranslations(); @@ -83,20 +84,18 @@ class CDelayedTranslation { class COptionalTranslation { public: - COptionalTranslation(const CString& sText) - : m_bTranslating(false), m_sText(sText) {} + COptionalTranslation(const CString& sText) : m_text(sText) {} COptionalTranslation(const char* s) : COptionalTranslation(CString(s)) {} - COptionalTranslation(const CDelayedTranslation& dTranslation) - : m_bTranslating(true), m_dTranslation(dTranslation) {} + COptionalTranslation(const CDelayedTranslation& dTranslation) : m_text(dTranslation) {} CString Resolve() const { - return m_bTranslating ? m_dTranslation.Resolve() : m_sText; + if (m_text.index() == 0) { + return std::get<0>(m_text); + } + return std::get<1>(m_text).Resolve(); } private: - bool m_bTranslating; - // TODO switch to std::variant after C++17 - CString m_sText; - CDelayedTranslation m_dTranslation; + std::variant m_text; }; // Used by everything except modules. From 157095fd7c395483da4a8489b4e5c0a247a84a05 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 18 Nov 2023 14:10:22 +0000 Subject: [PATCH 43/45] Require C++ version via cmake features This works nicely with znc-buildmod because it will now ask cmake to support at least C++17, but not limit modules to it --- CMakeLists.txt | 2 -- src/CMakeLists.txt | 9 ++------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b659762..26b77abe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,8 +42,6 @@ endfunction() list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") include(TestCXX17) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED true) if(NOT CYGWIN) # We don't want to use -std=gnu++17 instead of -std=c++17, but among other # things, -std=c++17 on cygwin defines __STRICT_ANSI__ which makes cygwin diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1697bf30..4c7c8f2e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -86,16 +86,11 @@ set_target_properties(znclib PROPERTIES OUTPUT_NAME "znc" SOVERSION "${ZNC_VERSION}") -# CMake started supporting metafeature cxx_std_11 only in 3.8 -set(required_cxx11_features - cxx_range_for cxx_nullptr cxx_override - cxx_lambdas cxx_auto_type) -target_compile_features(znc PUBLIC ${required_cxx11_features}) -target_compile_features(znclib PUBLIC ${required_cxx11_features}) - add_library(ZNC INTERFACE) target_link_libraries(ZNC INTERFACE ${znc_link} ${zncpubdeps}) target_compile_definitions(ZNC INTERFACE "znc_export_lib_EXPORTS") +target_compile_features(ZNC INTERFACE cxx_std_17) +target_compile_features(znclib PUBLIC cxx_std_17) if(HAVE_I18N) add_subdirectory(po) From 0a355636b256eec3c0416c5e18f6dd151010de13 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sat, 18 Nov 2023 15:07:46 +0000 Subject: [PATCH 44/45] Cleanup ZNC_LVREFQUAL --- include/znc/Message.h | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/include/znc/Message.h b/include/znc/Message.h index 0b6d374f..de54dc52 100644 --- a/include/znc/Message.h +++ b/include/znc/Message.h @@ -17,19 +17,6 @@ #ifndef ZNC_MESSAGE_H #define ZNC_MESSAGE_H -// Remove this after Feb 2016 when Debian 7 is EOL -#if __cpp_ref_qualifiers >= 200710 -#define ZNC_LVREFQUAL & -#elif defined(__clang__) -#define ZNC_LVREFQUAL & -#elif __GNUC__ > 4 || \ - __GNUC__ == 4 && (__GNUC_MINOR__ > 8 || \ - __GNUC_MINOR__ == 8 && __GNUC_PATCHLEVEL__ >= 1) -#define ZNC_LVREFQUAL & -#else -#define ZNC_LVREFQUAL -#endif - #ifdef SWIG #define ZNC_MSG_DEPRECATED(msg) #else @@ -166,7 +153,7 @@ class CMessage { // Implicit and explicit conversion to a subclass reference. #ifndef SWIG template - M& As() ZNC_LVREFQUAL { + M& As() & { static_assert(std::is_base_of{}, "Must be subclass of CMessage"); static_assert(sizeof(M) == sizeof(CMessage), @@ -175,7 +162,7 @@ class CMessage { } template - const M& As() const ZNC_LVREFQUAL { + const M& As() const& { static_assert(std::is_base_of{}, "Must be subclass of CMessage"); static_assert(sizeof(M) == sizeof(CMessage), @@ -185,12 +172,12 @@ class CMessage { template {}>::type> - operator M&() ZNC_LVREFQUAL { + operator M&() & { return As(); } template {}>::type> - operator const M&() const ZNC_LVREFQUAL { + operator const M&() const& { return As(); } // REGISTER_ZNC_MESSAGE allows SWIG to instantiate correct .As<> calls. From a2ac24312181986ad75ba95bb3a7013769c95092 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sun, 19 Nov 2023 09:29:36 +0000 Subject: [PATCH 45/45] Force argon support in CI --- .appveyor.yml | 2 +- .github/build.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index d5bcd2e9..72b790d7 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -18,7 +18,7 @@ install: build_script: - git submodule update --init - mkdir build - - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; ../configure --enable-charset --enable-zlib --enable-openssl --enable-perl --enable-python --enable-cyrus < /dev/null; result=$?; cmake --system-information > config.log; appveyor PushArtifact config.log; exit $result" + - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; ../configure --enable-charset --enable-zlib --enable-openssl --enable-perl --enable-python --enable-cyrus --enable-argon < /dev/null; result=$?; cmake --system-information > config.log; appveyor PushArtifact config.log; exit $result" - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; make VERBOSE=1 -j2 < /dev/null" - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; make install < /dev/null" - c:\cygwin-root\bin\sh -lc "znc --version" diff --git a/.github/build.sh b/.github/build.sh index 527e9196..14214901 100644 --- a/.github/build.sh +++ b/.github/build.sh @@ -23,7 +23,7 @@ esac mkdir build cd build -../configure --enable-debug --enable-perl --enable-python --enable-tcl --enable-cyrus --enable-charset $CFGFLAGS +../configure --enable-debug --enable-perl --enable-python --enable-tcl --enable-cyrus --enable-charset --enable-argon $CFGFLAGS cmake --system-information make -j2 VERBOSE=1