mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-13 11:25:02 -05:00
util: Catch translation string errors at compile time
This commit is contained in:
parent
9adebe1455
commit
fa601ab9f7
2 changed files with 10 additions and 5 deletions
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2020-2022 The Bitcoin Core developers
|
// Copyright (c) 2020-present The Bitcoin Core developers
|
||||||
// Distributed under the MIT software license, see the accompanying
|
// Distributed under the MIT software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
@ -101,7 +101,6 @@ FUZZ_TARGET(string)
|
||||||
(void)TrimString(random_string_1, random_string_2);
|
(void)TrimString(random_string_1, random_string_2);
|
||||||
(void)UrlDecode(random_string_1);
|
(void)UrlDecode(random_string_1);
|
||||||
(void)ContainsNoNUL(random_string_1);
|
(void)ContainsNoNUL(random_string_1);
|
||||||
(void)_(random_string_1.c_str());
|
|
||||||
try {
|
try {
|
||||||
throw scriptnum_error{random_string_1};
|
throw scriptnum_error{random_string_1};
|
||||||
} catch (const std::runtime_error&) {
|
} catch (const std::runtime_error&) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2019-2022 The Bitcoin Core developers
|
// Copyright (c) 2019-present The Bitcoin Core developers
|
||||||
// Distributed under the MIT software license, see the accompanying
|
// Distributed under the MIT software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
@ -67,13 +67,19 @@ bilingual_str format(const bilingual_str& fmt, const Args&... args)
|
||||||
/** Translate a message to the native language of the user. */
|
/** Translate a message to the native language of the user. */
|
||||||
const extern std::function<std::string(const char*)> G_TRANSLATION_FUN;
|
const extern std::function<std::string(const char*)> G_TRANSLATION_FUN;
|
||||||
|
|
||||||
|
struct ConstevalStringLiteral {
|
||||||
|
const char* const lit;
|
||||||
|
consteval ConstevalStringLiteral(const char* str) : lit{str} {}
|
||||||
|
consteval ConstevalStringLiteral(std::nullptr_t) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Translation function.
|
* Translation function.
|
||||||
* If no translation function is set, simply return the input.
|
* If no translation function is set, simply return the input.
|
||||||
*/
|
*/
|
||||||
inline bilingual_str _(const char* psz)
|
inline bilingual_str _(ConstevalStringLiteral str)
|
||||||
{
|
{
|
||||||
return bilingual_str{psz, G_TRANSLATION_FUN ? (G_TRANSLATION_FUN)(psz) : psz};
|
return bilingual_str{str.lit, G_TRANSLATION_FUN ? (G_TRANSLATION_FUN)(str.lit) : str.lit};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // BITCOIN_UTIL_TRANSLATION_H
|
#endif // BITCOIN_UTIL_TRANSLATION_H
|
||||||
|
|
Loading…
Add table
Reference in a new issue