diff --git a/Dockerfile b/Dockerfile index a75590fcbdab44aec7d70b3eac6348c69bc90c05..38fcf8709968cfab8dd53b29f76f2faa8eb9aef6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -65,5 +65,16 @@ RUN /usr/local/sbin/weblate-setup-env.sh; /usr/local/sbin/weblate-install.sh # Create project and import languages RUN /usr/local/sbin/weblate-setup-env.sh; /usr/local/sbin/weblate-setup-project.sh +# Build machine translation db and enable use of tmserver +RUN /usr/local/sbin/weblate-build-tmdb.sh +# TODO: Weblate tries to look for languages supported by tmserver by querying +# ab unexisting API endpoint (/languages), what causes a 404 error and +# prevents the tmserver functionality in Weblate from working properly. +# We have to confirm if this is a bug in Weblate, check if this bug is +# still present in upstream and report/fix accordingly: +# https://github.com/WeblateOrg/weblate/blob/master/weblate/trans/machine/tmserver.py#L54 +COPY weblate/fix-tmserver-api.patch /tmp/ RUN patch -p0 -d +/usr/local/share/weblate < /tmp/fix-tmserver-api.patch + # Setup server and serve Weblate using Apache CMD /usr/local/sbin/weblate-setup-env.sh; /usr/local/sbin/weblate-run-server.sh diff --git a/docker/usr/local/sbin/weblate-build-tmdb.sh b/docker/usr/local/sbin/weblate-build-tmdb.sh new file mode 100755 index 0000000000000000000000000000000000000000..5913ebd4a4d556c704f66bfdffbfb0f9c61f2ed1 --- /dev/null +++ b/docker/usr/local/sbin/weblate-build-tmdb.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# This script creates a Translation Memory Database from the current Tails +# cloned repository. + +DBFILE=/var/lib/weblate/tails-wiki.tmdb +REPO=/var/lib/weblate/repositories/vcs/tails/wikisrcindexpo + +create_tmdb() { + for pofile in $( find ${REPO}/wiki/src -iname "*.po" ); do + lang=$( echo ${pofile} | sed -e "s/^.*\.\([a-z][a-z]\)\.po\$/\1/" ); + build_tmdb -d ${DBFILE} -s en -t ${lang} ${pofile} + done +} + +create_tmdb diff --git a/docker/usr/local/sbin/weblate-run-server.sh b/docker/usr/local/sbin/weblate-run-server.sh index 400357b1780c004f6fdb9660f267c89106f162c1..2a2c23d4a45346e4626f70c337fdd5cd14fdc142 100755 --- a/docker/usr/local/sbin/weblate-run-server.sh +++ b/docker/usr/local/sbin/weblate-run-server.sh @@ -6,6 +6,7 @@ set -e weblate_run_server() { + tmserver -d /var/lib/weblate/tails-wiki.tmdb -p 8080 & /usr/sbin/apache2ctl -D FOREGROUND } diff --git a/weblate/fix-tmserver-api.patch b/weblate/fix-tmserver-api.patch new file mode 100644 index 0000000000000000000000000000000000000000..a39682a3254f2d9349039d30e07cc39876cdf320 --- /dev/null +++ b/weblate/fix-tmserver-api.patch @@ -0,0 +1,17 @@ +diff --git weblate/trans/machine/tmserver.py weblate/trans/machine/tmserver.py +index 86a6deaf1..08e29d98c 100644 +--- weblate/trans/machine/tmserver.py ++++ weblate/trans/machine/tmserver.py +@@ -73,11 +73,7 @@ class TMServerTranslation(MachineTranslation): + ''' + Checks whether given language combination is supported. + ''' +- if len(self.supported_languages) == 0: +- # Fallback for old tmserver which does not export list of +- # supported languages +- return True +- return (source, language) in self.supported_languages ++ return True + + def download_translations(self, source, language, text, unit, user): + ''' diff --git a/weblate/settings_proposed_2.10.1.py b/weblate/settings_proposed_2.10.1.py index 23788d12ebe5a151e5611562225394f74337bcc7..0aa4ea1ce939dc94ac19468792f111bc13dacba8 100644 --- a/weblate/settings_proposed_2.10.1.py +++ b/weblate/settings_proposed_2.10.1.py @@ -452,7 +452,7 @@ MT_MYMEMORY_KEY = None MT_GOOGLE_KEY = None # tmserver URL -MT_TMSERVER = 'http://127.0.0.1:8080/' +MT_TMSERVER = 'http://127.0.0.1:8080/tmserver/' # Title of site to use SITE_TITLE = 'Tails translation platform'