[PATCH] Implement the use of [[Context]] for placeholders

2013-05-13 Thread Vincent van Ravesteijn
When placeholders are used, the context can indicate what will be
substituted for the placeholder (e.g. %1$s[[date]], %1$s[[time]]).
---

Any objections to this patch ? I think it will be helpful for the translators.

Vincent

 README.localization  |  5 +++--
 src/support/Messages.cpp | 27 +--
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/README.localization b/README.localization
index 52280f9..2f77eec 100644
--- a/README.localization
+++ b/README.localization
@@ -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}
diff --git a/src/support/Messages.cpp b/src/support/Messages.cpp
index 1f56f4d..0ce9d55 100644
--- a/src/support/Messages.cpp
+++ b/src/support/Messages.cpp
@@ -105,19 +105,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.
*/
static docstring const ctx_start = from_ascii([[);
static docstring const ctx_end = from_ascii(]]);
-   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);
+   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;
}
 }
 
-- 
1.8.0.msysgit.0



Re: [PATCH] Implement the use of [[Context]] for placeholders

2013-05-13 Thread Richard Heck

On 05/13/2013 06:54 AM, Vincent van Ravesteijn wrote:

When placeholders are used, the context can indicate what will be
substituted for the placeholder (e.g. %1$s[[date]], %1$s[[time]]).
---

Any objections to this patch ? I think it will be helpful for the translators.


Fine with me, though maybe the people doing translations should chime in.

rh



Re: [PATCH] Implement the use of [[Context]] for placeholders

2013-05-13 Thread Jürgen Spitzmüller
Richard Heck wrote:
 On 05/13/2013 06:54 AM, Vincent van Ravesteijn wrote:
  When placeholders are used, the context can indicate what will be
  substituted for the placeholder (e.g. %1$s[[date]], %1$s[[time]]).
  ---
  
  Any objections to this patch ? I think it will be helpful for the
  translators.
 Fine with me, though maybe the people doing translations should chime in.

Looks sensible.

Jürgen


Re: Re: [PATCH] Implement the use of [[Context]] for placeholders

2013-05-13 Thread Kornel Benko
Am Montag, 13. Mai 2013 um 15:25:22, schrieb Jürgen Spitzmüller sp...@lyx.org
 Richard Heck wrote:
  On 05/13/2013 06:54 AM, Vincent van Ravesteijn wrote:
   When placeholders are used, the context can indicate what will be
   substituted for the placeholder (e.g. %1$s[[date]], %1$s[[time]]).
   ---
   
   Any objections to this patch ? I think it will be helpful for the
   translators.
  Fine with me, though maybe the people doing translations should chime in.
 
 Looks sensible.
 
 Jürgen

I, too, wish more messages would have context info.

Kornel

signature.asc
Description: This is a digitally signed message part.


Re: [PATCH] Implement the use of [[Context]] for placeholders

2013-05-13 Thread Jean-Marc Lasgouttes

13/05/2013 12:54, Vincent van Ravesteijn:

When placeholders are used, the context can indicate what will be
substituted for the placeholder (e.g. %1$s[[date]], %1$s[[time]]).
---

Any objections to this patch ? I think it will be helpful for the translators.


Yes, good idea.

JMarc



[PATCH] Implement the use of [[Context]] for placeholders

2013-05-13 Thread Vincent van Ravesteijn
When placeholders are used, the context can indicate what will be
substituted for the placeholder (e.g. "%1$s[[date]], %1$s[[time]]).
---

Any objections to this patch ? I think it will be helpful for the translators.

Vincent

 README.localization  |  5 +++--
 src/support/Messages.cpp | 27 +--
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/README.localization b/README.localization
index 52280f9..2f77eec 100644
--- a/README.localization
+++ b/README.localization
@@ -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}"
diff --git a/src/support/Messages.cpp b/src/support/Messages.cpp
index 1f56f4d..0ce9d55 100644
--- a/src/support/Messages.cpp
+++ b/src/support/Messages.cpp
@@ -105,19 +105,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.
*/
static docstring const ctx_start = from_ascii("[[");
static docstring const ctx_end = from_ascii("]]");
-   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);
+   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;
}
 }
 
-- 
1.8.0.msysgit.0



Re: [PATCH] Implement the use of [[Context]] for placeholders

2013-05-13 Thread Richard Heck

On 05/13/2013 06:54 AM, Vincent van Ravesteijn wrote:

When placeholders are used, the context can indicate what will be
substituted for the placeholder (e.g. "%1$s[[date]], %1$s[[time]]).
---

Any objections to this patch ? I think it will be helpful for the translators.


Fine with me, though maybe the people doing translations should chime in.

rh



Re: [PATCH] Implement the use of [[Context]] for placeholders

2013-05-13 Thread Jürgen Spitzmüller
Richard Heck wrote:
> On 05/13/2013 06:54 AM, Vincent van Ravesteijn wrote:
> > When placeholders are used, the context can indicate what will be
> > substituted for the placeholder (e.g. "%1$s[[date]], %1$s[[time]]).
> > ---
> > 
> > Any objections to this patch ? I think it will be helpful for the
> > translators.
> Fine with me, though maybe the people doing translations should chime in.

Looks sensible.

Jürgen


Re: Re: [PATCH] Implement the use of [[Context]] for placeholders

2013-05-13 Thread Kornel Benko
Am Montag, 13. Mai 2013 um 15:25:22, schrieb Jürgen Spitzmüller 
> Richard Heck wrote:
> > On 05/13/2013 06:54 AM, Vincent van Ravesteijn wrote:
> > > When placeholders are used, the context can indicate what will be
> > > substituted for the placeholder (e.g. "%1$s[[date]], %1$s[[time]]).
> > > ---
> > > 
> > > Any objections to this patch ? I think it will be helpful for the
> > > translators.
> > Fine with me, though maybe the people doing translations should chime in.
> 
> Looks sensible.
> 
> Jürgen

I, too, wish more messages would have context info.

Kornel

signature.asc
Description: This is a digitally signed message part.


Re: [PATCH] Implement the use of [[Context]] for placeholders

2013-05-13 Thread Jean-Marc Lasgouttes

13/05/2013 12:54, Vincent van Ravesteijn:

When placeholders are used, the context can indicate what will be
substituted for the placeholder (e.g. "%1$s[[date]], %1$s[[time]]).
---

Any objections to this patch ? I think it will be helpful for the translators.


Yes, good idea.

JMarc