diff --git a/contrib/i18n/README.md b/contrib/i18n/README.md
index 4efc26d0..57021f60 100644
--- a/contrib/i18n/README.md
+++ b/contrib/i18n/README.md
@@ -10,7 +10,7 @@ Regex for transforming gettext translations to our format:
```
in: msgid\ \"(.*)\"\nmsgid_plural\ \"(.*)\"\nmsgstr\[0\]\ \"(.*)\"\n(msgstr\[1\]\ \"(.*)\"\n)?(msgstr\[2\]\ \"(.*)\"\n)?(msgstr\[3\]\ \"(.*)\"\n)?(msgstr\[4\]\ \"(.*)\"\n)?(msgstr\[5\]\ \"(.*)\"\n)?
-out: #{"$2", {"$3", "$4", "$6", "$8", "$10"}},\n
+out: #{"$2", {"$3", "$5", "$7", "$9", "$11"}},\n
```
```
diff --git a/i18n/Chinese.cpp b/i18n/Chinese.cpp
index 8a55ab6a..8c5ec3bc 100644
--- a/i18n/Chinese.cpp
+++ b/i18n/Chinese.cpp
@@ -38,9 +38,9 @@ namespace chinese // language namespace
{"building", "正在构建"},
{"failed", "连接失败"},
{"expiring", "即将过期"},
- {"established", "连接已建立"},
+ {"established", "连接成功"},
{"unknown", "未知"},
- {"exploratory", "探测"},
+ {"exploratory", "探索"},
{"Purple I2P Webconsole", "Purple I2P 网页控制台"},
{"i2pd webconsole", "i2pd 网页控制台"},
{"Main page", "主页"},
@@ -130,7 +130,7 @@ namespace chinese // language namespace
{"Note: any action done here are not persistent and not changes your config files.", "注意: 此处完成的任何操作都不是永久的,不会更改您的配置文件。"},
{"Logging level", "日志记录级别"},
{"Transit tunnels limit", "中转隧道限制"},
- {"Change", "更改"},
+ {"Change", "修改"},
{"Change language", "更改语言"},
{"no transit tunnels currently built", "目前未构建中转隧道"},
{"SAM disabled", "SAM 已禁用"},
@@ -200,7 +200,7 @@ namespace chinese // language namespace
static std::map> plurals
{
- {"days", {"天"}},
+ {"days", {"日"}},
{"hours", {"时"}},
{"minutes", {"分"}},
{"seconds", {"秒"}},
diff --git a/i18n/I18N_langs.h b/i18n/I18N_langs.h
index 87bc503e..88ba9721 100644
--- a/i18n/I18N_langs.h
+++ b/i18n/I18N_langs.h
@@ -77,6 +77,7 @@ namespace i18n
namespace english { std::shared_ptr GetLocale (); }
namespace french { std::shared_ptr GetLocale (); }
namespace german { std::shared_ptr GetLocale (); }
+ namespace italian { std::shared_ptr GetLocale (); }
namespace russian { std::shared_ptr GetLocale (); }
namespace turkmen { std::shared_ptr GetLocale (); }
namespace ukrainian { std::shared_ptr GetLocale (); }
@@ -93,6 +94,7 @@ namespace i18n
{ "english", {"English", "en", i2p::i18n::english::GetLocale} },
{ "french", {"Français", "fr", i2p::i18n::french::GetLocale} },
{ "german", {"Deutsch", "de", i2p::i18n::german::GetLocale} },
+ { "italian", {"Italiano", "it", i2p::i18n::italian::GetLocale} },
{ "russian", {"русский язык", "ru", i2p::i18n::russian::GetLocale} },
{ "turkmen", {"türkmen dili", "tk", i2p::i18n::turkmen::GetLocale} },
{ "ukrainian", {"украї́нська мо́ва", "uk", i2p::i18n::ukrainian::GetLocale} },
diff --git a/i18n/Italian.cpp b/i18n/Italian.cpp
new file mode 100644
index 00000000..ef2e26d0
--- /dev/null
+++ b/i18n/Italian.cpp
@@ -0,0 +1,216 @@
+/*
+* Copyright (c) 2022, 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