[fix] multi-lingual print formats

This commit is contained in:
Rushabh Mehta 2016-03-02 15:44:36 +05:30
parent d0c2e57e1f
commit b698124ae8
15 changed files with 57 additions and 29 deletions

View file

@ -1,11 +1,10 @@
frappe.ui.form.on("System Settings", "refresh", function(frm) {
frappe.setup_language_field(frm);
frappe.call({
method: "frappe.core.doctype.system_settings.system_settings.load",
callback: function(data) {
frappe.all_timezones = data.message.timezones;
frappe.languages = data.message.languages;
frm.set_df_property("time_zone", "options", frappe.all_timezones);
frm.set_df_property("language", "options", frappe.languages);
$.each(data.message.defaults, function(key, val) {
frm.set_value(key, val);

View file

@ -6,7 +6,7 @@ import frappe
from frappe import _
from frappe.model.document import Document
from frappe.model import no_value_fields
from frappe.translate import get_lang_dict, set_default_language
from frappe.translate import set_default_language
from frappe.utils import cint
from frappe.utils.momentjs import get_all_timezones
@ -38,11 +38,7 @@ def load():
if df.fieldtype in ("Select", "Data"):
defaults[df.fieldname] = all_defaults.get(df.fieldname)
languages = get_lang_dict().keys()
languages.sort()
return {
"timezones": get_all_timezones(),
"languages": [""] + languages,
"defaults": defaults
}

View file

@ -13,7 +13,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"default": "english",
"default": "",
"fieldname": "language",
"fieldtype": "Select",
"hidden": 0,
@ -24,7 +24,7 @@
"label": "Language",
"length": 0,
"no_copy": 0,
"options": "english",
"options": "",
"permlevel": 0,
"precision": "",
"print_hide": 0,
@ -195,7 +195,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2016-03-02 03:51:08.447550",
"modified": "2016-03-02 05:13:29.290875",
"modified_by": "Administrator",
"module": "Core",
"name": "Translation",

View file

@ -9,3 +9,6 @@ from frappe.model.document import Document
class Translation(Document):
def on_update(self):
frappe.cache().hdel('lang_user_translations', self.language_code)
def on_trash(self):
frappe.cache().hdel('lang_user_translations', self.language_code)

View file

@ -37,7 +37,9 @@ frappe.ui.form.on('User', {
refresh: function(frm) {
var doc = frm.doc;
if(doc.name===user && !doc.__unsaved && frappe.languages && (doc.language || frappe.boot.user.language)
if(doc.name===user && !doc.__unsaved
&& frappe.all_timezones
&& (doc.language || frappe.boot.user.language)
&& doc.language !== frappe.boot.user.language) {
msgprint(__("Refreshing..."));
window.location.reload();

View file

@ -14,7 +14,7 @@ frappe.wiz = {
add_slide: function(slide) {
frappe.wiz.slides.push(slide);
},
run_event: function(event) {
$.each(frappe.wiz.events[event] || [], function(i, fn) {
fn(frappe.wiz.wizard);
@ -34,7 +34,7 @@ frappe.pages['setup-wizard'].on_page_load = function(wrapper) {
});
frappe.wiz.run_event("before_load");
var wizard_settings = {
page_name: "setup-wizard",
parent: wrapper,
@ -302,7 +302,7 @@ function load_frappe_slides() {
// reset all slides so that labels are translated
frappe.wiz.slides = [];
frappe.wiz.run_event("before_load");
// remove slides listed in remove_app_slides
for (var app in frappe.wiz.remove_app_slides) {
var new_slides = []
@ -313,7 +313,7 @@ function load_frappe_slides() {
}
frappe.wiz.slides = new_slides;
}
frappe.wiz.wizard.slides = frappe.wiz.slides;
frappe.wiz.run_event("after_load");
@ -421,8 +421,8 @@ function load_frappe_slides() {
});
}
},
frappe.wiz.user= {
app_name: "frappe",
title: __("The First User: You"),

View file

@ -79,3 +79,10 @@ Add the template in `erpnext/templates/generators/job_opening.html`
{% endblock %}{% endraw %}
#### 5. Customizing List View
If you add a method `get_list_view` in the controller file (job_opening.py), you can set properties for the listview
def get_list_context(context):
context.title = _("Jobs")
context.introduction = _('Current Job Openings')

View file

@ -3,3 +3,4 @@ ordering
contents
context
building
generators

View file

@ -115,3 +115,4 @@ frappe.patches.v6_15.set_username
execute:frappe.permissions.reset_perms("Error Snapshot")
frappe.patches.v6_16.feed_doc_owner
frappe.patches.v6_21.print_settings_repeat_header_footer
frappe.patches.v6_24.set_language_as_code

View file

View file

@ -0,0 +1,17 @@
import frappe
from frappe.translate import get_lang_dict
# migrate language from name to code
def execute():
language = frappe.db.get_value('System Settings', None, 'language')
if language:
system_settings = frappe.get_doc('System Settings', 'System Settings')
if get_lang_dict().get(language, language) != system_settings.language:
system_settings.language = get_lang_dict().get(language, language)
system_settings.save()
for user in frappe.get_all('User', fields=['name', 'language']):
if user.language:
frappe.db.set_value('User', user.name, 'language',
get_lang_dict().get(user.language, user.language), update_modified=False)

View file

@ -103,7 +103,7 @@ frappe.ui.form.PrintPreview = Class.extend({
this.lang_code = this.frm.doc.language;
// Load all languages in the field
this.language_sel.empty()
.add_options(frappe.get_languages_dict())
.add_options(frappe.get_languages())
.val(this.lang_code);
this.preview();
},

View file

@ -16,17 +16,19 @@ frappe._ = function(txt, replace) {
};
window.__ = frappe._
frappe.get_languages_dict = function() {
var lang_dict = []
$.each(frappe.boot.lang_dict, function(lang, val){
lang_dict.push({'label': lang, 'value': val})
})
return lang_dict
frappe.get_languages = function() {
if(!frappe.languages) {
frappe.languages = []
$.each(frappe.boot.lang_dict, function(lang, value){
frappe.languages.push({'label': lang, 'value': value})
});
frappe.languages = frappe.languages.sort(function(a, b) { return (a.value < b.value) ? -1 : 1 });
}
return frappe.languages;
};
frappe.setup_language_field = function(frm, fieldname) {
if (!fieldname) fieldname = 'language';
if(!frappe.languages) frappe.languages = frappe.get_languages_dict();
frm.set_df_property(fieldname, "options", [''].concat(frappe.languages) || ["", "english"]);
frm.set_df_property(fieldname, "options", [''].concat(frappe.get_languages()) || ["", "english"]);
frm.get_field(fieldname).set_input(frm.doc[fieldname] || '');
}

View file

@ -234,7 +234,7 @@ frappe.views.CommunicationComposer = Class.extend({
// Load all languages in the select field language_sel
$(fields.language_sel.input)
.empty()
.add_options(frappe.get_languages_dict())
.add_options(frappe.get_languages())
.val(doc.language)
},

View file

@ -54,7 +54,7 @@ def get_user_lang(user=None):
# if defined in user profile
user_lang = frappe.db.get_value("User", user, "language")
if user_lang and user_lang!="Loading...":
lang = get_lang_dict().get(user_lang) or frappe.local.lang
lang = get_lang_dict().get(user_lang, user_lang) or frappe.local.lang
else:
default_lang = frappe.db.get_default("lang")
lang = default_lang or frappe.local.lang
@ -65,7 +65,7 @@ def get_user_lang(user=None):
def set_default_language(language):
"""Set Global default language"""
lang = get_lang_dict()[language]
lang = get_lang_dict().get(language, language)
frappe.db.set_default("lang", lang)
frappe.local.lang = lang