mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-03-20 16:26:39 +01:00
store translation as string_view
Some checks are pending
Build Debian packages / bookworm (push) Waiting to run
Build Debian packages / bullseye (push) Waiting to run
Build Debian packages / buster (push) Waiting to run
Build on FreeBSD / with UPnP (push) Waiting to run
Build on OSX / With USE_UPNP=no (push) Waiting to run
Build on OSX / With USE_UPNP=yes (push) Waiting to run
Build on Windows / clang-x86_64 (push) Waiting to run
Build on Windows / i686 (push) Waiting to run
Build on Windows / ucrt-x86_64 (push) Waiting to run
Build on Windows / x86_64 (push) Waiting to run
Build on Windows / CMake clang-x86_64 (push) Waiting to run
Build on Windows / CMake i686 (push) Waiting to run
Build on Windows / CMake ucrt-x86_64 (push) Waiting to run
Build on Windows / CMake x86_64 (push) Waiting to run
Build on Windows / XP (push) Waiting to run
Build on Ubuntu / Make with USE_UPNP=no (push) Waiting to run
Build on Ubuntu / Make with USE_UPNP=yes (push) Waiting to run
Build on Ubuntu / CMake with -DWITH_UPNP=OFF (push) Waiting to run
Build on Ubuntu / CMake with -DWITH_UPNP=ON (push) Waiting to run
Build containers / Building container for linux/amd64 (push) Waiting to run
Build containers / Building container for linux/arm64 (push) Waiting to run
Build containers / Building container for linux/arm/v7 (push) Waiting to run
Build containers / Building container for linux/386 (push) Waiting to run
Build containers / Pushing merged manifest (push) Blocked by required conditions
Some checks are pending
Build Debian packages / bookworm (push) Waiting to run
Build Debian packages / bullseye (push) Waiting to run
Build Debian packages / buster (push) Waiting to run
Build on FreeBSD / with UPnP (push) Waiting to run
Build on OSX / With USE_UPNP=no (push) Waiting to run
Build on OSX / With USE_UPNP=yes (push) Waiting to run
Build on Windows / clang-x86_64 (push) Waiting to run
Build on Windows / i686 (push) Waiting to run
Build on Windows / ucrt-x86_64 (push) Waiting to run
Build on Windows / x86_64 (push) Waiting to run
Build on Windows / CMake clang-x86_64 (push) Waiting to run
Build on Windows / CMake i686 (push) Waiting to run
Build on Windows / CMake ucrt-x86_64 (push) Waiting to run
Build on Windows / CMake x86_64 (push) Waiting to run
Build on Windows / XP (push) Waiting to run
Build on Ubuntu / Make with USE_UPNP=no (push) Waiting to run
Build on Ubuntu / Make with USE_UPNP=yes (push) Waiting to run
Build on Ubuntu / CMake with -DWITH_UPNP=OFF (push) Waiting to run
Build on Ubuntu / CMake with -DWITH_UPNP=ON (push) Waiting to run
Build containers / Building container for linux/amd64 (push) Waiting to run
Build containers / Building container for linux/arm64 (push) Waiting to run
Build containers / Building container for linux/arm/v7 (push) Waiting to run
Build containers / Building container for linux/386 (push) Waiting to run
Build containers / Pushing merged manifest (push) Blocked by required conditions
This commit is contained in:
parent
c3d4d1bdf4
commit
ede8244e54
20 changed files with 52 additions and 49 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2024, The PurpleI2P Project
|
* Copyright (c) 2013-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -132,7 +132,8 @@ namespace http {
|
||||||
|
|
||||||
static void ShowTunnelDetails (std::stringstream& s, enum i2p::tunnel::TunnelState eState, bool explr, int bytes)
|
static void ShowTunnelDetails (std::stringstream& s, enum i2p::tunnel::TunnelState eState, bool explr, int bytes)
|
||||||
{
|
{
|
||||||
std::string state, stateText;
|
std::string state;
|
||||||
|
std::string_view stateText;
|
||||||
switch (eState)
|
switch (eState)
|
||||||
{
|
{
|
||||||
case i2p::tunnel::eTunnelStateBuildReplyReceived :
|
case i2p::tunnel::eTunnelStateBuildReplyReceived :
|
||||||
|
@ -146,7 +147,7 @@ namespace http {
|
||||||
}
|
}
|
||||||
if (stateText.empty ()) stateText = tr(state);
|
if (stateText.empty ()) stateText = tr(state);
|
||||||
|
|
||||||
s << "<span class=\"tunnel " << state << "\"> " << stateText << ((explr) ? " (" + tr("exploratory") + ")" : "") << "</span>, ";
|
s << "<span class=\"tunnel " << state << "\"> " << stateText << ((explr) ? " (" + std::string(tr("exploratory")) + ")" : "") << "</span>, "; // TODO:
|
||||||
ShowTraffic(s, bytes);
|
ShowTraffic(s, bytes);
|
||||||
s << "\r\n";
|
s << "\r\n";
|
||||||
}
|
}
|
||||||
|
@ -213,7 +214,7 @@ namespace http {
|
||||||
"</html>\r\n";
|
"</html>\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ShowError(std::stringstream& s, const std::string& string)
|
static void ShowError(std::stringstream& s, std::string_view string)
|
||||||
{
|
{
|
||||||
s << "<b>" << tr("ERROR") << ":</b> " << string << "<br>\r\n";
|
s << "<b>" << tr("ERROR") << ":</b> " << string << "<br>\r\n";
|
||||||
}
|
}
|
||||||
|
@ -1262,7 +1263,7 @@ namespace http {
|
||||||
ShowLeasesSets(s);
|
ShowLeasesSets(s);
|
||||||
else {
|
else {
|
||||||
res.code = 400;
|
res.code = 400;
|
||||||
ShowError(s, tr("Unknown page") + ": " + page);
|
ShowError(s, std::string (tr("Unknown page")) + ": " + page); // TODO
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1462,7 +1463,7 @@ namespace http {
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
res.code = 400;
|
res.code = 400;
|
||||||
ShowError(s, tr("Unknown command") + ": " + cmd);
|
ShowError(s, std::string (tr("Unknown command")) + ": " + cmd); // TODO
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021, The PurpleI2P Project
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace afrikaans // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"failed", "Het misluk"},
|
{"failed", "Het misluk"},
|
||||||
{"unknown", "onbekend"},
|
{"unknown", "onbekend"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2023, The PurpleI2P Project
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace armenian // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f ԿիԲ"},
|
{"%.2f KiB", "%.2f ԿիԲ"},
|
||||||
{"%.2f MiB", "%.2f ՄիԲ"},
|
{"%.2f MiB", "%.2f ՄիԲ"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2022-2024, The PurpleI2P Project
|
* Copyright (c) 2022-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace chinese // language namespace
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2022-2024, The PurpleI2P Project
|
* Copyright (c) 2022-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace czech // language namespace
|
||||||
return (n == 1) ? 0 : (n >= 2 && n <= 4) ? 1 : 2;
|
return (n == 1) ? 0 : (n >= 2 && n <= 4) ? 1 : 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021, The PurpleI2P Project
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -30,7 +30,7 @@ namespace english // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"", ""},
|
{"", ""},
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2022-2024, The PurpleI2P Project
|
* Copyright (c) 2022-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace french // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f Kio"},
|
{"%.2f KiB", "%.2f Kio"},
|
||||||
{"%.2f MiB", "%.2f Mio"},
|
{"%.2f MiB", "%.2f Mio"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2022-2023, The PurpleI2P Project
|
* Copyright (c) 2022-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace german // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2023, The PurpleI2P Project
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -30,7 +30,7 @@ namespace i18n
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string translate (const std::string& arg)
|
std::string_view translate (std::string_view arg)
|
||||||
{
|
{
|
||||||
return i2p::client::context.GetLanguage ()->GetString (arg);
|
return i2p::client::context.GetLanguage ()->GetString (arg);
|
||||||
}
|
}
|
||||||
|
|
16
i18n/I18N.h
16
i18n/I18N.h
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2023, The PurpleI2P Project
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -10,6 +10,7 @@
|
||||||
#define __I18N_H__
|
#define __I18N_H__
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <string_view>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
@ -18,12 +19,13 @@ namespace i2p
|
||||||
{
|
{
|
||||||
namespace i18n
|
namespace i18n
|
||||||
{
|
{
|
||||||
|
typedef std::map<std::string_view, std::string_view> LocaleStrings;
|
||||||
class Locale
|
class Locale
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Locale (
|
Locale (
|
||||||
const std::string& language,
|
const std::string& language,
|
||||||
const std::map<std::string, std::string>& strings,
|
const LocaleStrings& strings,
|
||||||
const std::map<std::string, std::vector<std::string>>& plurals,
|
const std::map<std::string, std::vector<std::string>>& plurals,
|
||||||
std::function<int(int)> formula
|
std::function<int(int)> formula
|
||||||
): m_Language (language), m_Strings (strings), m_Plurals (plurals), m_Formula (formula) { };
|
): m_Language (language), m_Strings (strings), m_Plurals (plurals), m_Formula (formula) { };
|
||||||
|
@ -34,7 +36,7 @@ namespace i18n
|
||||||
return m_Language;
|
return m_Language;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetString (const std::string& arg) const
|
std::string_view GetString (std::string_view arg) const
|
||||||
{
|
{
|
||||||
const auto it = m_Strings.find(arg);
|
const auto it = m_Strings.find(arg);
|
||||||
if (it == m_Strings.end())
|
if (it == m_Strings.end())
|
||||||
|
@ -63,13 +65,13 @@ namespace i18n
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const std::string m_Language;
|
const std::string m_Language;
|
||||||
const std::map<std::string, std::string> m_Strings;
|
const LocaleStrings m_Strings;
|
||||||
const std::map<std::string, std::vector<std::string>> m_Plurals;
|
const std::map<std::string, std::vector<std::string>> m_Plurals;
|
||||||
std::function<int(int)> m_Formula;
|
std::function<int(int)> m_Formula;
|
||||||
};
|
};
|
||||||
|
|
||||||
void SetLanguage(const std::string &lang);
|
void SetLanguage(const std::string &lang);
|
||||||
std::string translate (const std::string& arg);
|
std::string_view translate (std::string_view arg);
|
||||||
std::string translate (const std::string& arg, const std::string& arg2, const int& n);
|
std::string translate (const std::string& arg, const std::string& arg2, const int& n);
|
||||||
} // i18n
|
} // i18n
|
||||||
} // i2p
|
} // i2p
|
||||||
|
@ -79,7 +81,7 @@ namespace i18n
|
||||||
* @param arg String with message
|
* @param arg String with message
|
||||||
*/
|
*/
|
||||||
template<typename TValue>
|
template<typename TValue>
|
||||||
std::string tr (TValue&& arg)
|
std::string_view tr (TValue&& arg)
|
||||||
{
|
{
|
||||||
return i2p::i18n::translate(std::forward<TValue>(arg));
|
return i2p::i18n::translate(std::forward<TValue>(arg));
|
||||||
}
|
}
|
||||||
|
@ -92,7 +94,7 @@ std::string tr (TValue&& arg)
|
||||||
template<typename TValue, typename... TArgs>
|
template<typename TValue, typename... TArgs>
|
||||||
std::string tr (TValue&& arg, TArgs&&... args)
|
std::string tr (TValue&& arg, TArgs&&... args)
|
||||||
{
|
{
|
||||||
std::string tr_str = i2p::i18n::translate(std::forward<TValue>(arg));
|
std::string tr_str = std::string (i2p::i18n::translate(std::forward<TValue>(arg))); // TODO:
|
||||||
|
|
||||||
size_t size = std::snprintf(NULL, 0, tr_str.c_str(), std::forward<TArgs>(args)...);
|
size_t size = std::snprintf(NULL, 0, tr_str.c_str(), std::forward<TArgs>(args)...);
|
||||||
std::string str(size, 0);
|
std::string str(size, 0);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2022-2023, The PurpleI2P Project
|
* Copyright (c) 2022-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace italian // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2023-2024, The PurpleI2P Project
|
* Copyright (c) 2023-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace polish // language namespace
|
||||||
return (n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
|
return (n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2023-2024, The PurpleI2P Project
|
* Copyright (c) 2023-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace portuguese // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2023, The PurpleI2P Project
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace russian // language namespace
|
||||||
return n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;
|
return n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f КиБ"},
|
{"%.2f KiB", "%.2f КиБ"},
|
||||||
{"%.2f MiB", "%.2f МиБ"},
|
{"%.2f MiB", "%.2f МиБ"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2022-2023, The PurpleI2P Project
|
* Copyright (c) 2022-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace spanish // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2023, The PurpleI2P Project
|
* Copyright (c) 2023-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace swedish // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2023, The PurpleI2P Project
|
* Copyright (c) 2023-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace turkish // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2023, The PurpleI2P Project
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace turkmen // language namespace
|
||||||
return n != 1 ? 1 : 0;
|
return n != 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2023, The PurpleI2P Project
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace ukrainian // language namespace
|
||||||
return n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
|
return n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f КіБ"},
|
{"%.2f KiB", "%.2f КіБ"},
|
||||||
{"%.2f MiB", "%.2f МіБ"},
|
{"%.2f MiB", "%.2f МіБ"},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2023, The PurpleI2P Project
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
@ -29,7 +29,7 @@ namespace uzbek // language namespace
|
||||||
return n > 1 ? 1 : 0;
|
return n > 1 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::map<std::string, std::string> strings
|
static const LocaleStrings strings
|
||||||
{
|
{
|
||||||
{"%.2f KiB", "%.2f KiB"},
|
{"%.2f KiB", "%.2f KiB"},
|
||||||
{"%.2f MiB", "%.2f MiB"},
|
{"%.2f MiB", "%.2f MiB"},
|
||||||
|
|
Loading…
Add table
Reference in a new issue