From 7021a8b8859958a12c6f7d1747d59816b29af169 Mon Sep 17 00:00:00 2001
From: Marcel Klehr
Date: Mon, 12 Nov 2012 16:49:15 +0100
Subject: [PATCH] Add pad setting for UI lang
---
src/locales/de.ini | 1 +
src/node/hooks/i18n.js | 8 ++++++--
src/static/js/pad.js | 1 +
src/static/js/pad_editor.js | 5 +++++
src/templates/pad.html | 12 +++++++++++-
5 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/src/locales/de.ini b/src/locales/de.ini
index d73c926d3..ae79323a4 100644
--- a/src/locales/de.ini
+++ b/src/locales/de.ini
@@ -34,6 +34,7 @@ pad.settings.linenocheck = Zeilennummern
pad.settings.fontType = Schriftart:
pad.settings.fontType.normal = Normal
pad.settings.fontType.monospaced = Monospace
+pad.settings.language = Sprache
pad.settings.globalView = Eigene Ansicht
pad.importExport.import_export = Import/Export
diff --git a/src/node/hooks/i18n.js b/src/node/hooks/i18n.js
index ab0a887b7..a2faa4586 100644
--- a/src/node/hooks/i18n.js
+++ b/src/node/hooks/i18n.js
@@ -2,19 +2,23 @@ var Globalize = require('globalize')
, fs = require('fs')
, path = require('path')
+exports.availableLangs = {}
fs.readdir(__dirname+"/../../locales", function(er, files) {
files.forEach(function(locale) {
locale = locale.split('.')[0]
if(locale.toLowerCase() == 'en') return;
+
require('globalize/lib/cultures/globalize.culture.'+locale+'.js')
+ var culture = Globalize.cultures[locale];
+ exports.availableLangs[culture.name] = culture.nativeName;
})
})
exports.expressCreateServer = function(n, args) {
args.app.get('/locale.ini', function(req, res) {
-
- Globalize.culture( req.header('Accept-Language') || 'en' );
+ // let gloablize find out the preferred locale and default to 'en'
+ Globalize.culture(req.cookies['language'] || req.header('Accept-Language') || 'en');
var localePath = path.normalize(__dirname +"/../../locales/"+Globalize.culture().name+".ini");
res.sendfile(localePath, function(er) {
if(er) console.error(er)
diff --git a/src/static/js/pad.js b/src/static/js/pad.js
index c55f8dfeb..a07b29b5e 100644
--- a/src/static/js/pad.js
+++ b/src/static/js/pad.js
@@ -447,6 +447,7 @@ var pad = {
{
pad.collabClient.sendClientMessage(msg);
},
+ createCookie: createCookie,
init: function()
{
diff --git a/src/static/js/pad_editor.js b/src/static/js/pad_editor.js
index 5a9e7b9b6..690dde377 100644
--- a/src/static/js/pad_editor.js
+++ b/src/static/js/pad_editor.js
@@ -75,6 +75,11 @@ var padeditor = (function()
{
pad.changeViewOption('useMonospaceFont', $("#viewfontmenu").val() == 'monospace');
});
+ $("#languagemenu").val(document.webL10n.getLanguage());
+ $("#languagemenu").change(function() {
+ pad.createCookie("language",$("#languagemenu").val(),null,'/');
+ document.webL10n.setLanguage($("#languagemenu").val());
+ });
},
setViewOptions: function(newOptions)
{
diff --git a/src/templates/pad.html b/src/templates/pad.html
index a57d5d32e..0cd278355 100644
--- a/src/templates/pad.html
+++ b/src/templates/pad.html
@@ -1,5 +1,6 @@
<%
- var settings = require("ep_etherpad-lite/node/utils/Settings");
+ var settings = require("ep_etherpad-lite/node/utils/Settings")
+ , langs = require("ep_etherpad-lite/node/hooks/i18n").availableLangs
%>
@@ -207,6 +208,15 @@
+
+ Language:
+
+
<% e.end_block(); %>