i2pd/i18n/Hindi.cpp
r4sas aab8296619
Some checks failed
Build on OSX / With USE_UPNP=no (push) Has been cancelled
Build on OSX / With USE_UPNP=yes (push) Has been cancelled
Build on Windows / clang-x86_64 (push) Has been cancelled
Build on Windows / i686 (push) Has been cancelled
Build on Windows / ucrt-x86_64 (push) Has been cancelled
Build on Windows / x86_64 (push) Has been cancelled
Build on Windows / CMake clang-x86_64 (push) Has been cancelled
Build on Windows / CMake i686 (push) Has been cancelled
Build on Windows / CMake ucrt-x86_64 (push) Has been cancelled
Build on Windows / CMake x86_64 (push) Has been cancelled
Build containers / Building container for linux/amd64 (push) Has been cancelled
Build containers / Building container for linux/arm64 (push) Has been cancelled
Build containers / Building container for linux/arm/v7 (push) Has been cancelled
Build containers / Building container for linux/386 (push) Has been cancelled
Build Debian packages / bookworm (push) Has been cancelled
Build Debian packages / bullseye (push) Has been cancelled
Build Debian packages / buster (push) Has been cancelled
Build on FreeBSD / with UPnP (push) Has been cancelled
Build on Windows / XP (push) Has been cancelled
Build on Ubuntu / Make with USE_UPNP=no (push) Has been cancelled
Build on Ubuntu / Make with USE_UPNP=yes (push) Has been cancelled
Build on Ubuntu / CMake with -DWITH_UPNP=OFF (push) Has been cancelled
Build on Ubuntu / CMake with -DWITH_UPNP=ON (push) Has been cancelled
Build containers / Pushing merged manifest (push) Has been cancelled
[i18n] add Hebrew and Hindi translations, add rtl support (testing)
Signed-off-by: r4sas <r4sas@i2pmail.org>
2025-05-18 02:20:31 +03:00

226 lines
17 KiB
C++

