Coverage Report

Created: 2025-02-21 14:37

/root/bitcoin/src/util/translation.h
Line
Count
Source (jump to first uncovered line)
1
// Copyright (c) 2019-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef BITCOIN_UTIL_TRANSLATION_H
6
#define BITCOIN_UTIL_TRANSLATION_H
7
8
#include <tinyformat.h>
9
#include <util/string.h>
10
11
#include <cassert>
12
#include <functional>
13
#include <string>
14
15
/** Translate a message to the native language of the user. */
16
using TranslateFn = std::function<std::string(const char*)>;
17
const extern TranslateFn G_TRANSLATION_FUN;
18
19
/**
20
 * Bilingual messages:
21
 *   - in GUI: user's native language + untranslated (i.e. English)
22
 *   - in log and stderr: untranslated only
23
 */
24
struct bilingual_str {
25
    std::string original;
26
    std::string translated;
27
28
    bilingual_str& operator+=(const bilingual_str& rhs)
29
0
    {
30
0
        original += rhs.original;
31
0
        translated += rhs.translated;
32
0
        return *this;
33
0
    }
34
35
    bool empty() const
36
0
    {
37
0
        return original.empty();
38
0
    }
39
40
    void clear()
41
0
    {
42
0
        original.clear();
43
0
        translated.clear();
44
0
    }
45
};
46
47
inline bilingual_str operator+(bilingual_str lhs, const bilingual_str& rhs)
48
0
{
49
0
    lhs += rhs;
50
0
    return lhs;
51
0
}
52
53
namespace util {
54
//! Compile-time literal string that can be translated with an optional translation function.
55
struct TranslatedLiteral {
56
    const char* const original;
57
    const TranslateFn* translate_fn;
58
59
0
    consteval TranslatedLiteral(const char* str, const TranslateFn* fn = &G_TRANSLATION_FUN) : original{str}, translate_fn{fn} { assert(original); }
60
132
    operator std::string() const { return translate_fn && *translate_fn ? (*translate_fn)(original) : original; }
61
132
    operator bilingual_str() const { return {original, std::string{*this}}; }
62
};
63
64
// TranslatedLiteral operators for formatting and adding to strings.
65
0
inline std::ostream& operator<<(std::ostream& os, const TranslatedLiteral& lit) { return os << std::string{lit}; }
66
template<typename T>
67
0
T operator+(const T& lhs, const TranslatedLiteral& rhs) { return lhs + static_cast<T>(rhs); }
Unexecuted instantiation: _ZN4utilplI13bilingual_strEET_RKS2_RKNS_17TranslatedLiteralE
Unexecuted instantiation: _ZN4utilplINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_RKS7_RKNS_17TranslatedLiteralE
68
template<typename T>
69
0
T operator+(const TranslatedLiteral& lhs, const T& rhs) { return static_cast<T>(lhs) + rhs; }
70
71
template <unsigned num_params>
72
struct BilingualFmt {
73
    const ConstevalFormatString<num_params> original;
74
    TranslatedLiteral lit;
75
    consteval BilingualFmt(TranslatedLiteral l) : original{l.original}, lit{l} {}
76
};
77
} // namespace util
78
79
consteval auto _(util::TranslatedLiteral str) { return str; }
80
81
/** Mark a bilingual_str as untranslated */
82
0
inline bilingual_str Untranslated(std::string original) { return {original, original}; }
83
84
// Provide an overload of tinyformat::format for BilingualFmt format strings and bilingual_str or TranslatedLiteral args.
85
namespace tinyformat {
86
template <typename... Args>
87
bilingual_str format(util::BilingualFmt<sizeof...(Args)> fmt, const Args&... args)
88
0
{
89
0
    const auto original_arg{[](const auto& arg) -> const auto& {
90
0
        if constexpr (std::is_same_v<decltype(arg), const bilingual_str&>) {
91
0
            return arg.original;
92
        } else if constexpr (std::is_same_v<decltype(arg), const util::TranslatedLiteral&>) {
93
            return arg.original;
94
0
        } else {
95
0
            return arg;
96
0
        }
97
0
    }};
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS6_EERKDaSH_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS6_EERKDaSH_
Unexecuted instantiation: _ZZN10tinyformat6formatIJiiEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIiEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSC_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA13_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS6_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA13_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA10_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSC_
Unexecuted instantiation: _ZZN10tinyformat6formatIJiEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIiEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJiiN6wallet13WalletFeatureEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIiEERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJiiN6wallet13WalletFeatureEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS2_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJ13bilingual_strEEES1_N4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJjjEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIjEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKcEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS2_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKcA42_cNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS2_EERKDaSP_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKcA42_cNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS3_EERKDaSP_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKcA42_cNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clISE_EERKDaSP_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKctEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS2_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKctEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clItEERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S6_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS6_EERKDaSH_
Unexecuted instantiation: _ZZN10tinyformat6formatIJljEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIlEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJljEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIjEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clISB_EERKDaSM_
Unexecuted instantiation: _ZZN10tinyformat6formatIJmjEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clImEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJmjEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIjEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEmEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clISB_EERKDaSM_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEmEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clImEERKDaSM_
Unexecuted instantiation: _ZZN10tinyformat6formatIJmEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clImEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJlEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIlEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJdEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIdEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_ciiiA42_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_ciiiA42_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIiEERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_ciiiA42_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS2_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA7_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA7_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA14_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA14_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_cA27_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_cA27_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS2_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA8_cA38_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS1_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA8_cA38_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E_clIS2_EERKDaSD_
98
0
    const auto translated_arg{[](const auto& arg) -> const auto& {
99
0
        if constexpr (std::is_same_v<decltype(arg), const bilingual_str&>) {
100
0
            return arg.translated;
101
0
        } else {
102
0
            return arg;
103
0
        }
104
0
    }};
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS6_EERKDaSH_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS6_EERKDaSH_
Unexecuted instantiation: _ZZN10tinyformat6formatIJiiEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIiEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSC_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA13_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS6_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA13_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA10_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSC_
Unexecuted instantiation: _ZZN10tinyformat6formatIJiEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIiEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJiiN6wallet13WalletFeatureEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIiEERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJiiN6wallet13WalletFeatureEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS2_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJ13bilingual_strEEES1_N4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJjjEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIjEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKcEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS2_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKcA42_cNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS2_EERKDaSP_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKcA42_cNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS3_EERKDaSP_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKcA42_cNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clISE_EERKDaSP_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKctEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS2_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJPKctEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clItEERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S6_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS6_EERKDaSH_
Unexecuted instantiation: _ZZN10tinyformat6formatIJljEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIlEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJljEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIjEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clISB_EERKDaSM_
Unexecuted instantiation: _ZZN10tinyformat6formatIJmjEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clImEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJmjEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIjEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEmEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clISB_EERKDaSM_
Unexecuted instantiation: _ZZN10tinyformat6formatIJNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEmEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clImEERKDaSM_
Unexecuted instantiation: _ZZN10tinyformat6formatIJmEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clImEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJlEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIlEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJdEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIdEERKDaSB_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_ciiiA42_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_ciiiA42_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIiEERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_ciiiA42_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS2_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA7_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA7_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA14_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA14_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS7_EERKDaSI_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_cA27_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA13_cA27_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS2_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA8_cA38_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS1_EERKDaSD_
Unexecuted instantiation: _ZZN10tinyformat6formatIJA8_cA38_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_ENKUlRKT_E0_clIS2_EERKDaSD_
105
0
    return bilingual_str{tfm::format(fmt.original, original_arg(args)...),
106
0
                         tfm::format(RuntimeFormat{std::string{fmt.lit}}, translated_arg(args)...)};
107
0
}
Unexecuted instantiation: _ZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJiiEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA13_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA13_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA13_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA12_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA10_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJiEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJiiN6wallet13WalletFeatureEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJ13bilingual_strEEES1_N4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJjjEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJPKcEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJPKcA42_cNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJPKctEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S6_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJljEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJmjEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJNSt8__detail14_Quoted_stringIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEEmEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJmEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJlEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJdEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA13_ciiiA42_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA10_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_EEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA7_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA14_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA13_cA27_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
Unexecuted instantiation: _ZN10tinyformat6formatIJA8_cA38_cEEE13bilingual_strN4util12BilingualFmtIXsZT_EEEDpRKT_
108
} // namespace tinyformat
109
110
#endif // BITCOIN_UTIL_TRANSLATION_H