|
7 | 7 | #include <boost/locale/message.hpp> |
8 | 8 | #pragma warning( pop ) |
9 | 9 |
|
| 10 | +#include <cassert> |
| 11 | +#include <cstring> |
| 12 | + |
10 | 13 | namespace MR::Locale |
11 | 14 | { |
12 | 15 |
|
13 | | -std::string translate( const char* msg, int domainId ) |
| 16 | +namespace |
| 17 | +{ |
| 18 | + |
| 19 | +inline const char* asCStr( std::string_view sv ) |
| 20 | +{ |
| 21 | + assert( std::strlen( sv.data() ) == sv.size() ); |
| 22 | + return sv.data(); |
| 23 | +} |
| 24 | + |
| 25 | +} // namespace |
| 26 | + |
| 27 | +std::string translate( std::string_view msg, Domain domain ) |
14 | 28 | { |
15 | | - if ( domainId < 0 ) |
16 | | - return translate_noop( msg ); |
17 | | - return boost::locale::translate( msg ).str( get(), domainId ); |
| 29 | + if ( domain.id < 0 ) |
| 30 | + return translate_noop( asCStr( msg ) ); |
| 31 | + return boost::locale::translate( asCStr( msg ) ).str( get(), domain.id ); |
18 | 32 | } |
19 | 33 |
|
20 | | -std::string translate( const char* context, const char* msg, int domainId ) |
| 34 | +std::string translate( std::string_view context, std::string_view msg, Domain domain ) |
21 | 35 | { |
22 | | - if ( domainId < 0 ) |
23 | | - return translate_noop( context, msg ); |
24 | | - return boost::locale::translate( context, msg ).str( get(), domainId ); |
| 36 | + if ( domain.id < 0 ) |
| 37 | + return translate_noop( asCStr( context ), asCStr( msg ) ); |
| 38 | + return boost::locale::translate( asCStr( context ), asCStr( msg ) ).str( get(), domain.id ); |
25 | 39 | } |
26 | 40 |
|
27 | | -std::string translate( const char* single, const char* plural, Int64 n, int domainId ) |
| 41 | +std::string translate( std::string_view single, std::string_view plural, Int64 n, Domain domain ) |
28 | 42 | { |
29 | | - if ( domainId < 0 ) |
30 | | - return translate_noop( single, plural, n ); |
31 | | - return boost::locale::translate( single, plural, n ).str( get(), domainId ); |
| 43 | + if ( domain.id < 0 ) |
| 44 | + return translate_noop( asCStr( single ), asCStr( plural ), n ); |
| 45 | + return boost::locale::translate( asCStr( single ), asCStr( plural ), n ).str( get(), domain.id ); |
32 | 46 | } |
33 | 47 |
|
34 | | -std::string translate( const char* context, const char* single, const char* plural, Int64 n, int domainId ) |
| 48 | +std::string translate( std::string_view context, std::string_view single, std::string_view plural, Int64 n, Domain domain ) |
35 | 49 | { |
36 | | - if ( domainId < 0 ) |
37 | | - return translate_noop( context, single, plural, n ); |
38 | | - return boost::locale::translate( context, single, plural, n ).str( get(), domainId ); |
| 50 | + if ( domain.id < 0 ) |
| 51 | + return translate_noop( asCStr( context ), asCStr( single ), asCStr( plural ), n ); |
| 52 | + return boost::locale::translate( asCStr( context ), asCStr( single ), asCStr( plural ), n ).str( get(), domain.id ); |
39 | 53 | } |
40 | 54 |
|
41 | 55 | } // namespace MR::Locale |
|
0 commit comments