Commit 1932d240 authored by John McLear's avatar John McLear
Browse files

Merge branch 'release/1.4.1'

parents c3a6a237 2530bf0a
# 1.4.1
* NEW: Translations
* NEW: userLeave Hook
* NEW: Script to reinsert all DB values of a Pad
* NEW: Allow for absolute settings paths
* NEW: API: Get Pad ID from read Only Pad ID
* NEW: Huge improvement on MySQL database read/write (InnoDB to MyISAM)
* NEW: Hook for Export File Name
* NEW: Preprocessor Hook for DOMLine attributes (allows plugins to wrap entire line contents)
* Fix: Exception on Plugin Search and fix for plugins not being fetched
* Fix: Font on innerdoc body can be arial on paste
* Fix: Fix Dropping of messages in handleMessage
* Fix: Don't use Abiword for HTML exports
* Fix: Color issues with user Icon
* Fix: Timeslider Button
* Fix: Session Deletion error
* Fix: Allow browser tabs to be cycled when focus is in editor
* Fix: Various Editor issues with Easysync potentially entering forever loop on bad changeset
# 1.4
* NEW: Disable toolbar items through settings.json
* NEW: Internal stats/metrics engine
......
/*
This is a repair tool. It extracts all datas of a pad, removes and inserts them again.
*/
console.warn("WARNING: This script must not be used while etherpad is running!");
if(process.argv.length != 3)
{
console.error("Use: node bin/repairPad.js $PADID");
process.exit(1);
}
//get the padID
var padId = process.argv[2];
var db, padManager, pad, settings;
var neededDBValues = ["pad:"+padId];
var npm = require("../src/node_modules/npm");
var async = require("../src/node_modules/async");
async.series([
// load npm
function(callback) {
npm.load({}, function(er) {
if(er)
{
console.error("Could not load NPM: " + er)
process.exit(1);
}
else
{
callback();
}
})
},
// load modules
function(callback) {
settings = require('../src/node/utils/Settings');
db = require('../src/node/db/DB');
callback();
},
//intallize the database
function (callback)
{
db.init(callback);
},
//get the pad
function (callback)
{
padManager = require('../src/node/db/PadManager');
padManager.getPad(padId, function(err, _pad)
{
pad = _pad;
callback(err);
});
},
function (callback)
{
//add all authors
var authors = pad.getAllAuthors();
for(var i=0;i<authors.length;i++)
{
neededDBValues.push("globalAuthor:" + authors[i]);
}
//add all revisions
var revHead = pad.head;
for(var i=0;i<=revHead;i++)
{
neededDBValues.push("pad:"+padId+":revs:" + i);
}
//get all chat values
var chatHead = pad.chatHead;
for(var i=0;i<=chatHead;i++)
{
neededDBValues.push("pad:"+padId+":chat:" + i);
}
callback();
},
function (callback) {
db = db.db;
neededDBValues.forEach(function(key, value) {
console.debug("Key: "+key+", value: "+value);
db.remove(key);
db.set(key, value);
});
callback();
}
], function (err)
{
if(err) throw err;
else
{
console.info("finished");
process.exit();
}
});
//get the pad object
//get all revisions of this pad
//get all authors related to this pad
//get the readonly link releated to this pad
//get the chat entrys releated to this pad
//remove all keys from database and insert them again
......@@ -247,3 +247,36 @@ Things in context:
This hook will allow a plug-in developer to re-write each line when exporting to HTML.
## exportFileName
Called from src/node/handler/ExportHandler.js
Things in context:
1. padId
This hook will allow a plug-in developer to modify the file name of an exported pad. This is useful if you want to export a pad under another name and/or hide the padId under export. Note that the doctype or file extension cannot be modified for security reasons.
Example:
```
exports.exportFileName = function(hook, padId, callback){
callback("newFileName"+padId);
}
```
## userLeave
Called from src/node/handler/PadMessageHandler.js
This in context:
1. session (including the pad id and author id)
This hook gets called when an author leaves a pad. This is useful if you want to perform certain actions after a pad has been edited
Example:
```
exports.userLeave = function(hook, session, callback) {
console.log('%s left pad %s', session.author, session.padId);
};
```
......@@ -455,6 +455,15 @@ returns the read only link of a pad
* `{code: 0, message:"ok", data: {readOnlyID: "r.s8oes9dhwrvt0zif"}}`
* `{code: 1, message:"padID does not exist", data: null}`
#### getPadID(readOnlyID)
* API >= 1.2.10
returns the id of a pad which is assigned to the readOnlyID
*Example returns:*
* `{code: 0, message:"ok", data: {padID: "p.s8oes9dhwrvt0zif"}}`
* `{code: 1, message:"padID does not exist", data: null}`
#### setPublicStatus(padID, publicStatus)
* API >= 1
......
......@@ -83,7 +83,7 @@ For any two changesets $A$, $B$ such that
\begin{itemize}
\item[] $A=(n_1\rightarrow n_2)[\cdots]$
\item[] $A=(n_2\rightarrow n_3)[\cdots]$
\item[] $B=(n_2\rightarrow n_3)[\cdots]$
\end{itemize}
it is clear that there is a third changeset $C=(n_1\rightarrow n_3)[\cdots]$ such that applying $C$ to a document $X$ yeilds the same resulting document as does applying $A$ and then $B$. In this case, we write $AB=C$.
......@@ -97,14 +97,14 @@ It is impossible to compute $(XA)B$ because $B$ can only be applied to a documen
This is where \emph{merging} comes in. Merging takes two changesets that apply to the same initial document (and that cannot be composed), and computes a single new changeset that presevers the intent of both changes. The merge of $A$ and $B$ is written as $m(A,B)$. For the Etherpad system to work, we require that $m(A,B)=m(B,A)$.
Aside from what we have said so far about merging, there aremany different implementations that will lead to a workable system. We have created one implementation for text that has the following constraints.
Aside from what we have said so far about merging, there are many different implementations that will lead to a workable system. We have created one implementation for text that has the following constraints.
\section{Follows} \label{follows}
When users $A$ and $B$ have the same document $X$ on their screen, and they proceed to make respective changesets $A$ and $B$, it is no use to compute $m(A,B)$, because $m(A,B)$ applies to document $X$, but the users are already looking at document $XA$ and $XB$. What we really want is to compute $B'$ and $A'$ such that
$$XAB' = XBA' = Xm(A,B)$$
``Following'' computes these $B'$ and $A'$ changesets. The definition of the ``follow'' function $f$ is such that $Af(A,B)=Bf(B,A)=m(A,B)=m(B,A)$. When we computer $f(A,B)$.
``Following'' computes these $B'$ and $A'$ changesets. The definition of the ``follow'' function $f$ is such that $Af(A,B)=Bf(B,A)=m(A,B)=m(B,A)$. When we compute $f(A,B)$
\begin{itemize}
\item Insertions in $A$ become retained characters in $f(A,B)$
\item Insertions in $B$ become insertions in $f(A,B)$
......
......@@ -59,6 +59,9 @@
/* Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads. */
"editOnly" : false,
/* Users, who have a valid session, automatically get granted access to password protected pads */
"sessionNoPassword" : false,
/* if true, all css & js will be minified before sending to the client. This will improve the loading performance massivly,
but makes it impossible to debug the javascript/css */
......
{
"@metadata": {
"authors": [
"Naudefj"
]
},
"index.newPad": "Nuwe pad",
"index.createOpenPad": "of skep/open 'n pad met die naam:",
"pad.toolbar.bold.title": "Vet (Ctrl-B)",
"pad.toolbar.italic.title": "Kursief (Ctrl-I)",
"pad.toolbar.underline.title": "Onderstreep (Ctrl-U)",
"pad.toolbar.strikethrough.title": "Deurgehaal",
"pad.toolbar.ol.title": "Geordende lys",
"pad.toolbar.ul.title": "Ongeordende lys",
"pad.toolbar.indent.title": "Indenteer",
"pad.toolbar.unindent.title": "Verklein indentering",
"pad.toolbar.undo.title": "Ongedaan maak (Ctrl-Z)",
"pad.toolbar.redo.title": "Herdoen (Ctrl-Y)",
"pad.toolbar.settings.title": "Voorkeure",
"pad.colorpicker.save": "Stoor",
"pad.colorpicker.cancel": "Kanselleer",
"pad.loading": "Laai...",
"pad.settings.myView": "My oorsig",
"pad.settings.fontType.normal": "Normaal",
"pad.settings.fontType.monospaced": "Monospasie",
"pad.importExport.exporthtml": "HTML",
"pad.importExport.exportpdf": "PDF",
"pad.importExport.exportdokuwiki": "DokuWiki",
"pad.modals.userdup.advice": "Maak weer 'n verbinding as u die venster wil gebruik.",
"pad.modals.unauth": "Nie toegestaan",
"pad.modals.deleted": "Geskrap.",
"pad.share": "Deel die pad",
"pad.share.readonly": "Lees-alleen",
"pad.share.link": "Skakel",
"pad.share.emebdcode": "Inbed URL",
"pad.chat": "Klets",
"pad.chat.title": "Maak kletsblad vir die pad oop",
"timeslider.toolbar.returnbutton": "Terug na pad",
"timeslider.toolbar.authors": "Outeurs:",
"timeslider.toolbar.authorsList": "Geen outeurs",
"timeslider.exportCurrent": "Huidige weergawe eksporteer as:",
"timeslider.version": "Weergawe {{version}}",
"timeslider.saved": "Gestoor op {{day}} {{month}} {{year}}",
"timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}",
"timeslider.month.january": "Januarie",
"timeslider.month.february": "Februarie",
"timeslider.month.march": "Maart",
"timeslider.month.april": "April",
"timeslider.month.may": "Mei",
"timeslider.month.june": "Junie",
"timeslider.month.july": "Julie",
"timeslider.month.august": "Augustus",
"timeslider.month.september": "September",
"timeslider.month.october": "Oktober",
"timeslider.month.november": "November",
"timeslider.month.december": "Desember",
"pad.userlist.entername": "Verskaf u naam",
"pad.userlist.unnamed": "sonder naam",
"pad.userlist.guest": "Gas",
"pad.userlist.deny": "Keur af",
"pad.userlist.approve": "Keur goed",
"pad.impexp.importbutton": "Voer nou in",
"pad.impexp.importing": "Besig met invoer...",
"pad.impexp.importfailed": "Invoer het gefaal"
}
\ No newline at end of file
"@metadata": {
"authors": [
"Naudefj"
]
},
"index.newPad": "Nuwe pad",
"index.createOpenPad": "of skep/open 'n pad met die naam:",
"pad.toolbar.bold.title": "Vet (Ctrl-B)",
"pad.toolbar.italic.title": "Kursief (Ctrl-I)",
"pad.toolbar.underline.title": "Onderstreep (Ctrl-U)",
"pad.toolbar.strikethrough.title": "Deurgehaal",
"pad.toolbar.ol.title": "Geordende lys",
"pad.toolbar.ul.title": "Ongeordende lys",
"pad.toolbar.indent.title": "Indenteer",
"pad.toolbar.unindent.title": "Verklein indentering",
"pad.toolbar.undo.title": "Ongedaan maak (Ctrl-Z)",
"pad.toolbar.redo.title": "Herdoen (Ctrl-Y)",
"pad.toolbar.settings.title": "Voorkeure",
"pad.colorpicker.save": "Stoor",
"pad.colorpicker.cancel": "Kanselleer",
"pad.loading": "Laai...",
"pad.settings.myView": "My oorsig",
"pad.settings.fontType.normal": "Normaal",
"pad.settings.fontType.monospaced": "Monospasie",
"pad.importExport.exporthtml": "HTML",
"pad.importExport.exportpdf": "PDF",
"pad.importExport.exportdokuwiki": "DokuWiki",
"pad.modals.userdup.advice": "Maak weer 'n verbinding as u die venster wil gebruik.",
"pad.modals.unauth": "Nie toegestaan",
"pad.modals.deleted": "Geskrap.",
"pad.share": "Deel die pad",
"pad.share.readonly": "Lees-alleen",
"pad.share.link": "Skakel",
"pad.share.emebdcode": "Inbed URL",
"pad.chat": "Klets",
"pad.chat.title": "Maak kletsblad vir die pad oop",
"timeslider.toolbar.returnbutton": "Terug na pad",
"timeslider.toolbar.authors": "Outeurs:",
"timeslider.toolbar.authorsList": "Geen outeurs",
"timeslider.exportCurrent": "Huidige weergawe eksporteer as:",
"timeslider.version": "Weergawe {{version}}",
"timeslider.saved": "Gestoor op {{day}} {{month}} {{year}}",
"timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}",
"timeslider.month.january": "Januarie",
"timeslider.month.february": "Februarie",
"timeslider.month.march": "Maart",
"timeslider.month.april": "April",
"timeslider.month.may": "Mei",
"timeslider.month.june": "Junie",
"timeslider.month.july": "Julie",
"timeslider.month.august": "Augustus",
"timeslider.month.september": "September",
"timeslider.month.october": "Oktober",
"timeslider.month.november": "November",
"timeslider.month.december": "Desember",
"pad.userlist.entername": "Verskaf u naam",
"pad.userlist.unnamed": "sonder naam",
"pad.userlist.guest": "Gas",
"pad.userlist.deny": "Keur af",
"pad.userlist.approve": "Keur goed",
"pad.impexp.importbutton": "Voer nou in",
"pad.impexp.importing": "Besig met invoer...",
"pad.impexp.importfailed": "Invoer het gefaal"
}
{
"@metadata": {
"authors": [
"Ali1",
"Tux-tn"
]
},
"index.newPad": "باد جديد",
"index.createOpenPad": "أو صنع/فتح باد بوضع إسمه:",
"pad.toolbar.bold.title": "سميك (Ctrl-B)",
"pad.toolbar.italic.title": "مائل (Ctrl-I)",
"pad.toolbar.underline.title": "تسطير (Ctrl-U)",
"pad.toolbar.strikethrough.title": "شطب",
"pad.toolbar.ol.title": "قائمة مرتبة",
"pad.toolbar.ul.title": "قائمة غير مرتبة",
"pad.toolbar.indent.title": "إزاحة",
"pad.toolbar.unindent.title": "حذف الإزاحة",
"pad.toolbar.undo.title": "فك (Ctrl-Z)",
"pad.toolbar.redo.title": "تكرار (Ctrl-Y)",
"pad.toolbar.import_export.title": "استيراد/تصدير من/إلى تنسيقات ملفات مختلفة",
"pad.toolbar.timeslider.title": "متصفح التاريخ",
"pad.toolbar.savedRevision.title": "حفظ المراجعة",
"pad.toolbar.settings.title": "الإعدادات",
"pad.toolbar.embed.title": "تبادل و تضمين هذا الباد",
"pad.toolbar.showusers.title": "عرض المستخدمين على هذا الباد",
"pad.colorpicker.save": "تسجيل",
"pad.colorpicker.cancel": "إلغاء",
"pad.loading": "جاري التحميل...",
"pad.passwordRequired": "تحتاج إلى كلمة مرور للوصول إلى هذا الباد",
"pad.permissionDenied": "ليس لديك إذن لدخول هذا الباد",
"pad.wrongPassword": "كانت كلمة المرور خاطئة",
"pad.settings.padSettings": "إعدادات الباد",
"pad.settings.myView": "رؤيتي",
"pad.settings.stickychat": "الدردشة دائما على الشاشة",
"pad.settings.colorcheck": "ألوان التأليف",
"pad.settings.linenocheck": "أرقام الأسطر",
"pad.settings.rtlcheck": "قراءة المحتويات من اليمين إلى اليسار؟",
"pad.settings.fontType": "نوع الخط:",
"pad.settings.fontType.normal": "عادي",
"pad.settings.fontType.monospaced": "ثابت العرض",
"pad.settings.globalView": "الرؤية الشاملة",
"pad.settings.language": "اللغة:",
"pad.importExport.import_export": "استيراد/تصدير",
"pad.importExport.import": "تحميل أي ملف نصي أو وثيقة",
"pad.importExport.importSuccessful": "ناجح!",
"pad.importExport.export": "تصدير الباد الحالي بصفة:",
"pad.importExport.exporthtml": "إتش تي إم إل",
"pad.importExport.exportplain": "نص عادي",
"pad.importExport.exportword": "مايكروسوفت وورد",
"pad.importExport.exportpdf": "صيغة المستندات المحمولة",
"pad.importExport.exportopen": "ODF (نسق المستند المفتوح)",
"pad.importExport.exportdokuwiki": "دوکوويكي",
"pad.modals.connected": "متصل.",
"pad.modals.reconnecting": "إعادة الاتصال ببادك",
"pad.modals.forcereconnect": "فرض إعادة الاتصال",
"pad.modals.userdup": "مفتوح في نافذة أخرى",
"pad.modals.userdup.explanation": "يبدو أن هذا الباد تم فتحه في أكثر من نافذة متصفح في هذا الحاسوب.",
"pad.modals.userdup.advice": "إعادة الاتصال لإستعمال هذه النافذة بدلاً من الاخرى.",
"pad.modals.unauth": "غير مخول",
"pad.modals.initsocketfail": "لا يمكن الوصول إلى الخادم",
"pad.modals.initsocketfail.explanation": "تعذر الاتصال بخادم المزامنة.",
"pad.modals.slowcommit.explanation": "الخادم لا يستجيب.",
"pad.modals.slowcommit.cause": "يمكن أن يكون هذا بسبب مشاكل في الاتصال بالشبكة.",
"pad.modals.deleted": "محذوف.",
"pad.modals.deleted.explanation": "تمت إزالة هذا الباد",
"pad.modals.disconnected": "لم تعد متّصل.",
"pad.modals.disconnected.explanation": "تم فقدان الإتصال بالخادم",
"pad.modals.disconnected.cause": "قد يكون الخادم غير متوفر. الرجاء إعلامنا إذا تكرر هذا.",
"pad.share.readonly": "للقراءة فقط",
"pad.share.link": "رابط",
"pad.share.emebdcode": "URL للتضمين",
"pad.chat": "دردشة",
"pad.chat.title": "فتح الدردشة لهذا الباد",
"pad.chat.loadmessages": "تحميل المزيد من الرسائل",
"timeslider.toolbar.returnbutton": "العودة إلى الباد",
"timeslider.toolbar.authors": "المؤلفون:",
"timeslider.toolbar.authorsList": "بدون مؤلفين",
"timeslider.toolbar.exportlink.title": "تصدير",
"timeslider.exportCurrent": "تصدير النسخة الحالية ك:",
"timeslider.version": "إصدار {{version}}",
"timeslider.saved": "محفوظ {{month}} {{day}}, {{year}}",
"timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}",
"timeslider.month.january": "يناير",
"timeslider.month.february": "فبراير",
"timeslider.month.march": "مارس",
"timeslider.month.april": "أبريل",
"timeslider.month.may": "مايو",
"timeslider.month.june": "يونيو",
"timeslider.month.july": "يوليو",
"timeslider.month.august": "أغسطس",
"timeslider.month.september": "سبتمبر",
"timeslider.month.october": "أكتوبر",
"timeslider.month.november": "نوفمبر",
"timeslider.month.december": "ديسمبر",
"pad.userlist.entername": "إدخل اسمك",
"pad.userlist.unnamed": "غير مسمى",
"pad.userlist.guest": "ضيف",
"pad.userlist.deny": "رفض",
"pad.userlist.approve": "موافقة",
"pad.impexp.importbutton": "الاستيراد الآن",
"pad.impexp.importing": "الاستيراد...",
"pad.impexp.uploadFailed": "فشل التحميل، الرجاء المحاولة مرة أخرى",
"pad.impexp.importfailed": "فشل الاستيراد",
"pad.impexp.copypaste": "الرجاء نسخ/لصق"
}
\ No newline at end of file
"@metadata": {
"authors": [
"Ali1",
"Tux-tn"
]
},
"index.newPad": "باد جديد",
"index.createOpenPad": "أو صنع/فتح باد بوضع إسمه:",
"pad.toolbar.bold.title": "سميك (Ctrl-B)",
"pad.toolbar.italic.title": "مائل (Ctrl-I)",
"pad.toolbar.underline.title": "تسطير (Ctrl-U)",
"pad.toolbar.strikethrough.title": "شطب",
"pad.toolbar.ol.title": "قائمة مرتبة",
"pad.toolbar.ul.title": "قائمة غير مرتبة",
"pad.toolbar.indent.title": "إزاحة",
"pad.toolbar.unindent.title": "حذف الإزاحة",
"pad.toolbar.undo.title": "فك (Ctrl-Z)",
"pad.toolbar.redo.title": "تكرار (Ctrl-Y)",
"pad.toolbar.import_export.title": "استيراد/تصدير من/إلى تنسيقات ملفات مختلفة",
"pad.toolbar.timeslider.title": "متصفح التاريخ",
"pad.toolbar.savedRevision.title": "حفظ المراجعة",
"pad.toolbar.settings.title": "الإعدادات",
"pad.toolbar.embed.title": "تبادل و تضمين هذا الباد",
"pad.toolbar.showusers.title": "عرض المستخدمين على هذا الباد",
"pad.colorpicker.save": "تسجيل",
"pad.colorpicker.cancel": "إلغاء",
"pad.loading": "جاري التحميل...",
"pad.passwordRequired": "تحتاج إلى كلمة مرور للوصول إلى هذا الباد",
"pad.permissionDenied": "ليس لديك إذن لدخول هذا الباد",
"pad.wrongPassword": "كانت كلمة المرور خاطئة",
"pad.settings.padSettings": "إعدادات الباد",
"pad.settings.myView": "رؤيتي",
"pad.settings.stickychat": "الدردشة دائما على الشاشة",
"pad.settings.colorcheck": "ألوان التأليف",
"pad.settings.linenocheck": "أرقام الأسطر",
"pad.settings.rtlcheck": "قراءة المحتويات من اليمين إلى اليسار؟",
"pad.settings.fontType": "نوع الخط:",
"pad.settings.fontType.normal": "عادي",
"pad.settings.fontType.monospaced": "ثابت العرض",
"pad.settings.globalView": "الرؤية الشاملة",
"pad.settings.language": "اللغة:",
"pad.importExport.import_export": "استيراد/تصدير",
"pad.importExport.import": "تحميل أي ملف نصي أو وثيقة",
"pad.importExport.importSuccessful": "ناجح!",
"pad.importExport.export": "تصدير الباد الحالي بصفة:",
"pad.importExport.exporthtml": "إتش تي إم إل",
"pad.importExport.exportplain": "نص عادي",
"pad.importExport.exportword": "مايكروسوفت وورد",
"pad.importExport.exportpdf": "صيغة المستندات المحمولة",
"pad.importExport.exportopen": "ODF (نسق المستند المفتوح)",
"pad.importExport.exportdokuwiki": "دوکوويكي",
"pad.modals.connected": "متصل.",
"pad.modals.reconnecting": "إعادة الاتصال ببادك",
"pad.modals.forcereconnect": "فرض إعادة الاتصال",
"pad.modals.userdup": "مفتوح في نافذة أخرى",
"pad.modals.userdup.explanation": "يبدو أن هذا الباد تم فتحه في أكثر من نافذة متصفح في هذا الحاسوب.",
"pad.modals.userdup.advice": "إعادة الاتصال لإستعمال هذه النافذة بدلاً من الاخرى.",
"pad.modals.unauth": "غير مخول",
"pad.modals.initsocketfail": "لا يمكن الوصول إلى الخادم",
"pad.modals.initsocketfail.explanation": "تعذر الاتصال بخادم المزامنة.",
"pad.modals.slowcommit.explanation": "الخادم لا يستجيب.",
"pad.modals.slowcommit.cause": "يمكن أن يكون هذا بسبب مشاكل في الاتصال بالشبكة.",
"pad.modals.deleted": "محذوف.",
"pad.modals.deleted.explanation": "تمت إزالة هذا الباد",
"pad.modals.disconnected": "لم تعد متّصل.",
"pad.modals.disconnected.explanation": "تم فقدان الإتصال بالخادم",
"pad.modals.disconnected.cause": "قد يكون الخادم غير متوفر. الرجاء إعلامنا إذا تكرر هذا.",
"pad.share.readonly": "للقراءة فقط",
"pad.share.link": "رابط",
"pad.share.emebdcode": "URL للتضمين",
"pad.chat": "دردشة",
"pad.chat.title": "فتح الدردشة لهذا الباد",
"pad.chat.loadmessages": "تحميل المزيد من الرسائل",
"timeslider.toolbar.returnbutton": "العودة إلى الباد",
"timeslider.toolbar.authors": "المؤلفون:",
"timeslider.toolbar.authorsList": "بدون مؤلفين",
"timeslider.toolbar.exportlink.title": "تصدير",
"timeslider.exportCurrent": "تصدير النسخة الحالية ك:",
"timeslider.version": "إصدار {{version}}",
"timeslider.saved": "محفوظ {{month}} {{day}}, {{year}}",
"timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}",
"timeslider.month.january": "يناير",
"timeslider.month.february": "فبراير",
"timeslider.month.march": "مارس",
"timeslider.month.april": "أبريل",
"timeslider.month.may": "مايو",
"timeslider.month.june": "يونيو",
"timeslider.month.july": "يوليو",
"timeslider.month.august": "أغسطس",
"timeslider.month.september": "سبتمبر",
"timeslider.month.october": "أكتوبر",
"timeslider.month.november": "نوفمبر",
"timeslider.month.december": "ديسمبر",
"pad.userlist.entername": "إدخل اسمك",
"pad.userlist.unnamed": "غير مسمى",
"pad.userlist.guest": "ضيف",
"pad.userlist.deny": "رفض",
"pad.userlist.approve": "موافقة",
"pad.impexp.importbutton": "الاستيراد الآن",
"pad.impexp.importing": "الاستيراد...",
"pad.impexp.uploadFailed": "فشل التحميل، الرجاء المحاولة مرة أخرى",
"pad.impexp.importfailed": "فشل الاستيراد",
"pad.impexp.copypaste": "الرجاء نسخ/لصق"
}
{
"@metadata": {
"authors": [
"Xuacu"
]
},
"index.newPad": "Nuevu bloc",
"index.createOpenPad": "o crear/abrir un bloc col nome:",
"pad.toolbar.bold.title": "Negrina (Ctrl-B)",
"pad.toolbar.italic.title": "Cursiva (Ctrl-I)",
"pad.toolbar.underline.title": "Sorrayáu (Ctrl-U)",
"pad.toolbar.strikethrough.title": "Tacháu",
"pad.toolbar.ol.title": "Llista ordenada",
"pad.toolbar.ul.title": "Llista ensin ordenar",
"pad.toolbar.indent.title": "Sangría",
"pad.toolbar.unindent.title": "Sangría inversa",
"pad.toolbar.undo.title": "Desfacer (Ctrl-Z)",
"pad.toolbar.redo.title": "Refacer (Ctrl-Y)",
"pad.toolbar.clearAuthorship.title": "Llimpiar los colores d'autoría",
"pad.toolbar.import_export.title": "Importar/Esportar ente distintos formatos de ficheru",
"pad.toolbar.timeslider.title": "Eslizador de tiempu",
"pad.toolbar.savedRevision.title": "Guardar revisión",
"pad.toolbar.settings.title": "Configuración",
"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",
"pad.loading": "Cargando...",
"pad.passwordRequired": "Necesites una contraseña pa entrar a esti bloc",
"pad.permissionDenied": "Nun tienes permisu pa entrar a esti bloc",
"pad.wrongPassword": "La contraseña era incorreuta",
"pad.settings.padSettings": "Configuración del bloc",
"pad.settings.myView": "la mio vista",
"pad.settings.stickychat": "Alderique en pantalla siempres",
"pad.settings.colorcheck": "Colores d'autoría",
"pad.settings.linenocheck": "Númberos de llinia",
"pad.settings.rtlcheck": "¿Lleer el conteníu de drecha a izquierda?",
"pad.settings.fontType": "Tipografía:",
"pad.settings.fontType.normal": "Normal",
"pad.settings.fontType.monospaced": "Monoespaciada",
"pad.settings.globalView": "Vista global",
"pad.settings.language": "Llingua:",
"pad.importExport.import_export": "Importar/Esportar",
"pad.importExport.import": "Xubir cualquier ficheru o documentu de testu",
"pad.importExport.importSuccessful": "¡Correuto!",
"pad.importExport.export": "Esportar el bloc actual como:",
"pad.importExport.exporthtml": "HTML",