mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 10:58:52 +00:00
Implement the use of [[Context]] for placeholders
When placeholders are used, the context can indicate what will be substituted for the placeholder (e.g. "%1$s[[date]], %1$s[[time]]).
This commit is contained in:
parent
b79c88034e
commit
fec57fe959
@ -71,8 +71,9 @@ appear in your translations! Please take them exactly as they are or you may
|
||||
experience crashes when running LyX.
|
||||
|
||||
[[Context]] is used to distinguish otherwise identical strings, which could
|
||||
have different translations depending on the Context. [[Context]] appears only
|
||||
in msgid string and should not be repeated in the translated version.
|
||||
have different translations depending on the Context. It can also be used to
|
||||
indicate what is substituted for a placeholder. [[Context]] appears only in
|
||||
msgid string and should not be repeated in the translated version.
|
||||
|
||||
{} refer to counters and must not be translated. An example would be:
|
||||
msgid "Algorithm \\arabic{theorem}"
|
||||
|
@ -34,17 +34,26 @@ void cleanTranslation(docstring & trans)
|
||||
Some english words have different translations, depending 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 return what we got in.
|
||||
y']]" and "To:[[as in 'From format x to format y']]". Also,
|
||||
when placeholders are used, the context can indicate what will
|
||||
be substituted for the placeholder (e.g. "%1$s[[date]], %1$s
|
||||
[[time]]). 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 return what we got in.
|
||||
*/
|
||||
size_t const pos1 = trans.find(from_ascii("[["));
|
||||
if (pos1 != docstring::npos) {
|
||||
size_t const pos2 = trans.find(from_ascii("]]"), pos1);
|
||||
if (pos2 != docstring::npos)
|
||||
trans.erase(pos1, pos2 - pos1 + 2);
|
||||
static docstring const ctx_start = from_ascii("[[");
|
||||
static docstring const ctx_end = from_ascii("]]");
|
||||
while (true) {
|
||||
size_t const pos1 = trans.find(ctx_start);
|
||||
if (pos1 != docstring::npos) {
|
||||
size_t const pos2 = trans.find(ctx_end, pos1);
|
||||
if (pos2 != docstring::npos) {
|
||||
trans.erase(pos1, pos2 - pos1 + 2);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user