mirror of https://gitlab.com/bashrc2/epicyon
Translations for ontology
parent
b6b57ea9cc
commit
aeb896b454
21
languages.py
21
languages.py
|
@ -108,16 +108,18 @@ def understoodPostLanguage(baseDir: str, nickname: str, domain: str,
|
||||||
if libretranslateUrl:
|
if libretranslateUrl:
|
||||||
libretranslateApiKey = getConfigParam(baseDir, "libretranslateApiKey")
|
libretranslateApiKey = getConfigParam(baseDir, "libretranslateApiKey")
|
||||||
langList = \
|
langList = \
|
||||||
_libretranslateLanguages(libretranslateUrl, libretranslateApiKey)
|
libretranslateLanguages(libretranslateUrl, libretranslateApiKey)
|
||||||
for lang in langList:
|
for lang in langList:
|
||||||
if msgObject['contentMap'].get(lang):
|
if msgObject['contentMap'].get(lang):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def _libretranslateLanguages(url: str, apiKey: str = None) -> []:
|
def libretranslateLanguages(url: str, apiKey: str = None) -> []:
|
||||||
"""Returns a list of supported languages
|
"""Returns a list of supported languages
|
||||||
"""
|
"""
|
||||||
|
if not url:
|
||||||
|
return []
|
||||||
if not url.endswith('/languages'):
|
if not url.endswith('/languages'):
|
||||||
if not url.endswith('/'):
|
if not url.endswith('/'):
|
||||||
url += "/languages"
|
url += "/languages"
|
||||||
|
@ -204,10 +206,13 @@ def addLinksToContent(content: str, links: {}) -> str:
|
||||||
return content
|
return content
|
||||||
|
|
||||||
|
|
||||||
def _libretranslate(url: str, text: str,
|
def libretranslate(url: str, text: str,
|
||||||
source: str, target: str, apiKey: str = None) -> str:
|
source: str, target: str, apiKey: str = None) -> str:
|
||||||
"""Translate string using libretranslate
|
"""Translate string using libretranslate
|
||||||
"""
|
"""
|
||||||
|
if not url:
|
||||||
|
return None
|
||||||
|
|
||||||
if not url.endswith('/translate'):
|
if not url.endswith('/translate'):
|
||||||
if not url.endswith('/'):
|
if not url.endswith('/'):
|
||||||
url += "/translate"
|
url += "/translate"
|
||||||
|
@ -273,14 +278,14 @@ def autoTranslatePost(baseDir: str, postJsonObject: {},
|
||||||
return ''
|
return ''
|
||||||
libretranslateApiKey = getConfigParam(baseDir, "libretranslateApiKey")
|
libretranslateApiKey = getConfigParam(baseDir, "libretranslateApiKey")
|
||||||
langList = \
|
langList = \
|
||||||
_libretranslateLanguages(libretranslateUrl, libretranslateApiKey)
|
libretranslateLanguages(libretranslateUrl, libretranslateApiKey)
|
||||||
for lang in langList:
|
for lang in langList:
|
||||||
if msgObject['contentMap'].get(lang):
|
if msgObject['contentMap'].get(lang):
|
||||||
content = msgObject['contentMap'][lang]
|
content = msgObject['contentMap'][lang]
|
||||||
translatedText = \
|
translatedText = \
|
||||||
_libretranslate(libretranslateUrl, content,
|
libretranslate(libretranslateUrl, content,
|
||||||
lang, systemLanguage,
|
lang, systemLanguage,
|
||||||
libretranslateApiKey)
|
libretranslateApiKey)
|
||||||
if translatedText:
|
if translatedText:
|
||||||
if removeHtml(translatedText) == removeHtml(content):
|
if removeHtml(translatedText) == removeHtml(content):
|
||||||
return content
|
return content
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
14700
ontology/foodTypes.json
14700
ontology/foodTypes.json
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
64
tests.py
64
tests.py
|
@ -42,6 +42,7 @@ from follow import clearFollowers
|
||||||
from follow import sendFollowRequestViaServer
|
from follow import sendFollowRequestViaServer
|
||||||
from follow import sendUnfollowRequestViaServer
|
from follow import sendUnfollowRequestViaServer
|
||||||
from siteactive import siteIsActive
|
from siteactive import siteIsActive
|
||||||
|
from utils import getSupportedLanguages
|
||||||
from utils import setConfigParam
|
from utils import setConfigParam
|
||||||
from utils import isGroupActor
|
from utils import isGroupActor
|
||||||
from utils import dateStringToSeconds
|
from utils import dateStringToSeconds
|
||||||
|
@ -137,6 +138,8 @@ from languages import setActorLanguages
|
||||||
from languages import getActorLanguages
|
from languages import getActorLanguages
|
||||||
from languages import getLinksFromContent
|
from languages import getLinksFromContent
|
||||||
from languages import addLinksToContent
|
from languages import addLinksToContent
|
||||||
|
from languages import libretranslate
|
||||||
|
from languages import libretranslateLanguages
|
||||||
from shares import authorizeSharedItems
|
from shares import authorizeSharedItems
|
||||||
from shares import generateSharedItemFederationTokens
|
from shares import generateSharedItemFederationTokens
|
||||||
from shares import createSharedItemFederationToken
|
from shares import createSharedItemFederationToken
|
||||||
|
@ -3371,8 +3374,9 @@ def _testValidContentWarning():
|
||||||
|
|
||||||
def _testTranslations():
|
def _testTranslations():
|
||||||
print('testTranslations')
|
print('testTranslations')
|
||||||
languagesStr = ('ar', 'ca', 'cy', 'de', 'es', 'fr', 'ga',
|
baseDir = os.getcwd()
|
||||||
'hi', 'it', 'ja', 'oc', 'pt', 'ru', 'zh')
|
languagesStr = getSupportedLanguages(baseDir)
|
||||||
|
assert languagesStr
|
||||||
|
|
||||||
# load all translations into a dict
|
# load all translations into a dict
|
||||||
langDict = {}
|
langDict = {}
|
||||||
|
@ -5178,9 +5182,65 @@ def _testGetPriceFromString() -> None:
|
||||||
assert curr == "USD"
|
assert curr == "USD"
|
||||||
|
|
||||||
|
|
||||||
|
def _translateOntology() -> None:
|
||||||
|
ontologyTypes = ('food', 'clothes', 'tool')
|
||||||
|
url = 'https://translate.astian.org'
|
||||||
|
apiKey = None
|
||||||
|
ltLangList = libretranslateLanguages(url, apiKey)
|
||||||
|
baseDir = os.getcwd()
|
||||||
|
languagesStr = getSupportedLanguages(baseDir)
|
||||||
|
assert languagesStr
|
||||||
|
|
||||||
|
for oType in ontologyTypes:
|
||||||
|
changed = False
|
||||||
|
filename = baseDir + '/ontology/' + oType + 'Types.json'
|
||||||
|
if not os.path.isfile(filename):
|
||||||
|
continue
|
||||||
|
ontologyJson = loadJson(filename)
|
||||||
|
if not ontologyJson:
|
||||||
|
continue
|
||||||
|
index = -1
|
||||||
|
for item in ontologyJson['@graph']:
|
||||||
|
index += 1
|
||||||
|
if "rdfs:label" not in item:
|
||||||
|
continue
|
||||||
|
englishStr = None
|
||||||
|
languagesFound = []
|
||||||
|
for label in item["rdfs:label"]:
|
||||||
|
if '@language' not in label:
|
||||||
|
continue
|
||||||
|
languagesFound.append(label['@language'])
|
||||||
|
if '@value' not in label:
|
||||||
|
continue
|
||||||
|
if label['@language'] == 'en':
|
||||||
|
englishStr = label['@value']
|
||||||
|
if not englishStr:
|
||||||
|
continue
|
||||||
|
for lang in languagesStr:
|
||||||
|
if lang not in languagesFound:
|
||||||
|
translatedStr = None
|
||||||
|
if url and lang in ltLangList:
|
||||||
|
translatedStr = \
|
||||||
|
libretranslate(url, englishStr, 'en', lang, apiKey)
|
||||||
|
if not translatedStr:
|
||||||
|
translatedStr = englishStr
|
||||||
|
else:
|
||||||
|
translatedStr = translatedStr.replace('<p>', '')
|
||||||
|
translatedStr = translatedStr.replace('</p>', '')
|
||||||
|
ontologyJson['@graph'][index]["rdfs:label"].append({
|
||||||
|
"@value": translatedStr,
|
||||||
|
"@language": lang
|
||||||
|
})
|
||||||
|
changed = True
|
||||||
|
if not changed:
|
||||||
|
continue
|
||||||
|
saveJson(ontologyJson, filename + '.new')
|
||||||
|
|
||||||
|
|
||||||
def runAllTests():
|
def runAllTests():
|
||||||
print('Running tests...')
|
print('Running tests...')
|
||||||
updateDefaultThemesList(os.getcwd())
|
updateDefaultThemesList(os.getcwd())
|
||||||
|
_translateOntology()
|
||||||
_testGetPriceFromString()
|
_testGetPriceFromString()
|
||||||
_testFunctions()
|
_testFunctions()
|
||||||
_testDateConversions()
|
_testDateConversions()
|
||||||
|
|
16
utils.py
16
utils.py
|
@ -2793,3 +2793,19 @@ def getCurrencies() -> {}:
|
||||||
"₫": "VND",
|
"₫": "VND",
|
||||||
"Z$": "ZQD"
|
"Z$": "ZQD"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def getSupportedLanguages(baseDir: str) -> []:
|
||||||
|
"""Returns a list of supported languages
|
||||||
|
"""
|
||||||
|
translationsDir = baseDir + '/translations'
|
||||||
|
languagesStr = []
|
||||||
|
for subdir, dirs, files in os.walk(translationsDir):
|
||||||
|
for f in files:
|
||||||
|
if not f.endswith('.json'):
|
||||||
|
continue
|
||||||
|
lang = f.split('.')[0]
|
||||||
|
if len(lang) == 2:
|
||||||
|
languagesStr.append(lang)
|
||||||
|
break
|
||||||
|
return languagesStr
|
||||||
|
|
|
@ -23,6 +23,7 @@ from utils import loadJson
|
||||||
from utils import getConfigParam
|
from utils import getConfigParam
|
||||||
from utils import getImageFormats
|
from utils import getImageFormats
|
||||||
from utils import acctDir
|
from utils import acctDir
|
||||||
|
from utils import getSupportedLanguages
|
||||||
from languages import getActorLanguages
|
from languages import getActorLanguages
|
||||||
from skills import getSkills
|
from skills import getSkills
|
||||||
from theme import getThemesList
|
from theme import getThemesList
|
||||||
|
@ -1688,19 +1689,10 @@ def _htmlEditProfileOptions(manuallyApprovesFollowers: str,
|
||||||
return editProfileForm
|
return editProfileForm
|
||||||
|
|
||||||
|
|
||||||
def _getSupportedLanguages(baseDir: str) -> str:
|
def _getSupportedLanguagesSorted(baseDir: str) -> str:
|
||||||
"""Returns a list of supported languages
|
"""Returns a list of supported languages
|
||||||
"""
|
"""
|
||||||
langList = []
|
langList = getSupportedLanguages(baseDir)
|
||||||
for subdir, dirs, files in os.walk(baseDir + '/translations'):
|
|
||||||
for f in files:
|
|
||||||
if not f.endswith('.json'):
|
|
||||||
continue
|
|
||||||
langStr = f.split('.')[0]
|
|
||||||
if len(langStr) != 2:
|
|
||||||
continue
|
|
||||||
langList.append(langStr)
|
|
||||||
break
|
|
||||||
if not langList:
|
if not langList:
|
||||||
return ''
|
return ''
|
||||||
langList.sort()
|
langList.sort()
|
||||||
|
@ -1769,7 +1761,7 @@ def _htmlEditProfileMain(baseDir: str, displayNickname: str, bioStr: str,
|
||||||
editProfileForm += \
|
editProfileForm += \
|
||||||
editTextField('Blog', 'blogAddress', blogAddress, 'https://...')
|
editTextField('Blog', 'blogAddress', blogAddress, 'https://...')
|
||||||
|
|
||||||
languagesListStr = _getSupportedLanguages(baseDir)
|
languagesListStr = _getSupportedLanguagesSorted(baseDir)
|
||||||
showLanguages = getActorLanguages(actorJson)
|
showLanguages = getActorLanguages(actorJson)
|
||||||
editProfileForm += \
|
editProfileForm += \
|
||||||
editTextField(translate['Languages'], 'showLanguages',
|
editTextField(translate['Languages'], 'showLanguages',
|
||||||
|
|
Loading…
Reference in New Issue