commit 5db4d712ef660273c1c12f211fdb4adf5a792ec3
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Sat Jan 27 14:26:36 2018 +0100

    Differentiate Buffer strings and GUI strings in citeengines
    
    The former need to be translated to the buffer language, the latter to
    the GUI language.
    
    Fixes: #10946
---
 lib/citeengines/basic.citeengine           |    3 +-
 lib/citeengines/biblatex-natbib.citeengine |   18 +++++++++-------
 lib/citeengines/biblatex.citeengine        |   16 ++++++++------
 lib/citeengines/jurabib.citeengine         |   11 +++++----
 lib/citeengines/natbib.citeengine          |   11 +++++----
 lib/layouts/stdciteformats.inc             |   30 ++++++++++++++-------------
 src/BiblioInfo.cpp                         |   19 ++++++++++++-----
 src/TextClass.cpp                          |    2 +-
 8 files changed, 63 insertions(+), 47 deletions(-)

diff --git a/lib/citeengines/basic.citeengine b/lib/citeengines/basic.citeengine
index a7fe12d..075cb1b 100644
--- a/lib/citeengines/basic.citeengine
+++ b/lib/citeengines/basic.citeengine
@@ -45,7 +45,8 @@ CiteFormat default
        #
        # MACROS
        #
-       # 1. Translatable bits (need to be marked by _ prefix)
+       # 1. Translatable bits (need to be marked by _ prefix, if translated to 
the GUI language,
+       #    or B_, if translated to the buffer language)
        #    Note that preceding and trailing spaces matter.
        #
        _notcited not cited
diff --git a/lib/citeengines/biblatex-natbib.citeengine 
b/lib/citeengines/biblatex-natbib.citeengine
index edff500..d994add 100644
--- a/lib/citeengines/biblatex-natbib.citeengine
+++ b/lib/citeengines/biblatex-natbib.citeengine
@@ -131,14 +131,15 @@ CiteFormat default
        #
        # MACROS
        #
-       # 1. Translatable bits (need to be marked by _ prefix)
+       # 1. Translatable bits (need to be marked by _ prefix, if translated to 
the GUI language,
+       #    or B_, if translated to the buffer language)
        #    Note that preceding and trailing spaces matter.
        #
        _notcited not cited
        _addtobib Add to bibliography only.
        _keyonly Key only.
        _key Key
-       _finaland , and 
+       B_finaland , and 
        _footnote Footnote
        _foot Foot
        _fullcite bibliography entry
@@ -149,10 +150,10 @@ CiteFormat default
        _citetitlestar F&orce full title[[Possible substitute to All aut&hors]]
        _citetitlestartooltip Use full title even if shorttitle exists
        # The following are handled by BiblioInfo
-       _etal  et al.
-       _namesep , [[separate author names in citation, except for last name]]
-       _lastnamesep , and [[separate name of last author in citation]]
-       _pairnamesep  and [[separate two authors in citation]]
+       B_etal  et al.
+       B_namesep , [[separate author names in citation, except for last name]]
+       B_lastnamesep , and [[separate name of last author in citation]]
+       B_pairnamesep  and [[separate two authors in citation]]
 
        #
        # 2. Macros re-used in the style definitions
@@ -171,7 +172,7 @@ CiteFormat default
        !endlink {!</a>!}
 
        # Add " , and " before the last item (but " and " if there are only 
two), else ", "
-       !smartsep 
{%second%[[{%next%[[%_namesep%]][[%_pairnamesep%]]}]][[{%next%[[%_namesep%]][[%_lastnamesep%]]}]]}
+       !smartsep 
{%second%[[{%next%[[%B_namesep%]][[%B_pairnamesep%]]}]][[{%next%[[%B_namesep%]][[%B_lastnamesep%]]}]]}
 
        # "Author et al." or "??"
        !abbrvciteauthor {%abbrvciteauthor%[[%abbrvciteauthor%]][[??]]}
@@ -294,7 +295,8 @@ CiteFormat numerical
        #
        # MACROS
        #
