2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-08-26 12:27:12 +00:00
2021-08-24 21:32:43 +03:00

167 lines
4.7 KiB
C++

/*
This file is part of Kotatogram Desktop,
the unofficial app based on Telegram Desktop.
For license and copyright information please follow this link:
https://github.com/kotatogram/kotatogram-desktop/blob/dev/LEGAL
*/
#pragma once
namespace Kotato {
namespace Lang {
struct Var {
Var() {};
Var(const QString &k, const QString &v) {
key = k;
value = v;
}
QString key;
QString value;
};
struct EntVar {
EntVar() {};
EntVar(const QString &k, TextWithEntities v) {
key = k;
value = v;
}
QString key;
TextWithEntities value;
};
void Load(const QString &baseLangCode, const QString &langCode);
QString Translate(
const QString &key,
Var var1 = Var(),
Var var2 = Var(),
Var var3 = Var(),
Var var4 = Var());
QString Translate(
const QString &key,
float64 value,
Var var1 = Var(),
Var var2 = Var(),
Var var3 = Var(),
Var var4 = Var());
TextWithEntities TranslateWithEntities(
const QString &key,
EntVar var1 = EntVar(),
EntVar var2 = EntVar(),
EntVar var3 = EntVar(),
EntVar var4 = EntVar());
TextWithEntities TranslateWithEntities(
const QString &key,
float64 value,
EntVar var1 = EntVar(),
EntVar var2 = EntVar(),
EntVar var3 = EntVar(),
EntVar var4 = EntVar());
rpl::producer<> Events();
} // namespace Lang
} // namespace Kotato
// Shorthands
inline QString ktr(
const QString &key,
::Kotato::Lang::Var var1 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var2 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var3 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var4 = ::Kotato::Lang::Var()) {
return ::Kotato::Lang::Translate(key, var1, var2, var3, var4);
}
inline QString ktr(
const QString &key,
float64 value,
::Kotato::Lang::Var var1 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var2 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var3 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var4 = ::Kotato::Lang::Var()) {
return ::Kotato::Lang::Translate(key, value, var1, var2, var3, var4);
}
inline TextWithEntities ktre(
const QString &key,
::Kotato::Lang::EntVar var1 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var2 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var3 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var4 = ::Kotato::Lang::EntVar()) {
return ::Kotato::Lang::TranslateWithEntities(key, var1, var2, var3, var4);
}
inline TextWithEntities ktre(
const QString &key,
float64 value,
::Kotato::Lang::EntVar var1 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var2 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var3 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var4 = ::Kotato::Lang::EntVar()) {
return ::Kotato::Lang::TranslateWithEntities(key, value, var1, var2, var3, var4);
}
inline rpl::producer<QString> rktr(
const QString &key,
::Kotato::Lang::Var var1 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var2 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var3 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var4 = ::Kotato::Lang::Var()) {
return rpl::single(
::Kotato::Lang::Translate(key, var1, var2, var3, var4)
) | rpl::then(
::Kotato::Lang::Events() | rpl::map(
[=]{ return ::Kotato::Lang::Translate(key, var1, var2, var3, var4); })
);
}
inline rpl::producer<QString> rktr(
const QString &key,
float64 value,
::Kotato::Lang::Var var1 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var2 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var3 = ::Kotato::Lang::Var(),
::Kotato::Lang::Var var4 = ::Kotato::Lang::Var()) {
return rpl::single(
::Kotato::Lang::Translate(key, value, var1, var2, var3, var4)
) | rpl::then(
::Kotato::Lang::Events() | rpl::map(
[=]{ return ::Kotato::Lang::Translate(key, value, var1, var2, var3, var4); })
);
}
inline rpl::producer<TextWithEntities> rktre(
const QString &key,
::Kotato::Lang::EntVar var1 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var2 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var3 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var4 = ::Kotato::Lang::EntVar()) {
return rpl::single(
::Kotato::Lang::TranslateWithEntities(key, var1, var2, var3, var4)
) | rpl::then(
::Kotato::Lang::Events() | rpl::map(
[=]{ return ::Kotato::Lang::TranslateWithEntities(key, var1, var2, var3, var4); })
);
}
inline rpl::producer<TextWithEntities> rktre(
const QString &key,
float64 value,
::Kotato::Lang::EntVar var1 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var2 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var3 = ::Kotato::Lang::EntVar(),
::Kotato::Lang::EntVar var4 = ::Kotato::Lang::EntVar()) {
return rpl::single(
::Kotato::Lang::TranslateWithEntities(key, value, var1, var2, var3, var4)
) | rpl::then(
::Kotato::Lang::Events() | rpl::map(
[=]{ return ::Kotato::Lang::TranslateWithEntities(key, value, var1, var2, var3, var4); })
);
}