Changeset View
Changeset View
Standalone View
Standalone View
src/util/translation.h
Show All 11 Lines | |||||
/** | /** | ||||
* Bilingual messages: | * Bilingual messages: | ||||
* - in GUI: user's native language + untranslated (i.e. English) | * - in GUI: user's native language + untranslated (i.e. English) | ||||
* - in log and stderr: untranslated only | * - in log and stderr: untranslated only | ||||
*/ | */ | ||||
struct bilingual_str { | struct bilingual_str { | ||||
std::string original; | std::string original; | ||||
std::string translated; | std::string translated; | ||||
bilingual_str &operator+=(const bilingual_str &rhs) { | |||||
original += rhs.original; | |||||
translated += rhs.translated; | |||||
return *this; | |||||
} | |||||
}; | }; | ||||
inline bilingual_str operator+(const bilingual_str &lhs, | inline bilingual_str operator+(bilingual_str lhs, const bilingual_str &rhs) { | ||||
const bilingual_str &rhs) { | lhs += rhs; | ||||
return bilingual_str{lhs.original + rhs.original, | return lhs; | ||||
lhs.translated + rhs.translated}; | |||||
} | } | ||||
/** Mark a bilingual_str as untranslated */ | /** Mark a bilingual_str as untranslated */ | ||||
inline bilingual_str Untranslated(std::string original) { | inline bilingual_str Untranslated(std::string original) { | ||||
return {original, original}; | return {original, original}; | ||||
} | } | ||||
/** Unary operator to return the original */ | |||||
inline std::string OpOriginal(const bilingual_str &b) { | |||||
return b.original; | |||||
} | |||||
/** Unary operator to return the translation */ | |||||
inline std::string OpTranslated(const bilingual_str &b) { | |||||
return b.translated; | |||||
} | |||||
namespace tinyformat { | namespace tinyformat { | ||||
template <typename... Args> | template <typename... Args> | ||||
bilingual_str format(const bilingual_str &fmt, const Args &... args) { | bilingual_str format(const bilingual_str &fmt, const Args &... args) { | ||||
return bilingual_str{format(fmt.original, args...), | return bilingual_str{format(fmt.original, args...), | ||||
format(fmt.translated, args...)}; | format(fmt.translated, args...)}; | ||||
} | } | ||||
} // namespace tinyformat | } // namespace tinyformat | ||||
Show All 14 Lines |