Merge branch 'patch' into release_2.0.5
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"Synopsis": "Sinossi",
|
||||
"Comment": "Commento",
|
||||
"Notes": "Note",
|
||||
"0": "Zero",
|
||||
"1": "Uno",
|
||||
"2": "Due",
|
||||
"3": "Tre",
|
||||
"4": "Quattro",
|
||||
"5": "Cinque",
|
||||
"6": "Sei",
|
||||
"7": "Sette",
|
||||
"8": "Otto",
|
||||
"9": "Nove",
|
||||
"10": "Dieci",
|
||||
"11": "Undici",
|
||||
"12": "Dodici",
|
||||
"13": "Tredici",
|
||||
"14": "Quattordici",
|
||||
"15": "Quindici",
|
||||
"16": "Sedici",
|
||||
"17": "Diciassette",
|
||||
"18": "Diciotto",
|
||||
"19": "Diciannove",
|
||||
"20": "Venti",
|
||||
"21": "Ventuno",
|
||||
"22": "Ventidue",
|
||||
"23": "Ventitré",
|
||||
"24": "Ventiquattro",
|
||||
"25": "Venticinque",
|
||||
"26": "Ventisei",
|
||||
"27": "Ventisette",
|
||||
"28": "Ventotto",
|
||||
"29": "Ventinove",
|
||||
"30": "Trenta",
|
||||
"31": "Trentuno",
|
||||
"32": "Trentadue",
|
||||
"33": "Trentatré",
|
||||
"34": "Trentaquattro",
|
||||
"35": "Trentacinque",
|
||||
"36": "Trentasei",
|
||||
"37": "Trentasette",
|
||||
"38": "Trentotto",
|
||||
"39": "Trentanove",
|
||||
"40": "Quaranta",
|
||||
"41": "Quarantuno",
|
||||
"42": "Quarantadue",
|
||||
"43": "Quarantatré",
|
||||
"44": "Quarantaquattro",
|
||||
"45": "Quarantacinque",
|
||||
"46": "Quarantasei",
|
||||
"47": "Quarantasette",
|
||||
"48": "Quarantotto",
|
||||
"49": "Quarantanove",
|
||||
"50": "Cinquanta",
|
||||
"51": "Cinquantuno",
|
||||
"52": "Cinquantadue",
|
||||
"53": "Cinquantatré",
|
||||
"54": "Cinquantaquattro",
|
||||
"55": "Cinquantacinque",
|
||||
"56": "Cinquantasei",
|
||||
"57": "Cinquantasette",
|
||||
"58": "Cinquantotto",
|
||||
"59": "Cinquantanove",
|
||||
"60": "Sessanta",
|
||||
"61": "Sessantuno",
|
||||
"62": "Sessantadue",
|
||||
"63": "Sessantatre",
|
||||
"64": "Sessantaquattro",
|
||||
"65": "Sessantacinque",
|
||||
"66": "Sessantasei",
|
||||
"67": "Sessantasette",
|
||||
"68": "Sessantotto",
|
||||
"69": "Sessantanove",
|
||||
"70": "Settanta",
|
||||
"71": "Settantuno",
|
||||
"72": "Settantadue",
|
||||
"73": "Settantatré",
|
||||
"74": "Settantaquattro",
|
||||
"75": "Settantacinque",
|
||||
"76": "Settantasei",
|
||||
"77": "Settantasette",
|
||||
"78": "Settantotto",
|
||||
"79": "Settantanove",
|
||||
"80": "Ottanta",
|
||||
"81": "Ottantuno",
|
||||
"82": "Ottantadue",
|
||||
"83": "Ottantatré",
|
||||
"84": "Ottantaquattro",
|
||||
"85": "Ottantacinque",
|
||||
"86": "Ottantasei",
|
||||
"87": "Ottantasette",
|
||||
"88": "Ottantotto",
|
||||
"89": "Ottantanove",
|
||||
"90": "Novanta",
|
||||
"91": "Novantuno",
|
||||
"92": "Novantadue",
|
||||
"93": "Novantatré",
|
||||
"94": "Novantaquattro",
|
||||
"95": "Novantacinque",
|
||||
"96": "Novantasei",
|
||||
"97": "Novantasette",
|
||||
"98": "Novantotto",
|
||||
"99": "Novantanove"
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"Synopsis": "Сводка",
|
||||
"Comment": "Комментарий",
|
||||
"Notes": "Заметки",
|
||||
"0": "Ноль",
|
||||
"1": "Один",
|
||||
"2": "Два",
|
||||
"3": "Три",
|
||||
"4": "Четыре",
|
||||
"5": "Пять",
|
||||
"6": "Шесть",
|
||||
"7": "Семь",
|
||||
"8": "Восемь",
|
||||
"9": "Девять",
|
||||
"10": "Десять",
|
||||
"11": "Одиннадцать",
|
||||
"12": "Двенадцать",
|
||||
"13": "Тринадцать",
|
||||
"14": "Четырнадцать",
|
||||
"15": "Пятнадцать",
|
||||
"16": "Шестнадцать",
|
||||
"17": "Семнадцать",
|
||||
"18": "Восемнадцатая",
|
||||
"19": "Девятнадцать",
|
||||
"20": "Двадцать",
|
||||
"21": "Двадцать один",
|
||||
"22": "Двадцать два",
|
||||
"23": "Двадцать три",
|
||||
"24": "Двадцать четыре",
|
||||
"25": "Двадцать пять",
|
||||
"26": "Двадцать шесть",
|
||||
"27": "Двадцать семь",
|
||||
"28": "Двадцать восемь",
|
||||
"29": "Двадцать девять",
|
||||
"30": "Тридцать",
|
||||
"31": "Тридцать один",
|
||||
"32": "Тридцать два",
|
||||
"33": "Тридцать три",
|
||||
"34": "Тридцать четыре",
|
||||
"35": "Тридцать пятая",
|
||||
"36": "Тридцать пять",
|
||||
"37": "Тридцать семь",
|
||||
"38": "Тридцать восемь",
|
||||
"39": "Тридцать девять",
|
||||
"40": "Сорок",
|
||||
"41": "Сорок один",
|
||||
"42": "Сорок два",
|
||||
"43": "Сорок три",
|
||||
"44": "Сорок четыре",
|
||||
"45": "Сорок пять",
|
||||
"46": "Сорок шесть",
|
||||
"47": "Сорок семь",
|
||||
"48": "Сорок восемь",
|
||||
"49": "Сорок девять",
|
||||
"50": "Пятьдесят",
|
||||
"51": "Пятьдесят один",
|
||||
"52": "Пятьдесят два",
|
||||
"53": "Пятьдесят три",
|
||||
"54": "Пятьдесят четыре",
|
||||
"55": "Пятьдесят пять",
|
||||
"56": "Пятьдесят шесть",
|
||||
"57": "Пятьдесят семь",
|
||||
"58": "Пятьдесят восемь",
|
||||
"59": "Пятьдесят девять",
|
||||
"60": "Шестьдесят",
|
||||
"61": "Шестьдесят один",
|
||||
"62": "Шестьдесят два",
|
||||
"63": "Шестьдесят три",
|
||||
"64": "Шестьдесят четыре",
|
||||
"65": "Шестьдесят пять",
|
||||
"66": "Шестьдесят шесть",
|
||||
"67": "Шестьдесят семь",
|
||||
"68": "Шестьдесят восемь",
|
||||
"69": "Шестьдесят девять",
|
||||
"70": "Семьдесят",
|
||||
"71": "Семьдесят один",
|
||||
"72": "Семьдесят два",
|
||||
"73": "Семьдесят три",
|
||||
"74": "Семьдесят четыре",
|
||||
"75": "Семьдесят пять",
|
||||
"76": "Семьдесят шесть",
|
||||
"77": "Семьдесят семь",
|
||||
"78": "Семьдесят восемь",
|
||||
"79": "Семьдесят девять",
|
||||
"80": "Восемьдесят",
|
||||
"81": "Восемьдесят один",
|
||||
"82": "Восемьдесят два",
|
||||
"83": "Восемьдесят три",
|
||||
"84": "Восемьдесят четыре",
|
||||
"85": "Восемьдесят пять",
|
||||
"86": "Восемьдесят шесть",
|
||||
"87": "Восемьдесят семь",
|
||||
"88": "Восемьдесят восемь",
|
||||
"89": "Восемьдесят девять",
|
||||
"90": "Девяносто",
|
||||
"91": "Девяносто один",
|
||||
"92": "Девяносто два",
|
||||
"93": "Девяносто три",
|
||||
"94": "Девяносто четыре",
|
||||
"95": "Девяносто пять",
|
||||
"96": "Девяносто шесть",
|
||||
"97": "Девяносто семь",
|
||||
"98": "Девяносто восемь",
|
||||
"99": "Девяносто девять"
|
||||
}
|
||||
@@ -25,6 +25,7 @@ translators for the languages currently available:</p>
|
||||
<b>Dutch:</b> Martijn van der Kleijn (<a href="https://github.com/mvdkleijn">@mvdkleijn</a>)<br>
|
||||
<b>French:</b> Jan Lüdke (<a href="https://github.com/jyhelle">@jyhelle</a>)<br>
|
||||
<b>German:</b> Myian (<a href="https://github.com/heymyian">@heymyian</a>)<br>
|
||||
<b>Italian:</b> Riccardo Mangili<br>
|
||||
<b>Latin American Spanish:</b> Tommy Marplatt (<a href="https://github.com/tmarplatt">@tmarplatt</a>)<br>
|
||||
<b>Norwegian:</b> Veronica Berglyd Olsen (<a href="https://github.com/vkbo">@vkbo</a>)<br>
|
||||
<b>Portuguese:</b> Bruno Meneguello (<a href="https://github.com/bkmeneguello">@bkmeneguello</a>)<br>
|
||||
|
||||
@@ -44,12 +44,13 @@ XML_NS = {
|
||||
"text": "urn:oasis:names:tc:opendocument:xmlns:text:1.0",
|
||||
"meta": "urn:oasis:names:tc:opendocument:xmlns:meta:1.0",
|
||||
"fo": "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0",
|
||||
"dc": "http://purl.org/dc/elements/1.1/",
|
||||
}
|
||||
MANI_NS = {
|
||||
"manifest": "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"
|
||||
}
|
||||
OFFICE_NS = {
|
||||
"office": XML_NS["office"]
|
||||
"office": "urn:oasis:names:tc:opendocument:xmlns:office:1.0",
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +66,7 @@ def _mkTag(nsName, tagName, nsMap=XML_NS):
|
||||
|
||||
# Mimetype and Version
|
||||
X_MIME = "application/vnd.oasis.opendocument.text"
|
||||
X_VERS = "1.2"
|
||||
X_VERS = "1.3"
|
||||
|
||||
# Text Formatting Tags
|
||||
TAG_BR = _mkTag("text", "line-break")
|
||||
@@ -261,7 +262,7 @@ class ToOdt(Tokenizer):
|
||||
# ===============
|
||||
|
||||
if self._headerText == "":
|
||||
theTitle = self.theProject.data.title
|
||||
theTitle = self.theProject.data.title or self.theProject.data.name
|
||||
theAuth = self.theProject.data.author
|
||||
self._headerText = f"{theTitle} / {theAuth} /"
|
||||
|
||||
@@ -328,13 +329,37 @@ class ToOdt(Tokenizer):
|
||||
|
||||
self._xText = etree.SubElement(self._xBody, _mkTag("office", "text"))
|
||||
|
||||
# Meta Data
|
||||
timeStamp = datetime.now().isoformat(sep="T", timespec="seconds")
|
||||
|
||||
# Office Meta Data
|
||||
xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "creation-date"))
|
||||
xMeta.text = datetime.now().isoformat(sep="T", timespec="seconds")
|
||||
xMeta.text = timeStamp
|
||||
|
||||
xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "generator"))
|
||||
xMeta.text = f"novelWriter/{novelwriter.__version__}"
|
||||
|
||||
xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "initial-creator"))
|
||||
xMeta.text = self.theProject.data.author
|
||||
|
||||
xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "editing-cycles"))
|
||||
xMeta.text = str(self.theProject.data.saveCount)
|
||||
|
||||
# Format is: PnYnMnDTnHnMnS
|
||||
# https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#duration
|
||||
eT = self.theProject.data.editTime
|
||||
xMeta = etree.SubElement(self._xMeta, _mkTag("meta", "editing-duration"))
|
||||
xMeta.text = f"P{eT//86400:d}DT{eT%86400//3600:d}H{eT%3600//60:d}M{eT%60:d}S"
|
||||
|
||||
# Dublin Core Meta Data
|
||||
xMeta = etree.SubElement(self._xMeta, _mkTag("dc", "title"))
|
||||
xMeta.text = self.theProject.data.title or self.theProject.data.name
|
||||
|
||||
xMeta = etree.SubElement(self._xMeta, _mkTag("dc", "date"))
|
||||
xMeta.text = timeStamp
|
||||
|
||||
xMeta = etree.SubElement(self._xMeta, _mkTag("dc", "creator"))
|
||||
xMeta.text = self.theProject.data.author
|
||||
|
||||
self._pageStyles()
|
||||
self._defaultStyles()
|
||||
self._useableStyles()
|
||||
@@ -408,7 +433,7 @@ class ToOdt(Tokenizer):
|
||||
|
||||
elif tType == self.T_TITLE:
|
||||
tHead = tText.replace(r"\\", "\n")
|
||||
self._addTextPar("Title", oStyle, tHead, isHead=True)
|
||||
self._addTextPar("Title", oStyle, tHead, isHead=False) # Title must be text:p
|
||||
|
||||
elif tType == self.T_UNNUM:
|
||||
tHead = tText.replace(r"\\", "\n")
|
||||
@@ -503,9 +528,8 @@ class ToOdt(Tokenizer):
|
||||
etree.SubElement(xMani, mFile, attrib={mPath: "styles.xml", mType: "text/xml"})
|
||||
|
||||
oRoot = _mkTag("office", "document-settings", nsMap=OFFICE_NS)
|
||||
oSett = _mkTag("office", "settings", nsMap=OFFICE_NS)
|
||||
xSett = etree.Element(oRoot, nsmap=OFFICE_NS)
|
||||
etree.SubElement(xSett, oSett)
|
||||
oVers = _mkTag("office", "version", nsMap=OFFICE_NS)
|
||||
xSett = etree.Element(oRoot, nsmap=OFFICE_NS, attrib={oVers: X_VERS})
|
||||
|
||||
with ZipFile(savePath, mode="w") as outFile:
|
||||
outFile.writestr("mimetype", X_MIME)
|
||||
|
||||
Reference in New Issue
Block a user