This commit is contained in:
Marcel Klehr 2012-11-12 09:17:22 -08:00
commit 3e76446685
11 changed files with 1354 additions and 115 deletions

View file

@ -5,6 +5,7 @@
"restartServer": "ep_etherpad-lite/node/hooks/express:restartServer" "restartServer": "ep_etherpad-lite/node/hooks/express:restartServer"
} }, } },
{ "name": "static", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/static:expressCreateServer" } }, { "name": "static", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/static:expressCreateServer" } },
{ "name": "i18n", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/i18n:expressCreateServer" } },
{ "name": "specialpages", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/specialpages:expressCreateServer" } }, { "name": "specialpages", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/specialpages:expressCreateServer" } },
{ "name": "padurlsanitize", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/padurlsanitize:expressCreateServer" } }, { "name": "padurlsanitize", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/padurlsanitize:expressCreateServer" } },
{ "name": "padreadonly", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/padreadonly:expressCreateServer" } }, { "name": "padreadonly", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/padreadonly:expressCreateServer" } },

84
src/locales/de.ini Normal file
View file

@ -0,0 +1,84 @@
[de]
index.newPad = Neues Pad
index.createOpenPad = Pad mit folgendem Namen öffnen
pad.toolbar.bold.title = Fett (Strg-B)
pad.toolbar.italic.title = Kursiv (Strg-I)
pad.toolbar.underline.title = Unterstrichen (Strg-U)
pad.toolbar.strikethrough.title = Durchgestrichen
pad.toolbar.ol.title = Nummerierte Liste
pad.toolbar.ul.title = Ungeordnete Liste
pad.toolbar.indent.title = Einrücken
pad.toolbar.unindent.title = Ausrücken
pad.toolbar.undo.title = Rückgängig (Strg-Z)
pad.toolbar.redo.title = Wiederholen (Strg-Y)
pad.toolbar.clearAuthorship.title = Autorenfarben zurücksetzen
pad.toolbar.import_export.title = Import/Export von verschiedenen Dateiformaten
pad.toolbar.timeslider.title = Pad-Geschichte anzeigen
pad.toolbar.savedRevision.title = Diese Revision markieren
pad.toolbar.settings.title = Einstellungen
pad.toolbar.embed.title = Dieses Pad teilen oder einbetten
pad.toolbar.showusers.title = Verbundene Benutzer anzeigen
pad.colorpicker.save = Speichern
pad.colorpicker.cancel = Abbrechen
pad.loading = Laden...
pad.settings.padSettings = Pad Einstellungen
pad.settings.myView = Eigene Ansicht
pad.settings.stickychat = Chat immer anzeigen
pad.settings.colorcheck = Autorenfarben anzeigen
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 = Gemeinsame Ansicht
pad.importExport.import_export = Import/Export
pad.importExport.import = Datei oder Dokument hochladen
pad.importExport.successful = Erfolgreich!
pad.importExport.export = Dieses Pad exportieren
pad.importExport.exporthtml = HTML
pad.importExport.exportplain = Reiner Text
pad.importExport.exportword = Microsoft Word
pad.importExport.exportpdf = PDf
pad.importExport.exportopen = ODF (Open Document Format)
pad.importExport.exportdokuwiki = DokuWiki
pad.modals.connected = Verbunden.
pad.modals.reconnecting = Wiederherstellen der Verbindung...
pad.modals.forcereconnect = Erneut Verbinden
pad.modals.uderdup = In einem anderen Fenster geöffnet
pad.modals.userdup.explanation = Dieses Pad scheint in mehr als einem Browser-Fenster auf diesem Computer geöffnet zu sein.
pad.modals.userdup.advice = Um dieses Fenster zu benutzen, verbinden Sie bitte erneut.
pad.modals.unauth = Nicht Authorisiert.
pad.modals.unauth.explanation = Ihre Befugnisse auf dieses Pad zuzugreifen haben sich geädert. Versuchen Sie, erneut zu verbinden.
pad.modals.looping = Verbindung unterbrochen.
pad.modals.looping.explanation = Es gibt Probleme bei der Kommunikation mit dem Synchronisationsserver.
pad.modals.looping.cause = Möglicherweise verläuft Ihre Verbindung durch eine inkompatible Firewall oder einen inkompatiblen Proxy.
pad.modals.initsocketfail = Server nicht erreichbar.
pad.modals.initsocketfail.explanation = Es konnte keine Verbindung zum Synchronisationsserver hergestellt werden.
pad.modals.initsocketfail.cause = Dies könnte an Ihrem Browser oder Ihrer Internet-Verbindung liegen.
pad.modals.slowcommit = Verbindung unterbrochen.
pad.modals.slowcommit.explanation = Der Server reagiert nicht.
pad.modals.slowcommit.cause = Dies könnte an Problemen mit Netzwerk-Konnektivität liegen. Möglicherweise ist der Server aber auch überlastet.
pad.modals.deleted = Entfernt.
pad.modals.deleted.explanation = Dieses Pad wurde entfernt.
pad.modals.disconnected = Verbindung unterbrochen.
pad.modals.disconnected.explanation = Die Verbindung zum Synchronisationsserver wurde unterbrochen.
pad.modals.disconnected.cause = Möglicherweise ist der Server nicht erreichbar. Bitte benachrichtigen Sie uns, falls dies weiterhin passiert.
pad.share = Dieses Pad mit anderen teilen
pad.share.readonly = Eingeschränkter zugriff (Nur lesen)
pad.share.link = Link
pad.share.emebdcode = In Webseite einbetten
pad.chat = Chat
pad.chat.title = Den Chat für dieses Pad öffnen
timeslider.toolbar.returnbutton = Zurück zum Pad
timeslider.toolbar.authors = Autoren:
timeslider.toolbar.authorsList = keine Autoren
timeslider.exportCurrent = Exportiere diese Version als:

