From 1c8b7a3661ce7239b33a0e91fc010022303f7ba6 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 17 Apr 2013 14:25:23 +0200 Subject: [PATCH 01/39] Add a server-side changeset queue per pad fixes #1573 --- src/node/handler/PadMessageHandler.js | 20 +++++++++++++++----- src/package.json | 3 ++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index 85efb008..b6d22c14 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -35,6 +35,7 @@ var messageLogger = log4js.getLogger("message"); var accessLogger = log4js.getLogger("access"); var _ = require('underscore'); var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks.js"); +var channels = require("channels"); /** * A associative array that saves informations about a session @@ -48,6 +49,11 @@ var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks.js"); */ var sessioninfos = {}; +/** + * A changeset queue per pad that is processed by handleUserChanges() + */ +var padChannels = new channels.channels(handleUserChanges); + /** * Saves the Socket class we need to send and recieve data from the client */ @@ -176,7 +182,7 @@ exports.handleMessage = function(client, message) if (sessioninfos[client.id].readonly) { messageLogger.warn("Dropped message, COLLABROOM for readonly pad"); } else if (message.data.type == "USER_CHANGES") { - handleUserChanges(client, message); + padChannels.emit(message.padId, {client: client, message: message});// add to pad queue } else if (message.data.type == "USERINFO_UPDATE") { handleUserInfoUpdate(client, message); } else if (message.data.type == "CHAT_MESSAGE") { @@ -522,23 +528,26 @@ function handleUserInfoUpdate(client, message) * @param client the client that send this message * @param message the message from the client */ -function handleUserChanges(client, message) +function handleUserChanges(data, cb) { + var client = data.client + , message = data.message + // Make sure all required fields are present if(message.data.baseRev == null) { messageLogger.warn("Dropped message, USER_CHANGES Message has no baseRev!"); - return; + return cb(); } if(message.data.apool == null) { messageLogger.warn("Dropped message, USER_CHANGES Message has no apool!"); - return; + return cb(); } if(message.data.changeset == null) { messageLogger.warn("Dropped message, USER_CHANGES Message has no changeset!"); - return; + return cb(); } //get all Vars we need @@ -679,6 +688,7 @@ function handleUserChanges(client, message) } ], function(err) { + cb(); ERR(err); }); } diff --git a/src/package.json b/src/package.json index e7c56549..900308de 100644 --- a/src/package.json +++ b/src/package.json @@ -37,7 +37,8 @@ "underscore" : "1.3.1", "unorm" : "1.0.0", "languages4translatewiki" : "0.1.3", - "swagger-node-express" : "1.2.3" + "swagger-node-express" : "1.2.3", + "channels" : "0.0.x" }, "bin": { "etherpad-lite": "./node/server.js" }, "devDependencies": { From cd288c70cb6bc738014cae9315170b238e0898a1 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 17 Apr 2013 14:26:11 +0200 Subject: [PATCH 02/39] Don't block changeset queue with delivering changeset --- src/node/handler/PadMessageHandler.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index b6d22c14..a24390a6 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -684,7 +684,10 @@ function handleUserChanges(data, cb) pad.appendRevision(nlChangeset); } - exports.updatePadClients(pad, callback); + exports.updatePadClients(pad, function(er) { + ERR(er) + }); + callback(); } ], function(err) { From 3b8621c6a00551d38b15c646d233baeef9fdee4b Mon Sep 17 00:00:00 2001 From: John McLear Date: Wed, 17 Apr 2013 19:50:05 +0100 Subject: [PATCH 03/39] dont crash on no auth, ust a bandaid --- src/node/handler/PadMessageHandler.js | 37 +++++++++++++++++---------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index 85efb008..3da5057d 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -224,22 +224,31 @@ exports.handleMessage = function(client, message) // FIXME: Call our "sessions" "connections". // FIXME: Use a hook instead // FIXME: Allow to override readwrite access with readonly - var auth = sessioninfos[client.id].auth; - securityManager.checkAccess(auth.padID, auth.sessionID, auth.token, auth.password, function(err, statusObject) - { - if(ERR(err, callback)) return; - //access was granted - if(statusObject.accessStatus == "grant") + // FIXME: A message might arrive but wont have an auth object, this is obviously bad so we should deny it + // Simulate using the load testing tool + if(!sessioninfos[client.id].auth){ + console.error("Auth was never applied to a session", sessioninfos[client.id]) + client.json.send({accessStatus: "deny"}); + callback(); + }else{ + var auth = sessioninfos[client.id].auth; + securityManager.checkAccess(auth.padID, auth.sessionID, auth.token, auth.password, function(err, statusObject) { - callback(); - } - //no access, send the client a message that tell him why - else - { - client.json.send({accessStatus: statusObject.accessStatus}) - } - }); + if(ERR(err, callback)) return; + + //access was granted + if(statusObject.accessStatus == "grant") + { + callback(); + } + //no access, send the client a message that tell him why + else + { + client.json.send({accessStatus: statusObject.accessStatus}) + } + }); + } }, finalHandler ]); From bf4c86ed94b33f74902eab04abc1d2538c7e2001 Mon Sep 17 00:00:00 2001 From: John McLear Date: Wed, 17 Apr 2013 23:48:11 +0100 Subject: [PATCH 04/39] better message for admins --- src/node/handler/PadMessageHandler.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index f051b9ed..1e079b52 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -234,8 +234,7 @@ exports.handleMessage = function(client, message) // FIXME: A message might arrive but wont have an auth object, this is obviously bad so we should deny it // Simulate using the load testing tool if(!sessioninfos[client.id].auth){ - console.error("Auth was never applied to a session", sessioninfos[client.id]) - client.json.send({accessStatus: "deny"}); + console.error("Auth was never applied to a session. If you are using the stress-test tool then restart Etherpad and the Stress test tool.") callback(); }else{ var auth = sessioninfos[client.id].auth; From 67b513216a3644495da797a4b4ee206505104dac Mon Sep 17 00:00:00 2001 From: Chia-liang Kao Date: Wed, 29 May 2013 10:40:30 +0800 Subject: [PATCH 05/39] Fix safeRun that tries to shift on subsequent restarts --- bin/safeRun.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/safeRun.sh b/bin/safeRun.sh index 02e448d1..4b3485ba 100755 --- a/bin/safeRun.sh +++ b/bin/safeRun.sh @@ -32,6 +32,7 @@ if [ -z "${LOG}" ]; then exit 1 fi +shift while [ 1 ] do #try to touch the file if it doesn't exist @@ -46,7 +47,6 @@ do fi #start the application - shift bin/run.sh $@ >>${LOG} 2>>${LOG} #Send email From eae9faa28c75a642f503f40ea53fcd909feaa09b Mon Sep 17 00:00:00 2001 From: Chia-liang Kao Date: Thu, 6 Jun 2013 12:30:48 +0800 Subject: [PATCH 06/39] refactor setAuthorStyle --- src/static/js/ace2_inner.js | 97 ++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 45 deletions(-) diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index 0d54d725..f53e5004 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -208,6 +208,57 @@ function Ace2Inner(){ }; editorInfo.ace_getAuthorInfos= getAuthorInfos; + function setAuthorStyle(author, info) + { + if (!dynamicCSS) { + return; + } + + var authorSelector = getAuthorColorClassSelector(getAuthorClassName(author)); + if (!info) + { + dynamicCSS.removeSelectorStyle(authorSelector); + parentDynamicCSS.removeSelectorStyle(authorSelector); + } + else + { + if (info.bgcolor) + { + var bgcolor = info.bgcolor; + if ((typeof info.fade) == "number") + { + bgcolor = fadeColor(bgcolor, info.fade); + } + + var authorStyle = dynamicCSS.selectorStyle(authorSelector); + var parentAuthorStyle = parentDynamicCSS.selectorStyle(authorSelector); + var anchorStyle = dynamicCSS.selectorStyle(authorSelector + ' > a') + + // author color + authorStyle.backgroundColor = bgcolor; + parentAuthorStyle.backgroundColor = bgcolor; + + // text contrast + if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.5) + { + authorStyle.color = '#ffffff'; + parentAuthorStyle.color = '#ffffff'; + }else{ + authorStyle.color = null; + parentAuthorStyle.color = null; + } + + // anchor text contrast + if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.55) + { + anchorStyle.color = colorutils.triple2css(colorutils.complementary(colorutils.css2triple(bgcolor))); + }else{ + anchorStyle.color = null; + } + } + } + } + function setAuthorInfo(author, info) { if ((typeof author) != "string") @@ -217,56 +268,12 @@ function Ace2Inner(){ if (!info) { delete authorInfos[author]; - if (dynamicCSS) - { - dynamicCSS.removeSelectorStyle(getAuthorColorClassSelector(getAuthorClassName(author))); - parentDynamicCSS.removeSelectorStyle(getAuthorColorClassSelector(getAuthorClassName(author))); - } } else { authorInfos[author] = info; - if (info.bgcolor) - { - if (dynamicCSS) - { - var bgcolor = info.bgcolor; - if ((typeof info.fade) == "number") - { - bgcolor = fadeColor(bgcolor, info.fade); - } - - var authorStyle = dynamicCSS.selectorStyle(getAuthorColorClassSelector( - getAuthorClassName(author))); - var parentAuthorStyle = parentDynamicCSS.selectorStyle(getAuthorColorClassSelector( - getAuthorClassName(author))); - var anchorStyle = dynamicCSS.selectorStyle(getAuthorColorClassSelector( - getAuthorClassName(author))+' > a') - - // author color - authorStyle.backgroundColor = bgcolor; - parentAuthorStyle.backgroundColor = bgcolor; - - // text contrast - if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.5) - { - authorStyle.color = '#ffffff'; - parentAuthorStyle.color = '#ffffff'; - }else{ - authorStyle.color = null; - parentAuthorStyle.color = null; - } - - // anchor text contrast - if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.55) - { - anchorStyle.color = colorutils.triple2css(colorutils.complementary(colorutils.css2triple(bgcolor))); - }else{ - anchorStyle.color = null; - } - } - } } + setAuthorStyle(author, info); } function getAuthorClassName(author) From 548f31a46a685860c73376261f39e502d680cedd Mon Sep 17 00:00:00 2001 From: Chia-liang Kao Date: Thu, 6 Jun 2013 12:59:56 +0800 Subject: [PATCH 07/39] new hook: aceSetAuthorStyle --- src/static/js/ace2_inner.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index f53e5004..f8b266b4 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -213,8 +213,22 @@ function Ace2Inner(){ if (!dynamicCSS) { return; } - var authorSelector = getAuthorColorClassSelector(getAuthorClassName(author)); + + var authorStyleSet = hooks.callAll('aceSetAuthorStyle', { + dynamicCSS: dynamicCSS, + parentDynamicCSS: parentDynamicCSS, + info: info, + author: author, + authorSelector: authorSelector, + }); + + // Prevent default behaviour if any hook says so + if (_.any(authorStyleSet, function(it) { return it })) + { + return + } + if (!info) { dynamicCSS.removeSelectorStyle(authorSelector); From f8729d2188d05e9ca3c0d55b465c2c8b1180b05b Mon Sep 17 00:00:00 2001 From: Chia-liang Kao Date: Fri, 7 Jun 2013 00:58:06 +0800 Subject: [PATCH 08/39] use SAUCE_ACCESS_KEY --- tests/frontend/travis/remote_runner.js | 2 +- tests/frontend/travis/sauce_tunnel.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/frontend/travis/remote_runner.js b/tests/frontend/travis/remote_runner.js index a4f1dac1..f7edae22 100644 --- a/tests/frontend/travis/remote_runner.js +++ b/tests/frontend/travis/remote_runner.js @@ -6,7 +6,7 @@ var config = { host: "ondemand.saucelabs.com" , port: 80 , username: process.env.SAUCE_USER - , accessKey: process.env.SAUCE_KEY + , accessKey: process.env.SAUCE_ACCESS_KEY } var allTestsPassed = true; diff --git a/tests/frontend/travis/sauce_tunnel.sh b/tests/frontend/travis/sauce_tunnel.sh index ac8f7ac7..21ff3ff5 100755 --- a/tests/frontend/travis/sauce_tunnel.sh +++ b/tests/frontend/travis/sauce_tunnel.sh @@ -4,7 +4,7 @@ curl http://saucelabs.com/downloads/Sauce-Connect-latest.zip > /tmp/sauce.zip unzip /tmp/sauce.zip -d /tmp # start the sauce connector in background and make sure it doesn't output the secret key -(java -jar /tmp/Sauce-Connect.jar $SAUCE_USER $SAUCE_KEY -f /tmp/tunnel > /dev/null )& +(java -jar /tmp/Sauce-Connect.jar $SAUCE_USER $SAUCE_ACCESS_KEY -f /tmp/tunnel > /dev/null )& # save the sauce pid in a file echo $! > /tmp/sauce.pid From 4c264aec4d717cf4946a38f928cc245bca3a02c8 Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Mon, 10 Jun 2013 08:45:19 +0000 Subject: [PATCH 09/39] Localisation updates from http://translatewiki.net. --- src/locales/fa.json | 7 +-- src/locales/fo.json | 97 ++++++++++++++++++++++++++++++++++++++++ src/locales/km.json | 52 +++++++++++++++++++++ src/locales/lt.json | 72 +++++++++++++++++++++++++++++ src/locales/oc.json | 7 ++- src/locales/pl.json | 2 +- src/locales/zh-hans.json | 3 ++ src/locales/zh-hant.json | 37 +++++++-------- 8 files changed, 253 insertions(+), 24 deletions(-) create mode 100644 src/locales/fo.json create mode 100644 src/locales/km.json create mode 100644 src/locales/lt.json diff --git a/src/locales/fa.json b/src/locales/fa.json index 4d2c448f..48220dab 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -3,8 +3,9 @@ "authors": { "0": "BMRG14", "1": "Dalba", - "3": "ZxxZxxZ", - "4": "\u0627\u0644\u0646\u0627\u0632" + "2": "Ebraminio", + "4": "ZxxZxxZ", + "5": "\u0627\u0644\u0646\u0627\u0632" } }, "index.newPad": "\u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062a\u0627\u0632\u0647", @@ -22,7 +23,7 @@ "pad.toolbar.clearAuthorship.title": "\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u0631\u0646\u06af\u200c\u0647\u0627\u06cc \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u06cc", "pad.toolbar.import_export.title": "\u062f\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc/\u0628\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u0627\u0632/\u0628\u0647 \u0642\u0627\u0644\u0628\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641", "pad.toolbar.timeslider.title": "\u0627\u0633\u0644\u0627\u06cc\u062f\u0631 \u0632\u0645\u0627\u0646", - "pad.toolbar.savedRevision.title": "\u0630\u062e\u06cc\u0631\u0647\u200c\u06cc \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc", + "pad.toolbar.savedRevision.title": "\u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0646\u0633\u062e\u0647", "pad.toolbar.settings.title": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a", "pad.toolbar.embed.title": "\u062c\u0627\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", "pad.toolbar.showusers.title": "\u0646\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", diff --git a/src/locales/fo.json b/src/locales/fo.json new file mode 100644 index 00000000..45f6548c --- /dev/null +++ b/src/locales/fo.json @@ -0,0 +1,97 @@ +{ + "index.newPad": "N\u00fdggjur teldil", + "pad.toolbar.bold.title": "Vi\u00f0 feitum (Ctrl-B)", + "pad.toolbar.italic.title": "Skr\u00e1skrift (Ctrl-I)", + "pad.toolbar.underline.title": "Undirstrika\u00f0 (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Gj\u00f8gnumstrika\u00f0", + "pad.toolbar.ol.title": "B\u00edleggingarlisti", + "pad.toolbar.undo.title": "Angra (Ctrl-Z)", + "pad.toolbar.redo.title": "Ger umaftur (Ctrl-Y)", + "pad.toolbar.import_export.title": "Innflyt/\u00datflyt fr\u00e1/til ymiskar f\u00edlust\u00f8ddir", + "pad.toolbar.savedRevision.title": "Goym Endursko\u00f0an", + "pad.toolbar.settings.title": "Innstillingar", + "pad.toolbar.embed.title": "Deil og Innset henda pad'in", + "pad.toolbar.showusers.title": "V\u00eds br\u00fakarar \u00e1 hesum paddi", + "pad.colorpicker.save": "Goym", + "pad.colorpicker.cancel": "\u00d3gilda", + "pad.loading": "L\u00f8\u00f0ir...", + "pad.passwordRequired": "T\u00fa hevur br\u00fak fyri einum loynior\u00f0i fyri at f\u00e1a atgongd til henda paddin", + "pad.permissionDenied": "T\u00fa hevur ikki loyvi til at f\u00e1a atgongd til henda paddin", + "pad.wrongPassword": "T\u00edtt loynior\u00f0 var skeivt", + "pad.settings.padSettings": "Pad innstillingar", + "pad.settings.myView": "M\u00edn s\u00fdning", + "pad.settings.stickychat": "Kjatta alt\u00ed\u00f0 \u00e1 skerminum", + "pad.settings.colorcheck": "Litir hj\u00e1 rith\u00f8vundaskapinum", + "pad.settings.linenocheck": "Linjunummur", + "pad.settings.rtlcheck": "Vil t\u00fa lesa innihaldi\u00f0 fr\u00e1 h\u00f8gru til vinstu?", + "pad.settings.fontType": "Skriftslag:", + "pad.settings.fontType.normal": "Vanligt", + "pad.settings.fontType.monospaced": "F\u00f8st breidd", + "pad.settings.globalView": "Global s\u00fdning", + "pad.settings.language": "M\u00e1l:", + "pad.importExport.import_export": "Innflyt/\u00datflyt", + "pad.importExport.import": "Legg \u00fat onkra tekstf\u00edlu ella dokument", + "pad.importExport.importSuccessful": "Ta\u00f0 eydna\u00f0ist!", + "pad.importExport.export": "\u00datflyt verandi pad sum:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Einfaldur tekstur", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Opi\u00f0 Dokument Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "T\u00fa kanst bert innflyta fr\u00e1 einf\u00f8ldum teksti ella html formatum. Fyri funksj\u00f3nir til innflytan fyri v\u00ed\u00f0arikomin vinarliga \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstallera abiword\u003C/a\u003E.", + "pad.modals.connected": "T\u00fa hevur samband.", + "pad.modals.reconnecting": "Roynir aftur at f\u00e1a samband vi\u00f0 t\u00edn pad..", + "pad.modals.forcereconnect": "Tvinga endurstovnan av sambandi.", + "pad.modals.userdup": "Er lati\u00f0 upp \u00ed \u00f8\u00f0rum vindeyga", + "pad.modals.userdup.explanation": "Ta\u00f0 s\u00e6r \u00fat til at hesin paddurin er latin upp \u00ed meira enn einum brovsara vindeyga \u00e1 hesari telduni.", + "pad.modals.userdup.advice": "Endurstovna sambandi fyri at n\u00fdta hetta vindeyga \u00ed sta\u00f0in.", + "pad.modals.unauth": "Er ikki loyvt", + "pad.modals.unauth.explanation": "T\u00edni loyvi eru broytt, me\u00f0an t\u00fa hevur hugt at hesi s\u00ed\u00f0uni. Royn og endurstovna sambandi.", + "pad.modals.looping": "T\u00fa misti sambandi.", + "pad.modals.initsocketfail": "Amb\u00e6tarin er \u00f3atkomuligur.", + "pad.modals.initsocketfail.cause": "Hetta skyldast mest sannl\u00edkt ein trupulleika vi\u00f0 t\u00ednum kaga/brovsara ella vi\u00f0 t\u00ednum internetsambandi.", + "pad.modals.slowcommit": "T\u00fa misti sambandi.", + "pad.modals.slowcommit.explanation": "Amb\u00e6tarin (servarin) svarar ikki.", + "pad.modals.slowcommit.cause": "Hetta kann skyldast trupulleikar vi\u00f0 netverkssambandinum.", + "pad.modals.deleted": "Er strika\u00f0.", + "pad.modals.deleted.explanation": "Hesin paddurin er fluttur.", + "pad.modals.disconnected": "T\u00fa hevur mist sambandi.", + "pad.modals.disconnected.explanation": "Sambandi\u00f0 til amb\u00e6tarin er avbroti\u00f0", + "pad.share": "Deil henda paddin", + "pad.share.readonly": "Vart fyri skriving", + "pad.share.link": "Sl\u00f3\u00f0", + "timeslider.toolbar.returnbutton": "Vend aftur til pad'in", + "timeslider.toolbar.authors": "H\u00f8vundar:", + "timeslider.toolbar.authorsList": "Ongir h\u00f8vundar", + "timeslider.toolbar.exportlink.title": "\u00datflyt", + "timeslider.exportCurrent": "\u00datflyt hesa versj\u00f3na sum:", + "timeslider.version": "Versj\u00f3n {{version}}", + "timeslider.saved": "Goymt {{month}} {{day}}, {{year}}", + "timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januar", + "timeslider.month.february": "Februar", + "timeslider.month.march": "Mars", + "timeslider.month.april": "Apr\u00edl", + "timeslider.month.may": "Mai", + "timeslider.month.june": "Juni", + "timeslider.month.july": "Juli", + "timeslider.month.august": "August", + "timeslider.month.september": "September", + "timeslider.month.october": "October", + "timeslider.month.november": "November", + "timeslider.month.december": "Desember", + "timeslider.unnamedauthor": "{{num}} \u00f3nevndur h\u00f8vundur", + "timeslider.unnamedauthors": "{{num}} \u00f3nevndir h\u00f8vundar", + "pad.savedrevs.marked": "Henda endursko\u00f0anin er n\u00fa merkt sum ein goymd endursko\u00f0an", + "pad.userlist.entername": "Skriva t\u00edtt navn", + "pad.userlist.unnamed": "ikki-navngivi\u00f0", + "pad.userlist.guest": "Gestur", + "pad.userlist.deny": "Nokta", + "pad.userlist.approve": "G\u00f3\u00f0kenn", + "@metadata": { + "authors": [ + "EileenSanda" + ] + } +} \ No newline at end of file diff --git a/src/locales/km.json b/src/locales/km.json new file mode 100644 index 00000000..e32a26f7 --- /dev/null +++ b/src/locales/km.json @@ -0,0 +1,52 @@ +{ + "index.newPad": "\u1795\u17c1\u178f\u1790\u17d2\u1798\u17b8", + "index.createOpenPad": "\u17ac\u1794\u1784\u17d2\u1780\u17be\u178f/\u1794\u17be\u1780\u1795\u17c1\u178f\u178a\u17c2\u179b\u1798\u17b6\u1793\u1788\u17d2\u1798\u17c4\u17c7\u17d6", + "pad.toolbar.bold.title": "\u178a\u17b7\u178f (Ctrl-B)", + "pad.toolbar.italic.title": "\u1791\u17d2\u179a\u17c1\u178f (Ctrl-I)", + "pad.toolbar.underline.title": "\u1782\u17bc\u179f\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb (Ctrl-U)", + "pad.toolbar.strikethrough.title": "\u1786\u17bc\u178f\u1785\u17c4\u179b", + "pad.toolbar.ol.title": "\u1794\u1789\u17d2\u1787\u17b8\u178f\u17b6\u1798\u178f\u1798\u17d2\u179a\u17c0\u1794", + "pad.toolbar.ul.title": "\u1794\u1789\u17d2\u1787\u17b8\u1798\u17b7\u1793\u178f\u17b6\u1798\u178f\u1798\u17d2\u179a\u17c0\u1794", + "pad.toolbar.indent.title": "\u1781\u17b7\u178f\u1785\u17bc\u179b\u1780\u17d2\u1793\u17bb\u1784", + "pad.toolbar.unindent.title": "\u1781\u17b7\u178f\u1785\u17c1\u1789\u1780\u17d2\u179a\u17c5", + "pad.toolbar.undo.title": "\u17a2\u17b6\u1793\u17cb\u178c\u17bc (Ctrl-Z)", + "pad.toolbar.redo.title": "\u179a\u17b8\u178c\u17bc (Ctrl-Y)", + "pad.toolbar.import_export.title": "\u1793\u17b6\u17c6\u1785\u17bc\u179b/\u1793\u17b6\u17c6\u1785\u17c1\u1789 \u1796\u17b8/\u1791\u17c5\u1794\u17d2\u179a\u1797\u17c1\u1791\u17af\u1780\u179f\u17b6\u179a\u1795\u17d2\u179f\u17c1\u1784\u1791\u17c0\u178f", + "pad.toolbar.settings.title": "\u1780\u17b6\u179a\u1780\u17c6\u178e\u178f\u17cb\u200b", + "pad.colorpicker.save": "\u179a\u1780\u17d2\u179f\u17b6\u1791\u17bb\u1780", + "pad.colorpicker.cancel": "\u1794\u17c4\u17c7\u1794\u1784\u17cb", + "pad.loading": "\u1780\u17c6\u1796\u17bb\u1784\u1795\u17d2\u1791\u17bb\u1780\u2026", + "pad.settings.fontType": "\u1794\u17d2\u179a\u1797\u17c1\u1791\u1796\u17bb\u1798\u17d2\u1796\u17a2\u1780\u17d2\u179f\u179a\u17d6", + "pad.settings.fontType.normal": "\u1792\u1798\u17d2\u1798\u178f\u17b6", + "pad.settings.language": "\u1797\u17b6\u179f\u17b6\u17d6", + "pad.importExport.import_export": "\u1793\u17b6\u17c6\u1785\u17bc\u179b/\u1793\u17b6\u17c6\u1785\u17c1\u1789", + "pad.importExport.importSuccessful": "\u178a\u17c4\u1799\u1787\u17c4\u1782\u1787\u17d0\u1799!", + "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": "\u1794\u17b6\u1793\u200b\u178f\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u17d4", + "pad.share.link": "\u178f\u17c6\u178e\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb", + "timeslider.month.january": "\u1798\u1780\u179a\u17b6", + "timeslider.month.february": "\u1780\u17bb\u1798\u17d2\u1797\u17c8", + "timeslider.month.march": "\u1798\u17b7\u1793\u17b6", + "timeslider.month.april": "\u1798\u17c1\u179f\u17b6", + "timeslider.month.may": "\u17a7\u179f\u1797\u17b6", + "timeslider.month.june": "\u1798\u17b7\u1790\u17bb\u1793\u17b6\u200b", + "timeslider.month.july": "\u1780\u1780\u17d2\u178a\u178a\u17b6\u200b", + "timeslider.month.august": "\u179f\u17b8\u17a0\u17b6", + "timeslider.month.september": "\u1780\u1789\u17d2\u1789\u17b6", + "timeslider.month.october": "\u178f\u17bb\u179b\u17b6", + "timeslider.month.november": "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6", + "timeslider.month.december": "\u1792\u17d2\u1793\u17bc", + "pad.userlist.guest": "\u1797\u17d2\u1789\u17c0\u179c", + "pad.impexp.importbutton": "\u1793\u17b6\u17c6\u1785\u17bc\u179b\u17a5\u17a1\u17bc\u179c\u1793\u17c1\u17c7", + "pad.impexp.importing": "\u1780\u17c6\u1796\u17bb\u1784\u1793\u17b6\u17c6\u1785\u17bc\u179b\u200b...", + "@metadata": { + "authors": [ + "\u179c\u17d0\u178e\u1790\u17b6\u179a\u17b7\u1791\u17d2\u1792" + ] + } +} \ No newline at end of file diff --git a/src/locales/lt.json b/src/locales/lt.json new file mode 100644 index 00000000..db40b306 --- /dev/null +++ b/src/locales/lt.json @@ -0,0 +1,72 @@ +{ + "pad.toolbar.bold.title": "Pary\u0161kintasis (Ctrl-B)", + "pad.toolbar.italic.title": "Pasvirasis (Ctrl-I)", + "pad.toolbar.underline.title": "Pabraukimas (Ctrl-U)", + "pad.toolbar.undo.title": "Anuliuoti (Ctrl-Z)", + "pad.toolbar.redo.title": "Perdaryti (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Tvarkyti autoryst\u0117s spalvas", + "pad.toolbar.settings.title": "Nustatymai", + "pad.colorpicker.save": "I\u0161saugoti", + "pad.colorpicker.cancel": "At\u0161aukti", + "pad.loading": "\u012ekraunama...", + "pad.settings.fontType.normal": "Normalus", + "pad.settings.language": "Kalba:", + "pad.importExport.import_export": "Importuoti/Eksportuoti", + "pad.importExport.import": "\u012ekelkite bet kok\u012f tekstin\u012f fail\u0105 arba dokument\u0105", + "pad.importExport.importSuccessful": "Pavyko!", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Paprastasis tekstas", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Atvirasis dokumento formatas)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.modals.connected": "Prisijungta.", + "pad.modals.unauth": "Neleid\u017eiama", + "pad.modals.looping": "Atjungtas.", + "pad.modals.initsocketfail": "Serveris yra nepasiekiamas.", + "pad.modals.slowcommit": "Atjungtas.", + "pad.modals.slowcommit.explanation": "Serveris neatsako.", + "pad.modals.deleted": "I\u0161trintas.", + "pad.modals.disconnected": "J\u016bs atsijung\u0117te.", + "pad.share.readonly": "Tik skaityti", + "pad.share.link": "Nuoroda", + "pad.share.emebdcode": "\u012eterptasis URL", + "pad.chat": "Pokalbiai", + "pad.chat.loadmessages": "\u012ekrauti daugiau prane\u0161im\u0173", + "timeslider.toolbar.authors": "Autoriai:", + "timeslider.toolbar.authorsList": "N\u0117ra autori\u0173", + "timeslider.toolbar.exportlink.title": "Eksportuoti", + "timeslider.exportCurrent": "Eksportuoti dabartin\u0119 versij\u0105 kaip:", + "timeslider.version": "Versija {{version}}", + "timeslider.saved": "I\u0161saugota {{year}},{{month}} {{day}}", + "timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Sausis", + "timeslider.month.february": "Vasaris", + "timeslider.month.march": "Kovas", + "timeslider.month.april": "Balandis", + "timeslider.month.may": "Gegu\u017e\u0117", + "timeslider.month.june": "Bir\u017eelis", + "timeslider.month.july": "Liepa", + "timeslider.month.august": "Rugpj\u016btis", + "timeslider.month.september": "Rugs\u0117jis", + "timeslider.month.october": "Spalis", + "timeslider.month.november": "Lapkritis", + "timeslider.month.december": "Gruodis", + "timeslider.unnamedauthor": "{{num}} bevardis autorius", + "timeslider.unnamedauthors": "{{num}} bevard\u017eiai(-i\u0173) autoriai(-i\u0173)", + "pad.userlist.entername": "\u012eveskite savo vard\u0105", + "pad.userlist.unnamed": "bevardis", + "pad.userlist.guest": "Sve\u010dias", + "pad.userlist.deny": "Neigti", + "pad.userlist.approve": "Patvirtinti", + "pad.impexp.importbutton": "Importuoti dabar", + "pad.impexp.importing": "Importuojama...", + "pad.impexp.uploadFailed": "\u012ek\u0117limas nepavyko, bandykite dar kart\u0105", + "pad.impexp.importfailed": "Importuoti nepavyko", + "pad.impexp.copypaste": "Pra\u0161ome nukopijuoti ir \u012fklijuoti", + "@metadata": { + "authors": [ + "Mantak111" + ] + } +} \ No newline at end of file diff --git a/src/locales/oc.json b/src/locales/oc.json index be4da3cd..46979150 100644 --- a/src/locales/oc.json +++ b/src/locales/oc.json @@ -19,9 +19,9 @@ "pad.toolbar.clearAuthorship.title": "Escafar las colors qu'identifican los autors", "pad.toolbar.import_export.title": "Importar/Exportar de/cap a un format de fichi\u00e8r diferent", "pad.toolbar.timeslider.title": "Istoric dinamic", - "pad.toolbar.savedRevision.title": "Versions enregistradas", + "pad.toolbar.savedRevision.title": "Enregistrar la revision", "pad.toolbar.settings.title": "Param\u00e8tres", - "pad.toolbar.embed.title": "Integrar aqueste Pad", + "pad.toolbar.embed.title": "Partejar e integrar aqueste Pad", "pad.toolbar.showusers.title": "Afichar los utilizaires del Pad", "pad.colorpicker.save": "Enregistrar", "pad.colorpicker.cancel": "Anullar", @@ -34,6 +34,7 @@ "pad.settings.stickychat": "Afichar totjorn lo chat", "pad.settings.colorcheck": "Colors d\u2019identificacion", "pad.settings.linenocheck": "Num\u00e8ros de linhas", + "pad.settings.rtlcheck": "Lectura de drecha a esqu\u00e8rra", "pad.settings.fontType": "Tipe de poli\u00e7a :", "pad.settings.fontType.normal": "Normal", "pad.settings.fontType.monospaced": "Monospace", @@ -100,6 +101,8 @@ "timeslider.month.october": "Octobre", "timeslider.month.november": "Novembre", "timeslider.month.december": "Decembre", + "timeslider.unnamedauthor": "{{num}} autor anonime", + "timeslider.unnamedauthors": "{{num}} autors anonimes", "pad.savedrevs.marked": "Aquesta revision es ara marcada coma revision enregistrada", "pad.userlist.entername": "Entratz v\u00f2stre nom", "pad.userlist.unnamed": "sens nom", diff --git a/src/locales/pl.json b/src/locales/pl.json index 0b285b2e..c16fd5a8 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -79,7 +79,7 @@ "pad.share": "Udost\u0119pnij ten dokument", "pad.share.readonly": "Tylko do odczytu", "pad.share.link": "Link", - "pad.share.emebdcode": "Kod do umieszczenia", + "pad.share.emebdcode": "URL do umieszczenia", "pad.chat": "Czat", "pad.chat.title": "Otw\u00f3rz czat dla tego dokumentu.", "pad.chat.loadmessages": "Za\u0142aduj wi\u0119cej wiadomo\u015bci", diff --git a/src/locales/zh-hans.json b/src/locales/zh-hans.json index a7f0f81c..43975328 100644 --- a/src/locales/zh-hans.json +++ b/src/locales/zh-hans.json @@ -3,6 +3,7 @@ "authors": [ "Dimension", "Hydra", + "Shangkuanlc", "Yfdyh000", "\u4e4c\u62c9\u8de8\u6c2a", "\u71c3\u7389" @@ -37,6 +38,7 @@ "pad.settings.stickychat": "\u603b\u662f\u5728\u5c4f\u5e55\u4e0a\u663e\u793a\u804a\u5929", "pad.settings.colorcheck": "\u4f5c\u8005\u989c\u8272", "pad.settings.linenocheck": "\u884c\u53f7", + "pad.settings.rtlcheck": "\u4ece\u53f3\u5230\u5de6\u7684\u8bfb\u53d6\u5185\u5bb9\u5417\uff1f", "pad.settings.fontType": "\u5b57\u4f53\u7c7b\u578b\uff1a", "pad.settings.fontType.normal": "\u6b63\u5e38", "pad.settings.fontType.monospaced": "\u7b49\u5bbd\u5b57\u4f53", @@ -85,6 +87,7 @@ "timeslider.exportCurrent": "\u5bfc\u51fa\u76ee\u524d\u7248\u672c\u4e3a\uff1a", "timeslider.version": "\u7b2c {{version}} \u7248\u672c", "timeslider.saved": "\u5728{{year}}\u5e74{{month}}{{day}}\u65e5\u4fdd\u5b58", + "timeslider.dateformat": "{{year}} \u5e74 {{month}} \u6708 {{day}} \u65e5 {{hours}}\u65f6:{{minutes}}\u5206:{{seconds}}\u79d2", "timeslider.month.january": "\u4e00\u6708", "timeslider.month.february": "\u4e8c\u6708", "timeslider.month.march": "\u4e09\u6708", diff --git a/src/locales/zh-hant.json b/src/locales/zh-hant.json index c194545c..bb48b348 100644 --- a/src/locales/zh-hant.json +++ b/src/locales/zh-hant.json @@ -1,8 +1,9 @@ { "@metadata": { "authors": { - "0": "Shirayuki", - "2": "Simon Shek" + "0": "Shangkuanlc", + "1": "Shirayuki", + "3": "Simon Shek" } }, "index.newPad": "\u65b0Pad", @@ -17,8 +18,8 @@ "pad.toolbar.unindent.title": "\u51f8\u6392", "pad.toolbar.undo.title": "\u64a4\u92b7\uff08Ctrl-Z\uff09", "pad.toolbar.redo.title": "\u91cd\u505a\uff08Ctrl-Y\uff09", - "pad.toolbar.clearAuthorship.title": "\u6e05\u9664\u4f5c\u540d\u984f\u8272", - "pad.toolbar.import_export.title": "\u4ee5\u5176\u4ed6\u6a94\u6848\u683c\u5f0f\u5c0e\u5165\uff0f\u532f\u51fa", + "pad.toolbar.clearAuthorship.title": "\u6e05\u9664\u5354\u4f5c\u8005\u984f\u8272\u5340\u5225", + "pad.toolbar.import_export.title": "\u4ee5\u5176\u4ed6\u6a94\u6848\u683c\u5f0f\u532f\u5165\uff0f\u532f\u51fa", "pad.toolbar.timeslider.title": "\u6642\u9593\u8ef8", "pad.toolbar.savedRevision.title": "\u5132\u5b58\u4fee\u8a02", "pad.toolbar.settings.title": "\u8a2d\u5b9a", @@ -33,7 +34,7 @@ "pad.settings.padSettings": "Pad\u8a2d\u5b9a", "pad.settings.myView": "\u6211\u7684\u8996\u7a97", "pad.settings.stickychat": "\u6c38\u9060\u5728\u5c4f\u5e55\u4e0a\u986f\u793a\u804a\u5929", - "pad.settings.colorcheck": "\u4f5c\u8005\u984f\u8272", + "pad.settings.colorcheck": "\u5354\u4f5c\u8005\u984f\u8272", "pad.settings.linenocheck": "\u884c\u865f", "pad.settings.rtlcheck": "\u5f9e\u53f3\u81f3\u5de6\u8b80\u53d6\u5167\u5bb9\uff1f", "pad.settings.fontType": "\u5b57\u9ad4\u985e\u578b\uff1a", @@ -41,7 +42,7 @@ "pad.settings.fontType.monospaced": "\u7b49\u5bec", "pad.settings.globalView": "\u6240\u6709\u4eba\u7684\u8996\u7a97", "pad.settings.language": "\u8a9e\u8a00\uff1a", - "pad.importExport.import_export": "\u5c0e\u5165\uff0f\u532f\u51fa", + "pad.importExport.import_export": "\u532f\u5165\uff0f\u532f\u51fa", "pad.importExport.import": "\u4e0a\u8f09\u4efb\u4f55\u6587\u5b57\u6a94\u6216\u6587\u6a94", "pad.importExport.importSuccessful": "\u5b8c\u6210\uff01", "pad.importExport.export": "\u532f\u51fa\u7576\u524dpad\u70ba\uff1a", @@ -62,13 +63,13 @@ "pad.modals.unauth.explanation": "\u60a8\u7684\u6b0a\u9650\u5728\u67e5\u770b\u6b64\u9801\u6642\u767c\u751f\u66f4\u6539\u3002\u8acb\u5617\u8a66\u91cd\u65b0\u9023\u63a5\u3002", "pad.modals.looping": "\u5df2\u96e2\u7dda\u3002", "pad.modals.looping.explanation": "\u8207\u540c\u6b65\u4f3a\u670d\u5668\u9593\u6709\u901a\u4fe1\u554f\u984c\u3002", - "pad.modals.looping.cause": "\u4e5f\u8a31\u60a8\u901a\u904e\u4e00\u500b\u4e0d\u76f8\u5bb9\u7684\u9632\u706b\u7246\u6216\u4ee3\u7406\u4f3a\u670d\u5668\u9023\u63a5\u3002", + "pad.modals.looping.cause": "\u4e5f\u8a31\u60a8\u662f\u901a\u904e\u4e0d\u76f8\u5bb9\u7684\u9632\u706b\u7246\u6216\u4ee3\u7406\u4f3a\u670d\u5668\u9023\u7dda\u3002", "pad.modals.initsocketfail": "\u7121\u6cd5\u8a2a\u554f\u4f3a\u670d\u5668\u3002", "pad.modals.initsocketfail.explanation": "\u7121\u6cd5\u9023\u63a5\u5230\u540c\u6b65\u4f3a\u670d\u5668\u3002", - "pad.modals.initsocketfail.cause": "\u53ef\u80fd\u662f\u7531\u65bc\u60a8\u7684\u700f\u89bd\u5668\u6216\u60a8\u7684\u4e92\u806f\u7db2\u9023\u63a5\u7684\u554f\u984c\u3002", + "pad.modals.initsocketfail.cause": "\u9019\u53ef\u80fd\u662f\u56e0\u70ba\u700f\u89bd\u5668\u6216\u7db2\u969b\u7db2\u8def\u9023\u7dda\u554f\u984c\u6240\u9020\u6210\u3002", "pad.modals.slowcommit": "\u5df2\u96e2\u7dda\u3002", "pad.modals.slowcommit.explanation": "\u4f3a\u670d\u5668\u6c92\u6709\u56de\u61c9\u3002", - "pad.modals.slowcommit.cause": "\u53ef\u80fd\u662f\u7531\u65bc\u7db2\u8def\u9023\u63a5\u554f\u984c\u3002", + "pad.modals.slowcommit.cause": "\u9019\u53ef\u80fd\u662f\u56e0\u70ba\u7db2\u8def\u9023\u7dda\u554f\u984c\u6240\u9020\u6210\u3002", "pad.modals.deleted": "\u5df2\u522a\u9664\u3002", "pad.modals.deleted.explanation": "\u6b64pad\u5df2\u88ab\u79fb\u9664\u3002", "pad.modals.disconnected": "\u60a8\u5df2\u4e2d\u65b7\u9023\u7dda\u3002", @@ -78,17 +79,17 @@ "pad.share.readonly": "\u552f\u8b80", "pad.share.link": "\u9023\u7d50", "pad.share.emebdcode": "\u5d4c\u5165\u7db2\u5740", - "pad.chat": "\u804a\u5929", - "pad.chat.title": "\u6253\u958b\u6b64pad\u7684\u804a\u5929\u3002", + "pad.chat": "\u804a\u5929\u529f\u80fd", + "pad.chat.title": "\u6253\u958bpad\u804a\u5929\u529f\u80fd", "pad.chat.loadmessages": "\u8f09\u5165\u66f4\u591a\u8a0a\u606f", "timeslider.pageTitle": "{{appTitle}}\u6642\u9593\u8ef8", "timeslider.toolbar.returnbutton": "\u8fd4\u56de\u5230pad", - "timeslider.toolbar.authors": "\u4f5c\u8005\uff1a", - "timeslider.toolbar.authorsList": "\u7121\u4f5c\u8005", + "timeslider.toolbar.authors": "\u5354\u4f5c\u8005\uff1a", + "timeslider.toolbar.authorsList": "\u7121\u5354\u4f5c\u8005", "timeslider.toolbar.exportlink.title": "\u532f\u51fa", "timeslider.exportCurrent": "\u532f\u51fa\u7576\u524d\u7248\u672c\u70ba\uff1a", "timeslider.version": "\u7248\u672c{{version}}", - "timeslider.saved": "{{year}}\u5e74{{month}}{{day}}\u65e5\u4fdd\u5b58", + "timeslider.saved": "{{year}}\u5e74{{month}}\u6708{{day}}\u65e5\u5132\u5b58", "timeslider.dateformat": "{{year}}\u5e74{{month}}\u6708{{day}}\u65e5 {{hours}}:{{minutes}}:{{seconds}}", "timeslider.month.january": "1\u6708", "timeslider.month.february": "2\u6708", @@ -102,15 +103,15 @@ "timeslider.month.october": "10\u6708", "timeslider.month.november": "11\u6708", "timeslider.month.december": "12\u6708", - "timeslider.unnamedauthor": "{{num}} \u533f\u540d\u4f5c\u8005", - "timeslider.unnamedauthors": "{{num}} \u533f\u540d\u4f5c\u8005", - "pad.savedrevs.marked": "\u6b64\u4fee\u8a02\u5df2\u6a19\u8a18\u70ba\u5df2\u4fdd\u5b58\u3002", + "timeslider.unnamedauthor": "{{num}} \u533f\u540d\u5354\u4f5c\u8005", + "timeslider.unnamedauthors": "{{num}} \u533f\u540d\u5354\u4f5c\u8005", + "pad.savedrevs.marked": "\u6a19\u8a18\u6b64\u4fee\u8a02\u7248\u672c\u70ba\u5df2\u5132\u5b58\u4fee\u8a02\u7248\u672c\u3002", "pad.userlist.entername": "\u8f38\u5165\u60a8\u7684\u59d3\u540d", "pad.userlist.unnamed": "\u672a\u547d\u540d", "pad.userlist.guest": "\u8a2a\u5ba2", "pad.userlist.deny": "\u62d2\u7d55", "pad.userlist.approve": "\u6279\u51c6", - "pad.editbar.clearcolors": "\u6e05\u9664\u6574\u500b\u6587\u6a94\u7684\u4f5c\u8005\u984f\u8272\u55ce\uff1f", + "pad.editbar.clearcolors": "\u6e05\u9664\u6574\u500b\u6587\u6a94\u7684\u5354\u4f5c\u8005\u984f\u8272\u5340\u5225\u55ce\uff1f", "pad.impexp.importbutton": "\u73fe\u5728\u532f\u5165", "pad.impexp.importing": "\u532f\u5165\u4e2d...", "pad.impexp.confirmimport": "\u532f\u5165\u7684\u6a94\u6848\u5c07\u6703\u8986\u84cbpad\u5167\u76ee\u524d\u7684\u6587\u5b57\u3002\u60a8\u78ba\u5b9a\u8981\u7e7c\u7e8c\u55ce\uff1f", From b4f155c02851de25a718684c4d2fbc99566c6117 Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Wed, 12 Jun 2013 11:20:36 -0500 Subject: [PATCH 10/39] Cleanup gophers --- src/static/js/linestylefilter.js | 2 +- src/static/js/pad_utils.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/static/js/linestylefilter.js b/src/static/js/linestylefilter.js index e6fbc209..af3d09d9 100644 --- a/src/static/js/linestylefilter.js +++ b/src/static/js/linestylefilter.js @@ -260,7 +260,7 @@ linestylefilter.getRegexpFilter = function(regExp, tag) linestylefilter.REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/; linestylefilter.REGEX_URLCHAR = new RegExp('(' + /[-:@a-zA-Z0-9_.,~%+\/\\?=&#!;()$]/.source + '|' + linestylefilter.REGEX_WORDCHAR.source + ')'); -linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\/\/|mailto:|www\.)/.source + linestylefilter.REGEX_URLCHAR.source + '*(?![:.,;])' + linestylefilter.REGEX_URLCHAR.source, 'g'); +linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|txmt):\/\/|mailto:|www\.)/.source + linestylefilter.REGEX_URLCHAR.source + '*(?![:.,;])' + linestylefilter.REGEX_URLCHAR.source, 'g'); linestylefilter.getURLFilter = linestylefilter.getRegexpFilter( linestylefilter.REGEX_URL, 'url'); diff --git a/src/static/js/pad_utils.js b/src/static/js/pad_utils.js index deee2dfd..07e7463a 100644 --- a/src/static/js/pad_utils.js +++ b/src/static/js/pad_utils.js @@ -176,7 +176,7 @@ var padutils = { // copied from ACE var _REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/; var _REGEX_URLCHAR = new RegExp('(' + /[-:@a-zA-Z0-9_.,~%+\/?=&#;()$]/.source + '|' + _REGEX_WORDCHAR.source + ')'); - var _REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\/\/|mailto:)/.source + _REGEX_URLCHAR.source + '*(?![:.,;])' + _REGEX_URLCHAR.source, 'g'); + var _REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|txmt):\/\/|mailto:)/.source + _REGEX_URLCHAR.source + '*(?![:.,;])' + _REGEX_URLCHAR.source, 'g'); // returns null if no URLs, or [[startIndex1, url1], [startIndex2, url2], ...] From 82de797642dbf18b93b8183466ec0494ca8dcb57 Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Wed, 12 Jun 2013 12:31:38 -0500 Subject: [PATCH 11/39] Only kept URL schemes which have an RFC standard --- src/static/js/linestylefilter.js | 2 +- src/static/js/pad_utils.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/static/js/linestylefilter.js b/src/static/js/linestylefilter.js index af3d09d9..dc807885 100644 --- a/src/static/js/linestylefilter.js +++ b/src/static/js/linestylefilter.js @@ -260,7 +260,7 @@ linestylefilter.getRegexpFilter = function(regExp, tag) linestylefilter.REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/; linestylefilter.REGEX_URLCHAR = new RegExp('(' + /[-:@a-zA-Z0-9_.,~%+\/\\?=&#!;()$]/.source + '|' + linestylefilter.REGEX_WORDCHAR.source + ')'); -linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|txmt):\/\/|mailto:|www\.)/.source + linestylefilter.REGEX_URLCHAR.source + '*(?![:.,;])' + linestylefilter.REGEX_URLCHAR.source, 'g'); +linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|nfs):\/\/|mailto:|www\.)/.source + linestylefilter.REGEX_URLCHAR.source + '*(?![:.,;])' + linestylefilter.REGEX_URLCHAR.source, 'g'); linestylefilter.getURLFilter = linestylefilter.getRegexpFilter( linestylefilter.REGEX_URL, 'url'); diff --git a/src/static/js/pad_utils.js b/src/static/js/pad_utils.js index 07e7463a..50525e0c 100644 --- a/src/static/js/pad_utils.js +++ b/src/static/js/pad_utils.js @@ -176,7 +176,7 @@ var padutils = { // copied from ACE var _REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/; var _REGEX_URLCHAR = new RegExp('(' + /[-:@a-zA-Z0-9_.,~%+\/?=&#;()$]/.source + '|' + _REGEX_WORDCHAR.source + ')'); - var _REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|txmt):\/\/|mailto:)/.source + _REGEX_URLCHAR.source + '*(?![:.,;])' + _REGEX_URLCHAR.source, 'g'); + var _REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|nfs):\/\/|mailto:)/.source + _REGEX_URLCHAR.source + '*(?![:.,;])' + _REGEX_URLCHAR.source, 'g'); // returns null if no URLs, or [[startIndex1, url1], [startIndex2, url2], ...] From 8278ef3c7c01b1f6f9cafc2d5b8e64ca729f8390 Mon Sep 17 00:00:00 2001 From: dummys Date: Thu, 13 Jun 2013 15:10:32 +0200 Subject: [PATCH 12/39] added log4js 0.6.6 --- src/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/package.json b/src/package.json index 281a7929..c63cbbc2 100644 --- a/src/package.json +++ b/src/package.json @@ -23,7 +23,7 @@ "clean-css" : "0.3.2", "uglify-js" : "1.2.5", "formidable" : "1.0.9", - "log4js" : "0.5.x", + "log4js" : "0.6.6", "nodemailer" : "0.3.x", "jsdom-nocontextifiy" : "0.2.10", "async-stacktrace" : "0.0.2", From f31db205dafd8a8711db583975b8b2aab568303a Mon Sep 17 00:00:00 2001 From: Chia-liang Kao Date: Sat, 15 Jun 2013 01:37:41 +0800 Subject: [PATCH 13/39] allow cssmanager to manage outer_ace --- src/static/js/ace.js | 26 +++---- src/static/js/ace2_inner.js | 141 ++++++++++++++++++------------------ src/static/js/cssmanager.js | 32 ++++++-- 3 files changed, 110 insertions(+), 89 deletions(-) diff --git a/src/static/js/ace.js b/src/static/js/ace.js index 83ad9447..db0d596b 100644 --- a/src/static/js/ace.js +++ b/src/static/js/ace.js @@ -1,5 +1,5 @@ /** - * This code is mostly from the old Etherpad. Please help us to comment this code. + * This code is mostly from the old Etherpad. Please help us to comment this code. * This helps other people to understand this code better and helps them to improve it. * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED */ @@ -86,7 +86,7 @@ function Ace2Editor() }); actionsPendingInit = []; } - + ace2.registry[info.id] = info; // The following functions (prefixed by 'ace_') are exposed by editor, but @@ -97,7 +97,7 @@ function Ace2Editor() 'applyChangesToBase', 'applyPreparedChangesetToBase', 'setUserChangeNotificationCallback', 'setAuthorInfo', 'setAuthorSelectionRange', 'callWithAce', 'execCommand', 'replaceRange']; - + _.each(aceFunctionsPendingInit, function(fnName,i){ var prefix = 'ace_'; var name = prefix + fnName; @@ -105,18 +105,18 @@ function Ace2Editor() info[prefix + fnName].apply(this, arguments); }); }); - + editor.exportText = function() { if (!loaded) return "(awaiting init)\n"; return info.ace_exportText(); }; - + editor.getFrame = function() { return info.frame || null; }; - + editor.getDebugProperty = function(prop) { return info.ace_getDebugProperty(prop); @@ -221,16 +221,16 @@ function Ace2Editor() // calls to these functions ($$INCLUDE_...) are replaced when this file is processed // and compressed, putting the compressed code from the named file directly into the // source here. - // these lines must conform to a specific format because they are passed by the build script: + // these lines must conform to a specific format because they are passed by the build script: var includedCSS = []; var $$INCLUDE_CSS = function(filename) {includedCSS.push(filename)}; $$INCLUDE_CSS("../static/css/iframe_editor.css"); $$INCLUDE_CSS("../static/css/pad.css"); $$INCLUDE_CSS("../static/custom/pad.css"); - + var additionalCSS = _(hooks.callAll("aceEditorCSS")).map(function(path){ return '../static/plugins/' + path }); includedCSS = includedCSS.concat(additionalCSS); - + pushStyleTagsFor(iframeHTML, includedCSS); if (!Ace2Editor.EMBEDED && Ace2Editor.EMBEDED[KERNEL_SOURCE]) { @@ -304,16 +304,16 @@ window.onload = function () {\n\ $$INCLUDE_CSS("../static/css/iframe_editor.css"); $$INCLUDE_CSS("../static/css/pad.css"); $$INCLUDE_CSS("../static/custom/pad.css"); - - + + var additionalCSS = _(hooks.callAll("aceEditorCSS")).map(function(path){ return '../static/plugins/' + path }); includedCSS = includedCSS.concat(additionalCSS); - + pushStyleTagsFor(outerHTML, includedCSS); // bizarrely, in FF2, a file with no "external" dependencies won't finish loading properly // (throbs busy while typing) - outerHTML.push('', scriptTag(outerScript), '
x
'); + outerHTML.push('', '', scriptTag(outerScript), '
x
'); var outerFrame = document.createElement("IFRAME"); outerFrame.name = "ace_outer"; diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index f8b266b4..97540191 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -1,5 +1,5 @@ /** - * This code is mostly from the old Etherpad. Please help us to comment this code. + * This code is mostly from the old Etherpad. Please help us to comment this code. * This helps other people to understand this code better and helps them to improve it. * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED */ @@ -36,10 +36,10 @@ var isNodeText = Ace2Common.isNodeText, htmlPrettyEscape = Ace2Common.htmlPrettyEscape, noop = Ace2Common.noop; var hooks = require('./pluginfw/hooks'); - + function Ace2Inner(){ - + var makeChangesetTracker = require('./changesettracker').makeChangesetTracker; var colorutils = require('./colorutils').colorutils; var makeContentCollector = require('./contentcollector').makeContentCollector; @@ -53,9 +53,9 @@ function Ace2Inner(){ var undoModule = require('./undomodule').undoModule; var makeVirtualLineView = require('./virtual_lines').makeVirtualLineView; var AttributeManager = require('./AttributeManager'); - + var DEBUG = false; //$$ build script replaces the string "var DEBUG=true;//$$" with "var DEBUG=false;" - // changed to false + // changed to false var isSetUp = false; var THE_TAB = ' '; //4 @@ -83,9 +83,9 @@ function Ace2Inner(){ initLineNumbers(); var outsideKeyDown = noop; - + var outsideKeyPress = function(){return true;}; - + var outsideNotifyDirty = noop; // selFocusAtStart -- determines whether the selection extends "backwards", so that the focus @@ -101,7 +101,7 @@ function Ace2Inner(){ alines: [], apool: new AttribPool() }; - + // lines, alltext, alines, and DOM are set up in setup() if (undoModule.enabled) { @@ -113,7 +113,7 @@ function Ace2Inner(){ var doesWrap = true; var hasLineNumbers = true; var isStyled = true; - + // space around the innermost iframe element var iframePadLeft = MIN_LINEDIV_WIDTH + LINE_NUMBER_PADDING_RIGHT + EDIT_BODY_PADDING_LEFT; var iframePadTop = EDIT_BODY_PADDING_TOP; @@ -122,7 +122,7 @@ function Ace2Inner(){ var console = (DEBUG && window.console); var documentAttributeManager; - + if (!window.console) { var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; @@ -159,7 +159,7 @@ function Ace2Inner(){ var textFace = 'monospace'; var textSize = 12; - + function textLineHeight() { @@ -167,12 +167,14 @@ function Ace2Inner(){ } var dynamicCSS = null; + var outerDynamicCSS = null; var parentDynamicCSS = null; function initDynamicCSS() { dynamicCSS = makeCSSManager("dynamicsyntax"); - parentDynamicCSS = makeCSSManager("dynamicsyntax", true); + outerDynamicCSS = makeCSSManager("dynamicsyntax", "outer"); + parentDynamicCSS = makeCSSManager("dynamicsyntax", "parent"); } var changesetTracker = makeChangesetTracker(scheduler, rep.apool, { @@ -218,6 +220,7 @@ function Ace2Inner(){ var authorStyleSet = hooks.callAll('aceSetAuthorStyle', { dynamicCSS: dynamicCSS, parentDynamicCSS: parentDynamicCSS, + outerDynamicCSS: outerDynamicCSS, info: info, author: author, authorSelector: authorSelector, @@ -562,8 +565,8 @@ function Ace2Inner(){ { return rep.lines.atOffset(charOffset).key; } - - + + function dispose() { disposed = true; @@ -918,14 +921,14 @@ function Ace2Inner(){ editorInfo.ace_doReturnKey = doReturnKey; editorInfo.ace_isBlockElement = isBlockElement; editorInfo.ace_getLineListType = getLineListType; - + editorInfo.ace_callWithAce = function(fn, callStack, normalize) { var wrapper = function() { return fn(editorInfo); }; - + if (normalize !== undefined) { var wrapper1 = wrapper; @@ -951,14 +954,14 @@ function Ace2Inner(){ // @param value the value to set to editorInfo.ace_setProperty = function(key, value) { - - // Convinience function returning a setter for a class on an element + + // Convinience function returning a setter for a class on an element var setClassPresenceNamed = function(element, cls){ return function(value){ setClassPresence(element, cls, !! value) } }; - + // These properties are exposed var setters = { wraps: setWraps, @@ -973,7 +976,7 @@ function Ace2Inner(){ }, grayedout: setClassPresenceNamed(outerWin.document.body, "grayedout"), dmesg: function(){ dmesg = window.dmesg = value; }, - userauthor: function(value){ + userauthor: function(value){ thisAuthor = String(value); documentAttributeManager.author = thisAuthor; }, @@ -986,10 +989,10 @@ function Ace2Inner(){ document.documentElement.dir = value? 'rtl' : 'ltr' } }; - + var setter = setters[key.toLowerCase()]; - - // check if setter is present + + // check if setter is present if(setter !== undefined){ setter(value) } @@ -1098,7 +1101,7 @@ function Ace2Inner(){ return false; } }; - + isTimeUp.elapsed = function() { return now() - startTime; @@ -1479,7 +1482,7 @@ function Ace2Inner(){ var p = PROFILER("getSelection", false); var selection = getSelection(); p.end(); - + function topLevel(n) { if ((!n) || n == root) return null; @@ -1489,7 +1492,7 @@ function Ace2Inner(){ } return n; } - + if (selection) { var node1 = topLevel(selection.startPoint.node); @@ -1747,7 +1750,7 @@ function Ace2Inner(){ root:root, point:selection.startPoint, documentAttributeManager: documentAttributeManager - }); + }); selStart = (selStartFromHook==null||selStartFromHook.length==0)?getLineAndCharForPoint(selection.startPoint):selStartFromHook; } if (selection && !selEnd) @@ -1760,7 +1763,7 @@ function Ace2Inner(){ point:selection.endPoint, documentAttributeManager: documentAttributeManager }); - selEnd = (selEndFromHook==null||selEndFromHook.length==0)?getLineAndCharForPoint(selection.endPoint):selEndFromHook; + selEnd = (selEndFromHook==null||selEndFromHook.length==0)?getLineAndCharForPoint(selection.endPoint):selEndFromHook; } // selection from content collection can, in various ways, extend past final @@ -1781,7 +1784,7 @@ function Ace2Inner(){ // update rep if we have a new selection // NOTE: IE loses the selection when you click stuff in e.g. the // editbar, so removing the selection when it's lost is not a good - // idea. + // idea. if (selection) repSelectionChange(selStart, selEnd, selection && selection.focusAtStart); // update browser selection p.mark("browsel"); @@ -1916,19 +1919,19 @@ function Ace2Inner(){ return rep.selStart[0]; } editorInfo.ace_caretLine = caretLine; - + function caretColumn() { return rep.selStart[1]; } editorInfo.ace_caretColumn = caretColumn; - + function caretDocChar() { return rep.lines.offsetOfIndex(caretLine()) + caretColumn(); } editorInfo.ace_caretDocChar = caretDocChar; - + function handleReturnIndentation() { // on return, indent to level of previous line @@ -2357,8 +2360,8 @@ function Ace2Inner(){ documentAttributeManager.setAttributesOnRange(lineAndColumnFromChar(start), lineAndColumnFromChar(end), attribs); } editorInfo.ace_performDocumentApplyAttributesToCharRange = performDocumentApplyAttributesToCharRange; - - + + function setAttributeOnSelection(attributeName, attributeValue) { if (!(rep.selStart && rep.selEnd)) return; @@ -2921,7 +2924,7 @@ function Ace2Inner(){ { if (lineClass !== null) lineElem.className = lineClass; }; - + result.prepareForAdd = writeClass; result.finishUpdate = writeClass; result.getInnerHTML = function() @@ -3283,7 +3286,7 @@ function Ace2Inner(){ { return (n.tagName || '').toLowerCase() == "a" && n.href; } - + // only want to catch left-click if ((!evt.ctrlKey) && (evt.button != 2) && (evt.button != 3)) { @@ -3319,7 +3322,7 @@ function Ace2Inner(){ { return; } - + var lineNum = rep.selStart[0]; var listType = getLineListType(lineNum); @@ -3444,9 +3447,9 @@ function Ace2Inner(){ var thisLineListType = getLineListType(theLine); var prevLineEntry = (theLine > 0 && rep.lines.atIndex(theLine - 1)); var prevLineBlank = (prevLineEntry && prevLineEntry.text.length == prevLineEntry.lineMarker); - + var thisLineHasMarker = documentAttributeManager.lineHasMarker(theLine); - + if (thisLineListType) { // this line is a list @@ -3521,7 +3524,7 @@ function Ace2Inner(){ return !!REGEX_WORDCHAR.exec(c); } editorInfo.ace_isWordChar = isWordChar; - + function isSpaceChar(c) { return !!REGEX_SPACE.exec(c); @@ -4151,7 +4154,7 @@ function Ace2Inner(){ maxIndex: tn.nodeValue.length }; }; - + var selection = {}; if (origSelectionRange.compareEndPoints("StartToEnd", origSelectionRange) === 0) { @@ -4255,7 +4258,7 @@ function Ace2Inner(){ selection.startPoint = pointFromRangeBound(range.startContainer, range.startOffset); selection.endPoint = pointFromRangeBound(range.endContainer, range.endOffset); selection.focusAtStart = (((range.startContainer != range.endContainer) || (range.startOffset != range.endOffset)) && browserSelection.anchorNode && (browserSelection.anchorNode == range.endContainer) && (browserSelection.anchorOffset == range.endOffset)); - + if(selection.startPoint.node.ownerDocument !== window.document){ return null; } @@ -5020,9 +5023,9 @@ function Ace2Inner(){ } } } - + var listAttributeName = 'list'; - + function getLineListType(lineNum) { return documentAttributeManager.getAttributeOnLine(lineNum, listAttributeName) @@ -5035,7 +5038,7 @@ function Ace2Inner(){ }else{ documentAttributeManager.setAttributeOnLine(lineNum, listAttributeName, listType); } - + //if the list has been removed, it is necessary to renumber //starting from the *next* line because the list may have been //separated. If it returns null, it means that the list was not cut, try @@ -5045,7 +5048,7 @@ function Ace2Inner(){ renumberList(lineNum); } } - + function renumberList(lineNum){ //1-check we are in a list var type = getLineListType(lineNum); @@ -5058,7 +5061,7 @@ function Ace2Inner(){ { return null; } - + //2-find the first line of the list while(lineNum-1 >= 0 && (type=getLineListType(lineNum-1))) { @@ -5067,7 +5070,7 @@ function Ace2Inner(){ break; lineNum--; } - + //3-renumber every list item of the same level from the beginning, level 1 //IMPORTANT: never skip a level because there imbrication may be arbitrary var builder = Changeset.builder(rep.lines.totalWidth()); @@ -5094,7 +5097,7 @@ function Ace2Inner(){ ChangesetUtils.buildKeepRange(rep, builder, loc, (loc = [line, 1]), [ ['start', position] ], rep.apool); - + position++; line++; } @@ -5109,19 +5112,19 @@ function Ace2Inner(){ } return line; } - + applyNumberList(lineNum, 1); var cs = builder.toString(); if (!Changeset.isIdentity(cs)) { performDocumentApplyChangeset(cs); } - + //4-apply the modifications - - + + } - + function doInsertList(type) { @@ -5159,7 +5162,7 @@ function Ace2Inner(){ var t = getLineListType(n); mods.push([n, allLinesAreList ? 'indent' + level : (t ? type + level : type + '1')]); } - + _.each(mods, function(mod){ setLineListType(mod[0], mod[1]); }); @@ -5173,7 +5176,7 @@ function Ace2Inner(){ } editorInfo.ace_doInsertUnorderedList = doInsertUnorderedList; editorInfo.ace_doInsertOrderedList = doInsertOrderedList; - + var lineNumbersShown; var sideDivInner; @@ -5189,11 +5192,11 @@ function Ace2Inner(){ var newNumLines = rep.lines.length(); if (newNumLines < 1) newNumLines = 1; //update height of all current line numbers - + var a = sideDivInner.firstChild; var b = doc.body.firstChild; var n = 0; - + if (currentCallStack && currentCallStack.domClean) { @@ -5222,8 +5225,8 @@ function Ace2Inner(){ b = b.nextSibling; n++; } - } - + } + if (newNumLines != lineNumbersShown) { var container = sideDivInner; @@ -5233,27 +5236,27 @@ function Ace2Inner(){ { lineNumbersShown++; var n = lineNumbersShown; - var div = odoc.createElement("DIV"); + var div = odoc.createElement("DIV"); //calculate height for new line number if(b){ var h = (b.clientHeight || b.offsetHeight); - + if (b.nextSibling){ h = b.nextSibling.offsetTop - b.offsetTop; } } - + if(h){ // apply style to div div.style.height = h +"px"; } - + div.appendChild(odoc.createTextNode(String(n))); fragment.appendChild(div); if(b){ b = b.nextSibling; } } - + container.appendChild(fragment); while (lineNumbersShown > newNumLines) { @@ -5262,8 +5265,8 @@ function Ace2Inner(){ } } } - - + + // Init documentAttributeManager documentAttributeManager = new AttributeManager(rep, performDocumentApplyChangeset); editorInfo.ace_performDocumentApplyAttributesToRange = function () { @@ -5309,13 +5312,13 @@ function Ace2Inner(){ bindTheEventHandlers(); }); - + hooks.callAll('aceInitialized', { editorInfo: editorInfo, rep: rep, documentAttributeManager: documentAttributeManager }); - + scheduler.setTimeout(function() { parent.readyFunc(); // defined in code that sets up the inner iframe diff --git a/src/static/js/cssmanager.js b/src/static/js/cssmanager.js index 62f17496..710cdbe5 100644 --- a/src/static/js/cssmanager.js +++ b/src/static/js/cssmanager.js @@ -1,5 +1,5 @@ /** - * This code is mostly from the old Etherpad. Please help us to comment this code. + * This code is mostly from the old Etherpad. Please help us to comment this code. * This helps other people to understand this code better and helps them to improve it. * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED */ @@ -20,14 +20,32 @@ * limitations under the License. */ -function makeCSSManager(emptyStylesheetTitle, parentCss) +function makeCSSManager(emptyStylesheetTitle, doc) { + if (doc === true) + { + doc = 'parent'; + } else if (!doc) { + doc = 'inner'; + } function getSheetByTitle(title) { - if (parentCss) var allSheets = window.parent.parent.document.styleSheets; - else var allSheets = document.styleSheets; - + if (doc === 'parent') + { + win = window.parent.parent; + } + else if (doc === 'inner') { + win = window; + } + else if (doc === 'outer') { + win = window.parent; + } + else { + throw "Unknown dynamic style container"; + } + var allSheets = win.document.styleSheets; + for (var i = 0; i < allSheets.length; i++) { var s = allSheets[i]; @@ -38,8 +56,8 @@ function makeCSSManager(emptyStylesheetTitle, parentCss) } return null; } - - var browserSheet = getSheetByTitle(emptyStylesheetTitle, parentCss); + + var browserSheet = getSheetByTitle(emptyStylesheetTitle); function browserRules() { From 8f262d0eded8798967efb8d1b2d6ec414316a9e9 Mon Sep 17 00:00:00 2001 From: Chia-liang Kao Date: Sat, 15 Jun 2013 11:07:13 +0800 Subject: [PATCH 14/39] document aceSetAuthorStyle --- doc/api/hooks_client-side.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/api/hooks_client-side.md b/doc/api/hooks_client-side.md index 91985941..80dcc52a 100644 --- a/doc/api/hooks_client-side.md +++ b/doc/api/hooks_client-side.md @@ -261,3 +261,18 @@ This hook is provided to allow whether a given line should be deliniated with mu Multiple authors in one line cause the creation of magic span lines. This might not suit you and now you can disable it and handle your own deliniation. The return value should be either true(disable) or false. + +## aceSetAuthorStyle +Called from: src/static/js/ace2_inner.js + +Things in context: + +1. dynamicCSS - css manger for inner ace +2. outerDynamicCSS - css manager for outer ace +3. parentDynamicCSS - css manager for parent document +4. info - author style info +5. author - author info +6. authorSelector - css selector for author span in inner ace + +This hook is provided to allow author highlight style to be modified. +Registered hooks should return 1 if the plugin handles highlighting. If no plugin returns 1, the core will use the default background-based highlighting. From 837d3bcfbffd6af980e823a31a3a65af750708d5 Mon Sep 17 00:00:00 2001 From: Chia-liang Kao Date: Fri, 7 Jun 2013 01:16:04 +0800 Subject: [PATCH 15/39] Update sauce key --- .travis.yml | 6 +++--- tests/frontend/travis/sauce_tunnel.sh | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1c40a4ec..74f68f86 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,14 +4,14 @@ node_js: install: - "bin/installDeps.sh" - "export GIT_HASH=$(cat .git/HEAD | head -c 7)" -before_script: +before_script: - "tests/frontend/travis/sauce_tunnel.sh" script: - "tests/frontend/travis/runner.sh" env: global: - - secure: "gVR70BdAh093qBS5P5+V5NzmCYnLFFeIZn3XdgTpgpGRm7UE8GP53TEobtPf\neqpEpbWRTsEbdf+QPisVWrBZcNPFU4I3nucIqdyVobIcQD0TbBQYudm0yLQd\n3Ocqck0BIx9Ni9hBklJupmKt89LDQxNvkEb+uJJqlQwo2RZd36U=" - - SAUCE_USER=etherpad + - secure: "WMGxFkOeTTlhWB+ChMucRtIqVmMbwzYdNHuHQjKCcj8HBEPdZLfCuK/kf4rG\nVLcLQiIsyllqzNhBGVHG1nyqWr0/LTm8JRqSCDDVIhpyzp9KpCJQQJG2Uwjk\n6/HIJJh/wbxsEdLNV2crYU/EiVO3A4Bq0YTHUlbhUqG3mSCr5Ec=" + - secure: "gejXUAHYscbR6Bodw35XexpToqWkv2ifeECsbeEmjaLkYzXmUUNWJGknKSu7\nEUsSfQV8w+hxApr1Z+jNqk9aX3K1I4btL3cwk2trnNI8XRAvu1c1Iv60eerI\nkE82Rsd5lwUaMEh+/HoL8ztFCZamVndoNgX7HWp5J/NRZZMmh4g=" jdk: - oraclejdk6 notifications: diff --git a/tests/frontend/travis/sauce_tunnel.sh b/tests/frontend/travis/sauce_tunnel.sh index 21ff3ff5..f519f8d9 100755 --- a/tests/frontend/travis/sauce_tunnel.sh +++ b/tests/frontend/travis/sauce_tunnel.sh @@ -4,7 +4,7 @@ curl http://saucelabs.com/downloads/Sauce-Connect-latest.zip > /tmp/sauce.zip unzip /tmp/sauce.zip -d /tmp # start the sauce connector in background and make sure it doesn't output the secret key -(java -jar /tmp/Sauce-Connect.jar $SAUCE_USER $SAUCE_ACCESS_KEY -f /tmp/tunnel > /dev/null )& +(java -jar /tmp/Sauce-Connect.jar $SAUCE_USERNAME $SAUCE_ACCESS_KEY -f /tmp/tunnel > /dev/null )& # save the sauce pid in a file echo $! > /tmp/sauce.pid From 315e229c8364cff7713e6b5ea8c3ba3b7a46179a Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Mon, 17 Jun 2013 11:28:14 +0000 Subject: [PATCH 16/39] Localisation updates from http://translatewiki.net. --- src/locales/ar.json | 34 ++++++++++++- src/locales/eu.json | 121 ++++++++++++++++++++++++++++++++++++++++++++ src/locales/fo.json | 12 ++--- src/locales/fr.json | 2 +- src/locales/km.json | 12 ++--- src/locales/lt.json | 12 ++--- 6 files changed, 172 insertions(+), 21 deletions(-) create mode 100644 src/locales/eu.json diff --git a/src/locales/ar.json b/src/locales/ar.json index 43d3bb07..339a7fde 100644 --- a/src/locales/ar.json +++ b/src/locales/ar.json @@ -5,6 +5,8 @@ "Tux-tn" ] }, + "index.newPad": "\u0628\u0627\u062f \u062c\u062f\u064a\u062f", + "index.createOpenPad": "\u0623\u0648 \u0635\u0646\u0639/\u0641\u062a\u062d \u0628\u0627\u062f \u0628\u0648\u0636\u0639 \u0625\u0633\u0645\u0647:", "pad.toolbar.bold.title": "\u0633\u0645\u064a\u0643 (Ctrl-B)", "pad.toolbar.italic.title": "\u0645\u0627\u0626\u0644 (Ctrl-I)", "pad.toolbar.underline.title": "\u062a\u0633\u0637\u064a\u0631 (Ctrl-U)", @@ -17,20 +19,31 @@ "pad.toolbar.redo.title": "\u062a\u0643\u0631\u0627\u0631 (Ctrl-Y)", "pad.toolbar.import_export.title": "\u0627\u0633\u062a\u064a\u0631\u0627\u062f/\u062a\u0635\u062f\u064a\u0631 \u0645\u0646/\u0625\u0644\u0649 \u062a\u0646\u0633\u064a\u0642\u0627\u062a \u0645\u0644\u0641\u0627\u062a \u0645\u062e\u062a\u0644\u0641\u0629", "pad.toolbar.timeslider.title": "\u0645\u062a\u0635\u0641\u062d \u0627\u0644\u062a\u0627\u0631\u064a\u062e", - "pad.toolbar.savedRevision.title": "\u0627\u0644\u062a\u0646\u0642\u064a\u062d\u0627\u062a \u0627\u0644\u0645\u062d\u0641\u0648\u0638\u0629", + "pad.toolbar.savedRevision.title": "\u062d\u0641\u0638 \u0627\u0644\u0645\u0631\u0627\u062c\u0639\u0629", "pad.toolbar.settings.title": "\u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a", + "pad.toolbar.embed.title": "\u062a\u0628\u0627\u062f\u0644 \u0648 \u062a\u0636\u0645\u064a\u0646 \u0647\u0630\u0627 \u0627\u0644\u0628\u0627\u062f", + "pad.toolbar.showusers.title": "\u0639\u0631\u0636 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0628\u0627\u062f", "pad.colorpicker.save": "\u062a\u0633\u062c\u064a\u0644", "pad.colorpicker.cancel": "\u0625\u0644\u063a\u0627\u0621", "pad.loading": "\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u0645\u064a\u0644...", + "pad.passwordRequired": "\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0644\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0628\u0627\u062f", + "pad.permissionDenied": "\u0644\u064a\u0633 \u0644\u062f\u064a\u0643 \u0625\u0630\u0646 \u0644\u062f\u062e\u0648\u0644 \u0647\u0630\u0627 \u0627\u0644\u0628\u0627\u062f", + "pad.wrongPassword": "\u0643\u0627\u0646\u062a \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u062e\u0627\u0637\u0626\u0629", + "pad.settings.padSettings": "\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0628\u0627\u062f", + "pad.settings.myView": "\u0631\u0624\u064a\u062a\u064a", "pad.settings.stickychat": "\u0627\u0644\u062f\u0631\u062f\u0634\u0629 \u062f\u0627\u0626\u0645\u0627 \u0639\u0644\u0649 \u0627\u0644\u0634\u0627\u0634\u0629", + "pad.settings.colorcheck": "\u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u062a\u0623\u0644\u064a\u0641", "pad.settings.linenocheck": "\u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0623\u0633\u0637\u0631", + "pad.settings.rtlcheck": "\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0625\u0644\u0649 \u0627\u0644\u064a\u0633\u0627\u0631\u061f", "pad.settings.fontType": "\u0646\u0648\u0639 \u0627\u0644\u062e\u0637:", "pad.settings.fontType.normal": "\u0639\u0627\u062f\u064a", "pad.settings.fontType.monospaced": "\u062b\u0627\u0628\u062a \u0627\u0644\u0639\u0631\u0636", + "pad.settings.globalView": "\u0627\u0644\u0631\u0624\u064a\u0629 \u0627\u0644\u0634\u0627\u0645\u0644\u0629", "pad.settings.language": "\u0627\u0644\u0644\u063a\u0629:", "pad.importExport.import_export": "\u0627\u0633\u062a\u064a\u0631\u0627\u062f/\u062a\u0635\u062f\u064a\u0631", "pad.importExport.import": "\u062a\u062d\u0645\u064a\u0644 \u0623\u064a \u0645\u0644\u0641 \u0646\u0635\u064a \u0623\u0648 \u0648\u062b\u064a\u0642\u0629", "pad.importExport.importSuccessful": "\u0646\u0627\u062c\u062d!", + "pad.importExport.export": "\u062a\u0635\u062f\u064a\u0631 \u0627\u0644\u0628\u0627\u062f \u0627\u0644\u062d\u0627\u0644\u064a \u0628\u0635\u0641\u0629:", "pad.importExport.exporthtml": "\u0625\u062a\u0634 \u062a\u064a \u0625\u0645 \u0625\u0644", "pad.importExport.exportplain": "\u0646\u0635 \u0639\u0627\u062f\u064a", "pad.importExport.exportword": "\u0645\u0627\u064a\u0643\u0631\u0648\u0633\u0648\u0641\u062a \u0648\u0648\u0631\u062f", @@ -38,7 +51,11 @@ "pad.importExport.exportopen": "ODF (\u0646\u0633\u0642 \u0627\u0644\u0645\u0633\u062a\u0646\u062f \u0627\u0644\u0645\u0641\u062a\u0648\u062d)", "pad.importExport.exportdokuwiki": "\u062f\u0648\u06a9\u0648\u0648\u064a\u0643\u064a", "pad.modals.connected": "\u0645\u062a\u0635\u0644.", + "pad.modals.reconnecting": "\u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0628\u0627\u062f\u0643", "pad.modals.forcereconnect": "\u0641\u0631\u0636 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644", + "pad.modals.userdup": "\u0645\u0641\u062a\u0648\u062d \u0641\u064a \u0646\u0627\u0641\u0630\u0629 \u0623\u062e\u0631\u0649", + "pad.modals.userdup.explanation": "\u064a\u0628\u062f\u0648 \u0623\u0646 \u0647\u0630\u0627 \u0627\u0644\u0628\u0627\u062f \u062a\u0645 \u0641\u062a\u062d\u0647 \u0641\u064a \u0623\u0643\u062b\u0631 \u0645\u0646 \u0646\u0627\u0641\u0630\u0629 \u0645\u062a\u0635\u0641\u062d \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u062d\u0627\u0633\u0648\u0628.", + "pad.modals.userdup.advice": "\u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0644\u0625\u0633\u062a\u0639\u0645\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u0646\u0627\u0641\u0630\u0629 \u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0627\u0644\u0627\u062e\u0631\u0649.", "pad.modals.unauth": "\u063a\u064a\u0631 \u0645\u062e\u0648\u0644", "pad.modals.looping": "\u062a\u0645 \u0642\u0637\u0639 \u0627\u0644\u0627\u062a\u0635\u0627\u0644.", "pad.modals.initsocketfail": "\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u062e\u0627\u062f\u0645", @@ -47,16 +64,24 @@ "pad.modals.slowcommit.explanation": "\u0627\u0644\u062e\u0627\u062f\u0645 \u0644\u0627 \u064a\u0633\u062a\u062c\u064a\u0628.", "pad.modals.slowcommit.cause": "\u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0647\u0630\u0627 \u0628\u0633\u0628\u0628 \u0645\u0634\u0627\u0643\u0644 \u0641\u064a \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u0634\u0628\u0643\u0629.", "pad.modals.deleted": "\u0645\u062d\u0630\u0648\u0641.", + "pad.modals.deleted.explanation": "\u062a\u0645\u062a \u0625\u0632\u0627\u0644\u0629 \u0647\u0630\u0627 \u0627\u0644\u0628\u0627\u062f", "pad.modals.disconnected": "\u0644\u0645 \u062a\u0639\u062f \u0645\u062a\u0651\u0635\u0644.", "pad.modals.disconnected.explanation": "\u062a\u0645 \u0641\u0642\u062f\u0627\u0646 \u0627\u0644\u0625\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062e\u0627\u062f\u0645", "pad.modals.disconnected.cause": "\u0642\u062f \u064a\u0643\u0648\u0646 \u0627\u0644\u062e\u0627\u062f\u0645 \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631. \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u0639\u0644\u0627\u0645\u0646\u0627 \u0625\u0630\u0627 \u062a\u0643\u0631\u0631 \u0647\u0630\u0627.", "pad.share.readonly": "\u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637", "pad.share.link": "\u0631\u0627\u0628\u0637", + "pad.share.emebdcode": "URL \u0644\u0644\u062a\u0636\u0645\u064a\u0646", "pad.chat": "\u062f\u0631\u062f\u0634\u0629", + "pad.chat.title": "\u0641\u062a\u062d \u0627\u0644\u062f\u0631\u062f\u0634\u0629 \u0644\u0647\u0630\u0627 \u0627\u0644\u0628\u0627\u062f", + "pad.chat.loadmessages": "\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0631\u0633\u0627\u0626\u0644", + "timeslider.toolbar.returnbutton": "\u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u0627\u0644\u0628\u0627\u062f", "timeslider.toolbar.authors": "\u0627\u0644\u0645\u0624\u0644\u0641\u0648\u0646:", "timeslider.toolbar.authorsList": "\u0628\u062f\u0648\u0646 \u0645\u0624\u0644\u0641\u064a\u0646", + "timeslider.toolbar.exportlink.title": "\u062a\u0635\u062f\u064a\u0631", "timeslider.exportCurrent": "\u062a\u0635\u062f\u064a\u0631 \u0627\u0644\u0646\u0633\u062e\u0629 \u0627\u0644\u062d\u0627\u0644\u064a\u0629 \u0643:", "timeslider.version": "\u0625\u0635\u062f\u0627\u0631 {{version}}", + "timeslider.saved": "\u0645\u062d\u0641\u0648\u0638 {{month}} {{day}}, {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", "timeslider.month.january": "\u064a\u0646\u0627\u064a\u0631", "timeslider.month.february": "\u0641\u0628\u0631\u0627\u064a\u0631", "timeslider.month.march": "\u0645\u0627\u0631\u0633", @@ -73,5 +98,10 @@ "pad.userlist.unnamed": "\u063a\u064a\u0631 \u0645\u0633\u0645\u0649", "pad.userlist.guest": "\u0636\u064a\u0641", "pad.userlist.deny": "\u0631\u0641\u0636", - "pad.userlist.approve": "\u0645\u0648\u0627\u0641\u0642\u0629" + "pad.userlist.approve": "\u0645\u0648\u0627\u0641\u0642\u0629", + "pad.impexp.importbutton": "\u0627\u0644\u0627\u0633\u062a\u064a\u0631\u0627\u062f \u0627\u0644\u0622\u0646", + "pad.impexp.importing": "\u0627\u0644\u0627\u0633\u062a\u064a\u0631\u0627\u062f...", + "pad.impexp.uploadFailed": "\u0641\u0634\u0644 \u0627\u0644\u062a\u062d\u0645\u064a\u0644\u060c \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649", + "pad.impexp.importfailed": "\u0641\u0634\u0644 \u0627\u0644\u0627\u0633\u062a\u064a\u0631\u0627\u062f", + "pad.impexp.copypaste": "\u0627\u0644\u0631\u062c\u0627\u0621 \u0646\u0633\u062e/\u0644\u0635\u0642" } \ No newline at end of file diff --git a/src/locales/eu.json b/src/locales/eu.json new file mode 100644 index 00000000..99a76e0d --- /dev/null +++ b/src/locales/eu.json @@ -0,0 +1,121 @@ +{ + "@metadata": { + "authors": [ + "Theklan" + ] + }, + "index.newPad": "Pad berria", + "index.createOpenPad": "edo sortu/ireki Pad bat honako izenarekin:", + "pad.toolbar.bold.title": "Lodia (Ctrl-B)", + "pad.toolbar.italic.title": "Etzana (Ctrl-I)", + "pad.toolbar.underline.title": "Azpimarratua (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Ezabatua", + "pad.toolbar.ol.title": "Zerrenda ordenatua", + "pad.toolbar.ul.title": "Zerrenda ez-ordenatua", + "pad.toolbar.indent.title": "Koska", + "pad.toolbar.unindent.title": "Koska kendu", + "pad.toolbar.undo.title": "Desegin (Ctrl-Z)", + "pad.toolbar.redo.title": "Berregin (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Ezabatu Egiletza Koloreak", + "pad.toolbar.import_export.title": "Inportatu/Esportatu fitxategi formatu ezberdinetara/ezberdinetatik", + "pad.toolbar.timeslider.title": "Denbora lerroa", + "pad.toolbar.savedRevision.title": "Gorde berrikuspena", + "pad.toolbar.settings.title": "Hobespenak", + "pad.toolbar.embed.title": "Partekatu eta Txertatu pad hau", + "pad.toolbar.showusers.title": "Erakutsi pad honetako erabiltzaileak", + "pad.colorpicker.save": "Gorde", + "pad.colorpicker.cancel": "Utzi", + "pad.loading": "Kargatzen...", + "pad.passwordRequired": "Pasahitza behar duzu pad honetara sartzeko", + "pad.permissionDenied": "Ez duzu bamienik pad honetara sartzeko", + "pad.wrongPassword": "Zure pasahitza oker zegoen", + "pad.settings.padSettings": "Pad hobespenak", + "pad.settings.myView": "Nire ikusmoldea", + "pad.settings.stickychat": "Txata beti pantailan", + "pad.settings.colorcheck": "Egiletzaren koloreak", + "pad.settings.linenocheck": "Lerro zenbakiak", + "pad.settings.rtlcheck": "Edukia eskubitik ezkerrera irakurri?", + "pad.settings.fontType": "Tipografia:", + "pad.settings.fontType.normal": "Arrunta", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Ikuspegi Globala", + "pad.settings.language": "Hizkuntza:", + "pad.importExport.import_export": "Inportatu/Esportatu", + "pad.importExport.import": "Igo edozein testu fitxategi edo dokumentu", + "pad.importExport.importSuccessful": "Arrakastatsua!", + "pad.importExport.export": "Oraingo pad hau honela esportatu:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Testu laua", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DocuWiki", + "pad.importExport.abiword.innerHTML": "Testu laua edo html formatudun testuak bakarrik inporta ditzakezu. Aurreratuagoak diren inportazio aukerak izateko \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eabiword instala ezazu\u003C/a\u003E.", + "pad.modals.connected": "Konektatuta.", + "pad.modals.reconnecting": "Zure pad-era birkonektatu...", + "pad.modals.forcereconnect": "Berkonexioa fortzatu", + "pad.modals.userdup": "Beste leiho batean ireki da", + "pad.modals.userdup.explanation": "Pad hau zure nabigatzailearen beste leiho batean irekita dagoela ematen du.", + "pad.modals.userdup.advice": "Berriro konektatu beste leiho hau erabiltzeko.", + "pad.modals.unauth": "Baimenik gabe", + "pad.modals.unauth.explanation": "Orrialdea ikusten ari zinela zure baimenak aldatu dira. Saia zaitez berriro konektatzen.", + "pad.modals.looping": "Deskonektatua.", + "pad.modals.looping.explanation": "Sinkronizazio zerbitzariarekin komunikazioa arazoak daude.", + "pad.modals.looping.cause": "Agian firewall edo proxy ez-bateragarri baten bidez konektatu zara.", + "pad.modals.initsocketfail": "Zerbitzarira ezin da iritsi.", + "pad.modals.initsocketfail.explanation": "Ezin izan da konektatu sinkronizazio zerbitzarira.", + "pad.modals.initsocketfail.cause": "Ziurrenik hau zure nabigatzailea edo internet konexioaren arazo bat dela eta izango da.", + "pad.modals.slowcommit": "Deskonektatu.", + "pad.modals.slowcommit.explanation": "Zerbitzariak ez du erantzuten.", + "pad.modals.slowcommit.cause": "Baliteke hau sarearen konexio arazoak direla eta izatea.", + "pad.modals.deleted": "Ezabatua.", + "pad.modals.deleted.explanation": "Pad hau ezabatua izan da.", + "pad.modals.disconnected": "Deskonektatua izan zara.", + "pad.modals.disconnected.explanation": "Zerbitzariaren konexioa galdu da", + "pad.modals.disconnected.cause": "Baliteke zerbitzaria irisgarria ez izatea. Mesedez, esaiguzu hau gertatzen jarraitzen badu.", + "pad.share": "Pad hau partekatu", + "pad.share.readonly": "Irakurtzeko bakarrik", + "pad.share.link": "Lotura", + "pad.share.emebdcode": "URLa txertatu", + "pad.chat": "Txata", + "pad.chat.title": "Pad honetarako txata ireki.", + "pad.chat.loadmessages": "Mezu gehiago kargatu", + "timeslider.pageTitle": "{{appTitle}} denbora lerroa", + "timeslider.toolbar.returnbutton": "Padera itzuli", + "timeslider.toolbar.authors": "Egileak:", + "timeslider.toolbar.authorsList": "Egilerik gabe", + "timeslider.toolbar.exportlink.title": "Esportatu", + "timeslider.exportCurrent": "Gorde bertsio hau honela:", + "timeslider.version": "Bertsioa {{version}}", + "timeslider.saved": "{{year}}ko {{month}}ren {{day}}an gordeta", + "timeslider.dateformat": "{{year}}/{{month}}/{{day}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Urtarrila", + "timeslider.month.february": "Otsaila", + "timeslider.month.march": "Martxoa", + "timeslider.month.april": "Apirila", + "timeslider.month.may": "Maiatza", + "timeslider.month.june": "Ekaina", + "timeslider.month.july": "Uztaila", + "timeslider.month.august": "Abuztua", + "timeslider.month.september": "Iraila", + "timeslider.month.october": "Urria", + "timeslider.month.november": "Azaroa", + "timeslider.month.december": "Abendua", + "timeslider.unnamedauthor": "{{num}} izenik gabeko egilea", + "timeslider.unnamedauthors": "{{num}} izenik gabeko egileak", + "pad.savedrevs.marked": "Berrikuspen hau markatua dago gordetako berrikuspen gisa", + "pad.userlist.entername": "Sartu zure erabiltzaile izena", + "pad.userlist.unnamed": "izenik gabe", + "pad.userlist.guest": "Gonbidatua", + "pad.userlist.deny": "Ukatu", + "pad.userlist.approve": "Onartu", + "pad.editbar.clearcolors": "Ezabatu egile koloreak dokumentu osoan?", + "pad.impexp.importbutton": "Inportatu orain", + "pad.impexp.importing": "Inportatzen...", + "pad.impexp.confirmimport": "Fitxategi bat inportatzen baduzu oraingo pad honen testua ezabatuko da. Ziur zaude jarraitu nahi duzula?", + "pad.impexp.convertFailed": "Ez gara gai fitxategi hau inportatzeko. Erabil ezazu, mesedez, beste dokumentu formatu bat edo kopiatu eta itsasi eskuz.", + "pad.impexp.uploadFailed": "Igotzean akatsa egon da, saia zaitez berriro", + "pad.impexp.importfailed": "Inportazioak akatsa egin du", + "pad.impexp.copypaste": "Mesedez kopiatu eta pegatu", + "pad.impexp.exportdisabled": "{{type}} formatuarekin esportatzea desgaituta dago. Kontakta ezazu administratzailea detaile gehiagorako." +} \ No newline at end of file diff --git a/src/locales/fo.json b/src/locales/fo.json index 45f6548c..93b46788 100644 --- a/src/locales/fo.json +++ b/src/locales/fo.json @@ -1,4 +1,9 @@ { + "@metadata": { + "authors": [ + "EileenSanda" + ] + }, "index.newPad": "N\u00fdggjur teldil", "pad.toolbar.bold.title": "Vi\u00f0 feitum (Ctrl-B)", "pad.toolbar.italic.title": "Skr\u00e1skrift (Ctrl-I)", @@ -88,10 +93,5 @@ "pad.userlist.unnamed": "ikki-navngivi\u00f0", "pad.userlist.guest": "Gestur", "pad.userlist.deny": "Nokta", - "pad.userlist.approve": "G\u00f3\u00f0kenn", - "@metadata": { - "authors": [ - "EileenSanda" - ] - } + "pad.userlist.approve": "G\u00f3\u00f0kenn" } \ No newline at end of file diff --git a/src/locales/fr.json b/src/locales/fr.json index 5b14619c..272faf93 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -101,7 +101,7 @@ "timeslider.exportCurrent": "Exporter la version actuelle en\u00a0:", "timeslider.version": "Version {{version}}", "timeslider.saved": "Enregistr\u00e9 le {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{secondes}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", "timeslider.month.january": "Janvier", "timeslider.month.february": "F\u00e9vrier", "timeslider.month.march": "Mars", diff --git a/src/locales/km.json b/src/locales/km.json index e32a26f7..095a8b53 100644 --- a/src/locales/km.json +++ b/src/locales/km.json @@ -1,4 +1,9 @@ { + "@metadata": { + "authors": [ + "\u179c\u17d0\u178e\u1790\u17b6\u179a\u17b7\u1791\u17d2\u1792" + ] + }, "index.newPad": "\u1795\u17c1\u178f\u1790\u17d2\u1798\u17b8", "index.createOpenPad": "\u17ac\u1794\u1784\u17d2\u1780\u17be\u178f/\u1794\u17be\u1780\u1795\u17c1\u178f\u178a\u17c2\u179b\u1798\u17b6\u1793\u1788\u17d2\u1798\u17c4\u17c7\u17d6", "pad.toolbar.bold.title": "\u178a\u17b7\u178f (Ctrl-B)", @@ -43,10 +48,5 @@ "timeslider.month.december": "\u1792\u17d2\u1793\u17bc", "pad.userlist.guest": "\u1797\u17d2\u1789\u17c0\u179c", "pad.impexp.importbutton": "\u1793\u17b6\u17c6\u1785\u17bc\u179b\u17a5\u17a1\u17bc\u179c\u1793\u17c1\u17c7", - "pad.impexp.importing": "\u1780\u17c6\u1796\u17bb\u1784\u1793\u17b6\u17c6\u1785\u17bc\u179b\u200b...", - "@metadata": { - "authors": [ - "\u179c\u17d0\u178e\u1790\u17b6\u179a\u17b7\u1791\u17d2\u1792" - ] - } + "pad.impexp.importing": "\u1780\u17c6\u1796\u17bb\u1784\u1793\u17b6\u17c6\u1785\u17bc\u179b\u200b..." } \ No newline at end of file diff --git a/src/locales/lt.json b/src/locales/lt.json index db40b306..f75ff214 100644 --- a/src/locales/lt.json +++ b/src/locales/lt.json @@ -1,4 +1,9 @@ { + "@metadata": { + "authors": [ + "Mantak111" + ] + }, "pad.toolbar.bold.title": "Pary\u0161kintasis (Ctrl-B)", "pad.toolbar.italic.title": "Pasvirasis (Ctrl-I)", "pad.toolbar.underline.title": "Pabraukimas (Ctrl-U)", @@ -63,10 +68,5 @@ "pad.impexp.importing": "Importuojama...", "pad.impexp.uploadFailed": "\u012ek\u0117limas nepavyko, bandykite dar kart\u0105", "pad.impexp.importfailed": "Importuoti nepavyko", - "pad.impexp.copypaste": "Pra\u0161ome nukopijuoti ir \u012fklijuoti", - "@metadata": { - "authors": [ - "Mantak111" - ] - } + "pad.impexp.copypaste": "Pra\u0161ome nukopijuoti ir \u012fklijuoti" } \ No newline at end of file From a554552bedcfca519488151b1c24abefa946dff0 Mon Sep 17 00:00:00 2001 From: "j@mailb.org" Date: Mon, 17 Jun 2013 14:28:04 +0200 Subject: [PATCH 17/39] Simpify CSS for sticky chat --- src/static/css/pad.css | 2 +- src/static/js/chat.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/static/css/pad.css b/src/static/css/pad.css index dafb77ef..c69b8d8f 100644 --- a/src/static/css/pad.css +++ b/src/static/css/pad.css @@ -168,9 +168,9 @@ a img { } #editorcontainer { position: absolute; - width: 100%; top: 37px; /* + 1px border */ left: 0px; + right: 0px; bottom: 0px; z-index: 1; } diff --git a/src/static/js/chat.js b/src/static/js/chat.js index 38d6f38d..ed9b258f 100644 --- a/src/static/js/chat.js +++ b/src/static/js/chat.js @@ -42,13 +42,13 @@ var chat = (function() padcookie.setPref("chatAlwaysVisible", true); $('#chatbox').addClass("stickyChat"); $('#chattext').css({"top":"0px"}); - $('#editorcontainer').css({"right":"192px", "width":"auto"}); + $('#editorcontainer').css({"right":"192px"}); isStuck = true; } else { // Unstick it padcookie.setPref("chatAlwaysVisible", false); $('#chatbox').removeClass("stickyChat"); $('#chattext').css({"top":"25px"}); - $('#editorcontainer').css({"right":"0px", "width":"100%"}); + $('#editorcontainer').css({"right":"0px"}); isStuck = false; } }, From bc5dc74f902b40f3a493328f5ca1b120e9b53d30 Mon Sep 17 00:00:00 2001 From: "j@mailb.org" Date: Mon, 17 Jun 2013 14:30:13 +0200 Subject: [PATCH 18/39] pass pad in postAceInit hook no way for plugins to access current pad otherwise. --- doc/api/hooks_client-side.md | 1 + src/static/js/pad.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/api/hooks_client-side.md b/doc/api/hooks_client-side.md index 80dcc52a..c0a4227a 100644 --- a/doc/api/hooks_client-side.md +++ b/doc/api/hooks_client-side.md @@ -126,6 +126,7 @@ Called from: src/static/js/pad.js Things in context: 1. ace - the ace object that is applied to this editor. +2. pad - the pad object of the current pad. There doesn't appear to be any example available of this particular hook being used, but it gets fired after the editor is all set up. diff --git a/src/static/js/pad.js b/src/static/js/pad.js index 9a42bccc..4d5df7eb 100644 --- a/src/static/js/pad.js +++ b/src/static/js/pad.js @@ -524,7 +524,7 @@ var pad = { if(padcookie.getPref("showAuthorshipColors") == false){ pad.changeViewOption('showAuthorColors', false); } - hooks.aCallAll("postAceInit", {ace: padeditor.ace}); + hooks.aCallAll("postAceInit", {ace: padeditor.ace, pad: pad}); } }, dispose: function() From 9dd6471921e6e850e6b2b6657270bf0a2c4e390c Mon Sep 17 00:00:00 2001 From: "j@mailb.org" Date: Mon, 17 Jun 2013 14:32:11 +0200 Subject: [PATCH 19/39] Add userLeave hook --- src/static/js/pad_userlist.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/static/js/pad_userlist.js b/src/static/js/pad_userlist.js index 77ebb190..f54b3e54 100644 --- a/src/static/js/pad_userlist.js +++ b/src/static/js/pad_userlist.js @@ -633,6 +633,9 @@ var paduserlist = (function() otherUsersInfo.splice(newExistingIndex, 1); otherUsersData.splice(newExistingIndex, 1); rowManager.removeRow(newExistingIndex); + hooks.callAll('userLeave', { + userInfo: info + }); updateInviteNotice(); } } From a62593e9a08f0d84eae6945e6e669d37149076f7 Mon Sep 17 00:00:00 2001 From: j Date: Mon, 17 Jun 2013 16:48:58 +0200 Subject: [PATCH 20/39] export sessioninfos so plugins can access it allows plugins to map client.id to author id --- src/node/handler/PadMessageHandler.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index b6d22c14..525228ba 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -48,6 +48,7 @@ var channels = require("channels"); * author = the author name of this session */ var sessioninfos = {}; +exports.sessioninfos = sessioninfos; /** * A changeset queue per pad that is processed by handleUserChanges() From 306c4047eab6128d23143f035cae0cba4006c5a2 Mon Sep 17 00:00:00 2001 From: John McLear Date: Sun, 23 Jun 2013 16:09:08 +0200 Subject: [PATCH 21/39] Fix broken git guide link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 147e6637..75be5753 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ Documentation can be found in `docs/`. # Development ## Things you should know -Read this [git guide](http://learn.github.com/p/intro.html) and watch this [video on getting started with Etherpad Development](http://youtu.be/67-Q26YH97E). +Read this [git guide](http://learn.github.com/p/index.html) and watch this [video on getting started with Etherpad Development](http://youtu.be/67-Q26YH97E). If you're new to node.js, start with Ryan Dahl's [Introduction to Node.js](http://youtu.be/jo_B4LTHi3I). From ba1a5da76dea1051435bca4fadd9fb0721e8d38d Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 24 Jun 2013 13:35:17 +0100 Subject: [PATCH 22/39] bump and changelog --- CHANGELOG.md | 13 +++++++++++++ src/package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8abebf81..0d25d5b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# 1.2.11 + * NEW: New Hook for outer_ace dynamic css manager and author style hook + * NEW: Bump log4js for improved logging + * Fix: Remove URL schemes which don't have RFC standard + * Fix: Fix safeRun subsequent restarts issue + * Fix: Allow safeRun to pass arguements to run.sh + * Fix: Include script for more efficient import + * Fix: Fix sysv comptibile script + * Fix: Fix client side changeset spamming + * Fix: Don't crash on no-auth + * Fix: Fix some IE8 errors + * Fix: Fix authorship sanitation + # 1.2.10 * NEW: Broadcast slider is exposed in timeslider so plugins can interact with it * Fix: IE issue where pads wouldn't load due to missing console from i18n diff --git a/src/package.json b/src/package.json index c63cbbc2..2dd9ac8e 100644 --- a/src/package.json +++ b/src/package.json @@ -47,5 +47,5 @@ "engines" : { "node" : ">=0.6.3", "npm" : ">=1.0" }, - "version" : "1.2.10" + "version" : "1.2.11" } From 98a9a24d025da8f533a405c3e6d03af8b99b5774 Mon Sep 17 00:00:00 2001 From: John McLear Date: Wed, 26 Jun 2013 20:19:38 +0100 Subject: [PATCH 23/39] repo url as latest npm shows warn if non existant --- src/package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/package.json b/src/package.json index 2dd9ac8e..586720d4 100644 --- a/src/package.json +++ b/src/package.json @@ -47,5 +47,8 @@ "engines" : { "node" : ">=0.6.3", "npm" : ">=1.0" }, + "repository" : { "type" : "git", + "url" : "http://github.com/ether/etherpad-lite.git" + }, "version" : "1.2.11" } From fb917b3d78575290f70e02a66e23773f2c14f76c Mon Sep 17 00:00:00 2001 From: John McLear Date: Wed, 26 Jun 2013 23:34:35 +0100 Subject: [PATCH 24/39] Update LICENSE --- LICENSE | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index a35c2553..366aa1a4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,3 @@ - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -187,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2012 THE ETHERPAD FOUNDATION + Copyright 2013 THE ETHERPAD FOUNDATION Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From d5a3d9d03b5f77ac248dd53ea499b9f68a891418 Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 1 Jul 2013 19:54:09 +0100 Subject: [PATCH 25/39] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 75be5753..42abf83e 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ There's also a full-featured plugin framework, allowing you to easily add your o Finally, Etherpad comes with translations into most languages! Users are automatically delivered the correct language for their local settings. -**Visit [beta.etherpad.org](http://beta.etherpad.org) to test it live** +**Visit [beta.etherpad.org](http://beta.etherpad.org) to test it live. Hosted by [Joyent](http://joyent.com)** Also, check out the **[FAQ](https://github.com/ether/etherpad-lite/wiki/FAQ)**, really! From 3a47e719d4dd56d22e138049439a825db1c3d68b Mon Sep 17 00:00:00 2001 From: Dave Longley Date: Sun, 14 Jul 2013 01:51:39 -0400 Subject: [PATCH 26/39] Make pads with long lines usable with chrome. - Do not use incorpIfQuick on keyup because it's not ever quick on chrome. Calling incorpIfQuick calls incorporateUserChanges which sets a flag on the current callstack state indicating that the selection has changed (since something was typed). Whenever this flag is set, the event handler will run code to update the selection (and possibly scroll the view as well), which is a very costly operation in webkit browsers. Instead let the user changes be incorporated by the idle worker, scheduling it to run ASAP on keyup. This isn't a perfect solution, but may make pads running on webkit browsers more usable with otherwise fairly unnoticeable changes in the UI. --- src/static/js/ace2_inner.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index 97540191..f53e9de8 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -3855,7 +3855,7 @@ function Ace2Inner(){ } else if (type == "keyup") { - var wait = 200; + var wait = 0; idleWorkTimer.atLeast(wait); idleWorkTimer.atMost(wait); } @@ -3875,7 +3875,7 @@ function Ace2Inner(){ if ((!specialHandled) && (!thisKeyDoesntTriggerNormalize) && (!inInternationalComposition)) { - if (type != "keyup" || !incorpIfQuick()) + if (type != "keyup") { observeChangesAroundSelection(); } From 5688350bf18322821f11941b57668fb14793f82a Mon Sep 17 00:00:00 2001 From: Dave Longley Date: Sun, 14 Jul 2013 16:46:12 -0400 Subject: [PATCH 27/39] Adapt and add slowness test from @JohnMcLear. - The test now ensures that all three key events are fired when sending keys. Previously, only the 'keypress' event was sent, which failed to trigger very slow code on webkit browsers (as it is triggered by 'keyup'). All three events should really be sent whenever sending keys to the browser to ensure that we're adequately testing real behavior. See the 'sendkeys' plugin for more; it only sends 'keypress'. --- tests/frontend/specs/responsiveness.js | 80 ++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 tests/frontend/specs/responsiveness.js diff --git a/tests/frontend/specs/responsiveness.js b/tests/frontend/specs/responsiveness.js new file mode 100644 index 00000000..44bdd611 --- /dev/null +++ b/tests/frontend/specs/responsiveness.js @@ -0,0 +1,80 @@ +// Test for https://github.com/ether/etherpad-lite/issues/1763 + +// This test fails in Opera, IE and Safari +// Opera fails due to a weird way of handling the order of execution, yet actual performance seems fine +// Safari fails due the delay being too great yet the actual performance seems fine +// Firefox might panic that the script is taking too long so will fail +// IE will fail due to running out of memory as it can't fit 2M chars in memory. + +// Just FYI Google Docs crashes on large docs whilst trying to Save, it's likely the limitations we are +// experiencing are more to do with browser limitations than improper implementation. +// A ueber fix for this would be to have a separate lower cpu priority thread that handles operations that aren't +// visible to the user. + +// Adapted from John McLear's original test case. + +describe('Responsiveness of Editor', function() { + // create a new pad before each test run + beforeEach(function(cb) { + helper.newPad(cb); + this.timeout(6000); + }); + it('Fast response to keypress in pad with large amount of contents', function(done) { + var inner$ = helper.padInner$; + var chrome$ = helper.padChrome$; + var chars = '0000000000'; // row of placeholder chars + var amount = 200000; //number of blocks of chars we will insert + var length = (amount * (chars.length) +1); // include a counter for each space + var text = ''; // the text we're gonna insert + this.timeout(amount * 100); + + // get keys to send + var keyMultiplier = 10; // multiplier * 10 == total number of key events + var keysToSend = ''; + for(var i=0; i <= keyMultiplier; i++) { + keysToSend += chars; + } + + var textElement = inner$('div'); + textElement.sendkeys('{selectall}'); // select all + textElement.sendkeys('{del}'); // clear the pad text + + for(var i=0; i <= amount; i++) { + text = text + chars + ' '; // add the chars and space to the text contents + } + inner$('div').first().text(text); // Put the text contents into the pad + + helper.waitFor(function(){ // Wait for the new contents to be on the pad + return inner$('div').text().length > length; + }).done(function(){ + + expect( inner$('div').text().length ).to.be.greaterThan( length ); // has the text changed? + var start = new Date().getTime(); // get the start time + + // send some new text to the screen (ensure all 3 key events are sent) + var el = inner$('div').first(); + for(var i = 0; i < keysToSend.length; ++i) { + var x = keysToSend.charCodeAt(i); + ['keyup', 'keypress', 'keydown'].forEach(function(type) { + var e = $.Event(type); + e.keyCode = x; + el.trigger(e); + }); + } + + helper.waitFor(function(){ // Wait for the ability to process + return true; // Ghetto but works for now + }).done(function(){ + var end = new Date().getTime(); // get the current time + var delay = end - start; // get the delay as the current time minus the start time + + console.log('delay:', delay); + expect(delay).to.be.below(200); + done(); + }, 1000); + + }, 10000); + }); + +}); + From 3a9ef306a63f76f47c05c217dadeca53a88110ee Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Sun, 14 Jul 2013 21:25:00 +0000 Subject: [PATCH 28/39] Localisation updates from http://translatewiki.net. --- src/locales/fa.json | 7 ++++--- src/locales/uk.json | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/locales/fa.json b/src/locales/fa.json index 48220dab..b4da24d7 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -4,8 +4,9 @@ "0": "BMRG14", "1": "Dalba", "2": "Ebraminio", - "4": "ZxxZxxZ", - "5": "\u0627\u0644\u0646\u0627\u0632" + "3": "Reza1615", + "5": "ZxxZxxZ", + "6": "\u0627\u0644\u0646\u0627\u0632" } }, "index.newPad": "\u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062a\u0627\u0632\u0647", @@ -25,7 +26,7 @@ "pad.toolbar.timeslider.title": "\u0627\u0633\u0644\u0627\u06cc\u062f\u0631 \u0632\u0645\u0627\u0646", "pad.toolbar.savedRevision.title": "\u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0646\u0633\u062e\u0647", "pad.toolbar.settings.title": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a", - "pad.toolbar.embed.title": "\u062c\u0627\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", + "pad.toolbar.embed.title": "\u0627\u0634\u062a\u0631\u0627\u06a9 \u0648 \u062c\u0627\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", "pad.toolbar.showusers.title": "\u0646\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", "pad.colorpicker.save": "\u0630\u062e\u06cc\u0631\u0647", "pad.colorpicker.cancel": "\u0644\u063a\u0648", diff --git a/src/locales/uk.json b/src/locales/uk.json index 641533b0..04ffc035 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -3,7 +3,8 @@ "authors": { "0": "Base", "1": "Olvin", - "3": "Steve.rusyn" + "3": "Steve.rusyn", + "4": "SteveR" } }, "index.newPad": "\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438", From 406c9e38eabbb638e5aec53815019e8802073a18 Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Thu, 18 Jul 2013 13:44:13 -0500 Subject: [PATCH 29/39] Grammar fix --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4e59afbf..e185d9c5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ (Please talk to people on the mailing list before you change this page, see our section on [how to get in touch](https://github.com/ether/etherpad-lite#get-in-touch)) ## Important note for pull requests -**Pull requests should issued against the develop branch**. We never pull directly into master. +**Pull requests should be issued against the develop branch**. We never pull directly into master. **Our goal is to iterate in small steps. Release often, release early. Evolution instead of a revolution** From 5e3abb7054027f3ea4a22b0748b769c3900d35c9 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 22 Jul 2013 15:52:48 +0200 Subject: [PATCH 30/39] Update en.sjon translation pad.importExport.abiword.innerHTML --- src/locales/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/en.json b/src/locales/en.json index d08ebe65..98664205 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -45,7 +45,7 @@ "pad.importExport.exportpdf": "PDF", "pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "You only can import from plain text or html formats. For more advanced import features please install abiword.", + "pad.importExport.abiword.innerHTML": "You only can import from plain text or HTML formats. For more advanced import features please install abiword.", "pad.modals.connected": "Connected.", "pad.modals.reconnecting": "Reconnecting to your pad..", "pad.modals.forcereconnect": "Force reconnect", From 100c4627ece2bd438a799339e1f575280c41fa34 Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Mon, 22 Jul 2013 15:44:42 +0000 Subject: [PATCH 31/39] Localisation updates from http://translatewiki.net. --- src/locales/da.json | 2 +- src/locales/gl.json | 2 +- src/locales/lt.json | 4 ++++ src/locales/lv.json | 12 +++++++++++- src/locales/ml.json | 3 ++- src/locales/nl.json | 2 +- src/locales/zh-hans.json | 3 +++ 7 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/locales/da.json b/src/locales/da.json index 1e5c0614..28b161e9 100644 --- a/src/locales/da.json +++ b/src/locales/da.json @@ -23,7 +23,7 @@ "pad.toolbar.timeslider.title": "Timeslider", "pad.toolbar.savedRevision.title": "Gem Revision", "pad.toolbar.settings.title": "Indstillinger", - "pad.toolbar.embed.title": "Integrer denne pad", + "pad.toolbar.embed.title": "Del og integrer denne pad", "pad.toolbar.showusers.title": "Vis brugere p\u00e5 denne pad", "pad.colorpicker.save": "Gem", "pad.colorpicker.cancel": "Afbryd", diff --git a/src/locales/gl.json b/src/locales/gl.json index dc5d640c..5d6d0526 100644 --- a/src/locales/gl.json +++ b/src/locales/gl.json @@ -21,7 +21,7 @@ "pad.toolbar.timeslider.title": "Li\u00f1a do tempo", "pad.toolbar.savedRevision.title": "Gardar a revisi\u00f3n", "pad.toolbar.settings.title": "Configuraci\u00f3ns", - "pad.toolbar.embed.title": "Incorporar este documento", + "pad.toolbar.embed.title": "Compartir e incorporar este documento", "pad.toolbar.showusers.title": "Mostrar os usuarios deste documento", "pad.colorpicker.save": "Gardar", "pad.colorpicker.cancel": "Cancelar", diff --git a/src/locales/lt.json b/src/locales/lt.json index f75ff214..3d442c06 100644 --- a/src/locales/lt.json +++ b/src/locales/lt.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Eitvys200", "Mantak111" ] }, @@ -14,7 +15,10 @@ "pad.colorpicker.save": "I\u0161saugoti", "pad.colorpicker.cancel": "At\u0161aukti", "pad.loading": "\u012ekraunama...", + "pad.settings.myView": "Mano Vaizdas", + "pad.settings.fontType": "\u0160rifto tipas:", "pad.settings.fontType.normal": "Normalus", + "pad.settings.globalView": "Bendras Vaizdas", "pad.settings.language": "Kalba:", "pad.importExport.import_export": "Importuoti/Eksportuoti", "pad.importExport.import": "\u012ekelkite bet kok\u012f tekstin\u012f fail\u0105 arba dokument\u0105", diff --git a/src/locales/lv.json b/src/locales/lv.json index 32d178d8..6f34109b 100644 --- a/src/locales/lv.json +++ b/src/locales/lv.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Admresdeserv." + "Admresdeserv.", + "Jmg.cmdi" ] }, "pad.toolbar.bold.title": "Treknrakst\u0101 (CTRL + B)", @@ -16,19 +17,28 @@ "pad.toolbar.redo.title": "Atcelt atsauk\u0161anu (CTRL + Y)", "pad.toolbar.clearAuthorship.title": "Not\u012brit autoru kr\u0101sas", "pad.toolbar.import_export.title": "Import\u0113\u0161anas/eksport\u0113\u0161anas no un uz citu failu form\u0101tiem", + "pad.toolbar.savedRevision.title": "Saglab\u0101t p\u0101rskat\u012b\u0161anu", "pad.toolbar.settings.title": "Iestat\u012bjumi", + "pad.toolbar.embed.title": "Koplietot un iegut \u0161o pad", + "pad.toolbar.showusers.title": "Par\u0101d\u012bt \u0161o padu lietot\u0101jus", "pad.colorpicker.save": "Saglab\u0101t", "pad.colorpicker.cancel": "Atcelt", "pad.loading": "Iel\u0101d\u0113\u2026", "pad.passwordRequired": "Ir nepiecie\u0161ama parole, lai piek\u013c\u016btu \u0161im pad", "pad.permissionDenied": "Atvaino, bet tev nav pieejas \u0161im pad.", "pad.wrongPassword": "J\u016bsu parole bija nepareiza", + "pad.settings.padSettings": "Pad Iestatijumi", + "pad.settings.myView": "Mans viedoklis", + "pad.settings.stickychat": "\u010cats vienm\u0113r ekr\u0101n\u0101", + "pad.settings.colorcheck": "Autor\u012bbas kr\u0101sas", "pad.settings.linenocheck": "Rindi\u0146u numurus", "pad.settings.rtlcheck": "Las\u012bt saturu no lab\u0101s puses uz kreiso?", "pad.settings.fontType": "Fonta tips:", "pad.settings.fontType.normal": "Norm\u0101ls", "pad.settings.globalView": "Glob\u0101lu skat\u012bjumu", "pad.settings.language": "Valoda:", + "pad.importExport.import_export": "Importet/Eksportet", + "pad.importExport.import": "Aug\u0161upiel\u0101d\u0113t jebkuru teksta failu vai dokumentu", "pad.importExport.importSuccessful": "Veiksm\u012bgi!", "pad.importExport.exporthtml": "HTML", "pad.importExport.exportplain": "Vienk\u0101r\u0161a teksta", diff --git a/src/locales/ml.json b/src/locales/ml.json index 4567dc7c..195436cd 100644 --- a/src/locales/ml.json +++ b/src/locales/ml.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Akhilan", "Hrishikesh.kb", "Praveenp", "Santhosh.thottingal" @@ -8,7 +9,7 @@ }, "index.newPad": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d2a\u0d3e\u0d21\u0d4d", "index.createOpenPad": "\u0d05\u0d32\u0d4d\u0d32\u0d46\u0d19\u0d4d\u0d15\u0d3f\u0d7d \u0d2a\u0d47\u0d30\u0d41\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d2a\u0d3e\u0d21\u0d4d \u0d38\u0d43\u0d37\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15/\u0d24\u0d41\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d15:", - "pad.toolbar.bold.title": "\u0d15\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d3f\u0d2f\u0d46\u0d34\u0d41\u0d24\u0d41\u0d15 (Ctrl-B)", + "pad.toolbar.bold.title": "\u0d15\u0d1f\u0d41\u0d2a\u0d4d\u0d2a\u0d24\u0d4d\u0d24\u0d3f\u0d7d (Ctrl-B)", "pad.toolbar.italic.title": "\u0d1a\u0d46\u0d30\u0d3f\u0d1a\u0d4d\u0d1a\u0d46\u0d34\u0d41\u0d24\u0d41\u0d15 (Ctrl-I)", "pad.toolbar.underline.title": "\u0d05\u0d1f\u0d3f\u0d35\u0d30\u0d2f\u0d3f\u0d1f\u0d41\u0d15 (Ctrl-U)", "pad.toolbar.strikethrough.title": "\u0d35\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d15", diff --git a/src/locales/nl.json b/src/locales/nl.json index 499bf567..a6ab8db5 100644 --- a/src/locales/nl.json +++ b/src/locales/nl.json @@ -47,7 +47,7 @@ "pad.importExport.exporthtml": "HTML", "pad.importExport.exportplain": "Tekst zonder opmaak", "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportpdf": "Pdf", "pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportdokuwiki": "DokuWiki", "pad.importExport.abiword.innerHTML": "U kunt alleen importeren vanuit platte tekst of een HTML-opmaak. \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EInstalleer abiword\u003C/a\u003E om meer geavanceerde importmogelijkheden te krijgen.", diff --git a/src/locales/zh-hans.json b/src/locales/zh-hans.json index 43975328..4358c74c 100644 --- a/src/locales/zh-hans.json +++ b/src/locales/zh-hans.json @@ -3,6 +3,7 @@ "authors": [ "Dimension", "Hydra", + "Liuxinyu970226", "Shangkuanlc", "Yfdyh000", "\u4e4c\u62c9\u8de8\u6c2a", @@ -10,6 +11,7 @@ ] }, "index.newPad": "\u65b0\u8bb0\u4e8b\u672c", + "index.createOpenPad": "\u6216\u8005\u521b\u5efa/\u6253\u5f00\u5e26\u540d\u5b57\u7684\u8bb0\u4e8b\u672c\uff1a", "pad.toolbar.bold.title": "\u7c97\u4f53\uff08Ctrl-B\uff09", "pad.toolbar.italic.title": "\u659c\u4f53 (Ctrl-I)", "pad.toolbar.underline.title": "\u5e95\u7ebf\uff08Ctrl-U\uff09", @@ -80,6 +82,7 @@ "pad.chat": "\u804a\u5929", "pad.chat.title": "\u6253\u5f00\u6b64\u8bb0\u4e8b\u7c3f\u7684\u804a\u5929\u3002", "pad.chat.loadmessages": "\u52a0\u8f7d\u66f4\u591a\u4fe1\u606f", + "timeslider.pageTitle": "{{appTitle}} \u65f6\u95f4\u6ed1\u5757", "timeslider.toolbar.returnbutton": "\u8fd4\u56de\u8bb0\u4e8b\u672c", "timeslider.toolbar.authors": "\u4f5c\u8005\uff1a", "timeslider.toolbar.authorsList": "\u6ca1\u6709\u4f5c\u8005", From dabba91152d992d092a03e813d05701d7487d9c8 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 23 Jul 2013 12:42:55 +0200 Subject: [PATCH 32/39] Update html10n.js --- src/static/js/html10n.js | 147 ++++++++++++++++++++++----------------- 1 file changed, 84 insertions(+), 63 deletions(-) diff --git a/src/static/js/html10n.js b/src/static/js/html10n.js index 90d51e22..bee1fef3 100644 --- a/src/static/js/html10n.js +++ b/src/static/js/html10n.js @@ -46,7 +46,20 @@ window.html10n = (function(window, document, undefined) { , consoleError = interceptConsole('warn') - // fix Array.prototype.instanceOf in, guess what, IE! <3 + // fix Array#forEach in IE + // taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach + if (!Array.prototype.forEach) { + Array.prototype.forEach = function(fn, scope) { + for(var i = 0, len = this.length; i < len; ++i) { + if (i in this) { + fn.call(scope, this[i], i, this); + } + } + }; + } + + // fix Array#indexOf in, guess what, IE! <3 + // taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { "use strict"; @@ -79,15 +92,6 @@ window.html10n = (function(window, document, undefined) { return -1; } } - - // fix Array.prototype.forEach in IE - if (!('forEach' in Array.prototype)) { - Array.prototype.forEach= function(action, that /*opt*/) { - for (var i= 0, n= this.length; i Date: Tue, 23 Jul 2013 12:43:30 +0200 Subject: [PATCH 33/39] Make use of the new plural macro --- src/locales/en.json | 3 +-- src/static/js/broadcast_slider.js | 6 +----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/locales/en.json b/src/locales/en.json index 98664205..043929e4 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -96,8 +96,7 @@ "timeslider.month.october": "October", "timeslider.month.november": "November", "timeslider.month.december": "December", - "timeslider.unnamedauthor": "{{num}} unnamed author", - "timeslider.unnamedauthors": "{{num}} unnamed authors", + "timeslider.unnamedauthors": "{{num}} unnamed {[plural(num) one: author, other: authors ]}", "pad.savedrevs.marked": "This revision is now marked as a saved revision", "pad.userlist.entername": "Enter your name", "pad.userlist.unnamed": "unnamed", diff --git a/src/static/js/broadcast_slider.js b/src/static/js/broadcast_slider.js index 9427c191..73f352f8 100644 --- a/src/static/js/broadcast_slider.js +++ b/src/static/js/broadcast_slider.js @@ -198,11 +198,7 @@ function loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded) }); if (numAnonymous > 0) { - var anonymousAuthorString; - if(numAnonymous == 1) - anonymousAuthorString = html10n.get("timeslider.unnamedauthor", { num: numAnonymous }); - else - anonymousAuthorString = html10n.get("timeslider.unnamedauthors", { num: numAnonymous }); + var anonymousAuthorString = html10n.get("timeslider.unnamedauthors", { num: numAnonymous }); if (numNamed !== 0){ authorsList.append(' + ' + anonymousAuthorString); From cb3ab51ee14aefb2f9e71bdd9907c0a83c3aebb3 Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Tue, 30 Jul 2013 17:46:04 +0000 Subject: [PATCH 34/39] Localisation updates from http://translatewiki.net. --- src/locales/ast.json | 1 - src/locales/az.json | 1 - src/locales/br.json | 1 - src/locales/ca.json | 1 - src/locales/cs.json | 1 - src/locales/da.json | 1 - src/locales/de.json | 3 +- src/locales/el.json | 1 - src/locales/es.json | 1 - src/locales/eu.json | 1 - src/locales/fa.json | 1 - src/locales/fi.json | 1 - src/locales/fo.json | 1 - src/locales/fr.json | 3 +- src/locales/gl.json | 1 - src/locales/he.json | 1 - src/locales/ia.json | 5 +- src/locales/it.json | 1 - src/locales/ja.json | 3 +- src/locales/ko.json | 1 - src/locales/ksh.json | 1 - src/locales/lt.json | 1 - src/locales/mk.json | 1 - src/locales/ml.json | 1 - src/locales/ms.json | 1 - src/locales/nb.json | 1 - src/locales/nl.json | 3 +- src/locales/oc.json | 1 - src/locales/os.json | 1 - src/locales/pa.json | 1 - src/locales/pl.json | 1 - src/locales/ps.json | 1 - src/locales/pt-br.json | 1 - src/locales/ru.json | 1 - src/locales/sk.json | 120 +++++++++++++++++++++++++++++++++++++++ src/locales/sl.json | 1 - src/locales/sv.json | 1 - src/locales/uk.json | 1 - src/locales/vi.json | 1 - src/locales/zh-hans.json | 1 - src/locales/zh-hant.json | 1 - 41 files changed, 126 insertions(+), 46 deletions(-) create mode 100644 src/locales/sk.json diff --git a/src/locales/ast.json b/src/locales/ast.json index 61635f9e..250e3045 100644 --- a/src/locales/ast.json +++ b/src/locales/ast.json @@ -101,7 +101,6 @@ "timeslider.month.october": "d'ochobre", "timeslider.month.november": "de payares", "timeslider.month.december": "d'avientu", - "timeslider.unnamedauthor": "{{num}} autor an\u00f3nimu", "timeslider.unnamedauthors": "{{num}} autores an\u00f3nimos", "pad.savedrevs.marked": "Esta revisi\u00f3n marcose como revisi\u00f3n guardada", "pad.userlist.entername": "Escribi'l to nome", diff --git a/src/locales/az.json b/src/locales/az.json index 82562e79..2693d9a2 100644 --- a/src/locales/az.json +++ b/src/locales/az.json @@ -101,7 +101,6 @@ "timeslider.month.october": "Oktyabr", "timeslider.month.november": "Noyabr", "timeslider.month.december": "Dekabr", - "timeslider.unnamedauthor": "{{num}} ads\u0131z m\u00fc\u0259llif", "timeslider.unnamedauthors": "{{num}} ads\u0131z m\u00fc\u0259llifl\u0259r", "pad.savedrevs.marked": "Bu versiya indi yadda\u015fa saxlanm\u0131\u015f kimi ni\u015fanland\u0131", "pad.userlist.entername": "Ad\u0131n\u0131z\u0131 daxil et", diff --git a/src/locales/br.json b/src/locales/br.json index 8bf30224..dcf314fc 100644 --- a/src/locales/br.json +++ b/src/locales/br.json @@ -104,7 +104,6 @@ "timeslider.month.october": "Here", "timeslider.month.november": "Du", "timeslider.month.december": "Kerzu", - "timeslider.unnamedauthor": "{{niver}} aozer dianav", "timeslider.unnamedauthors": "Aozerien dianav", "pad.savedrevs.marked": "Merket eo an adweladenn-ma\u00f1 evel adweladenn gwiriet", "pad.userlist.entername": "Ebarzhit hoc'h anv", diff --git a/src/locales/ca.json b/src/locales/ca.json index 6771730f..722e8c27 100644 --- a/src/locales/ca.json +++ b/src/locales/ca.json @@ -103,7 +103,6 @@ "timeslider.month.october": "Octubre", "timeslider.month.november": "Novembre", "timeslider.month.december": "Desembre", - "timeslider.unnamedauthor": "{{num}} autor sense nom", "timeslider.unnamedauthors": "{{num}} autors sense noms", "pad.savedrevs.marked": "Aquesta revisi\u00f3 est\u00e0 marcada ara com a revisi\u00f3 desada", "pad.userlist.entername": "Introdu\u00efu el vostre nom", diff --git a/src/locales/cs.json b/src/locales/cs.json index bd2b99d6..0de40408 100644 --- a/src/locales/cs.json +++ b/src/locales/cs.json @@ -102,7 +102,6 @@ "timeslider.month.october": "\u0159\u00edjen", "timeslider.month.november": "listopad", "timeslider.month.december": "prosinec", - "timeslider.unnamedauthor": "{{num}} nejmenovan\u00fd autor", "timeslider.unnamedauthors": "{{num}} nejmenovan\u00fdch autor\u016f", "pad.savedrevs.marked": "Tato revize je nyn\u00ed ozna\u010dena jako ulo\u017een\u00e1", "pad.userlist.entername": "Zadejte sv\u00e9 jm\u00e9no", diff --git a/src/locales/da.json b/src/locales/da.json index 28b161e9..233bb8dd 100644 --- a/src/locales/da.json +++ b/src/locales/da.json @@ -103,7 +103,6 @@ "timeslider.month.october": "oktober", "timeslider.month.november": "november", "timeslider.month.december": "december", - "timeslider.unnamedauthor": "{{num}} unavngiven forfatter", "timeslider.unnamedauthors": "{{num}} unavngivne forfattere", "pad.savedrevs.marked": "Denne revision er nu markeret som en gemt revision", "pad.userlist.entername": "Indtast dit navn", diff --git a/src/locales/de.json b/src/locales/de.json index d7be7b90..efd826d6 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -104,8 +104,7 @@ "timeslider.month.october": "Oktober", "timeslider.month.november": "November", "timeslider.month.december": "Dezember", - "timeslider.unnamedauthor": "{{num}} unbenannter Autor", - "timeslider.unnamedauthors": "{{num}} unbenannte Autoren", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: unbenannter Autor, other: unbenannte Autoren ]}", "pad.savedrevs.marked": "Diese Version wurde jetzt als gespeicherte Version gekennzeichnet", "pad.userlist.entername": "Geben Sie Ihren Namen ein", "pad.userlist.unnamed": "unbenannt", diff --git a/src/locales/el.json b/src/locales/el.json index 4dd3067a..6741b075 100644 --- a/src/locales/el.json +++ b/src/locales/el.json @@ -104,7 +104,6 @@ "timeslider.month.october": "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5", "timeslider.month.november": "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", "timeslider.month.december": "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", - "timeslider.unnamedauthor": "{{num}} \u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03c2 \u03c3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03b1\u03c2", "timeslider.unnamedauthors": "{{num}} \u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03b9 \u03c3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03b5\u03af\u03c2", "pad.savedrevs.marked": "\u0391\u03c5\u03c4\u03ae \u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 \u03b5\u03c0\u03b9\u03c3\u03b7\u03bc\u03ac\u03bd\u03b8\u03b7\u03ba\u03b5 \u03c9\u03c2 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7", "pad.userlist.entername": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03ac \u03c3\u03b1\u03c2", diff --git a/src/locales/es.json b/src/locales/es.json index 9f273651..2768bcf8 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -107,7 +107,6 @@ "timeslider.month.october": "Octubre", "timeslider.month.november": "Noviembre", "timeslider.month.december": "Diciembre", - "timeslider.unnamedauthor": "{{num}} autor desconocido", "timeslider.unnamedauthors": "{{num}} autores desconocidos", "pad.savedrevs.marked": "Revisi\u00f3n guardada", "pad.userlist.entername": "Escribe tu nombre", diff --git a/src/locales/eu.json b/src/locales/eu.json index 99a76e0d..9485bb5f 100644 --- a/src/locales/eu.json +++ b/src/locales/eu.json @@ -101,7 +101,6 @@ "timeslider.month.october": "Urria", "timeslider.month.november": "Azaroa", "timeslider.month.december": "Abendua", - "timeslider.unnamedauthor": "{{num}} izenik gabeko egilea", "timeslider.unnamedauthors": "{{num}} izenik gabeko egileak", "pad.savedrevs.marked": "Berrikuspen hau markatua dago gordetako berrikuspen gisa", "pad.userlist.entername": "Sartu zure erabiltzaile izena", diff --git a/src/locales/fa.json b/src/locales/fa.json index b4da24d7..a656decc 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -106,7 +106,6 @@ "timeslider.month.october": "\u0627\u06a9\u062a\u0628\u0631", "timeslider.month.november": "\u0646\u0648\u0627\u0645\u0628\u0631", "timeslider.month.december": "\u062f\u0633\u0627\u0645\u0628\u0631", - "timeslider.unnamedauthor": "{{num}} \u0646\u0648\u06cc\u0633\u0646\u062f\u0647\u0654 \u0628\u06cc\u200c\u0646\u0627\u0645", "timeslider.unnamedauthors": "{{num}} \u0646\u0648\u06cc\u0633\u0646\u062f\u0647\u0654 \u0628\u06cc\u200c\u0646\u0627\u0645", "pad.savedrevs.marked": "\u0627\u06cc\u0646 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u0647\u0645 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0639\u0644\u0627\u0645\u062a\u200c\u06af\u0630\u0627\u0631\u06cc \u0634\u062f", "pad.userlist.entername": "\u0646\u0627\u0645 \u062e\u0648\u062f \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f", diff --git a/src/locales/fi.json b/src/locales/fi.json index 73359e7b..7990fd5a 100644 --- a/src/locales/fi.json +++ b/src/locales/fi.json @@ -107,7 +107,6 @@ "timeslider.month.october": "lokakuu", "timeslider.month.november": "marraskuu", "timeslider.month.december": "joulukuu", - "timeslider.unnamedauthor": "{{num}} nimet\u00f6n tekij\u00e4", "timeslider.unnamedauthors": "{{num}} nimet\u00f6nt\u00e4 tekij\u00e4\u00e4", "pad.savedrevs.marked": "T\u00e4m\u00e4 versio on nyt merkitty tallennetuksi versioksi", "pad.userlist.entername": "Kirjoita nimesi", diff --git a/src/locales/fo.json b/src/locales/fo.json index 93b46788..6b2cf82f 100644 --- a/src/locales/fo.json +++ b/src/locales/fo.json @@ -86,7 +86,6 @@ "timeslider.month.october": "October", "timeslider.month.november": "November", "timeslider.month.december": "Desember", - "timeslider.unnamedauthor": "{{num}} \u00f3nevndur h\u00f8vundur", "timeslider.unnamedauthors": "{{num}} \u00f3nevndir h\u00f8vundar", "pad.savedrevs.marked": "Henda endursko\u00f0anin er n\u00fa merkt sum ein goymd endursko\u00f0an", "pad.userlist.entername": "Skriva t\u00edtt navn", diff --git a/src/locales/fr.json b/src/locales/fr.json index 272faf93..4d4ab134 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -114,8 +114,7 @@ "timeslider.month.october": "Octobre", "timeslider.month.november": "Novembre", "timeslider.month.december": "D\u00e9cembre", - "timeslider.unnamedauthor": "{{num}} auteur anonyme", - "timeslider.unnamedauthors": "{{num}} auteurs anonymes", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: auteur anonyme, other: auteurs anonymes ]}", "pad.savedrevs.marked": "Cette r\u00e9vision est maintenant marqu\u00e9e comme r\u00e9vision enregistr\u00e9e", "pad.userlist.entername": "Entrez votre nom", "pad.userlist.unnamed": "anonyme", diff --git a/src/locales/gl.json b/src/locales/gl.json index 5d6d0526..6e4eeff4 100644 --- a/src/locales/gl.json +++ b/src/locales/gl.json @@ -101,7 +101,6 @@ "timeslider.month.october": "outubro", "timeslider.month.november": "novembro", "timeslider.month.december": "decembro", - "timeslider.unnamedauthor": "{{num}} autor an\u00f3nimo", "timeslider.unnamedauthors": "{{num}} autores an\u00f3nimos", "pad.savedrevs.marked": "Esta revisi\u00f3n est\u00e1 agora marcada como revisi\u00f3n gardada", "pad.userlist.entername": "Insira o seu nome", diff --git a/src/locales/he.json b/src/locales/he.json index 92b30e9f..33b13e83 100644 --- a/src/locales/he.json +++ b/src/locales/he.json @@ -103,7 +103,6 @@ "timeslider.month.october": "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8", "timeslider.month.november": "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8", "timeslider.month.december": "\u05d3\u05e6\u05de\u05d1\u05e8", - "timeslider.unnamedauthor": "\u05db\u05d5\u05ea\u05d1 \u05d7\u05e1\u05e8\u05be\u05e9\u05dd \u05d0\u05d7\u05d3", "timeslider.unnamedauthors": "{{num}} \u05db\u05d5\u05ea\u05d1\u05d9\u05dd \u05d7\u05e1\u05e8\u05d9\u05be\u05e9\u05dd", "pad.savedrevs.marked": "\u05d2\u05e8\u05e1\u05d4 \u05d6\u05d5 \u05de\u05e1\u05d5\u05de\u05e0\u05ea \u05db\u05d2\u05e8\u05e1\u05d4 \u05e9\u05de\u05d5\u05e8\u05d4", "pad.userlist.entername": "\u05e0\u05d0 \u05dc\u05d4\u05d6\u05d9\u05df \u05d0\u05ea \u05e9\u05de\u05da", diff --git a/src/locales/ia.json b/src/locales/ia.json index 3fea6648..418f53ba 100644 --- a/src/locales/ia.json +++ b/src/locales/ia.json @@ -21,7 +21,7 @@ "pad.toolbar.timeslider.title": "Glissa-tempore", "pad.toolbar.savedRevision.title": "Version salveguardate", "pad.toolbar.settings.title": "Configuration", - "pad.toolbar.embed.title": "Incorporar iste pad", + "pad.toolbar.embed.title": "Divider e incorporar iste pad", "pad.toolbar.showusers.title": "Monstrar le usatores de iste pad", "pad.colorpicker.save": "Salveguardar", "pad.colorpicker.cancel": "Cancellar", @@ -101,8 +101,7 @@ "timeslider.month.october": "octobre", "timeslider.month.november": "novembre", "timeslider.month.december": "decembre", - "timeslider.unnamedauthor": "{{num}} autor sin nomine", - "timeslider.unnamedauthors": "{{num}} autores sin nomine", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor, other: autores ]} sin nomine", "pad.savedrevs.marked": "Iste version es ora marcate como version salveguardate", "pad.userlist.entername": "Entra tu nomine", "pad.userlist.unnamed": "sin nomine", diff --git a/src/locales/it.json b/src/locales/it.json index 9f3371b5..ff141e05 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -104,7 +104,6 @@ "timeslider.month.october": "ottobre", "timeslider.month.november": "novembre", "timeslider.month.december": "dicembre", - "timeslider.unnamedauthor": "{{num}} autore senza nome", "timeslider.unnamedauthors": "{{num}} autori senza nome", "pad.savedrevs.marked": "Questa revisione \u00e8 ora contrassegnata come una versione salvata", "pad.userlist.entername": "Inserisci il tuo nome", diff --git a/src/locales/ja.json b/src/locales/ja.json index bffacb54..5a5915ba 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -101,8 +101,7 @@ "timeslider.month.october": "10\u6708", "timeslider.month.november": "11\u6708", "timeslider.month.december": "12\u6708", - "timeslider.unnamedauthor": "{{num}} \u4eba\u306e\u533f\u540d\u306e\u4f5c\u8005", - "timeslider.unnamedauthors": "{{num}} \u4eba\u306e\u533f\u540d\u306e\u4f5c\u8005", + "timeslider.unnamedauthors": "{{num}} \u4eba\u306e\u533f\u540d\u306e{[plural(num) other: \u4f5c\u8005 ]}", "pad.savedrevs.marked": "\u3053\u306e\u7248\u3092\u3001\u4fdd\u5b58\u6e08\u307f\u306e\u7248\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u307e\u3057\u305f\u3002", "pad.userlist.entername": "\u540d\u524d\u3092\u5165\u529b", "pad.userlist.unnamed": "\u540d\u524d\u306a\u3057", diff --git a/src/locales/ko.json b/src/locales/ko.json index 298440ce..d279c6ca 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -101,7 +101,6 @@ "timeslider.month.october": "10\uc6d4", "timeslider.month.november": "11\uc6d4", "timeslider.month.december": "12\uc6d4", - "timeslider.unnamedauthor": "\uc774\ub984 \uc5c6\ub294 \uc800\uc790 {{num}}\uba85", "timeslider.unnamedauthors": "\uc774\ub984 \uc5c6\ub294 \uc800\uc790 {{num}}\uba85", "pad.savedrevs.marked": "\uc774 \ud310\uc740 \uc774\uc81c \uc800\uc7a5\ud55c \ud310\uc73c\ub85c \ud45c\uc2dc\ud569\ub2c8\ub2e4.", "pad.userlist.entername": "\uc774\ub984\uc744 \uc785\ub825\ud558\uc138\uc694", diff --git a/src/locales/ksh.json b/src/locales/ksh.json index 9767ee9c..b57d54c8 100644 --- a/src/locales/ksh.json +++ b/src/locales/ksh.json @@ -101,7 +101,6 @@ "timeslider.month.october": "Oktoober", "timeslider.month.november": "Nov\u00e4mber", "timeslider.month.december": "Dez\u00e4mber", - "timeslider.unnamedauthor": "{{num}} naameloose Schriever", "timeslider.unnamedauthors": "{{num}} naameloose Schriever", "pad.savedrevs.marked": "Heh di V\u00e4sjohn es j\u00e4z fa\u00dfjehallde.", "pad.userlist.entername": "Jif Dinge Naame en", diff --git a/src/locales/lt.json b/src/locales/lt.json index 3d442c06..e85d9924 100644 --- a/src/locales/lt.json +++ b/src/locales/lt.json @@ -61,7 +61,6 @@ "timeslider.month.october": "Spalis", "timeslider.month.november": "Lapkritis", "timeslider.month.december": "Gruodis", - "timeslider.unnamedauthor": "{{num}} bevardis autorius", "timeslider.unnamedauthors": "{{num}} bevard\u017eiai(-i\u0173) autoriai(-i\u0173)", "pad.userlist.entername": "\u012eveskite savo vard\u0105", "pad.userlist.unnamed": "bevardis", diff --git a/src/locales/mk.json b/src/locales/mk.json index b0f9b848..1ff577e9 100644 --- a/src/locales/mk.json +++ b/src/locales/mk.json @@ -102,7 +102,6 @@ "timeslider.month.october": "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438", "timeslider.month.november": "\u043d\u043e\u0435\u043c\u0432\u0440\u0438", "timeslider.month.december": "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438", - "timeslider.unnamedauthor": "{{num}} \u043d\u0435\u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d \u0430\u0432\u0442\u043e\u0440", "timeslider.unnamedauthors": "{{num}} \u043d\u0435\u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438 \u0430\u0432\u0442\u043e\u0440\u0438", "pad.savedrevs.marked": "\u041e\u0432\u0430\u0430 \u0440\u0435\u0432\u0438\u0437\u0438\u0458\u0430 \u0441\u0435\u0433\u0430 \u0435 \u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u043a\u0430\u043a\u043e \u0437\u0430\u0447\u0443\u0432\u0430\u043d\u0430", "pad.userlist.entername": "\u0412\u043d\u0435\u0441\u0435\u0442\u0435 \u0433\u043e \u0432\u0430\u0448\u0435\u0442\u043e \u0438\u043c\u0435", diff --git a/src/locales/ml.json b/src/locales/ml.json index 195436cd..fcf8296a 100644 --- a/src/locales/ml.json +++ b/src/locales/ml.json @@ -104,7 +104,6 @@ "timeslider.month.october": "\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c", "timeslider.month.november": "\u0d28\u0d35\u0d02\u0d2c\u0d7c", "timeslider.month.december": "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c", - "timeslider.unnamedauthor": "{{num}} \u0d2a\u0d47\u0d30\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24 \u0d30\u0d1a\u0d2f\u0d3f\u0d24\u0d3e\u0d35\u0d4d", "timeslider.unnamedauthors": "{{num}} \u0d2a\u0d47\u0d30\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24 \u0d30\u0d1a\u0d2f\u0d3f\u0d24\u0d3e\u0d15\u0d4d\u0d15\u0d7e", "pad.savedrevs.marked": "\u0d08 \u0d28\u0d3e\u0d7e\u0d2a\u0d4d\u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d \u0d38\u0d47\u0d35\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d3f\u0d1f\u0d4d\u0d1f\u0d41\u0d33\u0d4d\u0d33 \u0d28\u0d3e\u0d7e\u0d2a\u0d4d\u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d3e\u0d2f\u0d3f \u0d05\u0d1f\u0d2f\u0d3e\u0d33\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d24\u0d4d\u0d24\u0d3f\u0d2f\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41", "pad.userlist.entername": "\u0d24\u0d3e\u0d19\u0d4d\u0d15\u0d33\u0d41\u0d1f\u0d46 \u0d2a\u0d47\u0d30\u0d4d \u0d28\u0d7d\u0d15\u0d41\u0d15", diff --git a/src/locales/ms.json b/src/locales/ms.json index 2c6f72a5..025008a2 100644 --- a/src/locales/ms.json +++ b/src/locales/ms.json @@ -101,7 +101,6 @@ "timeslider.month.october": "Oktober", "timeslider.month.november": "November", "timeslider.month.december": "Disember", - "timeslider.unnamedauthor": "{{num}} orang pengarang awanama", "timeslider.unnamedauthors": "{{num}} orang pengarang awanama", "pad.savedrevs.marked": "Semakan ini telah ditandai sebagai semakan tersimpan", "pad.userlist.entername": "Taipkan nama anda", diff --git a/src/locales/nb.json b/src/locales/nb.json index 834c6917..93a6fc26 100644 --- a/src/locales/nb.json +++ b/src/locales/nb.json @@ -101,7 +101,6 @@ "timeslider.month.october": "oktober", "timeslider.month.november": "november", "timeslider.month.december": "desember", - "timeslider.unnamedauthor": "{{num}} navnl\u00f8se forfattere", "timeslider.unnamedauthors": "{{num}} navnl\u00f8se forfattere", "pad.savedrevs.marked": "Denne revisjonen er n\u00e5 markert som en lagret revisjon", "pad.userlist.entername": "Skriv inn ditt navn", diff --git a/src/locales/nl.json b/src/locales/nl.json index a6ab8db5..64bb56dd 100644 --- a/src/locales/nl.json +++ b/src/locales/nl.json @@ -101,8 +101,7 @@ "timeslider.month.october": "oktober", "timeslider.month.november": "november", "timeslider.month.december": "december", - "timeslider.unnamedauthor": "{{num}} onbekende auteur", - "timeslider.unnamedauthors": "{{num}} onbekende auteurs", + "timeslider.unnamedauthors": "{{num}} onbekende {[plural(num) one: auteur, other: auteurs ]}", "pad.savedrevs.marked": "Deze versie is nu gemarkeerd als opgeslagen versie", "pad.userlist.entername": "Geef uw naam op", "pad.userlist.unnamed": "zonder naam", diff --git a/src/locales/oc.json b/src/locales/oc.json index 46979150..d2bb8152 100644 --- a/src/locales/oc.json +++ b/src/locales/oc.json @@ -101,7 +101,6 @@ "timeslider.month.october": "Octobre", "timeslider.month.november": "Novembre", "timeslider.month.december": "Decembre", - "timeslider.unnamedauthor": "{{num}} autor anonime", "timeslider.unnamedauthors": "{{num}} autors anonimes", "pad.savedrevs.marked": "Aquesta revision es ara marcada coma revision enregistrada", "pad.userlist.entername": "Entratz v\u00f2stre nom", diff --git a/src/locales/os.json b/src/locales/os.json index 209f7f55..451a50ab 100644 --- a/src/locales/os.json +++ b/src/locales/os.json @@ -101,7 +101,6 @@ "timeslider.month.october": "\u043e\u043a\u0442\u044f\u0431\u0440\u044c", "timeslider.month.november": "\u043d\u043e\u044f\u0431\u0440\u044c", "timeslider.month.december": "\u0434\u0435\u043a\u0430\u0431\u0440\u044c", - "timeslider.unnamedauthor": "{{num}} \u04d5\u043d\u04d5\u043d\u043e\u043c \u0444\u044b\u0441\u0441\u04d5\u0433", "timeslider.unnamedauthors": "{{num}} \u04d5\u043d\u04d5\u043d\u043e\u043c \u0444\u044b\u0441\u0441\u04d5\u0434\u0436\u044b", "pad.savedrevs.marked": "\u0410\u0446\u044b \u0444\u04d5\u043b\u0442\u04d5\u0440 \u043d\u044b\u0440 \u043a\u0443\u044b\u0434 \u04d5\u0432\u04d5\u0440\u0434 \u0444\u04d5\u043b\u0442\u04d5\u0440 \u043d\u044b\u0441\u0430\u043d\u0433\u043e\u043d\u0434 \u04d5\u0440\u0446\u044b\u0434", "pad.userlist.entername": "\u0414\u04d5 \u043d\u043e\u043c \u0431\u0430\u0444\u044b\u0441\u0441", diff --git a/src/locales/pa.json b/src/locales/pa.json index 03f2b1ad..63ad0ecd 100644 --- a/src/locales/pa.json +++ b/src/locales/pa.json @@ -90,7 +90,6 @@ "timeslider.month.october": "\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30", "timeslider.month.november": "\u0a28\u0a35\u0a70\u0a2c\u0a30", "timeslider.month.december": "\u0a26\u0a38\u0a70\u0a2c\u0a30", - "timeslider.unnamedauthor": "{{num}} \u0a2c\u0a47\u0a28\u0a3e\u0a2e \u0a32\u0a47\u0a16\u0a15", "timeslider.unnamedauthors": "{{num}} \u0a2c\u0a47\u0a28\u0a3e\u0a2e \u0a32\u0a47\u0a16\u0a15", "pad.savedrevs.marked": "\u0a07\u0a39 \u0a30\u0a40\u0a35\u0a3f\u0a1c\u0a3c\u0a28 \u0a28\u0a42\u0a70 \u0a39\u0a41\u0a23 \u0a38\u0a70\u0a2d\u0a3e\u0a32\u0a47 \u0a39\u0a4b\u0a0f \u0a30\u0a40\u0a35\u0a3f\u0a1c\u0a3c\u0a28 \u0a35\u0a1c\u0a4b\u0a02 \u0a2e\u0a70\u0a28\u0a3f\u0a06 \u0a17\u0a3f\u0a06 \u0a39\u0a48", "pad.userlist.entername": "\u0a06\u0a2a\u0a23\u0a3e \u0a28\u0a3e\u0a02 \u0a26\u0a3f\u0a09", diff --git a/src/locales/pl.json b/src/locales/pl.json index c16fd5a8..869a0784 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -104,7 +104,6 @@ "timeslider.month.october": "Pa\u017adziernik", "timeslider.month.november": "Listopad", "timeslider.month.december": "Grudzie\u0144", - "timeslider.unnamedauthor": "{{num}} nienazwany autor", "timeslider.unnamedauthors": "{{num}} autor\u00f3w bez nazw", "pad.savedrevs.marked": "Ta wersja zosta\u0142a w\u0142a\u015bnie oznaczona jako zapisana.", "pad.userlist.entername": "Wprowad\u017a swoj\u0105 nazw\u0119", diff --git a/src/locales/ps.json b/src/locales/ps.json index 2de36396..1bfa5f33 100644 --- a/src/locales/ps.json +++ b/src/locales/ps.json @@ -56,7 +56,6 @@ "timeslider.month.october": "\u0627\u06a9\u062a\u0648\u0628\u0631", "timeslider.month.november": "\u0646\u0648\u0645\u0628\u0631", "timeslider.month.december": "\u0689\u064a\u0633\u0645\u0628\u0631", - "timeslider.unnamedauthor": "{{num}} \u0628\u06d0\u0646\u0648\u0645 \u0644\u064a\u06a9\u0648\u0627\u0644", "timeslider.unnamedauthors": "{{num}} \u0628\u06d0\u0646\u0648\u0645\u0647 \u0644\u064a\u06a9\u0648\u0627\u0644\u0627\u0646", "pad.savedrevs.marked": "\u0627\u0648\u0633 \u062f\u0627 \u0645\u062e\u06a9\u062a\u0646\u0647 \u062f \u064a\u0648\u06d0 \u062e\u0648\u0646\u062f\u064a \u0634\u0648\u06d0 \u0645\u062e\u06a9\u062a\u0646\u06d0 \u067e\u0647 \u062a\u0648\u06ab\u0647 \u067e\u0647 \u0646\u069a\u0647 \u0634\u0648\u0647", "pad.userlist.entername": "\u0646\u0648\u0645 \u0645\u0648 \u0648\u0631\u06a9\u0693\u06cd", diff --git a/src/locales/pt-br.json b/src/locales/pt-br.json index 55ea017e..f1b58711 100644 --- a/src/locales/pt-br.json +++ b/src/locales/pt-br.json @@ -104,7 +104,6 @@ "timeslider.month.october": "Outubro", "timeslider.month.november": "Novembro", "timeslider.month.december": "Dezembro", - "timeslider.unnamedauthor": "{{num}} autor desconhecido", "timeslider.unnamedauthors": "{{num}} autores desconhecidos", "pad.savedrevs.marked": "Esta revis\u00e3o foi marcada como salva", "pad.userlist.entername": "Insira o seu nome", diff --git a/src/locales/ru.json b/src/locales/ru.json index b4bf539a..4dfd2b26 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -104,7 +104,6 @@ "timeslider.month.october": "\u043e\u043a\u0442\u044f\u0431\u0440\u044c", "timeslider.month.november": "\u043d\u043e\u044f\u0431\u0440\u044c", "timeslider.month.december": "\u0434\u0435\u043a\u0430\u0431\u0440\u044c", - "timeslider.unnamedauthor": "{{num}} \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u0440", "timeslider.unnamedauthors": "\u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432: {{num}}", "pad.savedrevs.marked": "\u042d\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u0430 \u043a\u0430\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u0430\u044f", "pad.userlist.entername": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0430\u0448\u0435 \u0438\u043c\u044f", diff --git a/src/locales/sk.json b/src/locales/sk.json new file mode 100644 index 00000000..4025aca6 --- /dev/null +++ b/src/locales/sk.json @@ -0,0 +1,120 @@ +{ + "@metadata": { + "authors": [ + "Teslaton" + ] + }, + "index.newPad": "Nov\u00fd Pad", + "index.createOpenPad": "alebo vytvori\u0165/otvori\u0165 Pad s n\u00e1zvom:", + "pad.toolbar.bold.title": "Tu\u010dn\u00e9 (Ctrl-B)", + "pad.toolbar.italic.title": "Kurz\u00edva (Ctrl-I)", + "pad.toolbar.underline.title": "Pod\u010diarknut\u00e9 (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Pre\u010diarknut\u00e9", + "pad.toolbar.ol.title": "\u010c\u00edslovan\u00fd zoznam", + "pad.toolbar.ul.title": "Odr\u00e1\u017ekov\u00fd zoznam", + "pad.toolbar.indent.title": "Zv\u00e4\u010d\u0161i\u0165 odsadenie", + "pad.toolbar.unindent.title": "Zmen\u0161i\u0165 odsadenie", + "pad.toolbar.undo.title": "Sp\u00e4\u0165 (Ctrl-Z)", + "pad.toolbar.redo.title": "Znova (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Odstr\u00e1ni\u0165 farby autorstva", + "pad.toolbar.import_export.title": "Import/export z/do r\u00f4znych form\u00e1tov s\u00faborov", + "pad.toolbar.timeslider.title": "\u010casov\u00e1 os", + "pad.toolbar.savedRevision.title": "Ulo\u017ei\u0165 rev\u00edziu", + "pad.toolbar.settings.title": "Nastavenia", + "pad.toolbar.embed.title": "Zdie\u013ea\u0165 alebo vlo\u017ei\u0165 tento Pad", + "pad.toolbar.showusers.title": "Zobrazi\u0165 pou\u017e\u00edvate\u013eov tohoto Padu", + "pad.colorpicker.save": "Ulo\u017ei\u0165", + "pad.colorpicker.cancel": "Zru\u0161i\u0165", + "pad.loading": "Na\u010d\u00edtava sa...", + "pad.passwordRequired": "Pr\u00edstup k tomuto Padu je chr\u00e1nen\u00fd heslom", + "pad.permissionDenied": "\u013dutujeme, nem\u00e1te opr\u00e1vnenie pristupova\u0165 k tomuto Padu", + "pad.wrongPassword": "Nespr\u00e1vne heslo", + "pad.settings.padSettings": "Nastavenia Padu", + "pad.settings.myView": "Vlastn\u00fd poh\u013ead", + "pad.settings.stickychat": "Chat st\u00e1le na obrazovke", + "pad.settings.colorcheck": "Farby autorstva", + "pad.settings.linenocheck": "\u010c\u00edsla riadkov", + "pad.settings.rtlcheck": "\u010c\u00edta\u0165 obsah sprava do\u013eava?", + "pad.settings.fontType": "Typ p\u00edsma:", + "pad.settings.fontType.normal": "Norm\u00e1lne", + "pad.settings.fontType.monospaced": "Strojov\u00e9", + "pad.settings.globalView": "Glob\u00e1lny poh\u013ead", + "pad.settings.language": "Jazyk:", + "pad.importExport.import_export": "Import/Export", + "pad.importExport.import": "Nahra\u0165 \u013eubovo\u013en\u00fd textov\u00fd s\u00fabor alebo dokument", + "pad.importExport.importSuccessful": "Import \u00faspe\u0161n\u00fd!", + "pad.importExport.export": "Exportova\u0165 aktu\u00e1lny Pad ako:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "\u010cist\u00fd text", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Importova\u0165 m\u00f4\u017eete len \u010dist\u00fd text alebo HTML. Pre pokro\u010dilej\u0161ie funkcie importu pros\u00edm nain\u0161talujte \u201e\u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EAbiword\u003C/a\u003E\u201c.", + "pad.modals.connected": "Pripojen\u00e9.", + "pad.modals.reconnecting": "Op\u00e4tovn\u00e9 prip\u00e1janie k v\u00e1\u0161mu Padu...", + "pad.modals.forcereconnect": "Vyn\u00fati\u0165 znovupripojenie", + "pad.modals.userdup": "Otvoren\u00e9 v inom okne", + "pad.modals.userdup.explanation": "Zd\u00e1 sa, \u017ee tento Pad je na tomto po\u010d\u00edta\u010di otvoren\u00fd vo viacer\u00fdch okn\u00e1ch prehliada\u010da.", + "pad.modals.userdup.advice": "Pre pou\u017eitie tohoto okna se mus\u00edte znovu pripoji\u0165.", + "pad.modals.unauth": "Nie ste autorizovan\u00fd", + "pad.modals.unauth.explanation": "Va\u0161e opr\u00e1vnenia sa po\u010das prehliadania tejto str\u00e1nky zmenili. Sk\u00faste sa pripoji\u0165 znovu.", + "pad.modals.looping": "Odpojen\u00e9.", + "pad.modals.looping.explanation": "Nastali probl\u00e9my pri komunik\u00e1cii so synchroniza\u010dn\u00fdm serverom.", + "pad.modals.looping.cause": "Mo\u017eno ste pripojen\u00ed cez nekompatibiln\u00fd firewall alebo proxy server.", + "pad.modals.initsocketfail": "Server je nedostupn\u00fd.", + "pad.modals.initsocketfail.explanation": "Nepodarilo sa pripoji\u0165 k synchroniza\u010dn\u00e9mu serveru.", + "pad.modals.initsocketfail.cause": "Pr\u00ed\u010dinou je pravdepodobne probl\u00e9m s prehliada\u010dom alebo internetov\u00fdm pripojen\u00edm.", + "pad.modals.slowcommit": "Odpojen\u00e9.", + "pad.modals.slowcommit.explanation": "Server neodpoved\u00e1.", + "pad.modals.slowcommit.cause": "Pr\u00ed\u010dinou m\u00f4\u017ee by\u0165 probl\u00e9m so sie\u0165ov\u00fdm pripojen\u00edm.", + "pad.modals.deleted": "Odstr\u00e1nen\u00e9.", + "pad.modals.deleted.explanation": "Tento Pad bol odstr\u00e1nen\u00fd.", + "pad.modals.disconnected": "Boli ste odpojen\u00ed.", + "pad.modals.disconnected.explanation": "Spojenie so serverom sa preru\u0161ilo", + "pad.modals.disconnected.cause": "Server m\u00f4\u017ee by\u0165 nedostupn\u00fd. Ak by probl\u00e9m pretrv\u00e1val, informujte n\u00e1s pros\u00edm.", + "pad.share": "Zdie\u013ea\u0165 tento Pad", + "pad.share.readonly": "Len na \u010d\u00edtanie", + "pad.share.link": "Odkaz", + "pad.share.emebdcode": "Vlo\u017ei\u0165 URL", + "pad.chat": "Chat", + "pad.chat.title": "Otvori\u0165 chat tohoto Padu.", + "pad.chat.loadmessages": "Na\u010d\u00edta\u0165 \u010fal\u0161ie spr\u00e1vy", + "timeslider.pageTitle": "\u010casov\u00e1 os {{appTitle}}", + "timeslider.toolbar.returnbutton": "N\u00e1vrat do Padu", + "timeslider.toolbar.authors": "Autori:", + "timeslider.toolbar.authorsList": "Bez autorov", + "timeslider.toolbar.exportlink.title": "Export", + "timeslider.exportCurrent": "Exportova\u0165 aktu\u00e1lnu verziu ako:", + "timeslider.version": "Verzia {{version}}", + "timeslider.saved": "Ulo\u017een\u00e9 {{day}}. {{month}} {{year}}", + "timeslider.dateformat": "{{day}}. {{month}} {{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "janu\u00e1ra", + "timeslider.month.february": "febru\u00e1ra", + "timeslider.month.march": "marca", + "timeslider.month.april": "apr\u00edla", + "timeslider.month.may": "m\u00e1ja", + "timeslider.month.june": "j\u00fana", + "timeslider.month.july": "j\u00fala", + "timeslider.month.august": "augusta", + "timeslider.month.september": "septembra", + "timeslider.month.october": "okt\u00f3bra", + "timeslider.month.november": "novembra", + "timeslider.month.december": "decembra", + "timeslider.unnamedauthors": "{{num}} nemenovan\u00fdch autorov", + "pad.savedrevs.marked": "T\u00e1to rev\u00edzia bola ozna\u010den\u00e1 ako ulo\u017een\u00e1", + "pad.userlist.entername": "Zadajte svoje meno", + "pad.userlist.unnamed": "nemenovan\u00fd", + "pad.userlist.guest": "Hos\u0165", + "pad.userlist.deny": "Zak\u00e1za\u0165", + "pad.userlist.approve": "Schv\u00e1li\u0165", + "pad.editbar.clearcolors": "Skuto\u010dne odstr\u00e1ni\u0165 autorsk\u00e9 farby z cel\u00e9ho dokumentu?", + "pad.impexp.importbutton": "Importova\u0165", + "pad.impexp.importing": "Prebieha import...", + "pad.impexp.confirmimport": "Import s\u00faboru prep\u00ed\u0161e cel\u00fd s\u00fa\u010dasn\u00fd obsah Padu. Skuto\u010dne si \u017eel\u00e1te vykona\u0165 t\u00fato akciu?", + "pad.impexp.convertFailed": "Tento s\u00fabor nie je mo\u017en\u00e9 importova\u0165. Pou\u017eite pros\u00edm in\u00fd form\u00e1t s\u00faboru alebo nakop\u00edrujte text manu\u00e1lne", + "pad.impexp.uploadFailed": "Nahr\u00e1vanie zlyhalo, sk\u00faste to pros\u00edm znovu", + "pad.impexp.importfailed": "Import zlyhal", + "pad.impexp.copypaste": "Vlo\u017ete pros\u00edm k\u00f3piu cez schr\u00e1nku", + "pad.impexp.exportdisabled": "Export do form\u00e1tu {{type}} nie je povolen\u00fd. Kontaktujte pros\u00edm administr\u00e1tora pre zistenie detailov." +} \ No newline at end of file diff --git a/src/locales/sl.json b/src/locales/sl.json index e00e9bf1..2b27c38b 100644 --- a/src/locales/sl.json +++ b/src/locales/sl.json @@ -101,7 +101,6 @@ "timeslider.month.october": "Oktober", "timeslider.month.november": "November", "timeslider.month.december": "December", - "timeslider.unnamedauthor": "neimenovani avtor {{num}}", "timeslider.unnamedauthors": "{{num}} neimenovani avtorji", "pad.savedrevs.marked": "Ta predelava je ozna\u010dena kot shranjena predelava.", "pad.userlist.entername": "Vpi\u0161ite ime", diff --git a/src/locales/sv.json b/src/locales/sv.json index 2382ac42..42603f6a 100644 --- a/src/locales/sv.json +++ b/src/locales/sv.json @@ -101,7 +101,6 @@ "timeslider.month.october": "oktober", "timeslider.month.november": "november", "timeslider.month.december": "december", - "timeslider.unnamedauthor": "{{num}} namnl\u00f6s f\u00f6rfattare", "timeslider.unnamedauthors": "{{num}} namnl\u00f6sa f\u00f6rfattare", "pad.savedrevs.marked": "Denna revision \u00e4r nu markerad som en sparad revision", "pad.userlist.entername": "Ange ditt namn", diff --git a/src/locales/uk.json b/src/locales/uk.json index 04ffc035..ab2a588e 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -104,7 +104,6 @@ "timeslider.month.october": "\u0416\u043e\u0432\u0442\u0435\u043d\u044c", "timeslider.month.november": "\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434", "timeslider.month.december": "\u0413\u0440\u0443\u0434\u0435\u043d\u044c", - "timeslider.unnamedauthor": "{{num}} \u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0439 \u0430\u0432\u0442\u043e\u0440", "timeslider.unnamedauthors": "\u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432: {{num}}", "pad.savedrevs.marked": "\u0426\u044e \u0432\u0435\u0440\u0441\u0456\u044e \u043f\u043e\u043c\u0456\u0447\u0435\u043d\u043e \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e\u044e \u0432\u0435\u0440\u0441\u0456\u0454\u044e", "pad.userlist.entername": "\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0412\u0430\u0448\u0435 \u0456\u043c'\u044f", diff --git a/src/locales/vi.json b/src/locales/vi.json index 5abbb1a0..2d176da2 100644 --- a/src/locales/vi.json +++ b/src/locales/vi.json @@ -101,7 +101,6 @@ "timeslider.month.october": "Th\u00e1ng M\u01b0\u1eddi", "timeslider.month.november": "Th\u00e1ng M\u01b0\u1eddi M\u1ed9t", "timeslider.month.december": "Th\u00e1ng M\u01b0\u1eddi Hai", - "timeslider.unnamedauthor": "{{num}} t\u00e1c gi\u1ea3 kh\u00f4ng t\u00ean", "timeslider.unnamedauthors": "{{num}} t\u00e1c gi\u1ea3 kh\u00f4ng t\u00ean", "pad.savedrevs.marked": "Phi\u00ean b\u1ea3n n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u00e1nh d\u1ea5u l\u00e0 m\u1ed9t phi\u00ean b\u1ea3n \u0111\u00e3 l\u01b0u", "pad.userlist.entername": "Nh\u1eadp t\u00ean c\u1ee7a b\u1ea1n", diff --git a/src/locales/zh-hans.json b/src/locales/zh-hans.json index 4358c74c..e9335392 100644 --- a/src/locales/zh-hans.json +++ b/src/locales/zh-hans.json @@ -103,7 +103,6 @@ "timeslider.month.october": "\u5341\u6708", "timeslider.month.november": "\u5341\u4e00\u6708", "timeslider.month.december": "\u5341\u4e8c\u6708", - "timeslider.unnamedauthor": "{{num}}\u533f\u540d\u4f5c\u8005", "timeslider.unnamedauthors": "{{num}}\u533f\u540d\u4f5c\u8005", "pad.savedrevs.marked": "\u6b64\u4fee\u8ba2\u5df2\u6807\u8bb0\u4e3a\u4fdd\u5b58\u4fee\u8ba2", "pad.userlist.entername": "\u8f93\u5165\u60a8\u7684\u59d3\u540d", diff --git a/src/locales/zh-hant.json b/src/locales/zh-hant.json index bb48b348..f983b020 100644 --- a/src/locales/zh-hant.json +++ b/src/locales/zh-hant.json @@ -103,7 +103,6 @@ "timeslider.month.october": "10\u6708", "timeslider.month.november": "11\u6708", "timeslider.month.december": "12\u6708", - "timeslider.unnamedauthor": "{{num}} \u533f\u540d\u5354\u4f5c\u8005", "timeslider.unnamedauthors": "{{num}} \u533f\u540d\u5354\u4f5c\u8005", "pad.savedrevs.marked": "\u6a19\u8a18\u6b64\u4fee\u8a02\u7248\u672c\u70ba\u5df2\u5132\u5b58\u4fee\u8a02\u7248\u672c\u3002", "pad.userlist.entername": "\u8f38\u5165\u60a8\u7684\u59d3\u540d", From 286e592f91f860c2571ebc3bcc497e1a4585d430 Mon Sep 17 00:00:00 2001 From: Eric Schrijver Date: Fri, 23 Aug 2013 00:56:58 +0200 Subject: [PATCH 35/39] Correct the path to the docs file used by the doc generator --- tools/doc/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/doc/README.md b/tools/doc/README.md index 743bfaae..3646e46e 100644 --- a/tools/doc/README.md +++ b/tools/doc/README.md @@ -72,5 +72,5 @@ Each type of heading has a description block. Run the following from the etherpad-lite root directory: ```sh -$ node tools/doc/generate doc/all.md --format=html --template=doc/template.html > out.htm +$ node tools/doc/generate doc/index.md --format=html --template=doc/template.html > out.html ``` \ No newline at end of file From 4377f7a2e4b1a368f4deb9ea9e7565d4c53947f9 Mon Sep 17 00:00:00 2001 From: Eric Schrijver Date: Sun, 1 Sep 2013 10:57:31 +0200 Subject: [PATCH 36/39] Fix encoding issue in localization.md --- doc/localization.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/localization.md b/doc/localization.md index 182197d9..6c99ecf1 100644 --- a/doc/localization.md +++ b/doc/localization.md @@ -19,9 +19,9 @@ Translations will be send back to us regularly and will eventually appear in the `/src/locales` contains files for all supported languages which contain the translated strings. Translation files are simple `*.json` files and look like this: ```json -{ "pad.modals.connected": "Connecté." -, "pad.modals.uderdup": "Ouvrir dans une nouvelle fenêtre." -, "pad.toolbar.unindent.title": "Désindenter" +{ "pad.modals.connected": "Connecté." +, "pad.modals.uderdup": "Ouvrir dans une nouvelle fenêtre." +, "pad.toolbar.unindent.title": "Dèsindenter" , "pad.toolbar.undo.title": "Annuler (Ctrl-Z)" , "timeslider.pageTitle": "{{appTitle}} Curseur temporel" , ... @@ -50,7 +50,7 @@ to: ``` -In the javascript files of your plugin, chaneg all hardcoded messages/strings... +In the javascript files of your plugin, change all hardcoded messages/strings... from: ```js @@ -75,7 +75,7 @@ alert(window._('pad.chat')); *ep_your-plugin/locales/es.json* ``` -{ "ep_your-plugin.h1": "Título 1" +{ "ep_your-plugin.h1": "Título 1" } ``` From 384f500d4c908bc4416a7e06a21480d3c49a19cd Mon Sep 17 00:00:00 2001 From: Eric Schrijver Date: Sun, 1 Sep 2013 11:22:03 +0200 Subject: [PATCH 37/39] Clarify how to access tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add @marcelklehr’s clarification in https://github.com/ether/etherpad-lite/issues/1859 --- CONTRIBUTING.md | 3 +++ tests/README.md | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 tests/README.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e185d9c5..74aa8b3f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -63,3 +63,6 @@ The docs are in the `doc/` folder in the git repository, so people can easily fi Documentation should be kept up-to-date. This means, whenever you add a new API method, add a new hook or change the database model, pack the relevant changes to the docs in the same pull request. You can build the docs e.g. produce html, using `make docs`. At some point in the future we will provide an online documentation. The current documentation in the github wiki should always reflect the state of `master` (!), since there are no docs in master, yet. + +## Testing +Front-end tests are found in the `tests/frontend/` folder in the repository. Run them by pointing your browser to `/tests/frontend`. \ No newline at end of file diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 00000000..1851305f --- /dev/null +++ b/tests/README.md @@ -0,0 +1,5 @@ +# About this folder: Tests + +## Frontend + +To run the tests, point your browser to `/tests/frontend` From 1aa5981ce32e592b3b9e687b62350e8698630a83 Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 2 Sep 2013 13:56:17 +0100 Subject: [PATCH 38/39] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 42abf83e..f61ffa5b 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,6 @@ There's also a full-featured plugin framework, allowing you to easily add your o Finally, Etherpad comes with translations into most languages! Users are automatically delivered the correct language for their local settings. -**Visit [beta.etherpad.org](http://beta.etherpad.org) to test it live. Hosted by [Joyent](http://joyent.com)** - Also, check out the **[FAQ](https://github.com/ether/etherpad-lite/wiki/FAQ)**, really! # Installation From 7ecf5f8c521714a1270e576b954cd0b80fe8b8f5 Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Mon, 2 Sep 2013 18:50:54 +0000 Subject: [PATCH 39/39] Localisation updates from http://translatewiki.net. --- src/locales/ast.json | 4 +- src/locales/br.json | 4 +- src/locales/ca.json | 2 +- src/locales/cs.json | 38 ++++++------ src/locales/da.json | 2 +- src/locales/el.json | 3 +- src/locales/es.json | 9 +-- src/locales/fi.json | 2 +- src/locales/fo.json | 2 +- src/locales/fr.json | 45 ++++++++------- src/locales/gl.json | 2 +- src/locales/he.json | 5 +- src/locales/it.json | 2 +- src/locales/ko.json | 4 +- src/locales/lb.json | 9 +-- src/locales/lv.json | 26 ++++++++- src/locales/map-bms.json | 120 ++++++++++++++++++++++++++++++++++++++ src/locales/mk.json | 2 +- src/locales/ml.json | 2 +- src/locales/mr.json | 59 +++++++++++++++++++ src/locales/ms.json | 4 +- src/locales/nds.json | 121 +++++++++++++++++++++++++++++++++++++++ src/locales/oc.json | 2 +- src/locales/pt-br.json | 2 +- src/locales/pt.json | 2 +- src/locales/ru.json | 4 +- src/locales/sk.json | 2 +- src/locales/sl.json | 5 +- src/locales/sv.json | 4 +- src/locales/uk.json | 11 ++-- src/locales/vi.json | 3 +- src/locales/zh-hans.json | 8 ++- 32 files changed, 424 insertions(+), 86 deletions(-) create mode 100644 src/locales/map-bms.json create mode 100644 src/locales/mr.json create mode 100644 src/locales/nds.json diff --git a/src/locales/ast.json b/src/locales/ast.json index 250e3045..de1f9741 100644 --- a/src/locales/ast.json +++ b/src/locales/ast.json @@ -21,7 +21,7 @@ "pad.toolbar.timeslider.title": "Eslizador de tiempu", "pad.toolbar.savedRevision.title": "Guardar revisi\u00f3n", "pad.toolbar.settings.title": "Configuraci\u00f3n", - "pad.toolbar.embed.title": "Incrustar esti bloc", + "pad.toolbar.embed.title": "Compartir ya incrustar esti bloc", "pad.toolbar.showusers.title": "Amosar los usuarios d'esti bloc", "pad.colorpicker.save": "Guardar", "pad.colorpicker.cancel": "Encaboxar", @@ -101,7 +101,7 @@ "timeslider.month.october": "d'ochobre", "timeslider.month.november": "de payares", "timeslider.month.december": "d'avientu", - "timeslider.unnamedauthors": "{{num}} autores an\u00f3nimos", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor an\u00f3nimu, other: autores an\u00f3nimos]}", "pad.savedrevs.marked": "Esta revisi\u00f3n marcose como revisi\u00f3n guardada", "pad.userlist.entername": "Escribi'l to nome", "pad.userlist.unnamed": "ensin nome", diff --git a/src/locales/br.json b/src/locales/br.json index dcf314fc..28192d0c 100644 --- a/src/locales/br.json +++ b/src/locales/br.json @@ -24,7 +24,7 @@ "pad.toolbar.timeslider.title": "Istor dinamek", "pad.toolbar.savedRevision.title": "Doareo\u00f9 enrollet", "pad.toolbar.settings.title": "Arventenno\u00f9", - "pad.toolbar.embed.title": "Enframma\u00f1 ar pad-ma\u00f1", + "pad.toolbar.embed.title": "Ranna\u00f1 hag enframma\u00f1 ar pad-ma\u00f1", "pad.toolbar.showusers.title": "Diskwelet implijerien ar Pad", "pad.colorpicker.save": "Enrolla\u00f1", "pad.colorpicker.cancel": "Nulla\u00f1", @@ -104,7 +104,7 @@ "timeslider.month.october": "Here", "timeslider.month.november": "Du", "timeslider.month.december": "Kerzu", - "timeslider.unnamedauthors": "Aozerien dianav", + "timeslider.unnamedauthors": "{{num}} dianav {[plural(num) one: aozer, other: aozerien ]}", "pad.savedrevs.marked": "Merket eo an adweladenn-ma\u00f1 evel adweladenn gwiriet", "pad.userlist.entername": "Ebarzhit hoc'h anv", "pad.userlist.unnamed": "dizanv", diff --git a/src/locales/ca.json b/src/locales/ca.json index 722e8c27..ee8e025a 100644 --- a/src/locales/ca.json +++ b/src/locales/ca.json @@ -103,7 +103,7 @@ "timeslider.month.october": "Octubre", "timeslider.month.november": "Novembre", "timeslider.month.december": "Desembre", - "timeslider.unnamedauthors": "{{num}} autors sense noms", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor, other: autors ]} sense nom", "pad.savedrevs.marked": "Aquesta revisi\u00f3 est\u00e0 marcada ara com a revisi\u00f3 desada", "pad.userlist.entername": "Introdu\u00efu el vostre nom", "pad.userlist.unnamed": "sense nom", diff --git a/src/locales/cs.json b/src/locales/cs.json index 0de40408..11fdc87a 100644 --- a/src/locales/cs.json +++ b/src/locales/cs.json @@ -1,15 +1,17 @@ { "@metadata": { "authors": [ + "Jakubt", "Jezevec", + "Leanes", "Quinn" ] }, - "index.newPad": "Nov\u00fd Pad", - "index.createOpenPad": "nebo vytvo\u0159it/otev\u0159\u00edt Pad jm\u00e9nem:", + "index.newPad": "Zalo\u017e nov\u00fd Pad", + "index.createOpenPad": "nebo vytvo\u0159/otev\u0159i Pad s n\u00e1zvem:", "pad.toolbar.bold.title": "Tu\u010dn\u00e9 (Ctrl-B)", "pad.toolbar.italic.title": "Kurz\u00edva (Ctrl-I)", - "pad.toolbar.underline.title": "Podtr\u017een\u00ed (Ctrl-U)", + "pad.toolbar.underline.title": "Podtr\u017een\u00e9 (Ctrl-U)", "pad.toolbar.strikethrough.title": "P\u0159eskrtnut\u00e9", "pad.toolbar.ol.title": "\u010c\u00edslovan\u00fd seznam", "pad.toolbar.ul.title": "Ne\u010d\u00edslovan\u00fd seznam", @@ -17,28 +19,28 @@ "pad.toolbar.unindent.title": "P\u0159edsazen\u00ed", "pad.toolbar.undo.title": "Zp\u011bt (Ctrl-Z)", "pad.toolbar.redo.title": "Opakovat (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Vymazat barvy autorstv\u00ed", + "pad.toolbar.clearAuthorship.title": "Vymazat barvy autor\u016f", "pad.toolbar.import_export.title": "Importovat/Exportovat z/do jin\u00fdch form\u00e1t\u016f", - "pad.toolbar.timeslider.title": "Osa \u010dasu", + "pad.toolbar.timeslider.title": "\u010casov\u00e1 osa", "pad.toolbar.savedRevision.title": "Ulo\u017eit revizi", "pad.toolbar.settings.title": "Nastaven\u00ed", - "pad.toolbar.embed.title": "Um\u00edstit a nasd\u00edlet tento Pad", + "pad.toolbar.embed.title": "Sd\u00edlet a um\u00edstit tento Pad", "pad.toolbar.showusers.title": "Zobrazit u\u017eivatele u tohoto Padu", "pad.colorpicker.save": "Ulo\u017eit", "pad.colorpicker.cancel": "Zru\u0161it", "pad.loading": "Na\u010d\u00edt\u00e1n\u00ed...", - "pad.passwordRequired": "Pot\u0159ebuje\u0161 zadat heslo pro p\u0159\u00edstup k tomuto Padu", - "pad.permissionDenied": "Nem\u00e1\u0161 p\u0159\u00edstupov\u00e9 opr\u00e1vn\u011bn\u00ed k tomuto Padu", - "pad.wrongPassword": "Tv\u00e9 heslo je \u0161patn\u00e9", + "pad.passwordRequired": "Pro p\u0159\u00edstup k tomuto Padu je t\u0159eba zn\u00e1t heslo", + "pad.permissionDenied": "Nem\u00e1te opr\u00e1vn\u011bn\u00ed pro p\u0159\u00edstup k tomuto Padu", + "pad.wrongPassword": "Nespr\u00e1vn\u00e9 heslo", "pad.settings.padSettings": "Nastaven\u00ed Padu", "pad.settings.myView": "Vlastn\u00ed pohled", "pad.settings.stickychat": "Chat v\u017edy na obrazovce", - "pad.settings.colorcheck": "Barvy autorstv\u00ed", + "pad.settings.colorcheck": "Barvy autor\u016f", "pad.settings.linenocheck": "\u010c\u00edsla \u0159\u00e1dk\u016f", "pad.settings.rtlcheck": "\u010c\u00edst obsah zprava doleva?", "pad.settings.fontType": "Typ p\u00edsma:", "pad.settings.fontType.normal": "Norm\u00e1ln\u00ed", - "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.fontType.monospaced": "Nepropor\u010dn\u00ed", "pad.settings.globalView": "Glob\u00e1ln\u00ed pohled", "pad.settings.language": "Jazyk:", "pad.importExport.import_export": "Import/Export", @@ -53,11 +55,11 @@ "pad.importExport.exportdokuwiki": "DokuWiki", "pad.importExport.abiword.innerHTML": "Importovat m\u016f\u017ee\u0161 pouze prost\u00fd text nebo HTML form\u00e1tov\u00e1n\u00ed. Pro pokro\u010dilej\u0161\u00ed funkce importu, pros\u00edm, nainstaluj \u201e\u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eabiword\u003C/a\u003E\u201c.", "pad.modals.connected": "P\u0159ipojeno.", - "pad.modals.reconnecting": "Znovup\u0159ipojov\u00e1n\u00ed k tv\u00e9mu Padu\u2026", + "pad.modals.reconnecting": "Znovup\u0159ipojov\u00e1n\u00ed k Padu\u2026", "pad.modals.forcereconnect": "Vynutit znovup\u0159ipojen\u00ed", "pad.modals.userdup": "Otev\u0159eno v jin\u00e9m okn\u011b", "pad.modals.userdup.explanation": "Zd\u00e1 se, \u017ee tento Pad je na tomto po\u010d\u00edta\u010di otev\u0159en ve v\u00edce ne\u017e jednom okn\u011b.", - "pad.modals.userdup.advice": "Pro pou\u017eit\u00ed tohoto okna se mus\u00ed\u0161 znovu p\u0159ipojit.", + "pad.modals.userdup.advice": "Pro pou\u017eit\u00ed tohoto okna je t\u0159eba se znovu p\u0159ipojit.", "pad.modals.unauth": "Nem\u00e1te autorizaci", "pad.modals.unauth.explanation": "Va\u0161e opr\u00e1vn\u011bn\u00ed se zm\u011bnila, zat\u00edmco jste si prohl\u00ed\u017eel/a toto okno. Zkuste se znovu p\u0159ipojit.", "pad.modals.looping": "Odpojeno.", @@ -71,9 +73,9 @@ "pad.modals.slowcommit.cause": "M\u016f\u017ee to b\u00fdt zp\u016fsobeno probl\u00e9my s internetov\u00fdm p\u0159ipojen\u00edm.", "pad.modals.deleted": "Odstran\u011bno.", "pad.modals.deleted.explanation": "Tento Pad byl odebr\u00e1n.", - "pad.modals.disconnected": "Byl jsi odpojen.", + "pad.modals.disconnected": "Byl jste odpojen.", "pad.modals.disconnected.explanation": "P\u0159ipojen\u00ed k serveru bylo p\u0159eru\u0161eno", - "pad.modals.disconnected.cause": "Server m\u016f\u017ee b\u00fdt nedostupn\u00fd. Pros\u00edm, upozorni n\u00e1s, pokud bude tento probl\u00e9m p\u0159etrv\u00e1vat.", + "pad.modals.disconnected.cause": "Server m\u016f\u017ee b\u00fdt nedostupn\u00fd. Pros\u00edme o upozorn\u011bn\u00ed, pokud by tento probl\u00e9m trval del\u0161\u00ed dobu.", "pad.share": "Sd\u00edlet tento Pad", "pad.share.readonly": "Jen pro \u010dten\u00ed", "pad.share.link": "Odkaz", @@ -81,7 +83,7 @@ "pad.chat": "Chat", "pad.chat.title": "Otev\u0159\u00edt chat tohoto Padu.", "pad.chat.loadmessages": "Na\u010d\u00edst v\u00edce zpr\u00e1v", - "timeslider.pageTitle": "Osa \u010dasu {{appTitle}}", + "timeslider.pageTitle": "\u010casov\u00e1 osa {{appTitle}}", "timeslider.toolbar.returnbutton": "N\u00e1vrat do Padu", "timeslider.toolbar.authors": "Auto\u0159i:", "timeslider.toolbar.authorsList": "Bez autor\u016f", @@ -102,14 +104,14 @@ "timeslider.month.october": "\u0159\u00edjen", "timeslider.month.november": "listopad", "timeslider.month.december": "prosinec", - "timeslider.unnamedauthors": "{{num}} nejmenovan\u00fdch autor\u016f", + "timeslider.unnamedauthors": "{{num}} {[ plural(num) one: nejmenovan\u00fd Autor, few: nejmenovan\u00ed Auto\u0159i, other: nejmenovan\u00fdch Autor\u016f ]}", "pad.savedrevs.marked": "Tato revize je nyn\u00ed ozna\u010dena jako ulo\u017een\u00e1", "pad.userlist.entername": "Zadejte sv\u00e9 jm\u00e9no", "pad.userlist.unnamed": "nejmenovan\u00fd", "pad.userlist.guest": "Host", "pad.userlist.deny": "Zak\u00e1zat", "pad.userlist.approve": "Povolit", - "pad.editbar.clearcolors": "Odstranit autorsk\u00e9 barvy z cel\u00e9ho dokumentu?", + "pad.editbar.clearcolors": "Odstranit barvy autor\u016f z cel\u00e9ho dokumentu?", "pad.impexp.importbutton": "Importovat", "pad.impexp.importing": "Importov\u00e1n\u00ed\u2026", "pad.impexp.confirmimport": "Import souboru p\u0159ep\u00ed\u0161e aktu\u00e1ln\u00ed text v padu. Opravdu chcete tuto akci prov\u00e9st?", diff --git a/src/locales/da.json b/src/locales/da.json index 233bb8dd..40a2d8e7 100644 --- a/src/locales/da.json +++ b/src/locales/da.json @@ -103,7 +103,7 @@ "timeslider.month.october": "oktober", "timeslider.month.november": "november", "timeslider.month.december": "december", - "timeslider.unnamedauthors": "{{num}} unavngivne forfattere", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: unavngiven forfatter, other: unavngivne forfattere]}", "pad.savedrevs.marked": "Denne revision er nu markeret som en gemt revision", "pad.userlist.entername": "Indtast dit navn", "pad.userlist.unnamed": "ikke-navngivet", diff --git a/src/locales/el.json b/src/locales/el.json index 6741b075..a094e115 100644 --- a/src/locales/el.json +++ b/src/locales/el.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Evropi", + "Geraki", "Glavkos", "Monopatis", "Protnet" @@ -104,7 +105,7 @@ "timeslider.month.october": "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5", "timeslider.month.november": "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", "timeslider.month.december": "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", - "timeslider.unnamedauthors": "{{num}} \u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03b9 \u03c3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03b5\u03af\u03c2", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: \u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03c2 \u03c3\u03c5\u03bd\u03c4\u03ac\u03ba\u03c4\u03b7\u03c2, other: \u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03b9 \u03c3\u03c5\u03bd\u03c4\u03ac\u03ba\u03c4\u03b5\u03c2]}", "pad.savedrevs.marked": "\u0391\u03c5\u03c4\u03ae \u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 \u03b5\u03c0\u03b9\u03c3\u03b7\u03bc\u03ac\u03bd\u03b8\u03b7\u03ba\u03b5 \u03c9\u03c2 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7", "pad.userlist.entername": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03ac \u03c3\u03b1\u03c2", "pad.userlist.unnamed": "\u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03c2", diff --git a/src/locales/es.json b/src/locales/es.json index 2768bcf8..c987bff0 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -5,9 +5,10 @@ "1": "Jacobo", "2": "Joker", "3": "Larjona", - "4": "Rubenwap", - "6": "Vivaelcelta", - "7": "Xuacu" + "4": "Mklehr", + "5": "Rubenwap", + "7": "Vivaelcelta", + "8": "Xuacu" } }, "index.newPad": "Nuevo Pad", @@ -107,7 +108,7 @@ "timeslider.month.october": "Octubre", "timeslider.month.november": "Noviembre", "timeslider.month.december": "Diciembre", - "timeslider.unnamedauthors": "{{num}} autores desconocidos", + "timeslider.unnamedauthors": "{{num}} {[ plural(num) one: autor desconocido, other: autores desconocidos]}", "pad.savedrevs.marked": "Revisi\u00f3n guardada", "pad.userlist.entername": "Escribe tu nombre", "pad.userlist.unnamed": "an\u00f3nimo", diff --git a/src/locales/fi.json b/src/locales/fi.json index 7990fd5a..cad30ef3 100644 --- a/src/locales/fi.json +++ b/src/locales/fi.json @@ -107,7 +107,7 @@ "timeslider.month.october": "lokakuu", "timeslider.month.november": "marraskuu", "timeslider.month.december": "joulukuu", - "timeslider.unnamedauthors": "{{num}} nimet\u00f6nt\u00e4 tekij\u00e4\u00e4", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: nimet\u00f6n tekij\u00e4, other: nimet\u00f6nt\u00e4 tekij\u00e4\u00e4 ]}", "pad.savedrevs.marked": "T\u00e4m\u00e4 versio on nyt merkitty tallennetuksi versioksi", "pad.userlist.entername": "Kirjoita nimesi", "pad.userlist.unnamed": "nimet\u00f6n", diff --git a/src/locales/fo.json b/src/locales/fo.json index 6b2cf82f..ff2ea1c8 100644 --- a/src/locales/fo.json +++ b/src/locales/fo.json @@ -86,7 +86,7 @@ "timeslider.month.october": "October", "timeslider.month.november": "November", "timeslider.month.december": "Desember", - "timeslider.unnamedauthors": "{{num}} \u00f3nevndir h\u00f8vundar", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: \u00f3nevndur rith\u00f8vundur, other: \u00f3nevndir rith\u00f8vundar ]}", "pad.savedrevs.marked": "Henda endursko\u00f0anin er n\u00fa merkt sum ein goymd endursko\u00f0an", "pad.userlist.entername": "Skriva t\u00edtt navn", "pad.userlist.unnamed": "ikki-navngivi\u00f0", diff --git a/src/locales/fr.json b/src/locales/fr.json index 4d4ab134..226595c7 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -13,18 +13,19 @@ "9": "Od1n", "10": "Peter17", "11": "Quenenni", - "13": "Stephane Cottin", - "14": "Tux-tn" + "12": "Rastus Vernon", + "14": "Stephane Cottin", + "15": "Tux-tn" } }, - "index.newPad": "Nouveau Pad", - "index.createOpenPad": "ou cr\u00e9er/ouvrir un Pad intitul\u00e9 :", + "index.newPad": "Nouveau pad", + "index.createOpenPad": "ou cr\u00e9er/ouvrir un pad intitul\u00e9 :", "pad.toolbar.bold.title": "Gras (Ctrl-B)", "pad.toolbar.italic.title": "Italique (Ctrl-I)", "pad.toolbar.underline.title": "Soulign\u00e9 (Ctrl-U)", "pad.toolbar.strikethrough.title": "Barr\u00e9", "pad.toolbar.ol.title": "Liste ordonn\u00e9e", - "pad.toolbar.ul.title": "Liste \u00e0 puces", + "pad.toolbar.ul.title": "Liste non ordonn\u00e9e", "pad.toolbar.indent.title": "Indenter", "pad.toolbar.unindent.title": "D\u00e9sindenter", "pad.toolbar.undo.title": "Annuler (Ctrl-Z)", @@ -34,15 +35,15 @@ "pad.toolbar.timeslider.title": "Historique dynamique", "pad.toolbar.savedRevision.title": "Enregistrer la r\u00e9vision", "pad.toolbar.settings.title": "Param\u00e8tres", - "pad.toolbar.embed.title": "Partager et int\u00e9grer ce Pad", - "pad.toolbar.showusers.title": "Afficher les utilisateurs du Pad", + "pad.toolbar.embed.title": "Partager et int\u00e9grer ce pad", + "pad.toolbar.showusers.title": "Afficher les utilisateurs du pad", "pad.colorpicker.save": "Enregistrer", "pad.colorpicker.cancel": "Annuler", "pad.loading": "Chargement\u2026", - "pad.passwordRequired": "Vous avez besoin d'un mot de passe pour acc\u00e9der \u00e0 ce Pad", - "pad.permissionDenied": "Il ne vous est pas permis d\u2019acc\u00e9der \u00e0 ce Pad", - "pad.wrongPassword": "Mot de passe incorrect", - "pad.settings.padSettings": "Param\u00e8tres du Pad", + "pad.passwordRequired": "Vous avez besoin d'un mot de passe pour acc\u00e9der \u00e0 ce pad", + "pad.permissionDenied": "Il ne vous est pas permis d\u2019acc\u00e9der \u00e0 ce pad", + "pad.wrongPassword": "Votre mot de passe est incorrect", + "pad.settings.padSettings": "Param\u00e8tres du pad", "pad.settings.myView": "Ma vue", "pad.settings.stickychat": "Toujours afficher le chat", "pad.settings.colorcheck": "Couleurs d\u2019identification", @@ -56,7 +57,7 @@ "pad.importExport.import_export": "Importer/Exporter", "pad.importExport.import": "Charger un texte ou un document", "pad.importExport.importSuccessful": "R\u00e9ussi!", - "pad.importExport.export": "Exporter le Pad actuel comme :", + "pad.importExport.export": "Exporter le pad actuel comme :", "pad.importExport.exporthtml": "HTML", "pad.importExport.exportplain": "Texte brut", "pad.importExport.exportword": "Microsoft Word", @@ -65,36 +66,36 @@ "pad.importExport.exportdokuwiki": "DokuWiki", "pad.importExport.abiword.innerHTML": "Vous ne pouvez importer que des formats texte brut ou html. Pour des fonctionnalit\u00e9s d'importation plus \u00e9volu\u00e9es, veuillez \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstaller abiword\u003C/a\u003E.", "pad.modals.connected": "Connect\u00e9.", - "pad.modals.reconnecting": "Reconnexion vers votre Pad...", - "pad.modals.forcereconnect": "Forcer la reconnexion.", + "pad.modals.reconnecting": "Reconnexion vers votre pad...", + "pad.modals.forcereconnect": "Forcer la reconnexion", "pad.modals.userdup": "Ouvert dans une autre fen\u00eatre", - "pad.modals.userdup.explanation": "Il semble que ce Pad soit ouvert dans plusieurs fen\u00eatres de votre navigateur sur cet ordinateur.", + "pad.modals.userdup.explanation": "Ce pad semble \u00eatre ouvert dans plus d'une fen\u00eatre de navigateur sur cet ordinateur.", "pad.modals.userdup.advice": "Se reconnecter en utilisant cette fen\u00eatre.", "pad.modals.unauth": "Non autoris\u00e9", "pad.modals.unauth.explanation": "Vos permissions ont \u00e9t\u00e9 chang\u00e9es lors de l'affichage de cette page. Essayez de vous reconnecter.", "pad.modals.looping": "D\u00e9connect\u00e9.", "pad.modals.looping.explanation": "Nous \u00e9prouvons un probl\u00e8me de communication au serveur de synchronisation.", - "pad.modals.looping.cause": "Il est possible que votre connexion soit prot\u00e9g\u00e9e par un pare-feu incompatible ou un serveur proxy incompatible.", + "pad.modals.looping.cause": "Il est possible que votre connexion soit prot\u00e9g\u00e9e par un pare-feu ou un serveur mandataire incompatible.", "pad.modals.initsocketfail": "Le serveur est introuvable.", "pad.modals.initsocketfail.explanation": "Impossible de se connecter au serveur de synchronisation.", - "pad.modals.initsocketfail.cause": "Le probl\u00e8me peut venir de votre navigateur web ou de votre connexion Internet.", + "pad.modals.initsocketfail.cause": "Ceci est probablement d\u00fb \u00e0 un probl\u00e8me avec votre navigateur ou votre connexion internet.", "pad.modals.slowcommit": "D\u00e9connect\u00e9.", "pad.modals.slowcommit.explanation": "Le serveur ne r\u00e9pond pas.", "pad.modals.slowcommit.cause": "Ce probl\u00e8me peut venir d'une mauvaise connectivit\u00e9 au r\u00e9seau.", "pad.modals.deleted": "Supprim\u00e9.", - "pad.modals.deleted.explanation": "Ce Pad a \u00e9t\u00e9 supprim\u00e9.", + "pad.modals.deleted.explanation": "Ce pad a \u00e9t\u00e9 supprim\u00e9.", "pad.modals.disconnected": "Vous avez \u00e9t\u00e9 d\u00e9connect\u00e9.", "pad.modals.disconnected.explanation": "La connexion au serveur a \u00e9chou\u00e9.", "pad.modals.disconnected.cause": "Il se peut que le serveur soit indisponible. Si le probl\u00e8me persiste, veuillez nous en informer.", - "pad.share": "Partager ce Pad", + "pad.share": "Partager ce pad", "pad.share.readonly": "Lecture seule", "pad.share.link": "Lien", - "pad.share.emebdcode": "Lien \u00e0 int\u00e9grer", + "pad.share.emebdcode": "Incorporer un lien", "pad.chat": "Chat", "pad.chat.title": "Ouvrir le chat associ\u00e9 \u00e0 ce pad.", "pad.chat.loadmessages": "Charger davantage de messages", "timeslider.pageTitle": "Historique dynamique de {{appTitle}}", - "timeslider.toolbar.returnbutton": "Retour au Pad.", + "timeslider.toolbar.returnbutton": "Retourner au pad", "timeslider.toolbar.authors": "Auteurs :", "timeslider.toolbar.authorsList": "Aucun auteur", "timeslider.toolbar.exportlink.title": "Exporter", @@ -124,7 +125,7 @@ "pad.editbar.clearcolors": "Effacer les couleurs de paternit\u00e9 dans tout le document ?", "pad.impexp.importbutton": "Importer maintenant", "pad.impexp.importing": "Import en cours...", - "pad.impexp.confirmimport": "Importer un fichier \u00e9crasera le texte actuel du bloc. \u00cates-vous s\u00fbr de vouloir le faire?", + "pad.impexp.confirmimport": "Importer un fichier \u00e9crasera le texte actuel du pad. \u00cates-vous s\u00fbr de vouloir le faire?", "pad.impexp.convertFailed": "Nous ne pouvons pas importer ce fichier. Veuillez utiliser un autre format de document ou faire un copier/coller manuel", "pad.impexp.uploadFailed": "Le t\u00e9l\u00e9chargement a \u00e9chou\u00e9, veuillez r\u00e9essayer", "pad.impexp.importfailed": "\u00c9chec de l'importation", diff --git a/src/locales/gl.json b/src/locales/gl.json index 6e4eeff4..a0f2f862 100644 --- a/src/locales/gl.json +++ b/src/locales/gl.json @@ -101,7 +101,7 @@ "timeslider.month.october": "outubro", "timeslider.month.november": "novembro", "timeslider.month.december": "decembro", - "timeslider.unnamedauthors": "{{num}} autores an\u00f3nimos", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor an\u00f3nimo, other: autores an\u00f3nimos ]}", "pad.savedrevs.marked": "Esta revisi\u00f3n est\u00e1 agora marcada como revisi\u00f3n gardada", "pad.userlist.entername": "Insira o seu nome", "pad.userlist.unnamed": "an\u00f3nimo", diff --git a/src/locales/he.json b/src/locales/he.json index 33b13e83..d8eef3db 100644 --- a/src/locales/he.json +++ b/src/locales/he.json @@ -3,7 +3,8 @@ "authors": { "0": "Amire80", "1": "Ofrahod", - "3": "\u05ea\u05d5\u05de\u05e8 \u05d8" + "3": "YaronSh", + "4": "\u05ea\u05d5\u05de\u05e8 \u05d8" } }, "index.newPad": "\u05e4\u05e0\u05e7\u05e1 \u05d7\u05d3\u05e9", @@ -103,7 +104,7 @@ "timeslider.month.october": "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8", "timeslider.month.november": "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8", "timeslider.month.december": "\u05d3\u05e6\u05de\u05d1\u05e8", - "timeslider.unnamedauthors": "{{num}} \u05db\u05d5\u05ea\u05d1\u05d9\u05dd \u05d7\u05e1\u05e8\u05d9\u05be\u05e9\u05dd", + "timeslider.unnamedauthors": "{[plural(num) one: \u05d9\u05d5\u05e6\u05e8 \u05d0\u05d7\u05d3, other: {{num}} \u05d9\u05d5\u05e6\u05e8\u05d9\u05dd ]} \u05dc\u05dc\u05d0 \u05e9\u05dd", "pad.savedrevs.marked": "\u05d2\u05e8\u05e1\u05d4 \u05d6\u05d5 \u05de\u05e1\u05d5\u05de\u05e0\u05ea \u05db\u05d2\u05e8\u05e1\u05d4 \u05e9\u05de\u05d5\u05e8\u05d4", "pad.userlist.entername": "\u05e0\u05d0 \u05dc\u05d4\u05d6\u05d9\u05df \u05d0\u05ea \u05e9\u05de\u05da", "pad.userlist.unnamed": "\u05dc\u05dc\u05d0 \u05e9\u05dd", diff --git a/src/locales/it.json b/src/locales/it.json index ff141e05..65b6340e 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -104,7 +104,7 @@ "timeslider.month.october": "ottobre", "timeslider.month.november": "novembre", "timeslider.month.december": "dicembre", - "timeslider.unnamedauthors": "{{num}} autori senza nome", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autore, other: autori ]} senza nome", "pad.savedrevs.marked": "Questa revisione \u00e8 ora contrassegnata come una versione salvata", "pad.userlist.entername": "Inserisci il tuo nome", "pad.userlist.unnamed": "senza nome", diff --git a/src/locales/ko.json b/src/locales/ko.json index d279c6ca..44d8492d 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -21,7 +21,7 @@ "pad.toolbar.timeslider.title": "\uc2dc\uac04\uc2ac\ub77c\uc774\ub354", "pad.toolbar.savedRevision.title": "\ud310 \uc800\uc7a5", "pad.toolbar.settings.title": "\uc124\uc815", - "pad.toolbar.embed.title": "\uc774 \ud328\ub4dc \ud3ec\ud568\ud558\uae30", + "pad.toolbar.embed.title": "\uc774 \ud328\ub4dc\ub97c \uacf5\uc720\ud558\uace0 \ud3ec\ud568\ud558\uae30", "pad.toolbar.showusers.title": "\uc774 \ud328\ub4dc\uc5d0 \uc0ac\uc6a9\uc790 \ubcf4\uae30", "pad.colorpicker.save": "\uc800\uc7a5", "pad.colorpicker.cancel": "\ucde8\uc18c", @@ -101,7 +101,7 @@ "timeslider.month.october": "10\uc6d4", "timeslider.month.november": "11\uc6d4", "timeslider.month.december": "12\uc6d4", - "timeslider.unnamedauthors": "\uc774\ub984 \uc5c6\ub294 \uc800\uc790 {{num}}\uba85", + "timeslider.unnamedauthors": "\uc774\ub984 \uc5c6\ub294 {[plural(num) one: \uc800\uc790, other: \uc800\uc790 ]} {{num}}\uba85", "pad.savedrevs.marked": "\uc774 \ud310\uc740 \uc774\uc81c \uc800\uc7a5\ud55c \ud310\uc73c\ub85c \ud45c\uc2dc\ud569\ub2c8\ub2e4.", "pad.userlist.entername": "\uc774\ub984\uc744 \uc785\ub825\ud558\uc138\uc694", "pad.userlist.unnamed": "\uc774\ub984\uc5c6\uc74c", diff --git a/src/locales/lb.json b/src/locales/lb.json index bd73d7ec..b1029c1f 100644 --- a/src/locales/lb.json +++ b/src/locales/lb.json @@ -1,8 +1,9 @@ { "@metadata": { - "authors": [ - "Robby" - ] + "authors": { + "0": "Robby", + "2": "Soued031" + } }, "index.newPad": "Neie Pad", "pad.toolbar.ol.title": "Numer\u00e9iert L\u00ebscht", @@ -14,7 +15,7 @@ "pad.colorpicker.save": "Sp\u00e4icheren", "pad.colorpicker.cancel": "Ofbriechen", "pad.loading": "Lueden...", - "pad.wrongPassword": "\u00c4rt Passwuert ass falsch", + "pad.wrongPassword": "\u00c4ert Passwuert ass falsch", "pad.settings.fontType.normal": "Normal", "pad.settings.language": "Sprooch:", "pad.importExport.importSuccessful": "Erfollegr\u00e4ich", diff --git a/src/locales/lv.json b/src/locales/lv.json index 6f34109b..13bd878c 100644 --- a/src/locales/lv.json +++ b/src/locales/lv.json @@ -2,7 +2,8 @@ "@metadata": { "authors": [ "Admresdeserv.", - "Jmg.cmdi" + "Jmg.cmdi", + "Papuass" ] }, "pad.toolbar.bold.title": "Treknrakst\u0101 (CTRL + B)", @@ -60,5 +61,26 @@ "pad.modals.disconnected.cause": "Iesp\u0113jams, ka serveris nav pieejams. L\u016bgums pazi\u0146ot mums, ja tas turpina notikt.", "pad.share": "Koplietot \u0161o pad", "pad.share.readonly": "Tikai las\u0101ms", - "pad.share.link": "Saite" + "pad.share.link": "Saite", + "timeslider.toolbar.authors": "Autori:", + "timeslider.toolbar.authorsList": "Nav autoru", + "timeslider.toolbar.exportlink.title": "Eksport\u0113t", + "timeslider.month.january": "Janv\u0101ris", + "timeslider.month.february": "Febru\u0101ris", + "timeslider.month.march": "Marts", + "timeslider.month.april": "Apr\u012blis", + "timeslider.month.may": "Maijs", + "timeslider.month.june": "J\u016bnijs", + "timeslider.month.july": "J\u016blijs", + "timeslider.month.august": "Augusts", + "timeslider.month.september": "Septembris", + "timeslider.month.october": "Oktobris", + "timeslider.month.november": "Novembris", + "timeslider.month.december": "Decembris", + "pad.userlist.entername": "Ievadiet savu v\u0101rdu", + "pad.userlist.unnamed": "nenosaukts", + "pad.userlist.guest": "Viesis", + "pad.impexp.importbutton": "Import\u0113t t\u016bl\u012bt", + "pad.impexp.importing": "Import\u0113...", + "pad.impexp.importfailed": "Imports neizdev\u0101s" } \ No newline at end of file diff --git a/src/locales/map-bms.json b/src/locales/map-bms.json new file mode 100644 index 00000000..8fce4810 --- /dev/null +++ b/src/locales/map-bms.json @@ -0,0 +1,120 @@ +{ + "@metadata": { + "authors": [ + "StefanusRA" + ] + }, + "index.newPad": "Pad Anyar", + "index.createOpenPad": "utawa gawe/bukak Pad nganggo jeneng:", + "pad.toolbar.bold.title": "Kandhel (Ctrl-B)", + "pad.toolbar.italic.title": "Miring (Ctrl-I)", + "pad.toolbar.underline.title": "Garisngisor (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Corettengaeh", + "pad.toolbar.ol.title": "Daftar nganggo nomer", + "pad.toolbar.ul.title": "Daftar ora nganggo nomer", + "pad.toolbar.indent.title": "Nggantung", + "pad.toolbar.unindent.title": "nggantung njaba", + "pad.toolbar.undo.title": "Batalna (Ctrl-Z)", + "pad.toolbar.redo.title": "Baleni (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Busek ''Authorship Colors''", + "pad.toolbar.import_export.title": "Impor/Ekspor sekang/maring format berkas sejen", + "pad.toolbar.timeslider.title": "Timeslider", + "pad.toolbar.savedRevision.title": "Simpen revisi", + "pad.toolbar.settings.title": "Pangaturan", + "pad.toolbar.embed.title": "Sebarna lan ''embed'' pad kiye", + "pad.toolbar.showusers.title": "Tidokna panganggo-panganggo nang pad kiye", + "pad.colorpicker.save": "Simpen", + "pad.colorpicker.cancel": "Batalna", + "pad.loading": "Muatna...", + "pad.passwordRequired": "Rika perlu tembung sandhi kanggo ngakses pad kiye", + "pad.permissionDenied": "Rika ora duwe idin kanggo ngakses pad kiye", + "pad.wrongPassword": "Tembung sandhine Rika salah", + "pad.settings.padSettings": "Pangaturan Pad", + "pad.settings.myView": "Delengane Inyong", + "pad.settings.stickychat": "Dopokan mesti nang layar", + "pad.settings.colorcheck": "Authorship colors", + "pad.settings.linenocheck": "Nomer baris", + "pad.settings.rtlcheck": "Waca isi sekang tengen maring kiwe?", + "pad.settings.fontType": "Tipe Font:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Global View", + "pad.settings.language": "Basa:", + "pad.importExport.import_export": "Impor/Ekspor", + "pad.importExport.import": "Unggahna berkas teks utawa dokumen", + "pad.importExport.importSuccessful": "Sukses!", + "pad.importExport.export": "Ekspor pad kiye dadi:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "t", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Rika mung teyeng impor sekang format plain text utawa HTML. Kanggo fitur impor sing lewih maju monggo \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Emasang abiword\u003C/a\u003E.", + "pad.modals.connected": "Nyambung.", + "pad.modals.reconnecting": "Mbaleli nyambung ming pad Rika...", + "pad.modals.forcereconnect": "Maksa nyambung maning", + "pad.modals.userdup": "Bukak nang jendela sejen", + "pad.modals.userdup.explanation": "Pad kiye kayane dibukak nang lewih sekang siji browser nang komputer kiye.", + "pad.modals.userdup.advice": "Nyambung maning nganggo jendela kiye baen.", + "pad.modals.unauth": "Not authorized", + "pad.modals.unauth.explanation": "Idin-e Rika wis diowahi dong lagi ndeleng kaca kiye. Jajal nyambung maning.", + "pad.modals.looping": "Pedot sambungane.", + "pad.modals.looping.explanation": "Pra ana masalah komunikasi karo server sinkronisasi.", + "pad.modals.looping.cause": "Ndeyan Rika gole nyambung nganggo firewall utawa proksi sing ora pas.", + "pad.modals.initsocketfail": "Server ora teyeng dihubungi.", + "pad.modals.initsocketfail.explanation": "Ora teyeng nyambung maring sinkronisasi server.", + "pad.modals.initsocketfail.cause": "Kiye ndeyan ana masalah karo perambanne Rika utawa sambungan internete Rika.", + "pad.modals.slowcommit": "Pedot sambungane.", + "pad.modals.slowcommit.explanation": "Server ora respon.", + "pad.modals.slowcommit.cause": "Kiye ndeyan ana masalah karo sambungan jaringan.", + "pad.modals.deleted": "Dibusek.", + "pad.modals.deleted.explanation": "Pad kiye wis dibusek.", + "pad.modals.disconnected": "Rika wis dipedot sambungane.", + "pad.modals.disconnected.explanation": "Sambungan maring server wis ilang", + "pad.modals.disconnected.cause": "Servere ndeyan ora ana. Monggo tidokna inyong angger kahanan kiye terus kedaden maning.", + "pad.share": "Sebarna pad kiye", + "pad.share.readonly": "Waca thok", + "pad.share.link": "Pranala", + "pad.share.emebdcode": "Embed URL", + "pad.chat": "Dopokan", + "pad.chat.title": "Buka dopokan kanggo pad kiye.", + "pad.chat.loadmessages": "Muatna pesen lewih akeh", + "timeslider.pageTitle": "{{appTitle}} Timeslider", + "timeslider.toolbar.returnbutton": "Mbalik ming pad", + "timeslider.toolbar.authors": "Penulise:", + "timeslider.toolbar.authorsList": "Ora ana penulise", + "timeslider.toolbar.exportlink.title": "Ekspor", + "timeslider.exportCurrent": "Ekspor versi sekiye dadi:", + "timeslider.version": "Versi {{version}}", + "timeslider.saved": "Simpen {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januari", + "timeslider.month.february": "Februari", + "timeslider.month.march": "Maret", + "timeslider.month.april": "April", + "timeslider.month.may": "Mei", + "timeslider.month.june": "Juni", + "timeslider.month.july": "Juli", + "timeslider.month.august": "Agustus", + "timeslider.month.september": "September", + "timeslider.month.october": "Oktober", + "timeslider.month.november": "November", + "timeslider.month.december": "Desember", + "timeslider.unnamedauthors": "{{num}} durung dijenengi {[plural(num) one: author, other: authors ]}", + "pad.savedrevs.marked": "Revisi kiye sekiye ditandani dadi revisi sing wis disimpen", + "pad.userlist.entername": "Lebokna jenenge Rika", + "pad.userlist.unnamed": "durungdijenengi", + "pad.userlist.guest": "Dayoh", + "pad.userlist.deny": "Ora olih", + "pad.userlist.approve": "Sarujuk", + "pad.editbar.clearcolors": "Busek ''authorship colors'' nang kabeh dokumen?", + "pad.impexp.importbutton": "Impor Sekiye", + "pad.impexp.importing": "Lagi ngimpor...", + "pad.impexp.confirmimport": "Ngimpor berkas bakal dadi nindih teks sekiye nang pad. Apa Rika wis mantep arep mroses kiye?", + "pad.impexp.convertFailed": "Inyong ora teyeng ngimpor berkas kiye. Jajal nganggo format dokumen sejen utawa salin-tempel manual.", + "pad.impexp.uploadFailed": "Gole ngunggah gagal, monggo dijajal maning", + "pad.impexp.importfailed": "Gole ngimpor gagal", + "pad.impexp.copypaste": "Monggo salin-tempel", + "pad.impexp.exportdisabled": "Ngekspor maring format {{type}} ora olih. Monggo takon maring administrator sisteme Rika kanggo detile." +} \ No newline at end of file diff --git a/src/locales/mk.json b/src/locales/mk.json index 1ff577e9..6eaa7ebb 100644 --- a/src/locales/mk.json +++ b/src/locales/mk.json @@ -102,7 +102,7 @@ "timeslider.month.october": "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438", "timeslider.month.november": "\u043d\u043e\u0435\u043c\u0432\u0440\u0438", "timeslider.month.december": "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438", - "timeslider.unnamedauthors": "{{num}} \u043d\u0435\u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438 \u0430\u0432\u0442\u043e\u0440\u0438", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: \u043d\u0435\u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d \u0430\u0432\u0442\u043e\u0440, other: \u043d\u0435\u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438 \u0430\u0432\u0442\u043e\u0440\u0438 ]}", "pad.savedrevs.marked": "\u041e\u0432\u0430\u0430 \u0440\u0435\u0432\u0438\u0437\u0438\u0458\u0430 \u0441\u0435\u0433\u0430 \u0435 \u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u043a\u0430\u043a\u043e \u0437\u0430\u0447\u0443\u0432\u0430\u043d\u0430", "pad.userlist.entername": "\u0412\u043d\u0435\u0441\u0435\u0442\u0435 \u0433\u043e \u0432\u0430\u0448\u0435\u0442\u043e \u0438\u043c\u0435", "pad.userlist.unnamed": "\u0431\u0435\u0437 \u0438\u043c\u0435", diff --git a/src/locales/ml.json b/src/locales/ml.json index fcf8296a..f6b87381 100644 --- a/src/locales/ml.json +++ b/src/locales/ml.json @@ -104,7 +104,7 @@ "timeslider.month.october": "\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c", "timeslider.month.november": "\u0d28\u0d35\u0d02\u0d2c\u0d7c", "timeslider.month.december": "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c", - "timeslider.unnamedauthors": "{{num}} \u0d2a\u0d47\u0d30\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24 \u0d30\u0d1a\u0d2f\u0d3f\u0d24\u0d3e\u0d15\u0d4d\u0d15\u0d7e", + "timeslider.unnamedauthors": "{{num}} \u0d2a\u0d47\u0d30\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24 {[plural(num) one: \u0d30\u0d1a\u0d2f\u0d3f\u0d24\u0d3e\u0d35\u0d4d, other: \u0d30\u0d1a\u0d2f\u0d3f\u0d24\u0d3e\u0d15\u0d4d\u0d15\u0d7e }}", "pad.savedrevs.marked": "\u0d08 \u0d28\u0d3e\u0d7e\u0d2a\u0d4d\u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d \u0d38\u0d47\u0d35\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d3f\u0d1f\u0d4d\u0d1f\u0d41\u0d33\u0d4d\u0d33 \u0d28\u0d3e\u0d7e\u0d2a\u0d4d\u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d3e\u0d2f\u0d3f \u0d05\u0d1f\u0d2f\u0d3e\u0d33\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d24\u0d4d\u0d24\u0d3f\u0d2f\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41", "pad.userlist.entername": "\u0d24\u0d3e\u0d19\u0d4d\u0d15\u0d33\u0d41\u0d1f\u0d46 \u0d2a\u0d47\u0d30\u0d4d \u0d28\u0d7d\u0d15\u0d41\u0d15", "pad.userlist.unnamed": "\u0d2a\u0d47\u0d30\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24\u0d35", diff --git a/src/locales/mr.json b/src/locales/mr.json new file mode 100644 index 00000000..5fb55dcd --- /dev/null +++ b/src/locales/mr.json @@ -0,0 +1,59 @@ +{ + "@metadata": { + "authors": [ + "Ganeshgiram", + "V.narsikar", + "Ydyashad" + ] + }, + "index.newPad": "\u0928\u0935 \u092a\u093e\u0928", + "pad.toolbar.bold.title": "\u0920\u0933\u0915 (Ctrl-B)", + "pad.toolbar.italic.title": "\u0924\u093f\u0930\u092a\u0940 \u092e\u0941\u0926\u094d\u0930\u093e\u0915\u094d\u0937\u0930\u0947 (Ctrl-I)", + "pad.toolbar.underline.title": "\u0905\u0927\u094b\u0930\u0947\u0916\u0928 (Ctrl-U)", + "pad.toolbar.strikethrough.title": "\u0905\u0915\u094d\u0937\u0930\u093e\u0902\u0935\u0930 \u0915\u093e\u091f", + "pad.toolbar.savedRevision.title": "\u0906\u0935\u0943\u0924\u094d\u0924\u0940 \u091c\u0924\u0928 \u0915\u0930\u093e", + "pad.toolbar.settings.title": "\u0938\u0902\u0930\u091a\u0928\u093e", + "pad.colorpicker.save": "\u091c\u0924\u0928 \u0915\u0930\u093e", + "pad.colorpicker.cancel": "\u0930\u0926\u094d\u0926 \u0915\u0930\u093e", + "pad.loading": "\u092a\u094d\u0930\u092d\u093e\u0930\u0923 \u0915\u0930\u0940\u0924 \u0906\u0939\u0947", + "pad.wrongPassword": "\u0906\u092a\u0932\u093e \u092a\u0930\u0935\u0932\u0940\u091a\u093e \u0936\u092c\u094d\u0926 \u091a\u0942\u0915 \u0939\u094b\u0924\u093e", + "pad.settings.myView": "\u092e\u093e\u091d\u0947 \u0926\u0943\u0936\u094d\u092f", + "pad.settings.linenocheck": "\u0930\u0947\u0937\u093e\u0902\u091a\u0947 \u0915\u094d\u0930\u092e\u093e\u0902\u0915", + "pad.settings.language": "\u092d\u093e\u0937\u093e", + "pad.importExport.import_export": "\u0906\u092f\u093e\u0924/\u0928\u093f\u0930\u094d\u092f\u093e\u0924", + "pad.importExport.importSuccessful": "\u092f\u0936\u0938\u094d\u0935\u0940!", + "pad.importExport.exportplain": "\u0938\u093e\u0927\u093e \u092e\u091c\u0915\u0942\u0930", + "pad.importExport.exportword": "\u092e\u093e\u092f\u0915\u094d\u0930\u094b\u0938\u0949\u092b\u094d\u091f \u0935\u0930\u094d\u0921", + "pad.importExport.exportpdf": "\u092a\u0940\u0921\u0940\u090f\u092b", + "pad.importExport.exportopen": "\u0913\u0921\u0940\u090f\u092b(\u0913\u092a\u0928 \u0921\u0949\u0915\u094d\u092f\u0942\u092e\u0947\u0902\u091f \u092b\u0949\u0930\u092e\u0945\u091f)", + "pad.importExport.exportdokuwiki": "\u0921\u0941\u0915\u0941\u0935\u093f\u0915\u093f", + "pad.modals.connected": "\u0905\u0928\u0941\u092c\u0902\u0927\u093f\u0924", + "pad.modals.looping": "\u0905\u0928-\u0905\u0928\u0941\u092c\u0902\u0927\u093f\u0924", + "pad.modals.initsocketfail": "\u0935\u093f\u0926\u093e\u0917\u093e\u0930\u093e\u0938 \u092a\u094b\u091a \u0928\u093e\u0939\u0940.", + "pad.modals.slowcommit": "\u0905\u0928-\u0905\u0928\u0941\u092c\u0902\u0927\u093f\u0924.", + "pad.modals.deleted": "\u0935\u0917\u0933\u0932\u0947.", + "pad.modals.disconnected.cause": "\u092c\u0939\u0941\u0924\u0947\u0915 \u0938\u0930\u0935\u0930 \u0909\u092a\u0932\u092c\u094d\u0927 \u0939\u094b\u0923\u093e\u0930 \u0928\u093e\u0939\u0940\u0964 \u0905\u0938 \u0935\u093e\u0930\u0902\u0935\u093e\u0930 \u091d\u093e\u0932\u094d\u092f\u093e\u0938 \u0915\u0943\u092a\u092f\u093e \u0906\u092e\u094d\u0939\u093e\u0932\u093e \u0915\u0933\u0935\u093e\u0964", + "pad.share.link": "\u0926\u0941\u0935\u093e", + "pad.chat": "\u0917\u092a\u094d\u092a\u093e", + "timeslider.toolbar.authorsList": "\u0932\u0947\u0916\u0915 \u0928\u093e\u0939\u0940", + "timeslider.month.january": "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940", + "timeslider.month.february": "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "timeslider.month.march": "\u092e\u093e\u0930\u094d\u091a", + "timeslider.month.april": "\u090f\u092a\u094d\u0930\u093f\u0932", + "timeslider.month.may": "\u092e\u0947", + "timeslider.month.june": "\u091c\u0942\u0928", + "timeslider.month.july": "\u091c\u0941\u0932\u0948", + "timeslider.month.august": "\u0911\u0917\u0938\u094d\u091f", + "timeslider.month.september": "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930", + "timeslider.month.october": "\u0911\u0915\u094d\u091f\u094b\u092c\u0930", + "timeslider.month.november": "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930", + "timeslider.month.december": "\u0921\u093f\u0938\u0947\u0902\u092c\u0930", + "pad.userlist.entername": "\u0906\u092a\u0932\u0947 \u0928\u093e\u0935 \u091f\u093e\u0915\u093e", + "pad.userlist.unnamed": "\u0928\u093f\u0928\u093e\u0935\u0940", + "pad.userlist.guest": "\u092a\u093e\u0939\u0942\u0923\u093e", + "pad.userlist.approve": "\u092e\u0902\u091c\u0942\u0930 \u0915\u0930\u093e", + "pad.impexp.importbutton": "\u0906\u0924\u093e \u0906\u092f\u093e\u0924 \u0915\u0930\u093e", + "pad.impexp.importing": "\u0906\u092f\u093e\u0924 \u0915\u0930\u0940\u0924 \u0906\u0939\u0947...", + "pad.impexp.importfailed": "\u0906\u092f\u093e\u0924 \u0905\u092f\u0936\u0938\u094d\u0935\u0940", + "pad.impexp.copypaste": "\u0915\u0943\u092a\u092f\u093e \u0928\u0915\u0932-\u0921\u0915\u0935\u093e" +} \ No newline at end of file diff --git a/src/locales/ms.json b/src/locales/ms.json index 025008a2..ebe3e941 100644 --- a/src/locales/ms.json +++ b/src/locales/ms.json @@ -21,7 +21,7 @@ "pad.toolbar.timeslider.title": "Gelangsar masa", "pad.toolbar.savedRevision.title": "Simpan Semakan", "pad.toolbar.settings.title": "Tetapan", - "pad.toolbar.embed.title": "Benamkan pad ini", + "pad.toolbar.embed.title": "Kongsikan dan Terapkan pad ini", "pad.toolbar.showusers.title": "Tunjukkan pengguna pada pad ini", "pad.colorpicker.save": "Simpan", "pad.colorpicker.cancel": "Batalkan", @@ -101,7 +101,7 @@ "timeslider.month.october": "Oktober", "timeslider.month.november": "November", "timeslider.month.december": "Disember", - "timeslider.unnamedauthors": "{{num}} orang pengarang awanama", + "timeslider.unnamedauthors": "{{num}} orang {[plural(num) other: pengarang]} awanama", "pad.savedrevs.marked": "Semakan ini telah ditandai sebagai semakan tersimpan", "pad.userlist.entername": "Taipkan nama anda", "pad.userlist.unnamed": "tanpa nama", diff --git a/src/locales/nds.json b/src/locales/nds.json new file mode 100644 index 00000000..72385d84 --- /dev/null +++ b/src/locales/nds.json @@ -0,0 +1,121 @@ +{ + "@metadata": { + "authors": [ + "Gthoele", + "Joachim Mos" + ] + }, + "index.newPad": "Nee'et Pad", + "index.createOpenPad": "oder Pad mit d\u00fcssen Naam apen maken:", + "pad.toolbar.bold.title": "Fett (Strg-B)", + "pad.toolbar.italic.title": "Kursiv (Strg-I)", + "pad.toolbar.underline.title": "Mit Streek dor \u00fcnner (Strg-U)", + "pad.toolbar.strikethrough.title": "Mit Streek dor d\u00f6r", + "pad.toolbar.ol.title": "List na Nummern", + "pad.toolbar.ul.title": "List ahn Nummern", + "pad.toolbar.indent.title": "Text na rechts", + "pad.toolbar.unindent.title": "Text na links", + "pad.toolbar.undo.title": "Een Stapp retuur (Strg-Z)", + "pad.toolbar.redo.title": "Noch mal (Strg-Y)", + "pad.toolbar.clearAuthorship.title": "Kl\u00f6\u00f6r vun den Schriever wegnehmen", + "pad.toolbar.import_export.title": "Rinhalen/Rutgeven in verscheden Dateiformate", + "pad.toolbar.timeslider.title": "Geschicht vun de Pad-Faten wiesen", + "pad.toolbar.savedRevision.title": "Faten sekern", + "pad.toolbar.settings.title": "Instellungen", + "pad.toolbar.embed.title": "D\u00fct Pad verdelen oder annerswo ringeven", + "pad.toolbar.showusers.title": "Wokeen is online?", + "pad.colorpicker.save": "Spiekern", + "pad.colorpicker.cancel": "Afbreken", + "pad.loading": "L\u00e4\u00e4dt\u2026", + "pad.passwordRequired": "Du bruukst en Passwoort, wenn du in d\u00fct Pad rinwullt", + "pad.permissionDenied": "In d\u00fct Pad dr\u00f6ffst du nich rin", + "pad.wrongPassword": "Dien Passwoort weer nich richtig", + "pad.settings.padSettings": "So is dat Pad instellt", + "pad.settings.myView": "So heff ik dat instellt", + "pad.settings.stickychat": "Chat j\u00fcmmers wiesen", + "pad.settings.colorcheck": "Kl\u00f6ren vun de Schrievers wiesen", + "pad.settings.linenocheck": "Nummer vun de Reeg", + "pad.settings.rtlcheck": "Lees Pad vun rechts nach links", + "pad.settings.fontType": "Schriftoort:", + "pad.settings.fontType.normal": "Normaal", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Ansicht f\u00f6r all", + "pad.settings.language": "Spraak:", + "pad.importExport.import_export": "Rinhalen/Rutgeven", + "pad.importExport.import": "Datei oder Dokument hoochladen", + "pad.importExport.importSuccessful": "Hett slumpt!", + "pad.importExport.export": "D\u00fct Pad rutgeven as:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Textdatei", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Se k\u00f6\u00f6nt blots wat vun Kloortext oder HTML-St\u00fccken r\u00f6verhalen. Mit \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003E k\u00f6\u00f6nt Se ok anner Saken r\u00f6verhalen. Dorf\u00f6r m\u00f6\u00f6t Se bidde abiword inrichten\u003C/a\u003E.", + "pad.modals.connected": "Verbindung steiht.", + "pad.modals.reconnecting": "En Verbindung wedder opboen ...", + "pad.modals.forcereconnect": "Noch mal verbinnen", + "pad.modals.userdup": "In en anner Fenster op", + "pad.modals.userdup.explanation": "Dat lett, d\u00fct Pat is op d\u00fcssen Reekner in mehr as een Browser-Fenster op.", + "pad.modals.userdup.advice": "Wullt du d\u00fct Fenster bruken, bidde noch mal de Verbindung opboen.", + "pad.modals.unauth": "Nich freegeven.", + "pad.modals.unauth.explanation": "Du hest nu anner Rechten f\u00f6r d\u00fct Pad. Maak dat bidde noch mal wedder nee op.", + "pad.modals.looping": "Verbindung steiht nich mehr.", + "pad.modals.looping.explanation": "Dat gifft Kummer bi de Verbindung mit den Pad-Server.", + "pad.modals.looping.cause": "Mag ween un du hest Verbindung mit den Padserver \u00f6ver en Firewall, de nich passt, oder en Proxy, de nich passt.", + "pad.modals.initsocketfail": "Wi k\u00f6\u00f6nt den Pad-Server nich faat kriegen.", + "pad.modals.initsocketfail.explanation": "De Verbindung mit den Pad-Server hett nich klappt.", + "pad.modals.initsocketfail.cause": "Mag ween un dat liggt an dien Browser oder an dien Internet-Verbindung.", + "pad.modals.slowcommit": "Verbindung steiht nich mehr.", + "pad.modals.slowcommit.explanation": "De Pad-Server gifft keen Antwoort.", + "pad.modals.slowcommit.cause": "Kunn wenn un dat liggt an dat Nettwark, oder dor arbeidt j\u00fcst to veel L\u00fc\u00fcd op den Pad-Server.", + "pad.modals.deleted": "Weg is dat!", + "pad.modals.deleted.explanation": "D\u00fct Pad is nu weg.", + "pad.modals.disconnected": "De Kuntakt is afreten.", + "pad.modals.disconnected.explanation": "De Kuntakt mit den Pad-Server is afreten.", + "pad.modals.disconnected.cause": "Mag ween un wi k\u00f6\u00f6nt den Pad-Server j\u00fcst nich faat kriegen. Schull dat so wiedergahn, segg man Bescheed.", + "pad.share": "D\u00fct Pad ok anner L\u00fc\u00fcd wiesen", + "pad.share.readonly": "Se k\u00f6\u00f6nt hier j\u00fcst blots lesen", + "pad.share.link": "Link", + "pad.share.emebdcode": "In Websiet ringeven", + "pad.chat": "Chat", + "pad.chat.title": "Den Chat vun d\u00fct Pad apen maken", + "pad.chat.loadmessages": "Mehr Narichten laden", + "timeslider.pageTitle": "{{appTitle}} \u00d6llere Faten vun dat Pad", + "timeslider.toolbar.returnbutton": "Retuur na dat Pad", + "timeslider.toolbar.authors": "Schrievers:", + "timeslider.toolbar.authorsList": "keen Schrievers", + "timeslider.toolbar.exportlink.title": "Rutschicken", + "timeslider.exportCurrent": "Schick d\u00fcsse Faten rut as:", + "timeslider.version": "Faten {{version}}", + "timeslider.saved": "Sekert an den {{day}}.{{month}}.{{year}}", + "timeslider.dateformat": "{{day}}.{{month}}.{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januar", + "timeslider.month.february": "Februar", + "timeslider.month.march": "M\u00e4rz", + "timeslider.month.april": "April", + "timeslider.month.may": "Mai", + "timeslider.month.june": "Juni", + "timeslider.month.july": "Juli", + "timeslider.month.august": "August", + "timeslider.month.september": "September", + "timeslider.month.october": "Oktober", + "timeslider.month.november": "November", + "timeslider.month.december": "Dezember", + "timeslider.unnamedauthors": "{{num}} Schriever ohn Naam {[plural(num) one: Schriever, other: Schrievers ]}", + "pad.savedrevs.marked": "D\u00fcsse Faten hett nu dat Teken: sekerte Faten", + "pad.userlist.entername": "Schriev dien Naam", + "pad.userlist.unnamed": "hett keen Naam", + "pad.userlist.guest": "Bes\u00f6ker", + "pad.userlist.deny": "Deit uns Leed, wieder geiht dat nich", + "pad.userlist.approve": "Man to!", + "pad.editbar.clearcolors": "Kl\u00f6ren vun de Schrievers in dat ganze Dokument tor\u00fcchsetten?", + "pad.impexp.importbutton": "Nu rinhalen", + "pad.impexp.importing": "Haal dat rin \u2026", + "pad.impexp.confirmimport": "Wenn du nu en Datei rinhaalst, warrt de Text in dat Pad \u00f6verschreven. Wullt du w\u00fcrklich wieder maken?", + "pad.impexp.convertFailed": "Wi k\u00f6\u00f6nt d\u00fcsse Datei nich rinhalen. \u00c4nnert Se bidde dat Format vun dat Dokument oder haalt Se den Text mit de Hand rin.", + "pad.impexp.uploadFailed": "Dat Hoochladen hett nich slumpt. Vers\u00f6\u00f6k dat man noch mal.", + "pad.impexp.importfailed": "Dat Rinhalen hett nich slumpt", + "pad.impexp.copypaste": "Bidde koperen un rinsetten", + "pad.impexp.exportdisabled": "Du kannst dat nich in dat {{type}}-Format rutschicken. Wenn du mehr weten wullt, fraag man den Systemadministrator." +} \ No newline at end of file diff --git a/src/locales/oc.json b/src/locales/oc.json index d2bb8152..fb0c63d8 100644 --- a/src/locales/oc.json +++ b/src/locales/oc.json @@ -101,7 +101,7 @@ "timeslider.month.october": "Octobre", "timeslider.month.november": "Novembre", "timeslider.month.december": "Decembre", - "timeslider.unnamedauthors": "{{num}} autors anonimes", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor anonim, other: autors anonims ]}", "pad.savedrevs.marked": "Aquesta revision es ara marcada coma revision enregistrada", "pad.userlist.entername": "Entratz v\u00f2stre nom", "pad.userlist.unnamed": "sens nom", diff --git a/src/locales/pt-br.json b/src/locales/pt-br.json index f1b58711..2f389761 100644 --- a/src/locales/pt-br.json +++ b/src/locales/pt-br.json @@ -104,7 +104,7 @@ "timeslider.month.october": "Outubro", "timeslider.month.november": "Novembro", "timeslider.month.december": "Dezembro", - "timeslider.unnamedauthors": "{{num}} autores desconhecidos", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor an\u00f4nimo, other: autores an\u00f4nimos ]}", "pad.savedrevs.marked": "Esta revis\u00e3o foi marcada como salva", "pad.userlist.entername": "Insira o seu nome", "pad.userlist.unnamed": "Sem t\u00edtulo", diff --git a/src/locales/pt.json b/src/locales/pt.json index 472fa69a..cceefaf0 100644 --- a/src/locales/pt.json +++ b/src/locales/pt.json @@ -25,7 +25,7 @@ "pad.toolbar.settings.title": "Configura\u00e7\u00f5es", "pad.toolbar.embed.title": "Incorporar este Pad", "pad.toolbar.showusers.title": "Mostrar os utilizadores nesta Nota", - "pad.colorpicker.save": "Gravar", + "pad.colorpicker.save": "Salvar", "pad.colorpicker.cancel": "Cancelar", "pad.loading": "A carregar\u2026", "pad.settings.padSettings": "Configura\u00e7\u00f5es da Nota", diff --git a/src/locales/ru.json b/src/locales/ru.json index 4dfd2b26..dab92455 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -24,7 +24,7 @@ "pad.toolbar.timeslider.title": "\u0428\u043a\u0430\u043b\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438", "pad.toolbar.savedRevision.title": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e", "pad.toolbar.settings.title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", - "pad.toolbar.embed.title": "\u0412\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", + "pad.toolbar.embed.title": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", "pad.toolbar.showusers.title": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435", "pad.colorpicker.save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", "pad.colorpicker.cancel": "\u041e\u0442\u043c\u0435\u043d\u0430", @@ -104,7 +104,7 @@ "timeslider.month.october": "\u043e\u043a\u0442\u044f\u0431\u0440\u044c", "timeslider.month.november": "\u043d\u043e\u044f\u0431\u0440\u044c", "timeslider.month.december": "\u0434\u0435\u043a\u0430\u0431\u0440\u044c", - "timeslider.unnamedauthors": "\u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432: {{num}}", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u0440, few: \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u0430, many: \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432, other: \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432]}", "pad.savedrevs.marked": "\u042d\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u0430 \u043a\u0430\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u0430\u044f", "pad.userlist.entername": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0430\u0448\u0435 \u0438\u043c\u044f", "pad.userlist.unnamed": "\u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439", diff --git a/src/locales/sk.json b/src/locales/sk.json index 4025aca6..35354668 100644 --- a/src/locales/sk.json +++ b/src/locales/sk.json @@ -101,7 +101,7 @@ "timeslider.month.october": "okt\u00f3bra", "timeslider.month.november": "novembra", "timeslider.month.december": "decembra", - "timeslider.unnamedauthors": "{{num}} nemenovan\u00fdch autorov", + "timeslider.unnamedauthors": "{{num}} {[ plural(num) one: nemenovan\u00fd autor, few: nemenovan\u00ed autori, other: nemenovan\u00fdch autorov ]}", "pad.savedrevs.marked": "T\u00e1to rev\u00edzia bola ozna\u010den\u00e1 ako ulo\u017een\u00e1", "pad.userlist.entername": "Zadajte svoje meno", "pad.userlist.unnamed": "nemenovan\u00fd", diff --git a/src/locales/sl.json b/src/locales/sl.json index 2b27c38b..9d82b771 100644 --- a/src/locales/sl.json +++ b/src/locales/sl.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Dbc334", "Mateju" ] }, @@ -21,7 +22,7 @@ "pad.toolbar.timeslider.title": "Drsnik zgodovine", "pad.toolbar.savedRevision.title": "Shrani predelavo", "pad.toolbar.settings.title": "Nastavitve", - "pad.toolbar.embed.title": "Vstavi dokument", + "pad.toolbar.embed.title": "Deli in vklju\u010di dokument", "pad.toolbar.showusers.title": "Poka\u017ei uporabnike dokumenta", "pad.colorpicker.save": "Shrani", "pad.colorpicker.cancel": "Prekli\u010di", @@ -101,7 +102,7 @@ "timeslider.month.october": "Oktober", "timeslider.month.november": "November", "timeslider.month.december": "December", - "timeslider.unnamedauthors": "{{num}} neimenovani avtorji", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: neimenovan avtor, plural(num) two: neimenovana avtorja, plural(num) few: neimenovani avtorji, other: neimenovanih avtorjev ]}", "pad.savedrevs.marked": "Ta predelava je ozna\u010dena kot shranjena predelava.", "pad.userlist.entername": "Vpi\u0161ite ime", "pad.userlist.unnamed": "neimenovana oseba", diff --git a/src/locales/sv.json b/src/locales/sv.json index 42603f6a..c2a8b44c 100644 --- a/src/locales/sv.json +++ b/src/locales/sv.json @@ -21,7 +21,7 @@ "pad.toolbar.timeslider.title": "Tidsreglage", "pad.toolbar.savedRevision.title": "Spara revision", "pad.toolbar.settings.title": "Inst\u00e4llningar", - "pad.toolbar.embed.title": "B\u00e4dda in detta block", + "pad.toolbar.embed.title": "Dela och b\u00e4dda in detta block", "pad.toolbar.showusers.title": "Visa anv\u00e4ndarna p\u00e5 detta block", "pad.colorpicker.save": "Spara", "pad.colorpicker.cancel": "Avbryt", @@ -101,7 +101,7 @@ "timeslider.month.october": "oktober", "timeslider.month.november": "november", "timeslider.month.december": "december", - "timeslider.unnamedauthors": "{{num}} namnl\u00f6sa f\u00f6rfattare", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: namnl\u00f6s f\u00f6rfattare, other: namnl\u00f6sa f\u00f6rfattare]}", "pad.savedrevs.marked": "Denna revision \u00e4r nu markerad som en sparad revision", "pad.userlist.entername": "Ange ditt namn", "pad.userlist.unnamed": "namnl\u00f6s", diff --git a/src/locales/uk.json b/src/locales/uk.json index ab2a588e..7a4373fe 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -1,10 +1,11 @@ { "@metadata": { "authors": { - "0": "Base", - "1": "Olvin", - "3": "Steve.rusyn", - "4": "SteveR" + "0": "Andriykopanytsia", + "1": "Base", + "2": "Olvin", + "4": "Steve.rusyn", + "5": "SteveR" } }, "index.newPad": "\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438", @@ -104,7 +105,7 @@ "timeslider.month.october": "\u0416\u043e\u0432\u0442\u0435\u043d\u044c", "timeslider.month.november": "\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434", "timeslider.month.december": "\u0413\u0440\u0443\u0434\u0435\u043d\u044c", - "timeslider.unnamedauthors": "\u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432: {{num}}", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: \u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0439 \u0430\u0432\u0442\u043e\u0440, few: \u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0456 \u0430\u0432\u0442\u043e\u0440\u0438, many: \u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0445 \u0430\u0432\u0442\u043e\u0440\u0456\u0432, other: \u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0445 \u0430\u0432\u0442\u043e\u0440\u0456\u0432]}", "pad.savedrevs.marked": "\u0426\u044e \u0432\u0435\u0440\u0441\u0456\u044e \u043f\u043e\u043c\u0456\u0447\u0435\u043d\u043e \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e\u044e \u0432\u0435\u0440\u0441\u0456\u0454\u044e", "pad.userlist.entername": "\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0412\u0430\u0448\u0435 \u0456\u043c'\u044f", "pad.userlist.unnamed": "\u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0439", diff --git a/src/locales/vi.json b/src/locales/vi.json index 2d176da2..66d1096d 100644 --- a/src/locales/vi.json +++ b/src/locales/vi.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Minh Nguyen", "Tuankiet65" ] }, @@ -9,7 +10,7 @@ "pad.toolbar.bold.title": "In \u0111\u1eadm (Ctrl-B)", "pad.toolbar.italic.title": "In nghi\u00eang (Ctrl-I)", "pad.toolbar.underline.title": "G\u1ea1ch ch\u00e2n (Ctrl-U)", - "pad.toolbar.strikethrough.title": "G\u1ea1ch b\u1ecf", + "pad.toolbar.strikethrough.title": "G\u1ea1ch ngang", "pad.toolbar.ol.title": "Danh s\u00e1ch C\u00f3 \u0110\u00e1nh s\u1ed1", "pad.toolbar.ul.title": "Danh s\u00e1ch Kh\u00f4ng \u0110\u00e1nh s\u1ed1", "pad.toolbar.indent.title": "T\u0103ng l\u1ec1", diff --git a/src/locales/zh-hans.json b/src/locales/zh-hans.json index e9335392..d3516bea 100644 --- a/src/locales/zh-hans.json +++ b/src/locales/zh-hans.json @@ -4,6 +4,7 @@ "Dimension", "Hydra", "Liuxinyu970226", + "Qiyue2001", "Shangkuanlc", "Yfdyh000", "\u4e4c\u62c9\u8de8\u6c2a", @@ -56,6 +57,7 @@ "pad.importExport.exportpdf": "PDF", "pad.importExport.exportopen": "ODF\uff08\u5f00\u653e\u6587\u6863\u683c\u5f0f\uff09", "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "\u60a8\u53ea\u53ef\u4ee5\u7eaf\u6587\u672c\u6216html\u683c\u5f0f\u8f93\u5165\u3002\u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003E\u5b89\u88ddabiword\u003C/a\u003E\u53d6\u5f97\u66f4\u591a\u9ad8\u7ea7\u7684\u8f93\u5165\u529f\u80fd\u3002", "pad.modals.connected": "\u5df2\u8fde\u63a5\u3002", "pad.modals.reconnecting": "\u91cd\u65b0\u8fde\u63a5\u5230\u60a8\u7684\u8bb0\u4e8b\u7c3f...", "pad.modals.forcereconnect": "\u5f3a\u5236\u91cd\u65b0\u8fde\u63a5", @@ -63,7 +65,10 @@ "pad.modals.userdup.explanation": "\u6b64\u8bb0\u4e8b\u7c3f\u4f3c\u4e4e\u5728\u6b64\u7535\u8111\u4e0a\u5728\u591a\u4e2a\u6d4f\u89c8\u5668\u89c6\u7a97\u4e2d\u6253\u5f00\u3002", "pad.modals.userdup.advice": "\u91cd\u65b0\u8fde\u63a5\u5230\u6b64\u89c6\u7a97\u3002", "pad.modals.unauth": "\u672a\u6388\u6743", + "pad.modals.unauth.explanation": "\u60a8\u7684\u6743\u9650\u5728\u67e5\u770b\u6b64\u9875\u9762\u65f6\u5df2\u6539\u53d8\u3002\u5c1d\u8bd5\u91cd\u65b0\u8fde\u63a5\u3002", "pad.modals.looping": "\u5df2\u79bb\u7ebf\u3002", + "pad.modals.looping.explanation": "\u4e0e\u540c\u6b65\u670d\u52a1\u5668\u7684\u901a\u4fe1\u51fa\u73b0\u95ee\u9898\u3002", + "pad.modals.looping.cause": "\u4e5f\u8bb8\u60a8\u662f\u901a\u8fc7\u4e0d\u517c\u5bb9\u7684\u9632\u706b\u5899\u6216\u4ee3\u7406\u670d\u52a1\u5668\u8fde\u63a5\u3002", "pad.modals.initsocketfail": "\u65e0\u6cd5\u8bbf\u95ee\u670d\u52a1\u5668\u3002", "pad.modals.initsocketfail.explanation": "\u65e0\u6cd5\u8fde\u63a5\u5230\u540c\u6b65\u670d\u52a1\u5668\u3002", "pad.modals.initsocketfail.cause": "\u8fd9\u53ef\u80fd\u662f\u7531\u4e8e\u60a8\u7684\u6d4f\u89c8\u5668\u6216\u60a8\u7684\u4e92\u8054\u7f51\u8fde\u63a5\u7684\u95ee\u9898\u3002", @@ -103,7 +108,7 @@ "timeslider.month.october": "\u5341\u6708", "timeslider.month.november": "\u5341\u4e00\u6708", "timeslider.month.december": "\u5341\u4e8c\u6708", - "timeslider.unnamedauthors": "{{num}}\u533f\u540d\u4f5c\u8005", + "timeslider.unnamedauthors": "{{num}}\u533f\u540d\u4f5c\u8005{[plural(num) one: author, other: authors ]}", "pad.savedrevs.marked": "\u6b64\u4fee\u8ba2\u5df2\u6807\u8bb0\u4e3a\u4fdd\u5b58\u4fee\u8ba2", "pad.userlist.entername": "\u8f93\u5165\u60a8\u7684\u59d3\u540d", "pad.userlist.unnamed": "\u65e0\u540d", @@ -113,6 +118,7 @@ "pad.editbar.clearcolors": "\u6e05\u9664\u6574\u4e2a\u6587\u6863\u7684\u4f5c\u8005\u989c\u8272\u5417\uff1f", "pad.impexp.importbutton": "\u73b0\u5728\u5bfc\u5165", "pad.impexp.importing": "\u6b63\u5728\u5bfc\u5165...", + "pad.impexp.confirmimport": "\u5bfc\u5165\u7684\u6587\u4ef6\u5c06\u8986\u76d6pad\u7684\u5f53\u524d\u6587\u672c\u3002\u4f60\u786e\u5b9a\u8981\u7ee7\u7eed\u5417\uff1f", "pad.impexp.convertFailed": "\u6211\u4eec\u65e0\u6cd5\u5bfc\u5165\u6b64\u6587\u6863\u3002\u8bf7\u4f7f\u7528\u4ed6\u6587\u6863\u683c\u5f0f\u6216\u624b\u52a8\u590d\u5236\u8d34\u4e0a\u3002", "pad.impexp.uploadFailed": "\u4e0a\u8f7d\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5", "pad.impexp.importfailed": "\u5bfc\u5165\u5931\u8d25",