/*
* Copyright (c) 2025, The PurpleI2P Project
*
* This file is part of Purple i2pd project and licensed under BSD3
*
* See full license text in LICENSE file at top of project tree
*/
#include <map>
#include <vector>
#include <string>
#include <memory>
#include "I18N.h"
// Hindi localization file
namespace i2p
{
namespace i18n
{
namespace hindi // language namespace
{
// language name in lowercase
static std::string language = "hindi";
// See for language plural forms here:
// https://localization-guide.readthedocs.io/en/latest/l10n/pluralforms.html
static int plural (int n) {
return n != 1 ? 1 : 0;
}
// Right to Left language?
static bool rtl = false;
static const LocaleStrings strings
{
{"%.2f KiB", "%.2f рдХреАрдмреА"},
{"%.2f MiB", "%.2f рдореАрдмреА"},
{"%.2f GiB", "%.2f рдЬреАрдмреА"},
{"building", "рдирд┐рд░реНрдорд╛рдг"},
{"failed", "рд╡рд┐рдлрд▓"},
{"expiring", "рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛"},
{"established", "рд╕реНрдерд╛рдкрд┐рдд"},
{"unknown", "рдЕрдЬреНрдЮрд╛рдд"},
{"exploratory", "рдЕрдиреНрд╡реЗрд╖рдгрд╛рддреНрдордХ"},
{"Purple I2P Webconsole", "рдкрд░реНрдкрд▓ I2P рд╡реЗрдм рдХрдВрд╕реЛрд▓"},
{"<b>i2pd</b> webconsole", "<b>i2pd</b> рд╡реЗрдм рдХрдВрд╕реЛрд▓"},
{"Main page", "рдореБрдЦреНрдп рдкреГрд╖реНрда"},
{"Router commands", "рд░рд╛рдЙрдЯрд░ рдЖрджреЗрд╢"},
{"Local Destinations", "рд╕реНрдерд╛рдиреАрдп рдЧрдВрддрд╡реНрдп"},
{"LeaseSets", "рдкрдЯреНрдЯ рд╕рдореБрдЪреНрдЪрдп"},
{"Tunnels", "рд╕реБрд░рдВрдЧ"},
{"Transit Tunnels", "рд╕рдВрдЪрд░рдг рд╕реБрд░рдВрдЧреЗрдВ"},
{"Transports", "рдкрд░рд┐рд╡рд╣рди"},
{"I2P tunnels", "I2P рд╕реБрд░рдВрдЧреЗрдВ"},
{"SAM sessions", "SAM рд╕рддреНрд░"},
{"ERROR", "рддреНрд░реБрдЯрд┐"},
{"OK", "рдареАрдХ рд╣реИ"},
{"Testing", "рдкрд░реАрдХреНрд╖рдг"},
{"Firewalled", "рдлрд╛рдпрд░рд╡реЙрд▓"},
{"Unknown", "рдЕрдЬреНрдЮрд╛рдд"},
{"Proxy", "рдкреНрд░реЙрдХреНрд╕реА"},
{"Mesh", "рдЬрд╛рд▓реА"},
{"Clock skew", "рдШрдбрд╝реА рд╕рдВрдХреЗрдд рд╡рд┐рдЪрд▓рди"},
{"Offline", "рдСрдлрд▓рд╛рдЗрди"},
{"Symmetric NAT", "рд╕рдордорд┐рддреАрдп NAT"},
{"Full cone NAT", "рдкреВрд░реНрдгрдХреЛрдг NAT"},
{"No Descriptors", "рдХреЛрдИ рд╡рд░реНрдгрдирдХрд░реНрддреНрддреГ рдирд╣реАрдВ рд╣реИрдВ"},
{"Uptime", "рд╕рдВрдЪрд╛рд▓рди рд╕рдордп"},
{"Network status", "рд╕рдВрдкрд░реНрдХ рд╕реНрдерд┐рддрд┐"},
{"Network status v6", "рд╕рдВрдкрд░реНрдХ рд╕реНрдерд┐рддрд┐ v6"},
{"Stopping in", "рдореЗрдВ рдЕрд╡рд╕рд╛рди рдкреНрд░рд╛рд░рдВрдн рд╣реЛ рд░рд╣рд╛ рд╣реИ"},
{"Family", "рдкрд░рд┐рд╡рд╛рд░"},
{"Tunnel creation success rate", "рд╕реБрд░рдВрдЧ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛ рджрд░"},
{"Total tunnel creation success rate", "рдХреБрд▓ рд╕реБрд░рдВрдЧ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛ рджрд░"},
{"Received", "рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ"},
{"%.2f KiB/s", "%.2f рдХреАрдмреА/рд╕реЗ"},
{"Sent", "рдкреНрд░реЗрд╖рд┐рдд"},
{"Transit", "рд╕рдВрдЪрд░рдг"},
{"Data path", "рдбреЗрдЯрд╛ рдкрде"},
{"Hidden content. Press on text to see.", "рд╕рд╛рдордЧреНрд░реА рдЫрд┐рдкрд╛рдИ рдЧрдИ рд╣реИред рджреЗрдЦрдиреЗ рд╣реЗрддреБ рдкрд╛рда рдкрд░ рджрдмрд╛рдПрдБред"},
{"Router Ident", "рд░рд╛рдЙрдЯрд░ рдкрд░рд┐рдЪрдп"},
{"Router Family", "рд░рд╛рдЙрдЯрд░ рдкрд░рд┐рд╡рд╛рд░"},
{"Router Caps", "рд░рд╛рдЙрдЯрд░ рдХреИрдкреНрд╕"},
{"Version", "рд╕рдВрд╕реНрдХрд░рдг"},
{"Our external address", "рд╣рдорд╛рд░рд╛ рдмрд╛рд╣реНрдп рдкрддрд╛"},
{"supported", "рд╕рдорд░реНрдерд┐рдд"},
{"Routers", "рд░рд╛рдЙрдЯрд░"},
{"Floodfills", "рдкреВрд░реНрдгрдХ рд╕рдВрд╡рд╛рд╣рдХ"},
{"Client Tunnels", "рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реБрд░рдВрдЧреЗрдВ"},
{"Services", "рд╕реЗрд╡рд╛рдПрдБ"},
{"Enabled", "рд╕рдХреНрд╖рдо рд╣реИ"},
{"Disabled", "рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ"},
{"Encrypted B33 address", "рдХреВрдЯрд▓рд┐рдЦрд┐рдд B33 рдкрддрд╛"},
{"Address registration line", "рдкрддрд╛ рдкрдВрдЬреАрдХрд░рдг рдкрдВрдХреНрддрд┐"},
{"Domain", "рдбреЛрдореЗрди"},
{"Generate", "рд╕реГрдЬрд┐рдд рдХрд░реЗрдВ"},
{"<b>Note:</b> result string can be used only for registering 2LD domains (example.i2p). For registering subdomains please use i2pd-tools.", "<b>рдиреЛрдЯ:</b> рдкрд░рд┐рдгрд╛рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ 2LD рдбреЛрдореЗрдиреЛрдВ (рдЬреИрд╕реЗ example.i2p) рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрдбреЛрдореЗрди рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ i2pd-tools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред"},
{"Address", "рдкрддрд╛"},
{"Type", "рдкреНрд░рдХрд╛рд░"},
{"EncType", "рдХреВрдЯ рдкреНрд░рдХрд╛рд░"},
{"Expire LeaseSet", "рдкрдЯреНрдЯ рд╕рдореБрдЪреНрдЪрдп рдХрд╛ рдЕрд╡рд╕рд╛рди рдХрд░реЗрдВ"},
{"Inbound tunnels", "рдЖрдЧрдордирд╢реАрд▓ рд╕реБрд░рдВрдЧреЗрдВ"},
{"%dms", "%dms"},
{"Outbound tunnels", "рдкреНрд░рд╕реНрдерд╛рдирд╢реАрд▓ рд╕реБрд░рдВрдЧреЗрдВ"},
{"Tags", "рдЪрд┐рдиреНрд╣рд┐рдд"},
{"Incoming", "рдЖрдЧрд╛рдореА"},
{"Outgoing", "рдирд┐рд░реНрдЧрд╛рдореА"},
{"Destination", "рдЧрдВрддрд╡реНрдп"},
{"Amount", "рдорд╛рддреНрд░рд╛"},
{"Incoming Tags", "рдЖрдЧрд╛рдореА рдЪрд┐рдиреНрд╣рд┐рдд"},
{"Tags sessions", "рдЪрд┐рдиреНрд╣рд┐рдд рд╕рддреНрд░ OR рд╕рддреНрд░ рдХреЛ рдЪрд┐рдиреНрд╣рд┐рдд рдХрд░реЗрдВ"},
{"Status", "рд╕реНрдерд┐рддрд┐"},
{"Local Destination", "рд╕реНрдерд╛рдиреАрдп рдЧрдВрддрд╡реНрдп"},
{"Streams", "рдзрд╛рд░рд╛рдПрдБ"},
{"Close stream", "рдкреНрд░рд╡рд╛рд╣ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ"},
{"Such destination is not found", "рдРрд╕рд╛ рдЧрдВрддрд╡реНрдп рдирд╣реАрдВ рдорд┐рд▓рд╛"},
{"I2CP session not found", "I2CP рд╕рддреНрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛"},
{"I2CP is not enabled", "I2CP рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ"},
{"Invalid", "рдЕрдорд╛рдиреНрдп"},
{"Store type", "рднрдгреНрдбрд╛рд░рдЧрд╛рд░ рдХрд╛ рдкреНрд░рдХрд╛рд░"},
{"Expires", "рдЕрд╡рд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ"},
{"Non Expired Leases", "рдЕрдирд╡рд╕рд┐рдд рдкрдЯреНрдЯ"},
{"Gateway", "рдкреНрд░рд╡реЗрд╢рджреНрд╡рд╛рд░"},
{"TunnelID", "рд╕реБрд░рдВрдЧ ID"},
{"EndDate", "рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐"},
{"floodfill mode is disabled", "рдкреВрд░реНрдгрдХ рд╕рдВрд╡рд╛рд╣рдХ рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ"},
{"Queue size", "рдХреНрдпреВ рдЖрдХрд╛рд░"},
{"Run peer test", "рд╕рд╣рдХрд░реНрдореА рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдБ"},
{"Reload tunnels configuration", "рд╕реБрд░рдВрдЧ рд╡рд┐рдиреНрдпрд╛рд╕ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ"},
{"Decline transit tunnels", "рд╕рдВрдЪрд░рдг рд╕реБрд░рдВрдЧреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ"},
{"Accept transit tunnels", "рд╕рдВрдЪрд░рдг рд╕реБрд░рдВрдЧреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ"},
{"Cancel graceful shutdown", "рд╕реМрдореНрдп рдЕрд╡рд╕рд╛рди рдирд┐рд░рд╕реНрдд рдХрд░реЗрдВ"},
{"Start graceful shutdown", "рд╕реМрдореНрдп рд╕рдорд╛рдкрди рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ"},
{"Force shutdown", "рдмрд╛рдзреНрдп рдЕрд╡рд╕рд╛рди"},
{"Reload external CSS styles", "рдмрд╛рд╣реНрдп CSS рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ"},
{"<b>Note:</b> any action done here are not persistent and not changes your config files.", "<b>рдЯрд┐рдкреНрдкрдгреА:</b> рдпрд╣рд╛рдБ рдХрд┐рдП рдЧрдП рдХреЛрдИ рднреА рдХреНрд░рд┐рдпрд╛рдПрдБ рд╕реНрдерд╛рдпреА рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдВрдЪрд┐рдХрд╛ рдореЗрдВ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд░рддреАрдВред"},
{"Logging level", "рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░"},
{"Transit tunnels limit", "рд╕рдВрдЪрд░рдг рд╕реБрд░рдВрдЧреЛрдВ рдХреА рд╕реАрдорд╛"},
{"Change", "рдмрджрд▓рдирд╛"},
{"Change language", "рднрд╛рд╖рд╛ рдмрджрд▓реЗрдВ"},
{"no transit tunnels currently built", "рд╕рдВрдЪрд░рдг рд╕реБрд░рдВрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ"},
{"SAM disabled", "SAM рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ"},
{"no sessions currently running", "рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рд╕рддреНрд░ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ"},
{"SAM session not found", "SAM рд╕рддреНрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛"},
{"SAM Session", "SAM рд╕рддреНрд░"},
{"Server Tunnels", "рд╕рд░реНрд╡рд░ рд╕реБрд░рдВрдЧ"},
{"Client Forwards", "рдХреНрд▓рд╛рдЗрдВрдЯ рдлреЙрд░рд╡рд░реНрдбреНрд╕"},
{"Server Forwards", "рд╕рд░реНрд╡рд░ рдлреЙрд░рд╡рд░реНрдбреНрд╕"},
{"Unknown page", "рдЕрдЬреНрдЮрд╛рдд рдкреГрд╖реНрда"},
{"Invalid token", "рдЕрдорд╛рдиреНрдп рдЯреЛрдХрди"},
{"SUCCESS", "рд╕рдлрд▓рддрд╛"},
{"Stream closed", "рдкреНрд░рд╡рд╛рд╣ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ"},
{"Stream not found or already was closed", "рдкреНрд░рд╡рд╛рд╣ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рдЕрдерд╡рд╛ рдЗрд╕рдХрд╛ рдкреВрд░реНрд╡ рдореЗрдВ рд╣реА рд╕рдорд╛рдкрди рд╣реЛ рдЪреБрдХрд╛ рд╣реИ"},
{"Destination not found", "рдЧрдВрддрд╡реНрдп рдирд╣реАрдВ рдорд┐рд▓рд╛"},
{"StreamID can't be null", "рдкреНрд░рд╡рд╛рд╣ ID рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ"},
{"Return to destination page", "рдЧрдВрддрд╡реНрдп рдкреГрд╖реНрда рдкрд░ рдкреБрдирдГ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдБ"},
{"You will be redirected in %d seconds", "рдЖрдкрдХреЛ %d рд╕реЗрдХрдВрдб рдореЗрдВ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛"},
{"LeaseSet expiration time updated", "рдкрдЯреНрдЯ рд╕рдореБрдЪреНрдЪрдп рдХреА рдЕрд╡рд╕рд╛рди рд╕рдордп рдХреЛ рдЕрджреНрдпрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ"},
{"LeaseSet is not found or already expired", "рдкрдЯреНрдЯ рд╕рдореБрдЪреНрдЪрдп рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рдпрд╛ рдЗрд╕рдХрд╛ рдкреВрд░реНрд╡рдореЗрд╡ рдЕрд╡рд╕рд╛рди рд╣реЛ рдЪреБрдХрд╛ рд╣реИ"},
{"Transit tunnels count must not exceed %d", "рд╕рдВрдЪрд░рдг рд╕реБрд░рдВрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ %d рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП"},
{"Back to commands list", "рдЖрджреЗрд╢ рд╕реВрдЪреА рдкрд░ рдкреБрдирдГ рд▓реМрдЯреЗрдВ"},
{"Register at reg.i2p", "reg.i2p рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд░реЗрдВ"},
{"Description", "рд╡рд┐рд╡рд░рдг"},
{"A bit information about service on domain", "рдбреЛрдореЗрди рдкрд░ рд╕реЗрд╡рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереЛрдбрд╝реА рдЬрд╛рдирдХрд╛рд░реА"},
{"Submit", "рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ"},
{"Domain can't end with .b32.i2p", "рдбреЛрдореЗрди рдХрд╛ рдЕрдВрдд .b32.i2p рд╕реЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛"},
{"Domain must end with .i2p", "рдбреЛрдореЗрди рдХрд╛ рдЕрдВрдд .i2p рд╕реЗ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ"},
{"Unknown command", "рдЕрдЬреНрдЮрд╛рдд рдЖрджреЗрд╢"},
{"Command accepted", "рдЖрджреЗрд╢ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛"},
{"Proxy error", "рдкреНрд░реЙрдХреНрд╕реА рддреНрд░реБрдЯрд┐"},
{"Proxy info", "рдкреНрд░реЙрдХреНрд╕реА рдЬрд╛рдирдХрд╛рд░реА"},
{"Proxy error: Host not found", "рдкреНрд░реЙрдХреНрд╕реА рддреНрд░реБрдЯрд┐: рд╣реЛрд╕реНрдЯ рдирд╣реАрдВ рдорд┐рд▓рд╛"},
{"Remote host not found in router's addressbook", "рд░рд╛рдЙрдЯрд░ рдХреА рдкрддрд╛ рдкреБрд╕реНрддрдХ рдореЗрдВ рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ рдирд╣реАрдВ рдорд┐рд▓рд╛"},
{"You may try to find this host on jump services below", "рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЬрдВрдк рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдЗрд╕ рд╣реЛрд╕реНрдЯ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ"},
{"Invalid request", "рдЕрдорд╛рдиреНрдп рдЕрдиреБрд░реЛрдз"},
{"Proxy unable to parse your request", "рдкреНрд░реЙрдХреНрд╕реА рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИ"},
{"Addresshelper is not supported", "Addresshelper рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ"},
{"Host %s is <font color=red>already in router's addressbook</font>. <b>Be careful: source of this URL may be harmful!</b> Click here to update record: <a href=\"%s%s%s&update=true\">Continue</a>.", "рд╣реЛрд╕реНрдЯ %s рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд╛рдЙрдЯрд░ рдХреА рдкрддрд╛-рдкреБрд╕реНрддрд┐рдХрд╛ рдореЗрдВ <font color=red>рдЙрдкрд╕реНрдерд┐рдд рд╣реИ</font>ред <b>рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ: рдЗрд╕ URL рдХрд╛ рд╕реНрд░реЛрдд рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ!</b> рдЕрднрд┐рд▓реЗрдЦ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рд╣реЗрддреБ рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ: <a href=\"%s%s%s&update=true\">рдЬрд╛рд░реА рд░рдЦреЗрдВ</a>ред"},
{"Addresshelper forced update rejected", "Addresshelper рдХрд╛ рдЬрдмрд░рди рдЕрджреНрдпрддрди рдЕрд╕реНрд╡реАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛"},
{"To add host <b>%s</b> in router's addressbook, click here: <a href=\"%s%s%s\">Continue</a>.", "рд░рд╛рдЙрдЯрд░ рдХреА рдкрддрд╛-рдкреБрд╕реНрддрд┐рдХрд╛ рдореЗрдВ рд╣реЛрд╕реНрдЯ <b>%s</b> рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╣реЗрддреБ, рдХреГрдкрдпрд╛ рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ: <a href=\"%s%s%s\">рдЬрд╛рд░реА рд░рдЦреЗрдВ</a>ред"},
{"Addresshelper request", "Addresshelper рдЕрдиреБрд░реЛрдз"},
{"Host %s added to router's addressbook from helper. Click here to proceed: <a href=\"%s\">Continue</a>.", "рд╕рд╣рд╛рдпрдХ рд╕реЗ рд╣реЛрд╕реНрдЯ %s рд░рд╛рдЙрдЯрд░ рдХреА рдкрддрд╛-рдкреБрд╕реНрддрд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╣реЗрддреБ рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ: <a href=\"%s\">рдЬрд╛рд░реА рд░рдЦреЗрдВ</a>ред"},
{"Addresshelper adding", "Addresshelper рдЬреЛрдбрд╝рдирд╛"},
{"Host %s is <font color=red>already in router's addressbook</font>. Click here to update record: <a href=\"%s%s%s&update=true\">Continue</a>.", "рд╣реЛрд╕реНрдЯ %s рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд╛рдЙрдЯрд░ рдХреА рдкрддрд╛-рдкреБрд╕реНрддрд┐рдХрд╛ рдореЗрдВ <font color=red>рдЙрдкрд╕реНрдерд┐рдд рд╣реИ</font>ред рдЕрднрд┐рд▓реЗрдЦ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рд╣реЗрддреБ рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ: <a href=\"%s%s%s&update=true\">рдЬрд╛рд░реА рд░рдЦреЗрдВ</a>ред"},
{"Addresshelper update", "Addresshelper рдЕрджреНрдпрддрди рдХрд░рдирд╛"},
{"Invalid request URI", "рдЕрдорд╛рдиреНрдп рдЕрдиреБрд░реЛрдз URI"},
{"Can't detect destination host from request", "рдЕрдиреБрд░реЛрдз рд╕реЗ рдЧрдВрддрд╡реНрдп рд╣реЛрд╕реНрдЯ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ"},
{"Outproxy failure", "рдЖрдЙрдЯрдкреНрд░реЙрдХреНрд╕реА рд╡рд┐рдлрд▓рддрд╛"},
{"Bad outproxy settings", "рдЧрд▓рдд рдЖрдЙрдЯрдкреНрд░реЙрдХреНрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕"},
{"Host %s is not inside I2P network, but outproxy is not enabled", "рд╣реЛрд╕реНрдЯ %s I2P рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рднреАрддрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЙрдЯрдкреНрд░реЙрдХреНрд╕реА рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ"},
{"Unknown outproxy URL", "рдЕрдЬреНрдЮрд╛рдд рдЖрдЙрдЯрдкреНрд░реЙрдХреНрд╕реА URL"},
{"Cannot resolve upstream proxy", "рдКрд░реНрдзреНрд╡рдзрд╛рд░рд╛ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛"},
{"Hostname is too long", "рд╣реЛрд╕реНрдЯрдирд╛рдо рдЕрддреНрдпрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реИ"},
{"Cannot connect to upstream SOCKS proxy", "рдЙрд░реНрдзреНрд╡рдзрд╛рд░рд╛ SOCKS рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рд╕рдВрдкрд░реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реЛ рдкрд╛ рд░рд╣рд╛ рд╣реИ"},
{"Cannot negotiate with SOCKS proxy", "SOCKS рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдпрди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛"},
{"CONNECT error", "рд╕рдВрдкрд░реНрдХ рддреНрд░реБрдЯрд┐"},
{"Failed to connect", "рд╕рдВрдкрд░реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓"},
{"SOCKS proxy error", "SOCKS рдкреНрд░реЙрдХреНрд╕реА рддреНрд░реБрдЯрд┐"},
{"Failed to send request to upstream", "рдКрд░реНрдзреНрд╡рд╡рд╛рд╣рд┐рдиреА рдХреЛ рдЕрдиреБрд░реЛрдз рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рд╣реБрдИ"},
{"No reply from SOCKS proxy", "SOCKS рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рдХреЛрдИ рдкреНрд░рддреНрдпреБрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ"},
{"Cannot connect", "рд╕рдВрдкрд░реНрдХ рдирд╣реАрдВ рд╣реЛ рдкрд╛ рд░рд╣рд╛ рд╣реИ"},
{"HTTP out proxy not implemented", "HTTP рдЖрдЙрдЯ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ"},
{"Cannot connect to upstream HTTP proxy", "рдЙрд░реНрдзреНрд╡рдзрд╛рд░рд╛ HTTP рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рд╕рдВрдкрд░реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реЛ рдкрд╛ рд░рд╣рд╛ рд╣реИ"},
{"Host is down", "рд╣реЛрд╕реНрдЯ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ"},
{"Can't create connection to requested host, it may be down. Please try again later.", "рдЕрдиреБрд░реЛрдзрд┐рдд рд╣реЛрд╕реНрдЯ рд╕реЗ рд╕рдВрдкрд░реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛ред рд╕рдВрднрд╡рддрдГ рд╡рд╣ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ рдмрд╛рдж рдореЗрдВ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред"},
{"", ""},
};
static std::map<std::string, std::vector<std::string>> plurals
{
{"%d days", {"%d рджрд┐рди", "%d рджрд┐рди"}},
{"%d hours", {"%d рдШрдВрдЯрд╛", "%dрдШрдВрдЯреЗ"}},
{"%d minutes", {"%d рдорд┐рдирдЯ", "%d рдорд┐рдирдЯ"}},
{"%d seconds", {"%d рд╕реЗрдХрдВрдб", "%d рд╕реЗрдХрдВрдб"}},
{"", {"", "", ""}},
};
std::shared_ptr<const i2p::i18n::Locale> GetLocale()
{
return std::make_shared<i2p::i18n::Locale>(language, rtl, strings, plurals, [] (int n)->int { return plural(n); });
}
} // language
} // i18n
} // i2p