enable translation of ambigous messages

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9097 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Georg Baum 2004-10-19 09:11:02 +00:00
parent 4e2940c3d8
commit e416d1aea7
13 changed files with 129 additions and 16 deletions

View File

@ -1,3 +1,8 @@
2004-10-18 Georg Baum <Georg.Baum@post.rwth-aachen.de>
* Customization.lyx: add description of translation of ambigous
messages
2004-10-17 José Matos <jamatos@lyx.org> 2004-10-17 José Matos <jamatos@lyx.org>
* Depend.pl: removed. * Depend.pl: removed.

View File

@ -2814,6 +2814,78 @@ README
LYX-SOURCE-DIR/po/ LYX-SOURCE-DIR/po/
\family default \family default
directory for more instructions. directory for more instructions.
\layout Subsubsection
Ambigous messages
\layout Standard
Sometimes it turns out that one english message needs to be translated into
different messages in the target language.
One example is the message
\family typewriter
To
\family default
which has the german translation
\family typewriter
\lang german
Nach
\family default
\lang english
or
\family typewriter
\lang german
Bis
\family default
\lang english
.
\family typewriter
gettext
\family default
does not handle such ambigous translations.
Therefore you have to add some context information to the message: Instead
of
\family typewriter
To
\family default
it becomes
\family typewriter
To[[as in 'From format x to format y']]
\family default
and
\family typewriter
To[[as in 'From page x to page y']].
\family default
Now the two occurences of
\family typewriter
To
\family default
are different for
\family typewriter
gettext
\family default
and can be translated correctly to
\family typewriter
\lang german
Nach
\family default
\lang english
and
\family typewriter
\lang german
Bis
\family default
\lang english
, respectively.
\layout Standard
Of course the context information needs to be stripped off the original
message when no translation is used.
Therefore you have to put it in double square brackets at the end of the
message (see the example above).
The translation mechanism of LyX ensures that everything in double square
brackets at the end of messages is removed before displaying the message.
\layout Subsection \layout Subsection
Translating the documentation. Translating the documentation.
@ -2839,7 +2911,7 @@ As of February 2003, almost all of the docs have been translated into German
\emph on \emph on
Tutorial Tutorial
\emph default \emph default
has been translated into at least 12 ther languages, with other translations has been translated into at least 12 other languages, with other translations
in progress. in progress.
The library of translated documents is growing rapidly. The library of translated documents is growing rapidly.
\end_inset \end_inset

View File

@ -1,3 +1,7 @@
2004-10-18 Georg Baum <Georg.Baum@post.rwth-aachen.de>
* de.po: update strings with context information
2004-10-05 Jean-Marc Lasgouttes <lasgouttes@lyx.org> 2004-10-05 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* ru.po: fix crash when autosaving reported by Nikita V. * ru.po: fix crash when autosaving reported by Nikita V.

View File

@ -1538,8 +1538,7 @@ msgid "From:|#F"
msgstr "Von:|#V" msgstr "Von:|#V"
#: src/frontends/xforms/forms/form_preferences.fd:1960 #: src/frontends/xforms/forms/form_preferences.fd:1960
#: src/frontends/xforms/forms/form_print.fd:188 msgid "To:|#T[[as in 'From format x to format y']]"
msgid "To:|#T"
msgstr "Nach:|#N" msgstr "Nach:|#N"
#: src/frontends/xforms/forms/form_preferences.fd:1978 #: src/frontends/xforms/forms/form_preferences.fd:1978
@ -1726,6 +1725,10 @@ msgstr "Kopien"
msgid "Sorted|#S" msgid "Sorted|#S"
msgstr "Sortiert|#S" msgstr "Sortiert|#S"
#: src/frontends/xforms/forms/form_print.fd:188
msgid "To:|#T[[as in 'From page x to page y']]"
msgstr "Bis:|#B"
#: src/frontends/xforms/forms/form_print.fd:224 #: src/frontends/xforms/forms/form_print.fd:224
msgid "Reverse order|#R" msgid "Reverse order|#R"
msgstr "Umgekehrte Reihenfolge|#R" msgstr "Umgekehrte Reihenfolge|#R"
@ -3998,7 +4001,7 @@ msgid "C&onverter:"
msgstr "&Konverter:" msgstr "&Konverter:"
#: src/frontends/qt2/ui/QPrefConvertersModule.ui:220 #: src/frontends/qt2/ui/QPrefConvertersModule.ui:220
msgid "&To:" msgid "&To:[[as in 'From format x to format y']]"
msgstr "&Nach:" msgstr "&Nach:"
#: src/frontends/qt2/ui/QPrefConvertersModule.ui:235 #: src/frontends/qt2/ui/QPrefConvertersModule.ui:235
@ -4516,8 +4519,8 @@ msgid "Page number to print from"
msgstr "Drucke ab Seite Nr." msgstr "Drucke ab Seite Nr."
#: src/frontends/qt2/ui/QPrintDialogBase.ui:112 #: src/frontends/qt2/ui/QPrintDialogBase.ui:112
msgid "&to" msgid "&To:[[as in 'From page x to page y']]"
msgstr "&bis" msgstr "&Bis:"
#: src/frontends/qt2/ui/QPrintDialogBase.ui:131 #: src/frontends/qt2/ui/QPrintDialogBase.ui:131
msgid "Page number to print to" msgid "Page number to print to"

View File

