... Format arguments are substituted into the translation of the msgid, which
may not be known at the time the format arguments are captured (because locale
may change). This allows TranslatableString with arguments to be constructed
at static initialization time.
There is also a special "verbatim" or null context which makes no translations
of msgids.
There is not yet any use of other contexts besides default or null.
... include it in the msgid intead, to get appropriate translations. For
instance some locales use the same character but prefer to insert a space
before it.
... And corrected improper connections in HistoryWindow and ContrastDialog,
improper because they got called with the wrong this pointer, to
the control instead of the dialog. But that was harmless anyway because the
handlers did not use this.
... This type is now the value returned by the XO macro, and holds a string
that should be looked up in the translation catalog, not shown directly to the
user.
The type does not implicitly convert to or from wxString, so you must construct
it explicitly, or use XO, or use its Translation() member function, or else the
compiler stops you with an error.
... Perhaps it should be in Internat.h (which is at the lowest level of the
dependency graph), but later ComponentInterface.h will need to include it, and
I don't want includes/ to depend on src/.
Though there is still a linkage dependency on src if
TranslatableString::Translation() is used.
... Translations were in the catalog, but weren't used.
Affects Change Pitch effect and Plot Spectrum cross-hair readouts.
See for instance Czech (cs) locale, where "H" should replace "B".
... Trying to reduce that just to chained calls on S, or conditional and looping
logic for variations in layout.
Lift some declarations to higher scope; or use expressions that avoid local
variables; or even use lambdas for more complicated computation of arguments
for the member functions of S.
... Wrong sizer was pushed instead of the page's own, and was popped as
current sizer, when the first sub-sizer in the page was done.
But nothing was affected by this error, because notebook pages are used only
in the About dialog, and none of the pages have more than one directly nested
sizer. So popping null as current sizer didn't matter because the stack did
not deepen again.
PushSizer() only after assigning mpSizer, as with other calls to it.