-       # 1. Translatable bits (need to be marked by _ prefix)
+       # 1. Translatable bits (need to be marked by _ prefix, if translated to 
the GUI language,
+       #    or B_, if translated to the buffer language)
        #
        _super Super
        _superscript Superscript
diff --git a/lib/citeengines/biblatex.citeengine 
b/lib/citeengines/biblatex.citeengine
index 96b07c6..bd101e4 100644
--- a/lib/citeengines/biblatex.citeengine
+++ b/lib/citeengines/biblatex.citeengine
@@ -122,7 +122,8 @@ CiteFormat default
        #
        # MACROS
        #
-       # 1. Translatable bits (need to be marked by _ prefix)
+       # 1. Translatable bits (need to be marked by _ prefix, if translated to 
the GUI language,
+       #    or B_, if translated to the buffer language)
        #    Note that preceding and trailing spaces matter.
        #
        _notcited not cited
@@ -141,10 +142,10 @@ CiteFormat default
        _citetitlestar F&orce full title[[Possible substitute to All aut&hors]]
        _citetitlestartooltip Use full title even if shorttitle exists
        # The following are handled by BiblioInfo
-       _etal  et al.
-       _namesep , [[separate author names in citation, except for last name]]
-       _lastnamesep , and [[separate name of last author in citation]]
-       _pairnamesep  and [[separate two authors in citation]]
+       B_etal  et al.
+       B_namesep , [[separate author names in citation, except for last name]]
+       B_lastnamesep , and [[separate name of last author in citation]]
+       B_pairnamesep  and [[separate two authors in citation]]
 
        #
        # 2. Macros re-used in the style definitions
@@ -155,7 +156,7 @@ CiteFormat default
        !endlink {!</a>!}
 
        # Add " , and " before the last item (but " and " if there are only 
two), else ", "
-       !smartsep 
{%second%[[{%next%[[%_namesep%]][[%_pairnamesep%]]}]][[{%next%[[%_namesep%]][[%_lastnamesep%]]}]]}
+       !smartsep 
{%second%[[{%next%[[%B_namesep%]][[%B_pairnamesep%]]}]][[{%next%[[%B_namesep%]][[%B_lastnamesep%]]}]]}
 
        # A dummy year modifier. This just indicates that a modifier might be 
output,
        # to differentiate \cite* and \citeyear
@@ -278,7 +279,8 @@ CiteFormat numerical
        #
        # MACROS
        #
-       # 1. Translatable bits (need to be marked by _ prefix)
+       # 1. Translatable bits (need to be marked by _ prefix, if translated to 
the GUI language,
+       #    or B_, if translated to the buffer language)
        #
        _super Super
        _superscript Superscript
diff --git a/lib/citeengines/jurabib.citeengine 
b/lib/citeengines/jurabib.citeengine
index 1de3980..d2faecc 100644
--- a/lib/citeengines/jurabib.citeengine
+++ b/lib/citeengines/jurabib.citeengine
@@ -114,7 +114,8 @@ CiteFormat authoryear
        #
        # MACROS
        #
-       # 1. Translatable bits (need to be marked by _ prefix)
+       # 1. Translatable bits (need to be marked by _ prefix, if translated to 
the GUI language,
+       #    or B_, if translated to the buffer language)
        #    Note that preceding and trailing spaces matter.
        #
        _notcited not cited
@@ -126,10 +127,10 @@ CiteFormat authoryear
        _before before
        _shorttitle short title
        # The following are handled by BiblioInfo
-       _etal  et al.
-       _namesep /
-       _lastnamesep /
-       _pairnamesep /
+       B_etal  et al.
+       B_namesep /
+       B_lastnamesep /
+       B_pairnamesep /
 
        #
        # 2. Macros re-used in the style definitions
diff --git a/lib/citeengines/natbib.citeengine 
b/lib/citeengines/natbib.citeengine
index 58d235f..3d93ee1 100644
--- a/lib/citeengines/natbib.citeengine
+++ b/lib/citeengines/natbib.citeengine
@@ -112,7 +112,8 @@ CiteFormat default
        #
        # MACROS
        #
