Internationalize forums mustache templates
This commit is contained in:
@@ -15,6 +15,8 @@
|
||||
input_encoding = utf-8
|
||||
[mako: lms/templates/**.html]
|
||||
input_encoding = utf-8
|
||||
[mako: lms/templates/**.mustache]
|
||||
input_encoding = utf-8
|
||||
[mako: common/templates/**.html]
|
||||
input_encoding = utf-8
|
||||
[mako: cms/templates/emails/**.txt]
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from django.conf import settings
|
||||
from .mustache_helpers import mustache_helpers
|
||||
from functools import partial
|
||||
from mako.template import Template
|
||||
|
||||
from .utils import extend_content, merge_dict, render_mustache
|
||||
import django_comment_client.settings as cc_settings
|
||||
@@ -12,11 +13,21 @@ import os
|
||||
|
||||
def include_mustache_templates():
|
||||
mustache_dir = settings.PROJECT_ROOT / 'templates' / 'discussion' / 'mustache'
|
||||
valid_file_name = lambda file_name: file_name.endswith('.mustache')
|
||||
read_file = lambda file_name: (file_name, open(mustache_dir / file_name, "r").read())
|
||||
strip_file_name = lambda x: (x[0].rpartition('.')[0], x[1])
|
||||
wrap_in_tag = lambda x: "<script type='text/template' id='{0}'>{1}</script>".format(x[0], x[1])
|
||||
|
||||
file_contents = map(read_file, filter(valid_file_name, os.listdir(mustache_dir)))
|
||||
return '\n'.join(map(wrap_in_tag, map(strip_file_name, file_contents)))
|
||||
def is_valid_file_name(file_name):
|
||||
return file_name.endswith('.mustache')
|
||||
def read_file(file_name):
|
||||
return open(mustache_dir / file_name, "r").read().decode('utf-8')
|
||||
def template_id_from_file_name(file_name):
|
||||
return file_name.rpartition('.')[0]
|
||||
def process_mako(template_content):
|
||||
return Template(template_content).render_unicode()
|
||||
def make_script_tag(id, content):
|
||||
return u"<script type='text/template' id='{0}'>{1}</script>".format(id, content)
|
||||
|
||||
return u'\n'.join(
|
||||
make_script_tag(template_id_from_file_name(file_name), process_mako(read_file(file_name)))
|
||||
for file_name in os.listdir(mustache_dir)
|
||||
if is_valid_file_name(file_name)
|
||||
)
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
%endif
|
||||
%if is_course_cohorted:
|
||||
<div class="form-group-label choose-cohort">
|
||||
## Translators: This labels the selector for which group of students can view a post
|
||||
${_("Make visible to:")}
|
||||
<select class="group-filter-select new-post-group" name = "group_id">
|
||||
<option value="">${_("All Groups")}</option>
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
%endif
|
||||
%if is_course_cohorted and is_moderator:
|
||||
<div class="form-group-label choose-cohort">
|
||||
## Translators: This labels the selector for which group of students can view a post
|
||||
${_("Make visible to:")}
|
||||
<select class="group-filter-select new-post-group" name = "group_id">
|
||||
<option value="">${_("All Groups")}</option>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
<%! from django.utils.translation import ugettext as _ %>
|
||||
|
||||
<section class="discussion" data-discussion-id="{{discussionId}}">
|
||||
<article class="new-post-article">
|
||||
<span class="topic" data-discussion-id="{{discussionId}}" />
|
||||
@@ -6,22 +8,21 @@
|
||||
</div>
|
||||
<form class="new-post-form">
|
||||
<div class="form-row">
|
||||
<input type="text" class="new-post-title" name="title" placeholder="Title">
|
||||
<input type="text" class="new-post-title" name="title" placeholder="${_("Title")}">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="new-post-body" name="body" placeholder="Enter your question or comment…"></div>
|
||||
<!---<div class="new-post-preview"><span class="new-post-preview-label">Preview</span></div>-->
|
||||
<div class="new-post-body" name="body" placeholder="${_(u"Enter your question or comment…")}"></div>
|
||||
</div>
|
||||
<input type="submit" class="submit" value="Add post">
|
||||
<a href="#" class="new-post-cancel">Cancel</a>
|
||||
<input type="submit" class="submit" value="${_("Add post")}">
|
||||
<a href="#" class="new-post-cancel">${_("Cancel")}</a>
|
||||
<div class="options">
|
||||
<input type="checkbox" name="follow" class="discussion-follow" class="discussion-follow" id="new-post-follow" checked><label for="new-post-follow">follow this post</label>
|
||||
<input type="checkbox" name="follow" class="discussion-follow" class="discussion-follow" id="new-post-follow" checked><label for="new-post-follow">${_("follow this post")}</label>
|
||||
<br>
|
||||
{{#allow_anonymous}}
|
||||
<input type="checkbox" name="anonymous" class="discussion-anonymous" id="new-post-anonymous"><label for="new-post-anonymous">post anonymously</label>
|
||||
<input type="checkbox" name="anonymous" class="discussion-anonymous" id="new-post-anonymous"><label for="new-post-anonymous">${_("post anonymously")}</label>
|
||||
{{/allow_anonymous}}
|
||||
{{#allow_anonymous_to_peers}}
|
||||
<input type="checkbox" name="anonymous" class="discussion-anonymous-to-peers" id="new-post-anonymous-to-peers"><label for="new-post-anonymous-to-peers">post anonymously to classmates</label>
|
||||
<input type="checkbox" name="anonymous" class="discussion-anonymous-to-peers" id="new-post-anonymous-to-peers"><label for="new-post-anonymous-to-peers">${_("post anonymously to classmates")}</label>
|
||||
{{/allow_anonymous_to_peers}}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
<%! from django.utils.translation import ugettext as _ %>
|
||||
|
||||
<section class="discussion" data-discussion-id="{{discussionId}}">
|
||||
<article class="new-post-article">
|
||||
<span class="topic" data-discussion-id="{{discussionId}}" />
|
||||
@@ -6,26 +8,26 @@
|
||||
</div>
|
||||
<form class="new-post-form">
|
||||
<div class="form-row">
|
||||
<input type="text" class="new-post-title" name="title" placeholder="Title">
|
||||
<input type="text" class="new-post-title" name="title" placeholder="${_("Title")}">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="new-post-body" name="body" placeholder="Enter your question or comment…"></div>
|
||||
<!---<div class="new-post-preview"><span class="new-post-preview-label">Preview</span></div>-->
|
||||
<div class="new-post-body" name="body" placeholder="${_(u"Enter your question or comment…")}"></div>
|
||||
</div>
|
||||
<input type="submit" class="submit" value="Add post">
|
||||
<a href="#" class="new-post-cancel">Cancel</a>
|
||||
<input type="submit" class="submit" value="${_("Add post")}">
|
||||
<a href="#" class="new-post-cancel">${_("Cancel")}</a>
|
||||
<div class="options">
|
||||
<input type="checkbox" name="follow" class="discussion-follow" class="discussion-follow" id="new-post-follow" checked><label for="new-post-follow">follow this post</label>
|
||||
<input type="checkbox" name="follow" class="discussion-follow" class="discussion-follow" id="new-post-follow" checked><label for="new-post-follow">${_("follow this post")}</label>
|
||||
<br>
|
||||
{{#allow_anonymous}}
|
||||
<input type="checkbox" name="anonymous" class="discussion-anonymous" id="new-post-anonymous"><label for="new-post-anonymous">post anonymously</label>
|
||||
<input type="checkbox" name="anonymous" class="discussion-anonymous" id="new-post-anonymous"><label for="new-post-anonymous">${_("post anonymously")}</label>
|
||||
{{/allow_anonymous}}
|
||||
{{#allow_anonymous_to_peers}}
|
||||
<input type="checkbox" name="anonymous" class="discussion-anonymous-to-peers" id="new-post-anonymous-to-peers"><label for="new-post-anonymous-to-peers">post anonymously to classmates</label>
|
||||
<input type="checkbox" name="anonymous" class="discussion-anonymous-to-peers" id="new-post-anonymous-to-peers"><label for="new-post-anonymous-to-peers">${_("post anonymously to classmates")}</label>
|
||||
{{/allow_anonymous_to_peers}}
|
||||
|
||||
<div class="form-group-label choose-cohort">
|
||||
Make visible to:
|
||||
## Translators: This labels the selector for which group of students can view a post
|
||||
${_("Make visible to:")}
|
||||
<select class="group-filter-select new-post-group" name = "group_id">
|
||||
{{#cohorts}}
|
||||
<option value="{{id}}">{{name}}</option>
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
<%! from django.utils.translation import ugettext as _ %>
|
||||
|
||||
<article class="discussion-article" data-id="{{id}}">
|
||||
<div class="thread-content-wrapper"></div>
|
||||
|
||||
<ol class="responses post-extended-content">
|
||||
<li class="loading"><div class="loading-animation"><span class="sr">Loading content</span></div></li>
|
||||
<li class="loading"><div class="loading-animation"><span class="sr">${_("Loading content")}</span></div></li>
|
||||
</ol>
|
||||
<form class="local discussion-reply-new post-extended-content" data-id="{{id}}">
|
||||
<h4>Post a response:</h4>
|
||||
<h4>${_("Post a response:")}</h4>
|
||||
<ul class="discussion-errors"></ul>
|
||||
<div class="reply-body" data-id="{{id}}"></div>
|
||||
<div class="reply-post-control">
|
||||
<a class="discussion-submit-post control-button" href="#">Submit</a>
|
||||
<a class="discussion-submit-post control-button" href="#">${_("Submit")}</a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="local post-tools">
|
||||
<a href="javascript:void(0)" class="expand-post">View discussion</a>
|
||||
<a href="javascript:void(0)" class="collapse-post">Hide discussion</a>
|
||||
<a href="javascript:void(0)" class="expand-post">${_("View discussion")}</a>
|
||||
<a href="javascript:void(0)" class="collapse-post">${_("Hide discussion")}</a>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
@@ -1,23 +1,25 @@
|
||||
<%! from django.utils.translation import ugettext as _ %>
|
||||
|
||||
<article class="discussion-article" data-id="{{id}}">
|
||||
<div class="group-visibility-label">{{group_string}}</div>
|
||||
|
||||
<div class="thread-content-wrapper"></div>
|
||||
|
||||
<ol class="responses post-extended-content">
|
||||
<li class="loading"><div class="loading-animation"><span class="sr">Loading content</span></div></li>
|
||||
<li class="loading"><div class="loading-animation"><span class="sr">${_("Loading content")})</span></div></li>
|
||||
</ol>
|
||||
<form class="local discussion-reply-new post-extended-content" data-id="{{id}}">
|
||||
<h4>Post a response:</h4>
|
||||
<h4>${_("Post a response:")}</h4>
|
||||
<ul class="discussion-errors"></ul>
|
||||
<div class="reply-body" data-id="{{id}}"></div>
|
||||
<div class="reply-post-control">
|
||||
<a class="discussion-submit-post control-button" href="#">Submit</a>
|
||||
<a class="discussion-submit-post control-button" href="#">${_("Submit")}</a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="local post-tools">
|
||||
<a href="javascript:void(0)" class="expand-post">View discussion</a>
|
||||
<a href="javascript:void(0)" class="collapse-post">Hide discussion</a>
|
||||
<a href="javascript:void(0)" class="expand-post">${_("View discussion")}</a>
|
||||
<a href="javascript:void(0)" class="collapse-post">${_("Hide discussion")}</a>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
@@ -1,34 +1,36 @@
|
||||
<%! from django.utils.translation import ugettext as _ %>
|
||||
|
||||
<div class="discussion-post local">
|
||||
<div><a href="javascript:void(0)" class="dogear action-follow" data-tooltip="follow"></a></div>
|
||||
<header>
|
||||
<a href="#" class="vote-btn" data-tooltip="vote" role="button" aria-pressed="false"><span class="plus-icon"/><span class='votes-count-number'>{{votes.up_count}}</span> <span class="sr">votes (click to vote)</span></a>
|
||||
<a href="#" class="vote-btn" role="button" aria-pressed="false"/>
|
||||
<h3>{{title}}</h3>
|
||||
<div class="discussion-flag-abuse notflagged" data-role="thread-flag" data-tooltip="Report Misuse">
|
||||
<i class="icon icon-flag"></i><span class="flag-label">Flagged</span></div>
|
||||
<div class="discussion-flag-abuse notflagged" data-role="thread-flag">
|
||||
<i class="icon icon-flag"></i><span class="flag-label"/></div>
|
||||
|
||||
<div class="discussion-pin-inline pinned pinned-{{pinned}}" data-tooltip="This thread has been pinned by course staff.">
|
||||
<i class="icon icon-pushpin"></i><span class="pin-label">Pinned</span></div>
|
||||
<div class="discussion-pin-inline pinned pinned-{{pinned}}" data-tooltip="${_("This thread has been pinned by course staff.")}">
|
||||
<i class="icon icon-pushpin"></i><span class="pin-label">${_("Pinned")}</span></div>
|
||||
|
||||
<p class="posted-details">
|
||||
{{#user}}
|
||||
<a href="{{user_url}}" class="username">{{username}}</a>
|
||||
{{/user}}
|
||||
{{^user}}
|
||||
anonymous
|
||||
${_("anonymous")}
|
||||
{{/user}}
|
||||
|
||||
<span class="timeago" title="{{created_at}}">{{created_at}}</span>
|
||||
|
||||
<span class="post-status-closed top-post-status" style="display: none">
|
||||
• This thread is closed.
|
||||
• ${_("This thread is closed.")}
|
||||
</span>
|
||||
</p>
|
||||
</header>
|
||||
<div class="post-body">{{abbreviatedBody}}</div>
|
||||
|
||||
<ul class="moderator-actions post-extended-content">
|
||||
<li style="display: none"><a class="action-edit" href="javascript:void(0)"><span class="edit-icon"></span> Edit</a></li>
|
||||
<li style="display: none"><a class="action-delete" href="javascript:void(0)"><span class="delete-icon"></span> Delete</a></li>
|
||||
<li style="display: none"><a class="action-openclose" href="javascript:void(0)"><span class="edit-icon"></span> Close</a></li>
|
||||
<li style="display: none"><a class="action-edit" href="javascript:void(0)"><span class="edit-icon"></span> ${_("Edit")}</a></li>
|
||||
<li style="display: none"><a class="action-delete" href="javascript:void(0)"><span class="delete-icon"></span> ${_("Delete")}</a></li>
|
||||
<li style="display: none"><a class="action-openclose" href="javascript:void(0)"><span class="edit-icon"></span> ${_("Close")}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
<%! from django.utils.translation import ugettext as _ %>
|
||||
|
||||
<nav class="discussion-{{discussiontype}}-paginator discussion-paginator local">
|
||||
<ol>
|
||||
{{#previous}}
|
||||
<li><a class="discussion-pagination" href="{{url}}" data-page-number="{{number}}">< Previous</a></li>
|
||||
<li><a class="discussion-pagination" href="{{url}}" data-page-number="{{number}}">< ${_("Previous")}</a></li>
|
||||
{{/previous}}
|
||||
{{#first}}
|
||||
<li><a class="discussion-pagination" href="{{url}}" data-page-number="1">1</a></li>
|
||||
{{/first}}
|
||||
{{#leftdots}}
|
||||
<li>…</li>
|
||||
<li>${_(u"…")}</li>
|
||||
{{/leftdots}}
|
||||
|
||||
{{#lowPages}}
|
||||
@@ -19,13 +21,13 @@
|
||||
{{/highPages}}
|
||||
|
||||
{{#rightdots}}
|
||||
<li>…</li>
|
||||
<li>${_(u"…")}</li>
|
||||
{{/rightdots}}
|
||||
{{#last}}
|
||||
<li><a class="discussion-pagination" href="{{url}}" data-page-number="{{number}}">{{number}}</a></li>
|
||||
{{/last}}
|
||||
{{#next}}
|
||||
<li><a class="discussion-pagination" href="{{url}}" data-page-number="{{number}}">Next ></a></li>
|
||||
<li><a class="discussion-pagination" href="{{url}}" data-page-number="{{number}}">${_("Next")} ></a></li>
|
||||
{{/next}}
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
<%! from django.utils.translation import ugettext as _ %>
|
||||
|
||||
<article class="discussion-article" data-id="{{id}}">
|
||||
<div class="local"><a href="javascript:void(0)" class="dogear action-follow"></a></div>
|
||||
<div class="discussion-post local">
|
||||
<header>
|
||||
<a href="#" class="vote-btn" data-tooltip="vote" role="button" aria-pressed="false"><span class="plus-icon"/><span class='votes-count-number'>{{votes.up_count}}</span> <span class="sr">votes (click to vote)</span></a>
|
||||
<a href="#" class="vote-btn" role="button" aria-pressed="false"/>
|
||||
<h3>{{title}}</h3>
|
||||
<p class="posted-details">
|
||||
{{#user}}
|
||||
<a href="{{user_url}}" class="username">{{username}}</a>
|
||||
{{/user}}
|
||||
{{^user}}
|
||||
anonymous
|
||||
${_("anonymous")}
|
||||
{{/user}}
|
||||
|
||||
<span class="timeago" title="{{created_at}}">{{created_at}}</span>
|
||||
<span class="post-status-closed top-post-status" style="display: none">
|
||||
• This thread is closed.
|
||||
• ${_("This thread is closed.")}
|
||||
</span>
|
||||
</p>
|
||||
</header>
|
||||
@@ -25,8 +27,7 @@
|
||||
</ol>
|
||||
|
||||
<div class="local post-tools">
|
||||
<a href="{{permalink}}">View discussion</a>
|
||||
<!-- <a href="javascript:void(0)" class="collapse-post">Hide discussion</a> -->
|
||||
<a href="{{permalink}}">${_("View discussion")}</a>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
Reference in New Issue
Block a user