76
src/locales/en.ini Normal file
View file

@ -0,0 +1,76 @@
[en]
index.newPad = New Pad
index.createOpenPad = or create/open a Pad with the name:
pad.toolbar.bold.title = Bold (Ctrl-B)
pad.toolbar.italic.title = Italic (Ctrl-I)
pad.toolbar.underline.title = Underline (Ctrl-U)
pad.toolbar.strikethrough.title = Strikethrough
pad.toolbar.ol.title = Ordered list
pad.toolbar.ul.title = UnOrdered List
pad.toolbar.indent.title = Indent
pad.toolbar.unindent.title = Outdent
pad.toolbar.undo.title = Undo (Ctrl-Z)
pad.toolbar.redo.title = Redo (Ctrl-Y)
pad.toolbar.clearAuthorship.title = Clear Authorship Colors
pad.toolbar.import_export.title = Import/Export from/to different file formats
pad.toolbar.timeslider.title = Timeslider
pad.toolbar.savedRevision.title = Saved Revisions
pad.toolbar.settings.title = Settings
pad.toolbar.embed.title = Embed this pad
pad.toolbar.showusers.title = Show the users on this pad
pad.colorpicker.save = Save
pad.colorpicker.cancel = Cancel
pad.loading = Loading...
pad.settings.padSettings = Pad Settings
pad.settings.myView = My View
pad.settings.stickychat = Chat always on screen
pad.settings.colorcheck = Authorship colors
pad.settings.linenocheck = Line numbers
pad.settings.fontType = Font type:
pad.settings.fontType.normal = Normal
pad.settings.fontType.monospaced = Monospace
pad.settings.globalView = Global View
pad.settings.language = Language
pad.importExport.import_export = Import/Export
pad.importExport.import = Upload any text file or document
pad.importExport.successful = Successful!
pad.importExport.export = Export current pad as
pad.importExport.exporthtml = HTML
pad.importExport.exportplain = Plain text
pad.importExport.exportword = Microsoft Word
pad.importExport.exportpdf = PDf
pad.importExport.exportopen = ODF (Open Document Format)
pad.importExport.exportdokuwiki = DokuWiki
pad.modals.connected = Connected.
pad.modals.reconnecting = Reconnecting to your pad..
pad.modals.forcereconnect = Force reconnect
pad.modals.uderdup = Open in another window
pad.modals.userdup.explanation = This pad seems to be opened in more than one browser window on this computer.
pad.modals.userdup.advice = Reconnect to use this windows instead.
pad.modals.unauth = Not authorized
pad.modals.unauth.explanation = Your permissions have changes while viewing this page. Try to reconnect.
pad.modals.looping = Disconnected.
pad.modals.looping.explanation = We're having problem communicating to the synchronization server.
pad.modals.looping.cause = Perhaps their connection runs through an incompatible firewall or incompatible proxy.
pad.modals.initsocketfail = Server is unreachable.
pad.modals.initsocketfail.explanation = Couldn't connect to the synchronization server.
pad.modals.initsocketfail.cause = This could be because of your browser or Internet connection. #sounds stupid!
pad.modals.slowcommit = Disconnected.
pad.modals.slowcommit.explanation = The server is not responding.
pad.modals.slowcommit.cause = This could be due to problems with network connectivity.
pad.modals.deleted = Deleted.
pad.modals.deleted.explanation = This pad has been removed.
pad.modals.disconnected = You have been disconnected.
pad.modals.disconnected.explanation = The connection to the server was lost
pad.modals.disconnected.cause = The server may be unavailable. Please notify us if this continues to happen.
pad.share = Share this pad
pad.share.readonly = Read only
pad.share.link = Link
pad.share.emebdcode = Embed URL
pad.chat = Chat
pad.chat.title = Open the chat for this pad.
timeslider.toolbar.returnbutton = Return to pad
timeslider.toolbar.authors = Authors:
timeslider.toolbar.authorsList = No Authors
timeslider.exportCurrent = Export current version as:

28
src/node/hooks/i18n.js Normal file
View file

@ -0,0 +1,28 @@
var Globalize = require('globalize')
, fs = require('fs')
, path = require('path')
exports.availableLangs = {en: 'English'}
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) {
// 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)
});
})
}

View file

