Added rtl language support
authorJiyda Mint Moussa <jiydam@gmail.com>
Sun, 28 Apr 2013 21:01:30 +0000 (00:01 +0300)
committerJiyda Mint Moussa <jiydam@gmail.com>
Sun, 28 Apr 2013 21:01:30 +0000 (00:01 +0300)
RTL languages like Arabic, Hebrew etc were displayed from left
to right. I fixed this by adding a function to check
whether the language of the locale is rtl and change the
direction of the html in "base.html" accordingly.

[Fixes #220]

mediagoblin/templates/mediagoblin/base.html
mediagoblin/tools/template.py
mediagoblin/tools/translate.py

index 9c42a7567d0956d9450e586e087c2de50eb7b3b8..83bc65d407d383ab972c74ff76df4aea23661dd2 100644 (file)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -#}
 <!doctype html>
+
 <html
 {% block mediagoblin_html_tag %}
 {% endblock mediagoblin_html_tag %}
 >
-  <head>
+  <head {% if is_rtl %} dir="rtl" {% endif %}>
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>{% block title %}{{ app_config['html_title'] }}{% endblock %}</title>
@@ -48,6 +49,7 @@
     {% endblock mediagoblin_head %}
   </head>
   <body>
+    <div {% if is_rtl %} dir="rtl" {% endif %}>
     {% include 'mediagoblin/bits/body-start.html' %}
     {% block mediagoblin_body %}
       {% block mediagoblin_header %}
       </div>
     {%- endblock mediagoblin_body %}
     {% include 'mediagoblin/bits/body-end.html' %}
-  </body>
+  </div>
+ </body>
 </html>
index 54aeac926971e4247f1dd52ee4b8fa3420b6d1ec..5d320f75103046778f9119c9ffd7317324e3021e 100644 (file)
@@ -26,7 +26,9 @@ from mediagoblin import mg_globals
 from mediagoblin import messages
 from mediagoblin import _version
 from mediagoblin.tools import common
+from mediagoblin.tools.translate import is_rtl
 from mediagoblin.tools.translate import set_thread_locale
+from mediagoblin.tools.translate import get_locale_from_request
 from mediagoblin.tools.pluginapi import get_hook_templates
 from mediagoblin.tools.timesince import timesince
 from mediagoblin.meddleware.csrf import render_csrf_form_token
@@ -67,11 +69,12 @@ def get_jinja_env(template_loader, locale):
     # ... fetch all waiting messages and remove them from the queue
     # ... construct a grid of thumbnails or other media
     # ... have access to the global and app config
+    # ... determine if the language is rtl or ltr
     template_env.globals['fetch_messages'] = messages.fetch_messages
     template_env.globals['app_config'] = mg_globals.app_config
     template_env.globals['global_config'] = mg_globals.global_config
     template_env.globals['version'] = _version.__version__
-
+    template_env.globals['is_rtl'] = is_rtl(locale)
     template_env.filters['urlencode'] = url_quote_plus
 
     # add human readable fuzzy date time
index b20e57d1ea2791e1e9773ed95d532cc41e5a8c7b..f55ce3493d69587b5e773f6cdf0ec3c8c66cdee3 100644 (file)
@@ -31,6 +31,12 @@ AVAILABLE_LOCALES = None
 TRANSLATIONS_PATH = pkg_resources.resource_filename(
     'mediagoblin', 'i18n')
 
+# Known RTL languages
+KNOWN_RTL = set(["ar", "fa", "zh","he","iw","ja","ur","yi","ji"])
+
+def is_rtl(lang):
+    """Returns true when the local language is right to left"""
+    return lang in KNOWN_RTL
 
 def set_available_locales():
     """Set available locales for which we have translations"""