Add support for project language file
This commit is contained in:
@@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
"Synopsis": "Synopsis",
|
||||||
|
"Comment": "Comment",
|
||||||
|
"Notes": "Notes",
|
||||||
|
"0": "Zero",
|
||||||
|
"1": "One",
|
||||||
|
"2": "Two",
|
||||||
|
"3": "Three",
|
||||||
|
"4": "Four",
|
||||||
|
"5": "Five",
|
||||||
|
"6": "Six",
|
||||||
|
"7": "Seven",
|
||||||
|
"8": "Eight",
|
||||||
|
"9": "Nine",
|
||||||
|
"10": "Ten",
|
||||||
|
"11": "Eleven",
|
||||||
|
"12": "Twelve",
|
||||||
|
"13": "Thirteen",
|
||||||
|
"14": "Fourteen",
|
||||||
|
"15": "Fifteen",
|
||||||
|
"16": "Sixteen",
|
||||||
|
"17": "Seventeen",
|
||||||
|
"18": "Eighteen",
|
||||||
|
"19": "Nineteen",
|
||||||
|
"20": "Twenty",
|
||||||
|
"21": "Twenty-One",
|
||||||
|
"22": "Twenty-Two",
|
||||||
|
"23": "Twenty-Three",
|
||||||
|
"24": "Twenty-Four",
|
||||||
|
"25": "Twenty-Five",
|
||||||
|
"26": "Twenty-Six",
|
||||||
|
"27": "Twenty-Seven",
|
||||||
|
"28": "Twenty-Eight",
|
||||||
|
"29": "Twenty-Nine",
|
||||||
|
"30": "Thirty",
|
||||||
|
"31": "Thirty-One",
|
||||||
|
"32": "Thirty-Two",
|
||||||
|
"33": "Thirty-Three",
|
||||||
|
"34": "Thirty-Four",
|
||||||
|
"35": "Thirty-Five",
|
||||||
|
"36": "Thirty-Six",
|
||||||
|
"37": "Thirty-Seven",
|
||||||
|
"38": "Thirty-Eight",
|
||||||
|
"39": "Thirty-Nine",
|
||||||
|
"40": "Forty",
|
||||||
|
"41": "Forty-One",
|
||||||
|
"42": "Forty-Two",
|
||||||
|
"43": "Forty-Three",
|
||||||
|
"44": "Forty-Four",
|
||||||
|
"45": "Forty-Five",
|
||||||
|
"46": "Forty-Six",
|
||||||
|
"47": "Forty-Seven",
|
||||||
|
"48": "Forty-Eight",
|
||||||
|
"49": "Forty-Nine",
|
||||||
|
"50": "Fifty",
|
||||||
|
"51": "Fifty-One",
|
||||||
|
"52": "Fifty-Two",
|
||||||
|
"53": "Fifty-Three",
|
||||||
|
"54": "Fifty-Four",
|
||||||
|
"55": "Fifty-Five",
|
||||||
|
"56": "Fifty-Six",
|
||||||
|
"57": "Fifty-Seven",
|
||||||
|
"58": "Fifty-Eight",
|
||||||
|
"59": "Fifty-Nine",
|
||||||
|
"60": "Sixty",
|
||||||
|
"61": "Sixty-One",
|
||||||
|
"62": "Sixty-Two",
|
||||||
|
"63": "Sixty-Three",
|
||||||
|
"64": "Sixty-Four",
|
||||||
|
"65": "Sixty-Five",
|
||||||
|
"66": "Sixty-Six",
|
||||||
|
"67": "Sixty-Seven",
|
||||||
|
"68": "Sixty-Eight",
|
||||||
|
"69": "Sixty-Nine",
|
||||||
|
"70": "Seventy",
|
||||||
|
"71": "Seventy-One",
|
||||||
|
"72": "Seventy-Two",
|
||||||
|
"73": "Seventy-Three",
|
||||||
|
"74": "Seventy-Four",
|
||||||
|
"75": "Seventy-Five",
|
||||||
|
"76": "Seventy-Six",
|
||||||
|
"77": "Seventy-Seven",
|
||||||
|
"78": "Seventy-Eight",
|
||||||
|
"79": "Seventy-Nine",
|
||||||
|
"80": "Eighty",
|
||||||
|
"81": "Eighty-One",
|
||||||
|
"82": "Eighty-Two",
|
||||||
|
"83": "Eighty-Three",
|
||||||
|
"84": "Eighty-Four",
|
||||||
|
"85": "Eighty-Five",
|
||||||
|
"86": "Eighty-Six",
|
||||||
|
"87": "Eighty-Seven",
|
||||||
|
"88": "Eighty-Eight",
|
||||||
|
"89": "Eighty-Nine",
|
||||||
|
"90": "Ninety",
|
||||||
|
"91": "Ninety-One",
|
||||||
|
"92": "Ninety-Two",
|
||||||
|
"93": "Ninety-Three",
|
||||||
|
"94": "Ninety-Four",
|
||||||
|
"95": "Ninety-Five",
|
||||||
|
"96": "Ninety-Six",
|
||||||
|
"97": "Ninety-Seven",
|
||||||
|
"98": "Ninety-Eight",
|
||||||
|
"99": "Ninety-Nine"
|
||||||
|
}
|
||||||
@@ -73,6 +73,7 @@ class Config:
|
|||||||
self.themeRoot = None # The full path to the nw/assets/themes folder
|
self.themeRoot = None # The full path to the nw/assets/themes folder
|
||||||
self.dictPath = None # The full path to the nw/assets/dict folder
|
self.dictPath = None # The full path to the nw/assets/dict folder
|
||||||
self.iconPath = None # The full path to the nw/assets/icons folder
|
self.iconPath = None # The full path to the nw/assets/icons folder
|
||||||
|
self.langPath = None # The full path to the nw/assets/lang folder
|
||||||
self.helpPath = None # The full path to the novelwriter .qhc help file
|
self.helpPath = None # The full path to the novelwriter .qhc help file
|
||||||
|
|
||||||
# Runtime Settings and Variables
|
# Runtime Settings and Variables
|
||||||
@@ -288,6 +289,7 @@ class Config:
|
|||||||
self.themeRoot = os.path.join(self.assetPath, "themes")
|
self.themeRoot = os.path.join(self.assetPath, "themes")
|
||||||
self.dictPath = os.path.join(self.assetPath, "dict")
|
self.dictPath = os.path.join(self.assetPath, "dict")
|
||||||
self.iconPath = os.path.join(self.assetPath, "icons")
|
self.iconPath = os.path.join(self.assetPath, "icons")
|
||||||
|
self.langPath = os.path.join(self.assetPath, "lang")
|
||||||
self.appIcon = os.path.join(self.iconPath, "novelwriter.svg")
|
self.appIcon = os.path.join(self.iconPath, "novelwriter.svg")
|
||||||
|
|
||||||
logger.verbose("App path: %s" % self.appPath)
|
logger.verbose("App path: %s" % self.appPath)
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
import nw
|
import nw
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
@@ -58,6 +59,7 @@ class NWProject():
|
|||||||
# Core Elements
|
# Core Elements
|
||||||
self.optState = OptionState(self) # Project-specific GUI options
|
self.optState = OptionState(self) # Project-specific GUI options
|
||||||
self.projTree = NWTree(self) # The project tree
|
self.projTree = NWTree(self) # The project tree
|
||||||
|
self.langData = {} # Localisation data
|
||||||
|
|
||||||
# Project Status
|
# Project Status
|
||||||
self.projOpened = 0 # The time stamp of when the project file was opened
|
self.projOpened = 0 # The time stamp of when the project file was opened
|
||||||
@@ -605,6 +607,10 @@ class NWProject():
|
|||||||
self.theParent.setStatus("Opened Project: %s" % self.projName)
|
self.theParent.setStatus("Opened Project: %s" % self.projName)
|
||||||
|
|
||||||
self._scanProjectFolder()
|
self._scanProjectFolder()
|
||||||
|
if self.projLang is None:
|
||||||
|
self._loadProjectLocalisation(self.mainConf.guiLang)
|
||||||
|
else:
|
||||||
|
self._loadProjectLocalisation(self.projLang)
|
||||||
|
|
||||||
self.currWCount = self.lastWCount
|
self.currWCount = self.lastWCount
|
||||||
self.projOpened = time()
|
self.projOpened = time()
|
||||||
@@ -1201,6 +1207,30 @@ class NWProject():
|
|||||||
# Internal Functions
|
# Internal Functions
|
||||||
##
|
##
|
||||||
|
|
||||||
|
def _loadProjectLocalisation(self, theLang):
|
||||||
|
"""Load the language data for the current project language.
|
||||||
|
"""
|
||||||
|
lngShort = theLang.split("_")[0]
|
||||||
|
loadFile = os.path.join(self.mainConf.langPath, "project_en.json")
|
||||||
|
chkFile1 = os.path.join(self.mainConf.langPath, "project_%s.json" % theLang)
|
||||||
|
chkFile2 = os.path.join(self.mainConf.langPath, "project_%s.json" % lngShort)
|
||||||
|
if os.path.isfile(chkFile1):
|
||||||
|
loadFile = chkFile1
|
||||||
|
elif os.path.isfile(chkFile2):
|
||||||
|
loadFile = chkFile2
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(loadFile, mode="r", encoding="utf8") as inFile:
|
||||||
|
self.langData = json.load(inFile)
|
||||||
|
logger.debug("Loaded project language file: %s" % os.path.basename(loadFile))
|
||||||
|
|
||||||
|
except Exception:
|
||||||
|
logger.error("Failed to load index file")
|
||||||
|
nw.logException()
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def _readLockFile(self):
|
def _readLockFile(self):
|
||||||
"""Reads the lock file in the project folder.
|
"""Reads the lock file in the project folder.
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user