@ -1,3 +1,7 @@
2004-10-18 Georg Baum <Georg.Baum@post.rwth-aachen.de>
* messages.C (Pimpl): strip off translation context information
2004-10-14 Jean-Marc Lasgouttes <lasgouttes@lyx.org> 2004-10-14 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* BufferView_pimpl.C (setBuffer): when closing a buffer, make sure * BufferView_pimpl.C (setBuffer): when closing a buffer, make sure

View File

@ -1,3 +1,8 @@
2004-10-18 Georg Baum <Georg.Baum@post.rwth-aachen.de>
* ui/QPrefConvertersModule.ui: Add translation context to "To:"
* ui/QPrintDialogBase.ui: ditto
2004-10-11 Andreas Vox <vox@isp.uni-luebeck.de> 2004-10-11 Andreas Vox <vox@isp.uni-luebeck.de>
* qfont_loader.C (initFontPath, addToFontPath): two new static * qfont_loader.C (initFontPath, addToFontPath): two new static
@ -5,7 +10,7 @@
(available): remove special MacOSX code; use addToFontPath (available): remove special MacOSX code; use addToFontPath
* lyx_gui.C (parse_init): add call to qfont_loader::initFontPath() * lyx_gui.C (parse_init): add call to qfont_loader::initFontPath()
2004-10-01 Jean-Marc Lasgouttes <lasgouttes@lyx.org> 2004-10-01 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* QLPopupMenu.C (populate): move the code below to here, so that * QLPopupMenu.C (populate): move the code below to here, so that

View File

@ -217,7 +217,7 @@
</property> </property>
<property stdset="1"> <property stdset="1">
<name>text</name> <name>text</name>
<string>&amp;To:</string> <string>&amp;To:[[as in 'From format x to format y']]</string>
</property> </property>
<property> <property>
<name>buddy</name> <name>buddy</name>

View File

@ -109,7 +109,7 @@
</property> </property>
<property stdset="1"> <property stdset="1">
<name>text</name> <name>text</name>
<string>&amp;to</string> <string>&amp;To:[[as in 'From page x to page y']]</string>
</property> </property>
<property> <property>
<name>buddy</name> <name>buddy</name>

View File

@ -1,3 +1,8 @@
2004-10-18 Georg Baum <Georg.Baum@post.rwth-aachen.de>
* forms/form_preferences.fd: Add translation context to "To:"
* forms/form_print.fd: ditto
2004-10-05 Angus Leeming <leeming@lyx.org> 2004-10-05 Angus Leeming <leeming@lyx.org>
* FormPreferences.C: add code to input/output the indexing command. * FormPreferences.C: add code to input/output the indexing command.

View File

@ -1957,7 +1957,7 @@ alignment: FL_ALIGN_LEFT
style: FL_NORMAL_STYLE style: FL_NORMAL_STYLE
size: FL_DEFAULT_SIZE size: FL_DEFAULT_SIZE
lcol: FL_BLACK lcol: FL_BLACK
label: To:|#T label: To:|#T[[as in 'From format x to format y']]
shortcut: shortcut:
resize: FL_RESIZE_ALL resize: FL_RESIZE_ALL
gravity: FL_NoGravity FL_NoGravity gravity: FL_NoGravity FL_NoGravity

View File

@ -185,7 +185,7 @@ alignment: FL_ALIGN_LEFT
style: FL_NORMAL_STYLE style: FL_NORMAL_STYLE
size: FL_NORMAL_SIZE size: FL_NORMAL_SIZE
lcol: FL_BLACK lcol: FL_BLACK
label: To:|#T label: To:|#T[[as in 'From page x to page y']]
shortcut: shortcut:
resize: FL_RESIZE_X resize: FL_RESIZE_X
gravity: FL_NoGravity FL_NoGravity gravity: FL_NoGravity FL_NoGravity

View File

@ -13,6 +13,8 @@
#include "support/filetools.h" #include "support/filetools.h"
#include "support/path_defines.h" #include "support/path_defines.h"
#include <boost/regex.hpp>
using lyx::support::GetEnvPath; using lyx::support::GetEnvPath;
using lyx::support::lyx_localedir; using lyx::support::lyx_localedir;
@ -98,11 +100,24 @@ public:
bindtextdomain(PACKAGE, lyx_localedir().c_str()); bindtextdomain(PACKAGE, lyx_localedir().c_str());
textdomain(PACKAGE); textdomain(PACKAGE);
const char* msg = gettext(m.c_str()); const char* msg = gettext(m.c_str());
setlocale(LC_ALL, old); // Some english words have different translations, depending
free(old); // on context. In these cases the original string is
// augmented by context information (e.g.
// "To:[[as in 'From page x to page y']]" and
// "To:[[as in 'From format x to format y']]".
// This means that we need to filter out everything in
// double square brackets at the end of the string,
// otherwise the user sees bogus messages.
// If we are unable to honour the request we just // If we are unable to honour the request we just
// return what we got in. // return what we got in.
return (!n ? m : string(msg)); string translated(n ? msg : m);
static boost::regex const reg("^([^\\[]*)\\[\\[[^\\]]*\\]\\]$");
boost::smatch sub;
if (regex_match(translated, sub, reg))
translated = sub.str(1);
setlocale(LC_ALL, old);
free(old);
return translated;
} }
private: private:
/// ///

View File

@ -17,9 +17,9 @@
/// ///
class Messages { class Messages {
public: public:
/// /// messages in the language defined by the environment
Messages(); Messages();
/// /// messages in the language \p l
Messages(std::string const & l); Messages(std::string const & l);
/// ///
~Messages(); ~Messages();