-       # 1. Translatable bits (need to be marked by _ prefix)
+       # 1. Translatable bits (need to be marked by _ prefix, if translated to 
the GUI language,
+       #    or B_, if translated to the buffer language)
        #    Note that preceding and trailing spaces matter.
        #
        _notcited not cited
@@ -120,10 +121,10 @@ CiteFormat default
        _keyonly Key only.
        _key Key
        # The following are handled by BiblioInfo
-       _etal  et al.
-       _namesep , [[separate author names in citation, except for last name]]
-       _lastnamesep , and [[separate name of last author in citation]]
-       _pairnamesep  and [[separate two authors in citation]]
+       B_etal  et al.
+       B_namesep , [[separate author names in citation, except for last name]]
+       B_lastnamesep , and [[separate name of last author in citation]]
+       B_pairnamesep  and [[separate two authors in citation]]
 
        #
        # 2. Macros re-used in the style definitions
diff --git a/lib/layouts/stdciteformats.inc b/lib/layouts/stdciteformats.inc
index fc34cb8..a2378ce 100644
--- a/lib/layouts/stdciteformats.inc
+++ b/lib/layouts/stdciteformats.inc
@@ -15,18 +15,20 @@ Format 66
 
 CiteFormat default
        #
-       # Translatable bits
+       # Translatable bits (need to be marked by _ prefix, if translated to 
the GUI language,
+       # or B_, if translated to the buffer language)
+       # Note that preceding and trailing spaces matter.
        #
-       _pptext pp.
-       _edtext ed.
-       _edstext eds.
-       _voltext vol.
-       _numtext no.
-       _in in
+       B_pptext pp.
+       B_edtext ed.
+       B_edstext eds.
+       B_voltext vol.
+       B_numtext no.
+       B_in in
        # The following are handled by BiblioInfo. Note that preceding and 
trailing spaces matter
-       _namesep , [[separate author names in citation, except for last name]]
-       _lastnamesep , and [[separate name of last author in citation]]
-       _pairnamesep  and [[separate two authors in citation]]
+       B_namesep , [[separate author names in citation, except for last name]]
+       B_lastnamesep , and [[separate name of last author in citation]]
+       B_pairnamesep  and [[separate two authors in citation]]
 
        #
        # Macros
@@ -42,13 +44,13 @@ CiteFormat default
        # Scheme of authors in citation references
        !citenameform {%prefix%[[%prefix% ]]}%surname%
        # pagination
-       !pages {%pages%[[, %_pptext% %pages%]]}
+       !pages {%pages%[[, %B_pptext% %pages%]]}
        # ed. or eds.
-       !makeed {%ifmultiple:editor%[[%_edstext%]][[%_edtext%]]}
+       !makeed {%ifmultiple:editor%[[%B_edstext%]][[%B_edtext%]]}
        # author or editor, as fullnames, following the schemes above
        !authoredit {%fullnames:author%[[%fullnames:author%, 
]][[{%fullnames:editor%[[%fullnames:editor%, %!makeed%, ]]}]]}
        # "vol. 1, no.
-       !volnum {%volume%[[ %_voltext% %volume%, {%number%[[%_numtext% 
%number%]]}]]}
+       !volnum {%volume%[[ %B_voltext% %volume%, {%number%[[%B_numtext% 
%number%]]}]]}
        !quotetitle "%title%"
        !emphtitle {!<i>!}%title%{!</i>!}
        !emphjournal 
{!<i>!}{%journal%[[%journal%]][[{%journaltitle%[[%journaltitle%]]}]]}{!</i>!}
@@ -57,7 +59,7 @@ CiteFormat default
        #
        # Entry types. Note that final punctuation will be added later, if 
needed.
        #
