mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-09-19 22:40:26 +00:00
Partial fix of bug 1476:
Implement infrastructure to add translations to layout files and translate one .inc file. Some others are missing. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28356 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
3d7878212b
commit
cd27d171d5
@ -8888,6 +8888,261 @@ FreeSpacing
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
I18NPreamble
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
Language dependent information to be included in the LaTeX preamble when
|
||||
this style is used.
|
||||
Note that this will completely override any prior
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
I18NPreamble
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
declarations.
|
||||
Must end with
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
EndI18NPreamble
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
.
|
||||
The contents of this tag will occur once in the LaTeX preamble for each
|
||||
language used by the document.
|
||||
Each time, the following substitutions are made:
|
||||
\end_layout
|
||||
|
||||
\begin_deeper
|
||||
\begin_layout Itemize
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
$$lang
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
is replaced by the language name (as used by the babel package).
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
The
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
Function
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
_()
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
replaces its argument by the translation of the argument to the current
|
||||
language.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
If the style defines text that appears in the typeset document, it may use
|
||||
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
I18NPreamble
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
to support non-english and even multilanguage documents correctly.
|
||||
The following excerpt (from the
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
theorems-ams.inc
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
file) shows how this works:
|
||||
\end_layout
|
||||
|
||||
\begin_layout LyX-Code
|
||||
Preamble
|
||||
\end_layout
|
||||
|
||||
\begin_layout LyX-Code
|
||||
|
||||
\backslash
|
||||
providecommand{
|
||||
\backslash
|
||||
claimname}{Claim}
|
||||
\end_layout
|
||||
|
||||
\begin_layout LyX-Code
|
||||
|
||||
\backslash
|
||||
theoremstyle{remark}
|
||||
\end_layout
|
||||
|
||||
\begin_layout LyX-Code
|
||||
|
||||
\backslash
|
||||
newtheorem{claim}[thm]{
|
||||
\backslash
|
||||
protect
|
||||
\backslash
|
||||
claimname}
|
||||
\end_layout
|
||||
|
||||
\begin_layout LyX-Code
|
||||
EndPreamble
|
||||
\end_layout
|
||||
|
||||
\begin_layout LyX-Code
|
||||
I18nPreamble
|
||||
\end_layout
|
||||
|
||||
\begin_layout LyX-Code
|
||||
|
||||
\backslash
|
||||
AtBeginDocument{
|
||||
\backslash
|
||||
ifx
|
||||
\backslash
|
||||
LdfInit
|
||||
\backslash
|
||||
undefined
|
||||
\backslash
|
||||
relax
|
||||
\backslash
|
||||
else%
|
||||
\end_layout
|
||||
|
||||
\begin_layout LyX-Code
|
||||
|
||||
\backslash
|
||||
addto
|
||||
\backslash
|
||||
captions$$lang{
|
||||
\backslash
|
||||
renewcommand{
|
||||
\backslash
|
||||
claimname}{_(Claim)}}%
|
||||
\end_layout
|
||||
|
||||
\begin_layout LyX-Code
|
||||
|
||||
\backslash
|
||||
fi}
|
||||
\end_layout
|
||||
|
||||
\begin_layout LyX-Code
|
||||
EndI18nPreamble
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
The key to correct translation of the user visible text is the definition
|
||||
of the command
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\backslash
|
||||
claimname
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
in the standard preamble.
|
||||
This command holds the name of the theorem that will appear in the output.
|
||||
The
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
I18NPreamble
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
then uses the commands offered by the babel package to redefine
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\backslash
|
||||
claimname
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
for each used language.
|
||||
The
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\backslash
|
||||
ifx
|
||||
\backslash
|
||||
LdfInit
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
test ensures that no LaTeX error occurs in documents that do not use babel.
|
||||
Since LyX loads babel after the style-specific preamble, the whole command
|
||||
is deferred to the actual start of the document with
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\backslash
|
||||
AtBeginDocument
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
.
|
||||
\end_layout
|
||||
|
||||
\end_deeper
|
||||
\begin_layout Description
|
||||
\begin_inset Flex CharStyle:Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
InnerTag
|
||||
\end_layout
|
||||
|
@ -19,7 +19,7 @@
|
||||
# - Proof
|
||||
# - Case (regular only -- defined as an enumeration)
|
||||
|
||||
Format 11
|
||||
Format 12
|
||||
|
||||
Style Theorem
|
||||
Category Theorem
|
||||
@ -49,9 +49,13 @@ Style Theorem
|
||||
Series Bold
|
||||
EndFont
|
||||
Preamble
|
||||
\providecommand{\theoremname}{Theorem}
|
||||
\theoremstyle{plain}
|
||||
\newtheorem{thm}{Theorem}
|
||||
\newtheorem{thm}{\protect\theoremname}
|
||||
EndPreamble
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\theoremname}{_(Theorem)}}\fi}
|
||||
EndI18nPreamble
|
||||
Requires amsthm
|
||||
End
|
||||
|
||||
@ -62,9 +66,13 @@ Style Corollary
|
||||
LatexName cor
|
||||
LabelString "Corollary \thetheorem."
|
||||
Preamble
|
||||
\providecommand{\corollaryname}{Corollary}
|
||||
\theoremstyle{plain}
|
||||
\newtheorem{cor}[thm]{Corollary}
|
||||
\newtheorem{cor}[thm]{\protect\corollaryname}
|
||||
EndPreamble
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\corollaryname}{_(Corollary)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -74,9 +82,13 @@ Style Lemma
|
||||
LatexName lem
|
||||
LabelString "Lemma \thetheorem."
|
||||
Preamble
|
||||
\providecommand{\lemmaname}{Lemma}
|
||||
\theoremstyle{plain}
|
||||
\newtheorem{lem}[thm]{Lemma}
|
||||
\newtheorem{lem}[thm]{\protect\lemmaname}
|
||||
EndPreamble
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\lemmaname}{_(Lemma)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -86,9 +98,13 @@ Style Proposition
|
||||
LatexName prop
|
||||
LabelString "Proposition \thetheorem."
|
||||
Preamble
|
||||
\providecommand{\propositionname}{Proposition}
|
||||
\theoremstyle{plain}
|
||||
\newtheorem{prop}[thm]{Proposition}
|
||||
\newtheorem{prop}[thm]{\protect\propositionname}
|
||||
EndPreamble
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\propositionname}{_(Proposition)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -98,9 +114,13 @@ Style Conjecture
|
||||
LatexName conjecture
|
||||
LabelString "Conjecture \thetheorem."
|
||||
Preamble
|
||||
\providecommand{\conjecturename}{Conjecture}
|
||||
\theoremstyle{plain}
|
||||
\newtheorem{conjecture}[thm]{Conjecture}
|
||||
\newtheorem{conjecture}[thm]{\protect\conjecturename}
|
||||
EndPreamble
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\conjecturename}{_(Conjecture)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -110,9 +130,13 @@ Style Fact
|
||||
LatexName fact
|
||||
LabelString "Fact \thetheorem."
|
||||
Preamble
|
||||
\providecommand{\factname}{Fact}
|
||||
\theoremstyle{plain}
|
||||
\newtheorem{fact}[thm]{Fact}
|
||||
\newtheorem{fact}[thm]{\protect\factname}
|
||||
EndPreamble
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\factname}{_(Fact)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -129,9 +153,13 @@ Style Definition
|
||||
Series Bold
|
||||
EndFont
|
||||
Preamble
|
||||
\providecommand{\definitionname}{Definition}
|
||||
\theoremstyle{definition}
|
||||
\newtheorem{defn}[thm]{Definition}
|
||||
\newtheorem{defn}[thm]{\protect\definitionname}
|
||||
EndPreamble
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\definitionname}{_(Definition)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -140,10 +168,13 @@ Style Example
|
||||
LatexName example
|
||||
LabelString "Example \thetheorem."
|
||||
Preamble
|
||||
\theoremstyle{definition}
|
||||
\newtheorem{example}[thm]{Example}
|
||||
\providecommand{\examplename}{Example}
|
||||
\theoremstyle{definition}
|
||||
\newtheorem{example}[thm]{\protect\examplename}
|
||||
EndPreamble
|
||||
Requires amsthm
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\examplename}{_(Example)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -152,10 +183,13 @@ Style Problem
|
||||
LatexName problem
|
||||
LabelString "Problem \thetheorem."
|
||||
Preamble
|
||||
\providecommand{\problemname}{Problem}
|
||||
\theoremstyle{definition}
|
||||
\newtheorem{problem}[thm]{Problem}
|
||||
\newtheorem{problem}[thm]{\protect\problemname}
|
||||
EndPreamble
|
||||
Requires amsthm
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\problemname}{_(Problem)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -164,10 +198,13 @@ Style Exercise
|
||||
LatexName xca
|
||||
LabelString "Exercise \thetheorem."
|
||||
Preamble
|
||||
\providecommand{\exercisename}{Exercise}
|
||||
\theoremstyle{definition}
|
||||
\newtheorem{xca}[thm]{Exercise}
|
||||
\newtheorem{xca}[thm]{\protect\exercisename}
|
||||
EndPreamble
|
||||
Requires amsthm
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\exercisename}{_(Exercise)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -185,9 +222,13 @@ Style Remark
|
||||
Shape Italic
|
||||
EndFont
|
||||
Preamble
|
||||
\providecommand{\remarkname}{Remark}
|
||||
\theoremstyle{remark}
|
||||
\newtheorem{rem}[thm]{Remark}
|
||||
\newtheorem{rem}[thm]{\protect\remarkname}
|
||||
EndPreamble
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\remarkname}{_(Remark)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -196,10 +237,13 @@ Style Claim
|
||||
LatexName claim
|
||||
LabelString "Claim \thetheorem."
|
||||
Preamble
|
||||
\providecommand{\claimname}{Claim}
|
||||
\theoremstyle{remark}
|
||||
\newtheorem{claim}[thm]{Claim}
|
||||
\newtheorem{claim}[thm]{\protect\claimname}
|
||||
EndPreamble
|
||||
Requires amsthm
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\claimname}{_(Claim)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
||||
|
||||
@ -226,9 +270,10 @@ Style Case
|
||||
Shape Italic
|
||||
EndFont
|
||||
Preamble
|
||||
\providecommand{\casename}{Case}
|
||||
\newcounter{casectr}
|
||||
\newenvironment{caseenv}
|
||||
{\begin{list}{{\itshape\ Case} \arabic{casectr}.}{%
|
||||
{\begin{list}{{\itshape\ \protect\casename} \arabic{casectr}.}{%
|
||||
\setlength{\leftmargin}{\labelwidth}
|
||||
\addtolength{\leftmargin}{\parskip}
|
||||
\setlength{\itemindent}{\listparindent}
|
||||
@ -238,4 +283,7 @@ Style Case
|
||||
\usecounter{casectr}}
|
||||
{\end{list}}
|
||||
EndPreamble
|
||||
I18nPreamble
|
||||
\AtBeginDocument{\ifx\LdfInit\undefined\relax\else\addto\captions$$lang{\renewcommand{\casename}{_(Case)}}\fi}
|
||||
EndI18nPreamble
|
||||
End
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
# Full author contact details are available in file CREDITS
|
||||
|
||||
# This script will update a .layout file to format 6
|
||||
# This script will update a .layout file to current format
|
||||
|
||||
|
||||
import os, re, string, sys
|
||||
@ -39,7 +39,10 @@ import os, re, string, sys
|
||||
# Incremented to format 11, 14 October 2008 by rgh
|
||||
# Add ProvidesModule, ExcludesModule tags
|
||||
|
||||
currentFormat = 11
|
||||
# Incremented to format 12, 10 January 2009 by gb
|
||||
# Add I18NPreamble tag
|
||||
|
||||
currentFormat = 12
|
||||
|
||||
|
||||
def usage(prog_name):
|
||||
@ -120,6 +123,7 @@ def convert(lines):
|
||||
re_AMSMaths = re.compile(r'^\s*Input amsmaths.inc\s*')
|
||||
re_AMSMathsPlain = re.compile(r'^\s*Input amsmaths-plain.inc\s*')
|
||||
re_AMSMathsSeq = re.compile(r'^\s*Input amsmaths-seq.inc\s*')
|
||||
re_TocLevel = re.compile(r'^(\s*)(TocLevel)(\s+)(\S+)', re.IGNORECASE)
|
||||
|
||||
# counters for sectioning styles (hardcoded in 1.3)
|
||||
counters = {"part" : "\\Roman{part}",
|
||||
@ -150,6 +154,7 @@ def convert(lines):
|
||||
i = 0
|
||||
only_comment = 1
|
||||
counter = ""
|
||||
toclevel = ""
|
||||
label = ""
|
||||
labelstring = ""
|
||||
labelstringappendix = ""
|
||||
@ -197,6 +202,11 @@ def convert(lines):
|
||||
i += 1
|
||||
continue
|
||||
|
||||
# This just involved new features, not any changes to old ones
|
||||
if format == 11:
|
||||
i += 1
|
||||
continue
|
||||
|
||||
if format == 10:
|
||||
match = re_UseMod.match(lines[i])
|
||||
if match:
|
||||
@ -400,11 +410,17 @@ def convert(lines):
|
||||
latextype = string.lower(match.group(4))
|
||||
latextype_line = i
|
||||
|
||||
# Remember the TocLevel line
|
||||
match = re_TocLevel.match(lines[i])
|
||||
if match:
|
||||
toclevel = string.lower(match.group(4))
|
||||
|
||||
# Reset variables at the beginning of a style definition
|
||||
match = re_Style.match(lines[i])
|
||||
if match:
|
||||
style = string.lower(match.group(4))
|
||||
counter = ""
|
||||
toclevel = ""
|
||||
label = ""
|
||||
space1 = ""
|
||||
labelstring = ""
|
||||
@ -472,7 +488,7 @@ def convert(lines):
|
||||
i += 1
|
||||
|
||||
# Add the TocLevel setting for sectioning styles
|
||||
if toclevels.has_key(style) and maxcounter <= toclevels[style]:
|
||||
if toclevel == "" and toclevels.has_key(style) and maxcounter <= toclevels[style]:
|
||||
lines.insert(i, '%sTocLevel %d' % (space1, toclevels[style]))
|
||||
i += 1
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
#include "LaTeXFeatures.h"
|
||||
|
||||
#include "Buffer.h"
|
||||
#include "Color.h"
|
||||
#include "BufferParams.h"
|
||||
#include "Encoding.h"
|
||||
@ -869,10 +870,16 @@ docstring const LaTeXFeatures::getTClassPreamble() const
|
||||
|
||||
tcpreamble << tclass.preamble();
|
||||
|
||||
typedef LanguageList::const_iterator lang_it;
|
||||
lang_it const lbeg = UsedLanguages_.begin();
|
||||
lang_it const lend = UsedLanguages_.end();
|
||||
list<docstring>::const_iterator cit = usedLayouts_.begin();
|
||||
list<docstring>::const_iterator end = usedLayouts_.end();
|
||||
for (; cit != end; ++cit) {
|
||||
tcpreamble << tclass[*cit].preamble();
|
||||
tcpreamble << tclass[*cit].i18npreamble(buffer().language());
|
||||
for (lang_it lit = lbeg; lit != lend; ++lit)
|
||||
tcpreamble << tclass[*cit].i18npreamble(*lit);
|
||||
}
|
||||
|
||||
return tcpreamble.str();
|
||||
|
@ -13,13 +13,18 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "Layout.h"
|
||||
#include "Language.h"
|
||||
#include "TextClass.h"
|
||||
#include "Lexer.h"
|
||||
#include "Font.h"
|
||||
|
||||
#include "support/Messages.h"
|
||||
#include "support/debug.h"
|
||||
#include "support/lassert.h"
|
||||
#include "support/lstrings.h"
|
||||
|
||||
#include <boost/regex.hpp>
|
||||
|
||||
using namespace std;
|
||||
using namespace lyx::support;
|
||||
|
||||
@ -51,6 +56,7 @@ enum LayoutTags {
|
||||
LT_FREE_SPACING,
|
||||
LT_PASS_THRU,
|
||||
//LT_HEADINGS,
|
||||
LT_I18NPREAMBLE,
|
||||
LT_ITEMSEP,
|
||||
LT_KEEPEMPTY,
|
||||
LT_LABEL_BOTTOMSEP,
|
||||
@ -144,6 +150,7 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
|
||||
{ "fill_top", LT_FILL_TOP },
|
||||
{ "font", LT_FONT },
|
||||
{ "freespacing", LT_FREE_SPACING },
|
||||
{ "i18npreamble", LT_I18NPREAMBLE },
|
||||
{ "innertag", LT_INNERTAG },
|
||||
{ "intitle", LT_INTITLE },
|
||||
{ "itemsep", LT_ITEMSEP },
|
||||
@ -329,6 +336,10 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
|
||||
preamble_ = from_utf8(lex.getLongString("EndPreamble"));
|
||||
break;
|
||||
|
||||
case LT_I18NPREAMBLE:
|
||||
i18npreamble_ = from_utf8(lex.getLongString("EndI18NPreamble"));
|
||||
break;
|
||||
|
||||
case LT_LABELTYPE:
|
||||
readLabelType(lex);
|
||||
break;
|
||||
@ -404,7 +415,7 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
|
||||
case LT_LABELSTRING: // label string definition
|
||||
// FIXME: this means LT_ENDLABELSTRING may only
|
||||
// occur after LT_LABELSTRING
|
||||
lex >> labelstring_;
|
||||
lex >> labelstring_;
|
||||
labelstring_ = trim(labelstring_);
|
||||
labelstring_appendix_ = labelstring_;
|
||||
break;
|
||||
@ -763,6 +774,38 @@ docstring const & Layout::depends_on() const
|
||||
}
|
||||
|
||||
|
||||
docstring const Layout::i18npreamble(Language const * lang) const
|
||||
{
|
||||
if (i18npreamble_.empty())
|
||||
return i18npreamble_;
|
||||
string preamble = subst(to_utf8(i18npreamble_), "$$lang",
|
||||
lang->babel());
|
||||
#ifdef TEX2LYX
|
||||
// tex2lyx does not have getMessages()
|
||||
LASSERT(false, /**/);
|
||||
#else
|
||||
// FIXME UNICODE
|
||||
// boost::regex is not unicode-safe.
|
||||
// Should use QRegExp or (boost::u32regex, but that requires ICU)
|
||||
static boost::regex const reg("_\\(([^\\)]+)\\)");
|
||||
boost::smatch sub;
|
||||
while (boost::regex_search(preamble, sub, reg)) {
|
||||
string const key = sub.str(1);
|
||||
string translated;
|
||||
if (isAscii(key))
|
||||
translated = to_utf8(getMessages(lang->code()).get(key));
|
||||
else {
|
||||
lyxerr << "Warning: not translating `" << key
|
||||
<< "' because it is not pure ASCII." << endl;
|
||||
translated = key;
|
||||
}
|
||||
preamble = subst(preamble, sub.str(), translated);
|
||||
}
|
||||
#endif
|
||||
return from_utf8(preamble);
|
||||
}
|
||||
|
||||
|
||||
bool Layout::operator==(Layout const & rhs) const
|
||||
{
|
||||
// This is enough for the applications we actually make,
|
||||
|
@ -24,6 +24,7 @@
|
||||
|
||||
namespace lyx {
|
||||
|
||||
class Language;
|
||||
class Lexer;
|
||||
class TextClass;
|
||||
|
||||
@ -89,6 +90,9 @@ public:
|
||||
docstring const & category() const { return category_; }
|
||||
///
|
||||
docstring const & preamble() const { return preamble_; }
|
||||
/// Get language dependent macro definitions needed for this layout
|
||||
/// for language \p lang
|
||||
docstring const i18npreamble(Language const * lang) const;
|
||||
///
|
||||
std::set<std::string> const & requires() const { return requires_; }
|
||||
///
|
||||
@ -266,6 +270,8 @@ private:
|
||||
docstring category_;
|
||||
/// Macro definitions needed for this layout
|
||||
docstring preamble_;
|
||||
/// Language dependent macro definitions needed for this layout
|
||||
docstring i18npreamble_;
|
||||
/// Packages needed for this layout
|
||||
std::set<std::string> requires_;
|
||||
};
|
||||
|
@ -60,7 +60,7 @@ private:
|
||||
docstring name_;
|
||||
};
|
||||
|
||||
int const FORMAT = 11;
|
||||
int const FORMAT = 12;
|
||||
|
||||
|
||||
bool layout2layout(FileName const & filename, FileName const & tempfile)
|
||||
|
Loading…
Reference in New Issue
Block a user