Commit cd0bb4c7 by Diana Huang

Add ability to generate static i18n files.

parent dce3d9ca
**/vendor
node_modules
cms/static/js/i18n/**/*.js
lms/static/js/i18n/**/*.js
......@@ -60,6 +60,8 @@ from lms.envs.common import (
# Django REST framework configuration
REST_FRAMEWORK,
STATICI18N_OUTPUT_DIR
)
from path import Path as path
from warnings import simplefilter
......@@ -465,6 +467,8 @@ LANGUAGE_DICT = dict(LANGUAGES)
USE_I18N = True
USE_L10N = True
STATICI18N_ROOT = PROJECT_ROOT / "static"
# Localization strings (e.g. django.po) are under this directory
LOCALE_PATHS = (REPO_ROOT + '/conf/locale',) # edx-platform/conf/locale/
......@@ -845,6 +849,9 @@ INSTALLED_APPS = (
# edx-milestones service
'milestones',
# Static i18n support
'statici18n',
)
......
......@@ -23,6 +23,11 @@ from openedx.core.lib.js_utils import (
${settings.STUDIO_NAME}
</title>
<%
jsi18n_path = "js/i18n/{language}/djangojs.js".format(language=LANGUAGE_CODE)
%>
<script type="text/javascript" src="${static.url(jsi18n_path)}"></script>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="path_prefix" content="${EDX_ROOT_URL}">
......
......@@ -122,12 +122,6 @@ JS_INFO_DICT = {
'packages': ('openassessment',),
}
urlpatterns += patterns(
'',
# Serve catalog of localized strings to be rendered by Javascript
url(r'^i18n.js$', 'django.views.i18n.javascript_catalog', JS_INFO_DICT),
)
if settings.FEATURES.get('ENABLE_CONTENT_LIBRARIES'):
urlpatterns += (
url(r'^library/{}?$'.format(LIBRARY_KEY_PATTERN),
......
......@@ -111,6 +111,9 @@ ignore_dirs:
- '*/spec'
- '*/tests'
- '*/features'
# Directories full of auto-generated JS
- lms/static/js/i18n
- cms/static/js/i18n
# Third-party installed apps that we also extract strings from. When adding a
......
......@@ -922,6 +922,9 @@ LANGUAGE_DICT = dict(LANGUAGES)
USE_I18N = True
USE_L10N = True
STATICI18N_ROOT = PROJECT_ROOT / "static"
STATICI18N_OUTPUT_DIR = "js/i18n"
# Localization strings (e.g. django.po) are under this directory
LOCALE_PATHS = (REPO_ROOT + '/conf/locale',) # edx-platform/conf/locale/
# Messages
......@@ -1943,6 +1946,9 @@ INSTALLED_APPS = (
# Gating of course content
'gating.apps.GatingConfig',
# Static i18n support
'statici18n',
)
# Migrations which are not in the standard module "migrations"
......
......@@ -32,7 +32,6 @@
// NOTE: baseUrl has been previously set in lms/templates/main.html
waitSeconds: 60,
paths: {
"gettext": "/i18n",
"annotator_1.2.9": "js/vendor/edxnotes/annotator-full.min",
"date": "js/vendor/date",
"moment": "js/vendor/moment.min",
......
......@@ -51,7 +51,11 @@ from branding import api as branding_api
</script>
% endif
<script type="text/javascript" src="/i18n.js"></script>
<%
jsi18n_path = "js/i18n/{language}/djangojs.js".format(language=LANGUAGE_CODE)
%>
<script type="text/javascript" src="${static.url(jsi18n_path)}"></script>
<link rel="icon" type="image/x-icon" href="${static.url(static.get_value('favicon_path', settings.FAVICON_PATH))}" />
......
......@@ -138,11 +138,6 @@ js_info_dict = {
'packages': ('openassessment',),
}
urlpatterns += (
# Serve catalog of localized strings to be rendered by Javascript
url(r'^i18n.js$', 'django.views.i18n.javascript_catalog', js_info_dict),
)
# sysadmin dashboard, to see what courses are loaded, to delete & load courses
if settings.FEATURES["ENABLE_SYSADMIN_DASHBOARD"]:
urlpatterns += (
......
......@@ -5,12 +5,15 @@ import sys
import subprocess
from path import Path as path
from paver.easy import task, cmdopts, needs, sh
from .utils.cmd import django_cmd
try:
from pygments.console import colorize
except ImportError:
colorize = lambda color, text: text
DEFAULT_SETTINGS = 'devstack'
@task
@needs(
......@@ -194,6 +197,7 @@ def i18n_robot_pull():
"""
Pull source strings, generate po and mo files, and validate
"""
# sh('paver test_i18n')
# Tests were removed from repo, but there should still be tests covering the translations
# TODO: Validate the recently pulled translations, and give a bail option
......@@ -203,10 +207,16 @@ def i18n_robot_pull():
print "\n\nValidating translations with `i18n_tool validate`..."
sh("{cmd}".format(cmd=cmd))
# Generate static i18n JS files.
for system in ['lms', 'cms']:
sh(django_cmd(system, DEFAULT_SETTINGS, 'compilejsi18n'))
con = raw_input("Continue with committing these translations (y/n)? ")
if con.lower() == 'y':
sh('git add conf/locale')
sh('git add cms/static/js/i18n')
sh('git add lms/static/js/i18n')
sh(
'git commit --message='
......
......@@ -26,6 +26,7 @@ django-oauth-plus==2.2.8
django-sekizai==0.8.2
django-ses==0.7.0
django-simple-history==1.6.3
django-statici18n==1.1.5
django-storages-redux==1.3
django-method-override==0.1.0
# We need a fix to DRF 3.2.x, for now use it from our own cherry-picked repo
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment