/* * 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 */ #ifndef __I18N_H__ #define __I18N_H__ #include "ClientContext.h" namespace i2p { namespace i18n { inline void SetLanguage(const std::string &lang) { const auto it = i2p::i18n::languages.find(lang); if (it == i2p::i18n::languages.end()) // fallback i2p::client::context.SetLanguage (i2p::i18n::english::GetLocale()); else i2p::client::context.SetLanguage (it->second.LocaleFunc()); } inline std::string translate (const std::string& arg) { return i2p::client::context.GetLanguage ()->GetString (arg); } inline std::string translate (const std::string& arg, const std::string& arg2, const int& n) { return i2p::client::context.GetLanguage ()->GetPlural (arg, arg2, n); } } // i18n } // i2p template std::string tr (TArgs&&... args) { return i2p::i18n::translate(std::forward(args)...); } #endif // __I18N_H__