-       !insomething %fullnames:author%, %!quotetitle%, 
%_in%{%fullbynames:editor%[[ %fullbynames:editor%, %!makeed%,]]} 
{!<i>!}%booktitle%{!</i>!}%!volnum%{%edition%[[ %edition%]]} 
(%!location%%publisher%, %year%)%!pages%{%note%[[. %note%]]}
+       !insomething %fullnames:author%, %!quotetitle%, 
%B_in%{%fullbynames:editor%[[ %fullbynames:editor%, %!makeed%,]]} 
{!<i>!}%booktitle%{!</i>!}%!volnum%{%edition%[[ %edition%]]} 
(%!location%%publisher%, %year%)%!pages%{%note%[[. %note%]]}
 
        article %fullnames:author%, %!quotetitle%, %!emphjournal% {%volume%[[ 
%volume%{%number%[[, %number%]]}]]} (%year%)%!pages%{%note%[[. %note%]]}
 
diff --git a/src/BiblioInfo.cpp b/src/BiblioInfo.cpp
index 86fd840..dac2097 100644
--- a/src/BiblioInfo.cpp
+++ b/src/BiblioInfo.cpp
@@ -541,16 +541,16 @@ docstring const BibTeXInfo::getAuthorList(Buffer const * 
buf,
 
        // These are defined in the styles
        string const etal =
-               buf ? buf->params().documentClass().getCiteMacro(engine_type, 
"_etal")
+               buf ? buf->params().documentClass().getCiteMacro(engine_type, 
"B_etal")
                    : " et al.";
        string const namesep =
-               buf ? buf->params().documentClass().getCiteMacro(engine_type, 
"_namesep")
+               buf ? buf->params().documentClass().getCiteMacro(engine_type, 
"B_namesep")
                   : ", ";
        string const lastnamesep =
-               buf ? buf->params().documentClass().getCiteMacro(engine_type, 
"_lastnamesep")
+               buf ? buf->params().documentClass().getCiteMacro(engine_type, 
"B_lastnamesep")
                    : ", and ";
        string const pairnamesep =
-               buf ? buf->params().documentClass().getCiteMacro(engine_type, 
"_pairnamesep")
+               buf ? buf->params().documentClass().getCiteMacro(engine_type, 
"B_pairnamesep")
                     : " and ";
        string firstnameform =
                        buf ? 
buf->params().documentClass().getCiteMacro(engine_type, "!firstnameform")
@@ -811,13 +811,20 @@ docstring BibTeXInfo::expandFormat(docstring const & 
format,
                                        fmt = from_utf8(val) + fmt.substr(1);
                                        counter += 1;
                                        continue;
-                               } else if (key[0] == '_') {
-                                       // a translatable bit
+                               } else if (prefixIs(key, "B_")) {
+                                       // a translatable bit (to the Buffer 
language)
                                        string const val =
                                                
buf.params().documentClass().getCiteMacro(engine_type, key);
                                        docstring const trans =
                                                
translateIfPossible(from_utf8(val), buf.params().language->code());
                                        ret << trans;
+                               } else if (key[0] == '_') {
+                                       // a translatable bit (to the GUI 
language)
+                                       string const val =
+                                               
buf.params().documentClass().getCiteMacro(engine_type, key);
+                                       docstring const trans =
+                                               
translateIfPossible(from_utf8(val));
+                                       ret << trans;
                                } else {
                                        docstring const val =
                                                getValueForKey(key, buf, ci, 
xrefs, max_keysize);
diff --git a/src/TextClass.cpp b/src/TextClass.cpp
index cc8b0aa..333582d 100644
--- a/src/TextClass.cpp
+++ b/src/TextClass.cpp
@@ -1180,7 +1180,7 @@ bool TextClass::readCiteFormat(Lexer & lexrc)
                char initchar = etype[0];
                if (initchar == '#')
                        continue;
-               if (initchar == '!' || initchar == '_') {
+               if (initchar == '!' || initchar == '_' || prefixIs(etype, 
"B_")) {
                        if (type & ENGINE_TYPE_AUTHORYEAR)
                                cite_macros_[ENGINE_TYPE_AUTHORYEAR][etype] = 
definition;
                        if (type & ENGINE_TYPE_NUMERICAL)

Reply via email to