@ -35,7 +35,8 @@
"security" : "1.0.0", "security" : "1.0.0",
"tinycon" : "0.0.1", "tinycon" : "0.0.1",
"underscore" : "1.3.1", "underscore" : "1.3.1",
"unorm" : "1.0.0" "unorm" : "1.0.0",
"globalize" : "0.1.1"
}, },
"bin": { "etherpad-lite": "./node/server.js" }, "bin": { "etherpad-lite": "./node/server.js" },
"devDependencies": { "devDependencies": {

1028
src/static/js/l10n.js Normal file

File diff suppressed because it is too large Load diff

View file

@ -447,6 +447,7 @@ var pad = {
{ {
pad.collabClient.sendClientMessage(msg); pad.collabClient.sendClientMessage(msg);
}, },
createCookie: createCookie,
init: function() init: function()
{ {

View file

@ -75,6 +75,11 @@ var padeditor = (function()
{ {
pad.changeViewOption('useMonospaceFont', $("#viewfontmenu").val() == 'monospace'); 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) setViewOptions: function(newOptions)
{ {

View file

@ -31,7 +31,8 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<script type="text/javascript" src="static/js/l10n.js"></script>
<link rel="resource" type="application/l10n" href="locale.ini" />
<link rel="shortcut icon" href="<%=settings.favicon%>"> <link rel="shortcut icon" href="<%=settings.favicon%>">
<style> <style>
@ -148,8 +149,8 @@
<div id="wrapper"> <div id="wrapper">
<div id="inner"> <div id="inner">
<div id="button" onclick="go2Random()" class="translate">New Pad</div> <div id="button" onclick="go2Random()" data-l10n-id="index.newPad"></div>
<div id="label" class="translate">or create/open a Pad with the name</div> <div id="label" data-l10n-id="index.createOpenPad"></div>
<form action="#" onsubmit="go2Name();return false;"> <form action="#" onsubmit="go2Name();return false;">
<input type="text" id="padname" autofocus x-webkit-speech> <input type="text" id="padname" autofocus x-webkit-speech>
<button type="submit">OK</button> <button type="submit">OK</button>

View file

@ -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
%> %>
<!doctype html> <!doctype html>
<html> <html>
@ -32,6 +33,10 @@
<meta name="robots" content="noindex, nofollow"> <meta name="robots" content="noindex, nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<script type="text/javascript" src="../static/js/l10n.js"></script>
<link rel="resource" type="application/l10n" href="../locale.ini" />
<link rel="shortcut icon" href="<%=settings.favicon%>"> <link rel="shortcut icon" href="<%=settings.favicon%>">
<% e.begin_block("styles"); %> <% e.begin_block("styles"); %>
@ -50,60 +55,60 @@
<ul class="menu_left"> <ul class="menu_left">
<% e.begin_block("editbarMenuLeft"); %> <% e.begin_block("editbarMenuLeft"); %>
<li class="acl-write" id="bold" data-key="bold"> <li class="acl-write" id="bold" data-key="bold">
<a class="grouped-left" title="Bold (ctrl-B)"> <a class="grouped-left" data-l10n-id="pad.toolbar.bold">
<span class="buttonicon buttonicon-bold"></span> <span class="buttonicon buttonicon-bold"></span>
</a> </a>
</li> </li>
<li class="acl-write" id="italic" data-key="italic"> <li class="acl-write" id="italic" data-key="italic">
<a class="grouped-middle" title="Italics (ctrl-I)"> <a class="grouped-middle" data-l10n-id="pad.toolbar.italic">
<span class="buttonicon buttonicon-italic"></span> <span class="buttonicon buttonicon-italic"></span>
</a> </a>
</li> </li>
<li class="acl-write" id="underline" data-key="underline"> <li class="acl-write" id="underline" data-key="underline">
<a class="grouped-middle" title="Underline (ctrl-U)"> <a class="grouped-middle" data-l10n-id="pad.toolbar.underline">
<span class="buttonicon buttonicon-underline"></span> <span class="buttonicon buttonicon-underline"></span>
</a> </a>
</li> </li>
<li class="acl-write" id="strikethrough" data-key="strikethrough"> <li class="acl-write" id="strikethrough" data-key="strikethrough">
<a class="grouped-right" title="Strikethrough"> <a class="grouped-right" data-l10n-id="pad.toolbar.strikethrough">
<span class="buttonicon buttonicon-strikethrough"></span> <span class="buttonicon buttonicon-strikethrough"></span>
</a> </a>
</li> </li>
<li class="acl-write separator"></li> <li class="acl-write separator"></li>
<li class="acl-write" id="oderedlist" data-key="insertorderedlist"> <li class="acl-write" id="oderedlist" data-key="insertorderedlist">
<a class="grouped-left" title="Toggle Ordered List"> <a class="grouped-left" data-l10n-id="pad.toolbar.ol">
<span class="buttonicon buttonicon-insertorderedlist"></span> <span class="buttonicon buttonicon-insertorderedlist"></span>
</a> </a>
</li> </li>
<li class="acl-write" id="unoderedlist" data-key="insertunorderedlist"> <li class="acl-write" id="unoderedlist" data-key="insertunorderedlist">
<a class="grouped-middle" title="Toggle Bullet List"> <a class="grouped-middle" data-l10n-id="pad.toolbar.ul">
<span class="buttonicon buttonicon-insertunorderedlist"></span> <span class="buttonicon buttonicon-insertunorderedlist"></span>
</a> </a>
</li> </li>
<li class="acl-write" id="indent" data-key="indent"> <li class="acl-write" id="indent" data-key="indent">
<a class="grouped-middle" title="Indent"> <a class="grouped-middle" data-l10n-id="pad.toolbar.indent">
<span class="buttonicon buttonicon-indent"></span> <span class="buttonicon buttonicon-indent"></span>
</a> </a>
</li> </li>
<li class="acl-write" id="outdent" data-key="outdent"> <li class="acl-write" id="outdent" data-key="outdent">
<a class="grouped-right" title="Unindent"> <a class="grouped-right" data-l10n-id="pad.toolbar.unindent">
<span class="buttonicon buttonicon-outdent"></span> <span class="buttonicon buttonicon-outdent"></span>
</a> </a>
</li> </li>
<li class="acl-write separator"></li> <li class="acl-write separator"></li>
<li class="acl-write" id="undo" data-key="undo"> <li class="acl-write" id="undo" data-key="undo">
<a class="grouped-left" title="Undo (ctrl-Z)"> <a class="grouped-left" data-l10n-id="pad.toolbar.undo">
<span class="buttonicon buttonicon-undo"></span> <span class="buttonicon buttonicon-undo"></span>
</a> </a>
</li> </li>
<li class="acl-write" id="redo" data-key="redo"> <li class="acl-write" id="redo" data-key="redo">
<a class="grouped-right" title="Redo (ctrl-Y)"> <a class="grouped-right" data-l10n-id="pad.toolbar.redo">
<span class="buttonicon buttonicon-redo"></span> <span class="buttonicon buttonicon-redo"></span>
</a> </a>
</li> </li>
<li class="acl-write separator"></li> <li class="acl-write separator"></li>
<li class="acl-write" id="clearAuthorship" data-key="clearauthorship"> <li class="acl-write" id="clearAuthorship" data-key="clearauthorship">
<a title="Clear Authorship Colors"> <a data-l10n-id="pad.toolbar.clearAuthorship">
<span class="buttonicon buttonicon-clearauthorship"></span> <span class="buttonicon buttonicon-clearauthorship"></span>
</a> </a>
</li> </li>
@ -112,34 +117,34 @@
<ul class="menu_right"> <ul class="menu_right">
<% e.begin_block("editbarMenuRight"); %> <% e.begin_block("editbarMenuRight"); %>
<li data-key="import_export"> <li data-key="import_export">
<a class="grouped-left" id="importexportlink" title="Import/Export from/to different document formats"> <a class="grouped-left" id="importexportlink" data-l10n-id="pad.toolbar.import_export">
<span class="buttonicon buttonicon-import_export"></span> <span class="buttonicon buttonicon-import_export"></span>
</a> </a>
</li> </li>
<li onClick="document.location = document.location.pathname+ '/timeslider'"> <li onClick="document.location = document.location.pathname+ '/timeslider'">
<a id="timesliderlink" class="grouped-middle" title="Show the history of this pad"> <a id="timesliderlink" class="grouped-middle" data-l10n-id="pad.toolbar.timeslider">
<span class="buttonicon buttonicon-history"></span> <span class="buttonicon buttonicon-history"></span>
</a> </a>
</li> </li>
<li class="acl-write" data-key="savedRevision"> <li class="acl-write" data-key="savedRevision">
<a class="grouped-right" id="revisionlink" title="Mark this revision as a saved revision"> <a class="grouped-right" id="revisionlink" data-l10n-id="pad.toolbar.savedRevision">
<span class="buttonicon buttonicon-savedRevision"></span> <span class="buttonicon buttonicon-savedRevision"></span>
</a> </a>
</li> </li>
<li class="acl-write separator"></li> <li class="acl-write separator"></li>
<li class="acl-write" data-key="settings"> <li class="acl-write" data-key="settings">
<a class="grouped-left" id="settingslink" title="Settings of this pad"> <a class="grouped-left" id="settingslink" data-l10n-id="pad.toolbar.settings">
<span class="buttonicon buttonicon-settings"></span> <span class="buttonicon buttonicon-settings"></span>
</a> </a>
</li> </li>
<li data-key="embed"> <li data-key="embed">
<a class="grouped-right" id="embedlink" title="Share and Embed this pad"> <a class="grouped-right" id="embedlink" data-l10n-id="pad.toolbar.embed">
<span class="grouped-right buttonicon buttonicon-embed"></span> <span class="grouped-right buttonicon buttonicon-embed"></span>
</a> </a>
</li> </li>
<li class="separator"></li> <li class="separator"></li>
<li id="usericon" data-key="showusers"> <li id="usericon" data-key="showusers">
<a title="Show connected users"> <a data-l10n-id="pad.toolbar.showusers">
<span class="buttonicon buttonicon-showusers"></span> <span class="buttonicon buttonicon-showusers"></span>
<span id="online_count">1</span> <span id="online_count">1</span>
</a> </a>
@ -153,8 +158,8 @@
<div id="myuser"> <div id="myuser">
<div id="mycolorpicker"> <div id="mycolorpicker">
<div id="colorpicker"></div> <div id="colorpicker"></div>
<button id="mycolorpickersave">Save</button> <button id="mycolorpickersave" data-l10n-id="pad.colorpicker.save"></button>
<button id="mycolorpickercancel">Cancel</button> <button id="mycolorpickercancel" data-l10n-id="pad.colorpicker.cancel"></button>
<span id="mycolorpickerpreview" class="myswatchboxhoverable"></span> <span id="mycolorpickerpreview" class="myswatchboxhoverable"></span>
</div> </div>
<div id="myswatchbox"><div id="myswatch"></div></div> <div id="myswatchbox"><div id="myswatch"></div></div>
@ -174,56 +179,64 @@
<div id="editorcontainerbox"> <div id="editorcontainerbox">
<div id="editorcontainer"></div> <div id="editorcontainer"></div>
<div id="editorloadingbox"> <div id="editorloadingbox">
<p>Loading...</p> <p data-l10n-id="pad.loading">Loading...</p>
<noscript><strong>Sorry, you have to enable Javascript in order to use this.</strong></noscript> <noscript><strong>Sorry, you have to enable Javascript in order to use this.</strong></noscript>
</div> </div>
</div> </div>
<div id="settings" class="popup"> <div id="settings" class="popup">
<h1>Pad settings</h1> <h1 data-l10n-id="pad.settings.padSettings"></h1>
<div class="column"> <div class="column">
<% e.begin_block("mySettings"); %> <% e.begin_block("mySettings"); %>
<h2>My view</h2> <h2 data-l10n-id="pad.settings.myView"></h2>
<p> <p>
<input type="checkbox" id="options-stickychat" onClick="chat.stickToScreen();"> <input type="checkbox" id="options-stickychat" onClick="chat.stickToScreen();">
<label for="options-stickychat">Chat always on screen</label> <label for="options-stickychat" data-l10n-id="pad.settings.stickychat"></label>
</p> </p>
<p> <p>
<input type="checkbox" id="options-colorscheck"> <input type="checkbox" id="options-colorscheck">
<label for="options-colorscheck">Authorship colors</label> <label for="options-colorscheck" data-l10n-id="pad.settings.colorcheck"></label>
</p> </p>
<p> <p>
<input type="checkbox" id="options-linenoscheck" checked> <input type="checkbox" id="options-linenoscheck" checked>
<label for="options-linenoscheck">Line numbers</label> <label for="options-linenoscheck" data-l10n-id="pad.settings.linenocheck"></label>
</p> </p>
<p> <p data-l10n-id="pad.settings.fontType">
Font type: Font type:
<select id="viewfontmenu"> <select id="viewfontmenu">
<option value="normal">Normal</option> <option value="normal" data-l10n-id="pad.settings.fontType.normal"></option>
<option value="monospace">Monospaced</option> <option value="monospace" data-l10n-id="pad.settings.fontType.monospaced"></option>
</select>
</p>
<p data-l10n-id="pad.settings.language">
Language:
<select id="languagemenu">
<% for (lang in langs) { %>
<option value="<%=lang%>"><%=langs[lang]%></option>
<% } %>
</select> </select>
</p> </p>
<% e.end_block(); %> <% e.end_block(); %>
</div> </div>
<div class="column"> <div class="column">
<% e.begin_block("globalSettings"); %> <% e.begin_block("globalSettings"); %>
<h2>Global view</h2> <h2 data-l10n-id="pad.settings.globalView"></h2>
<% e.end_block(); %> <% e.end_block(); %>
</div> </div>
</div> </div>
<div id="importexport" class="popup"> <div id="importexport" class="popup">
<h1>Import/Export</h1> <h1 data-l10n-id="pad.importExport.import_export"></h1>
<div class="column acl-write"> <div class="column acl-write">
<% e.begin_block("importColumn"); %> <% e.begin_block("importColumn"); %>
<h2>Upload any text file or document</h2><br> <h2 data-l10n-id="pad.importExport.import"></h2><br>
<form id="importform" method="post" action="" target="importiframe" enctype="multipart/form-data"> <form id="importform" method="post" action="" target="importiframe" enctype="multipart/form-data">
<div class="importformdiv" id="importformfilediv"> <div class="importformdiv" id="importformfilediv">
<input type="file" name="file" size="15" id="importfileinput"> <input type="file" name="file" size="15" id="importfileinput">
<div class="importmessage" id="importmessagefail"></div> <div class="importmessage" id="importmessagefail"></div>
</div> </div>
<div id="import"></div> <div id="import"></div>
<div class="importmessage" id="importmessagesuccess">Successful!</div> <div class="importmessage" id="importmessagesuccess" data-l10n-id="pad.importExport.successful"></div>
<div class="importformdiv" id="importformsubmitdiv"> <div class="importformdiv" id="importformsubmitdiv">
<input type="hidden" name="padId" value="blpmaXT35R"> <input type="hidden" name="padId" value="blpmaXT35R">
<span class="nowrap"> <span class="nowrap">
@ -236,14 +249,14 @@
<% e.end_block(); %> <% e.end_block(); %>
</div> </div>
<div class="column"> <div class="column">
<h2>Export current pad as</h2> <h2 data-l10n-id="pad.importExport.export"></h2>
<% e.begin_block("exportColumn"); %> <% e.begin_block("exportColumn"); %>
<a id="exporthtmla" target="_blank" class="exportlink"><div class="exporttype" id="exporthtml">HTML</div></a> <a id="exporthtmla" target="_blank" class="exportlink"><div class="exporttype" id="exporthtml" data-l10n-id="pad.importExport.exporthtml"></div></a>
<a id="exportplaina" target="_blank" class="exportlink"><div class="exporttype" id="exportplain">Plain text</div></a> <a id="exportplaina" target="_blank" class="exportlink"><div class="exporttype" id="exportplain" data-l10n-id="pad.importExport.exportplain"></div></a>
<a id="exportworda" target="_blank" class="exportlink"><div class="exporttype" id="exportword">Microsoft Word</div></a> <a id="exportworda" target="_blank" class="exportlink"><div class="exporttype" id="exportword" data-l10n-id="pad.importExport.exportword"></div></a>
<a id="exportpdfa" target="_blank" class="exportlink"><div class="exporttype" id="exportpdf">PDF</div></a> <a id="exportpdfa" target="_blank" class="exportlink"><div class="exporttype" id="exportpdf" data-l10n-id="pad.importExport.exportpdf"></div></a>
<a id="exportopena" target="_blank" class="exportlink"><div class="exporttype" id="exportopen">OpenDocument</div></a> <a id="exportopena" target="_blank" class="exportlink"><div class="exporttype" id="exportopen" data-l10n-id="pad.importExport.exportopen"></div></a>
<a id="exportdokuwikia" target="_blank" class="exportlink"><div class="exporttype" id="exportdokuwiki">DokuWiki text</div></a> <a id="exportdokuwikia" target="_blank" class="exportlink"><div class="exporttype" id="exportdokuwiki" data-l10n-id="pad.importExport.exportdokuwiki"></div></a>
<% e.end_block(); %> <% e.end_block(); %>
</div> </div>
</div> </div>
@ -251,48 +264,48 @@
<div id="connectivity" class="popup"> <div id="connectivity" class="popup">
<% e.begin_block("modals"); %> <% e.begin_block("modals"); %>
<div class="connected visible"> <div class="connected visible">
<h2>Connected.</h2> <h2 data-l10n-id="pad.modals.connected"></h2>
</div> </div>
<div class="reconnecting"> <div class="reconnecting">
<h1>Reestablishing connection...</h1> <h1 data-l10n-id="pad.modals.reconnecting"></h1>
<p><img alt="" border="0" src="../static/img/connectingbar.gif" /></p> <p><img alt="" border="0" src="../static/img/connectingbar.gif" /></p>
</div> </div>
<div class="userdup"> <div class="userdup">
<h1>Opened in another window.</h1> <h1 data-l10n-id="pad.modals.uderdup"></h1>
<h2>You seem to have opened this pad in another browser window.</h2> <h2 data-l10n-id="pad.modals.userdup.explanation"></h2>
<p>If you'd like to use this window instead, you can reconnect.</p> <p data-l10n-id="pad.modals.connected.advice"></p>
<button id="forcereconnect">Reconnect Now</button> <button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
</div> </div>
<div class="unauth"> <div class="unauth">
<h1>No Authorization.</h1> <h1 data-l10n-id="pad.modals.unauth"></h1>
<p>Your browser's credentials or permissions have changed while viewing this pad. Try reconnecting.</p> <p data-l10n-id="pad.modals.unauth.explanation"></p>
<button id="forcereconnect">Reconnect Now</button> <button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
</div> </div>
<div class="looping"> <div class="looping">
<h1>Disconnected.</h1> <h1 data-l10n-id="pad.modals.looping"></h1>
<h2>We're having trouble talking to the EtherPad lite synchronization server.</h2> <h2 data-l10n-id="pad.modals.looping.explanation"></h2>
<p>You may be connecting through an incompatible firewall or proxy server.</p> <p data-l10n-id="pad.modals.looping.cause"></p>
</div> </div>
<div class="initsocketfail"> <div class="initsocketfail">
<h1>Disconnected.</h1> <h1 data-l10n-id="pad.modals.initsocketfail"></h1>
<h2>We were unable to connect to the EtherPad lite synchronization server.</h2> <h2 data-l10n-id="pad.modals.initsocketfail.explanation"></h2>
<p>This may be due to an incompatibility with your web browser or internet connection.</p> <p data-l10n-id="pad.modals.initsocketfail.cause"></p>
</div> </div>
<div class="slowcommit"> <div class="slowcommit">
<h1>Disconnected.</h1> <h1 data-l10n-id="pad.modals.slowcommit"></h1>
<h2>Server not responding.</h2> <h2 data-l10n-id="pad.modals.slowcommit.explanation"></h2>
<p>This may be due to network connectivity issues or high load on the server.</p> <p data-l10n-id="pad.modals.slowcommit.cause"></p>
<button id="forcereconnect">Reconnect Now</button> <button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
</div> </div>
<div class="deleted"> <div class="deleted">
<h1>Disconnected.</h1> <h1 data-l10n-id="pad.modals.deleted"></h1>
<p>This pad was deleted.</p> <p data-l10n-id="pad.modals.deleted.explanation"></p>
</div> </div>
<div class="disconnected"> <div class="disconnected">
<h1>Disconnected.</h1> <h1 data-l10n-id="pad.modals.disconnected"></h1>
<h2>Lost connection with the EtherPad lite synchronization server.</h2> <h2 data-l10n-id="pad.modals.disconnected.explanation"></h2>
<p>This may be due to a loss of network connectivity. If this continues to happen, please let us know</p> <p data-l10n-id="pad.modals.disconnected.cause"></p>
<button id="forcereconnect">Reconnect Now</button> <button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
</div> </div>
<form id="reconnectform" method="post" action="/ep/pad/reconnect" accept-charset="UTF-8" style="display: none;"> <form id="reconnectform" method="post" action="/ep/pad/reconnect" accept-charset="UTF-8" style="display: none;">
<input type="hidden" class="padId" name="padId"> <input type="hidden" class="padId" name="padId">
@ -306,16 +319,16 @@
<% e.begin_block("embedPopup"); %> <% e.begin_block("embedPopup"); %>
<div id="embedreadonly" class="right acl-write"> <div id="embedreadonly" class="right acl-write">
<input type="checkbox" id="readonlyinput" onClick="padeditbar.setEmbedLinks();"> <input type="checkbox" id="readonlyinput" onClick="padeditbar.setEmbedLinks();">
<label for="readonlyinput">Read only</label> <label for="readonlyinput" data-l10n-id="pad.share.readonly"></label>
</div> </div>
<h1>Share this pad</h1> <h1 data-l10n-id="pad.share"></h1>
<div id="linkcode"> <div id="linkcode">
<h2>Link</h2> <h2 data-l10n-id="pad.share.link"></h2>
<input id="linkinput" type="text" value=""> <input id="linkinput" type="text" value="">
</div> </div>
<br> <br>
<div id="embedcode"> <div id="embedcode">
<h2>Embed URL</h2> <h2 data-l10n-id="pad.share.emebdcode"></h2>
<input id="embedinput" type="text" value=""> <input id="embedinput" type="text" value="">
</div> </div>
<% e.end_block(); %> <% e.end_block(); %>
@ -323,14 +336,14 @@
<div id="chatthrob"></div> <div id="chatthrob"></div>
<div id="chaticon" title="Open the chat for this pad" onclick="chat.show();return false;"> <div id="chaticon" data-l10n-id="pad.chat" onclick="chat.show();return false;">
<span id="chatlabel">Chat</span> <span id="chatlabel" data-l10n-id="pad.chat"></span>
<span class="buttonicon buttonicon-chat"></span> <span class="buttonicon buttonicon-chat"></span>
<span id="chatcounter">0</span> <span id="chatcounter">0</span>
</div> </div>
<div id="chatbox"> <div id="chatbox">
<div id="titlebar"><span id ="titlelabel">Chat</span><a id="titlecross" onClick="chat.hide();return false;">-&nbsp;</a></div> <div id="titlebar"><span id ="titlelabel" data-l10n-id="pad.chat"></span><a id="titlecross" onClick="chat.hide();return false;">-&nbsp;</a></div>
<div id="chattext" class="authorColors"></div> <div id="chattext" class="authorColors"></div>
<div id="chatinputbox"> <div id="chatinputbox">
<form> <form>

View file

@ -31,6 +31,8 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="robots" content="noindex, nofollow"> <meta name="robots" content="noindex, nofollow">
<link rel="shortcut icon" href="<%=settings.favicon%>"> <link rel="shortcut icon" href="<%=settings.favicon%>">
<script type="text/javascript" src="../../static/js/l10n.js"></script>
<link rel="resource" type="application/l10n" href="../../locale.ini" />
<link rel="stylesheet" href="../../static/css/pad.css"> <link rel="stylesheet" href="../../static/css/pad.css">
<link rel="stylesheet" href="../../static/css/timeslider.css"> <link rel="stylesheet" href="../../static/css/timeslider.css">
<link rel="stylesheet" href="../../static/custom/timeslider.css"> <link rel="stylesheet" href="../../static/custom/timeslider.css">
@ -74,7 +76,7 @@
</a> </a>
</li> </li>
</ul> </ul>
<a id="returnbutton">Return to pad</a> <a id="returnbutton" data-l10n-id="timeslider.toolbar.returnbutton"></a>
</div> </div>
<div> <div>
@ -82,9 +84,9 @@
<span id="revision_label"></span> <span id="revision_label"></span>
<span id="revision_date"></span> <span id="revision_date"></span>
</h1> </h1>
<p>Authors: <p data-l10n-id="timeslider.toolbar.authors">
<span id="authorsList"> <span id="authorsList">
<span>No Authors</span> <span data-l10n-id="timeslider.toolbar.authorsList"></span>
</span> </p> </span> </p>
</div> </div>
</div> </div>
@ -101,70 +103,69 @@
</div><!-- /padpage --> </div><!-- /padpage -->
<div id="connectivity" class="popup"> <div id="connectivity" class="popup">
<% e.begin_block("modals"); %> <% e.begin_block("modals"); %>
<div class="connected visible"> <div class="connected visible">
<h2>Connected.</h2> <h2 data-l10n-id="pad.modals.connected"></h2>
</div> </div>
<div class="reconnecting"> <div class="reconnecting">
<h1>Reestablishing connection...</h1> <h1 data-l10n-id="pad.modals.reconnecting"></h1>
<p><img alt="" border="0" src="../../static/img/connectingbar.gif" /></p> <p><img alt="" border="0" src="../../static/img/connectingbar.gif" /></p>
</div> </div>
<div class="userdup"> <div class="userdup">
<h1>Opened in another window.</h1> <h1 data-l10n-id="pad.modals.uderdup"></h1>
<h2>You seem to have opened this pad in another browser window.</h2> <h2 data-l10n-id="pad.modals.userdup.explanation"></h2>
<p>If you'd like to use this window instead, you can reconnect.</p> <p data-l10n-id="pad.modals.connected.advice"></p>
<button id="forcereconnect">Reconnect Now</button> <button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
</div> </div>
<div class="unauth"> <div class="unauth">
<h1>No Authorization.</h1> <h1 data-l10n-id="pad.modals.unauth"></h1>
<p>Your browser's credentials or permissions have changed while viewing this pad. Try reconnecting.</p> <p data-l10n-id="pad.modals.unauth.explanation"></p>
<button id="forcereconnect">Reconnect Now</button> <button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
</div> </div>
<div class="looping"> <div class="looping">
<h1>Disconnected.</h1> <h1 data-l10n-id="pad.modals.looping"></h1>
<h2>We're having trouble talking to the EtherPad lite synchronization server.</h2> <h2 data-l10n-id="pad.modals.looping.explanation"></h2>
<p>You may be connecting through an incompatible firewall or proxy server.</p> <p data-l10n-id="pad.modals.looping.cause"></p>
</div> </div>
<div class="initsocketfail"> <div class="initsocketfail">
<h1>Disconnected.</h1> <h1 data-l10n-id="pad.modals.initsocketfail"></h1>
<h2>We were unable to connect to the EtherPad lite synchronization server.</h2> <h2 data-l10n-id="pad.modals.initsocketfail.explanation"></h2>
<p>This may be due to an incompatibility with your web browser or internet connection.</p> <p data-l10n-id="pad.modals.initsocketfail.cause"></p>
</div> </div>
<div class="slowcommit"> <div class="slowcommit">
<h1>Disconnected.</h1> <h1 data-l10n-id="pad.modals.slowcommit"></h1>
<h2>Server not responding.</h2> <h2 data-l10n-id="pad.modals.slowcommit.explanation"></h2>
<p>This may be due to network connectivity issues or high load on the server.</p> <p data-l10n-id="pad.modals.slowcommit.cause"></p>
<button id="forcereconnect">Reconnect Now</button> <button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
</div> </div>
<div class="deleted"> <div class="deleted">
<h1>Disconnected.</h1> <h1 data-l10n-id="pad.modals.deleted"></h1>
<p>This pad was deleted.</p> <p data-l10n-id="pad.modals.deleted.explanation"></p>
</div> </div>
<div class="disconnected"> <div class="disconnected">
<h1>Disconnected.</h1> <h1 data-l10n-id="pad.modals.disconnected"></h1>
<h2>Lost connection with the EtherPad lite synchronization server.</h2> <h2 data-l10n-id="pad.modals.disconnected.explanation"></h2>
<p>This may be due to a loss of network connectivity. If this continues to happen, please let us know</p> <p data-l10n-id="pad.modals.disconnected.cause"></p>
<button id="forcereconnect">Reconnect Now</button> <button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
</div> </div>
<form id="reconnectform" method="post" action="/ep/pad/reconnect" accept-charset="UTF-8" style="display: none;"> <form id="reconnectform" method="post" action="/ep/pad/reconnect" accept-charset="UTF-8" style="display: none;">
<input type="hidden" class="padId" name="padId"> <input type="hidden" class="padId" name="padId">
<input type="hidden" class="diagnosticInfo" name="diagnosticInfo"> <input type="hidden" class="diagnosticInfo" name="diagnosticInfo">
<input type="hidden" class="missedChanges" name="missedChanges"> <input type="hidden" class="missedChanges" name="missedChanges">
</form> </form>
<% e.end_block(); %> <% e.end_block(); %>
</div> </div>
<!-- export code --> <!-- export code -->
<div id="importexport"> <div id="importexport">
<div id="export" class="popup"> <div id="export" class="popup" data-l10n-id="timeslider.exportCurrent">
Export current version as: <a id="exporthtmla" target="_blank" class="exportlink"><div class="exporttype" id="exporthtml" data-l10n-id="pad.importExport.exporthtml"></div></a>
<a id="exporthtmla" target="_blank" class="exportlink"><div class="exporttype" id="exporthtml">HTML</div></a> <a id="exportplaina" target="_blank" class="exportlink"><div class="exporttype" id="exportplain" data-l10n-id="pad.importExport.exportplain"></div></a>
<a id="exportplaina" target="_blank" class="exportlink"><div class="exporttype" id="exportplain">Plain text</div></a> <a id="exportworda" target="_blank" class="exportlink"><div class="exporttype" id="exportword" data-l10n-id="pad.importExport.exportword"></div></a>
<a id="exportworda" target="_blank" class="exportlink"><div class="exporttype" id="exportword">Microsoft Word</div></a> <a id="exportpdfa" target="_blank" class="exportlink"><div class="exporttype" id="exportpdf" data-l10n-id="pad.importExport.exportpdf"></div></a>
<a id="exportpdfa" target="_blank" class="exportlink"><div class="exporttype" id="exportpdf">PDF</div></a> <a id="exportopena" target="_blank" class="exportlink"><div class="exporttype" id="exportopen" data-l10n-id="pad.importExport.exportopen"></div></a>
<a id="exportopena" target="_blank" class="exportlink"><div class="exporttype" id="exportopen">OpenDocument</div></a> <a id="exportdokuwikia" target="_blank" class="exportlink"><div class="exporttype" id="exportdokuwiki" data-l10n-id="pad.importExport.exportdokuwiki"></div></a>
<a id="exportdokuwikia" target="_blank" class="exportlink"><div class="exporttype" id="exportdokuwiki">DokuWiki text</div></a>
</div> </div>
</div> </div>