26#include <wx/translation.h>
37const char*
const ORIG_STRING =
"KiCad";
38const char*
const TRANSLATED_STRING =
"KiCad (ohjelma)";
46wxScopedCharBuffer MakeSingleEntryMo(
const char* aOrig,
const char* aTranslated )
48 const uint32_t origLen =
static_cast<uint32_t
>( std::strlen( aOrig ) );
49 const uint32_t transLen =
static_cast<uint32_t
>( std::strlen( aTranslated ) );
51 const uint32_t headerSize = 28;
52 const uint32_t numStrings = 1;
53 const uint32_t origTableOffset = headerSize;
54 const uint32_t transTableOffset = origTableOffset + numStrings * 8;
55 const uint32_t origDataOffset = transTableOffset + numStrings * 8;
56 const uint32_t transDataOffset = origDataOffset + origLen + 1;
57 const uint32_t totalSize = transDataOffset + transLen + 1;
60 char* buf =
static_cast<char*
>( std::malloc( totalSize ) );
61 std::memset( buf, 0, totalSize );
63 auto put32 = [&]( uint32_t aOffset, uint32_t aValue )
65 std::memcpy( buf + aOffset, &aValue,
sizeof( aValue ) );
68 put32( 0, 0x950412de );
70 put32( 8, numStrings );
71 put32( 12, origTableOffset );
72 put32( 16, transTableOffset );
74 put32( origTableOffset, origLen );
75 put32( origTableOffset + 4, origDataOffset );
76 put32( transTableOffset, transLen );
77 put32( transTableOffset + 4, transDataOffset );
79 std::memcpy( buf + origDataOffset, aOrig, origLen );
80 std::memcpy( buf + transDataOffset, aTranslated, transLen );
82 return wxScopedCharBuffer::CreateOwned( buf, totalSize );
91class IN_MEMORY_LOADER :
public wxTranslationsLoader
94 wxMsgCatalog* LoadCatalog(
const wxString& aDomain,
const wxString& aLang )
override
96 return wxMsgCatalog::CreateFromData( MakeSingleEntryMo( ORIG_STRING, TRANSLATED_STRING ),
100 wxArrayString GetAvailableTranslations(
const wxString& aDomain )
const override
103 langs.Add( wxT(
"fi" ) );
121 wxTranslations* trans =
new wxTranslations();
122 trans->SetLoader(
new IN_MEMORY_LOADER() );
123 wxTranslations::Set( trans );
124 trans->AddCatalog( wxT(
"kicad" ) );
126 m_active = trans->GetTranslatedString( ORIG_STRING ) !=
nullptr;
148 BOOST_REQUIRE_EQUAL( wxGetTranslation( wxString::FromUTF8( ORIG_STRING ) ),
149 wxString::FromUTF8( TRANSLATED_STRING ) );
152 wxString( wxT(
"KiCad" ) ) );
@ KICAD_SEXP
S-expression KiCad file format.
static const wxString ShowType(DESIGN_BLOCK_FILE_T aFileType)
static DESIGN_BLOCK_FILE_T EnumFromStr(const wxString &aFileType)
Installs a wxTranslations instance that actually translates "KiCad".
~TRANSLATED_KICAD_FIXTURE()
TRANSLATED_KICAD_FIXTURE()
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_AUTO_TEST_CASE(ShowTypeIsLocaleIndependent)
The type token serialized into the design-block-lib-table must be the ASCII literal "KiCad",...
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
BOOST_CHECK_EQUAL(result, "25.4")