Files
pip/libs/main/application/pitranslator.h
peri4 9a928f6feb add PITranslator
begin localization "ru"
2024-11-02 18:43:30 +03:00

65 lines
1.8 KiB
C++

/*! \file pitranslator.h
* \ingroup Application
* \~\brief
* \~english Translation support
* \~russian Поддержка перевода
*/
/*
PIP - Platform Independent Primitives
Translation support
Ivan Pelipenko peri4ko@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef pitranslator_H
#define pitranslator_H
#include "pifile.h"
#include "piiostream.h"
#include "pithread.h"
//! \ingroup Application
//! \~\brief
//! \~english Translation support
//! \~russian Поддержка перевода
class PIP_EXPORT PITranslator {
public:
static PIString tr(const PIString & in, const PIString & context = {});
static PIString tr(const char * in, const PIString & context = {}) { return tr(PIString(in), context); }
static void clear();
static void loadLang(const PIString & short_lang);
static void loadConfig(const PIString & content);
private:
PITranslator();
~PITranslator();
NO_COPY_CLASS(PITranslator)
struct Context {
void add(const PIString & in, const PIString & out);
PIMap<uint, PIString> strings;
};
static PITranslator * instance();
void clearInternal();
Context * createContextInternal(const PIString & context);
PIMap<uint, Context *> contexts;
};
#endif