mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-26 02:16:16 -04:00
Merge with upstream develop.
This commit is contained in:
commit
6f2466bebc
141 changed files with 4084 additions and 778 deletions
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Naudefj"
|
||||
"Naudefj",
|
||||
"Fwolff"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Nuwe pad",
|
||||
|
@ -9,13 +10,15 @@
|
|||
"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.strikethrough.title": "Deurgehaal (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Geordende lys (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Ongeordende lys (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Indenteer (TAB)",
|
||||
"pad.toolbar.unindent.title": "Verklein indentering (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Ongedaan maak (Ctrl-Z)",
|
||||
"pad.toolbar.redo.title": "Herdoen (Ctrl-Y)",
|
||||
"pad.toolbar.clearAuthorship.title": "Verwyder skrywers se kleure (Ctrl+Shift+C)",
|
||||
"pad.toolbar.import_export.title": "Voer in/uit van/na verskillende lêerformate",
|
||||
"pad.toolbar.settings.title": "Voorkeure",
|
||||
"pad.colorpicker.save": "Stoor",
|
||||
"pad.colorpicker.cancel": "Kanselleer",
|
||||
|
@ -23,8 +26,16 @@
|
|||
"pad.settings.myView": "My oorsig",
|
||||
"pad.settings.fontType.normal": "Normaal",
|
||||
"pad.settings.fontType.monospaced": "Monospasie",
|
||||
"pad.settings.language": "Taal:",
|
||||
"pad.importExport.import_export": "Voer in/uit",
|
||||
"pad.importExport.import": "Laai enige tekslêer of dokument op",
|
||||
"pad.importExport.importSuccessful": "Sukses!",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "Skoon teks",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document-formaat)",
|
||||
"pad.modals.cancel": "Kanselleer",
|
||||
"pad.modals.userdup.advice": "Maak weer 'n verbinding as u die venster wil gebruik.",
|
||||
"pad.modals.unauth": "Nie toegestaan",
|
||||
"pad.modals.deleted": "Geskrap.",
|
||||
|
|
|
@ -8,7 +8,9 @@
|
|||
"Test Create account",
|
||||
"محمد أحمد عبد الفتاح",
|
||||
"Haytham morsy",
|
||||
"ديفيد"
|
||||
"ديفيد",
|
||||
"Mido",
|
||||
"Shbib Al-Subaie"
|
||||
]
|
||||
},
|
||||
"index.newPad": "باد جديد",
|
||||
|
@ -63,6 +65,8 @@
|
|||
"pad.modals.connected": "متصل.",
|
||||
"pad.modals.reconnecting": "إعادة الاتصال ببادك",
|
||||
"pad.modals.forcereconnect": "فرض إعادة الاتصال",
|
||||
"pad.modals.reconnecttimer": "حاول إعادة الاتصال",
|
||||
"pad.modals.cancel": "إلغاء",
|
||||
"pad.modals.userdup": "مفتوح في نافذة أخرى",
|
||||
"pad.modals.userdup.explanation": "يبدو أن هذا الباد تم فتحه في أكثر من نافذة متصفح في هذا الحاسوب.",
|
||||
"pad.modals.userdup.advice": "إعادة الاتصال لاستعمال هذه النافذة بدلاً من الأخرى.",
|
||||
|
|
|
@ -56,6 +56,8 @@
|
|||
"pad.modals.connected": "Coneutáu.",
|
||||
"pad.modals.reconnecting": "Reconeutando col to bloc...",
|
||||
"pad.modals.forcereconnect": "Forzar la reconexón",
|
||||
"pad.modals.reconnecttimer": "Tentando reconeutar en",
|
||||
"pad.modals.cancel": "Encaboxar",
|
||||
"pad.modals.userdup": "Abiertu n'otra ventana",
|
||||
"pad.modals.userdup.explanation": "Esti bloc paez que ta abiertu en más d'una ventana del navegador d'esti ordenador.",
|
||||
"pad.modals.userdup.advice": "Reconeutar pa usar esta ventana.",
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
"Khan27",
|
||||
"Mushviq Abdulla",
|
||||
"Wertuose",
|
||||
"Mastizada"
|
||||
"Mastizada",
|
||||
"Archaeodontosaurus",
|
||||
"Neriman2003"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Yeni lövhə",
|
||||
|
@ -60,6 +62,8 @@
|
|||
"pad.modals.connected": "Bağlandı.",
|
||||
"pad.modals.reconnecting": "Sizin lövhə yenidən qoşulur..",
|
||||
"pad.modals.forcereconnect": "Məcbur təkrarən bağlan",
|
||||
"pad.modals.reconnecttimer": "Yenidən qoşulur",
|
||||
"pad.modals.cancel": "Ləğv et",
|
||||
"pad.modals.userdup": "Başqa pəncərədə artıq açıqdır",
|
||||
"pad.modals.userdup.explanation": "Bu lövhə, ola bilsin ki, bu kompüterdəki brauzerin bir neçə pəncərəsində açılmışdır.",
|
||||
"pad.modals.userdup.advice": "Bu pəncərəni istifadə etmək üçün yenidən qoşul.",
|
||||
|
@ -114,6 +118,7 @@
|
|||
"timeslider.month.december": "Dekabr",
|
||||
"timeslider.unnamedauthors": "{{num}} adsız {[plural(num) one: müəllif, other: müəllif]}",
|
||||
"pad.savedrevs.marked": "Bu versiya indi yaddaşa saxlanmış kimi nişanlandı",
|
||||
"pad.savedrevs.timeslider": "Siz görə bilərsiniz saxlanılan versiyası miqyasında vaxt",
|
||||
"pad.userlist.entername": "Adınızı daxil edin",
|
||||
"pad.userlist.unnamed": "adsız",
|
||||
"pad.userlist.guest": "Qonaq",
|
||||
|
|
|
@ -59,6 +59,8 @@
|
|||
"pad.modals.connected": "باغلاندی.",
|
||||
"pad.modals.reconnecting": "یادداشت دفترچهنیزه یئنیدن باغلانمایا چالیشیلیر...",
|
||||
"pad.modals.forcereconnect": "تکرار باغلانماق اوچون زوْرلاما",
|
||||
"pad.modals.reconnecttimer": "یئنیدن باغلانمایا چالیشیلیر",
|
||||
"pad.modals.cancel": "وازگئچ",
|
||||
"pad.modals.userdup": "آیری پنجره ده آچیلدی",
|
||||
"pad.modals.userdup.advice": "بو پئنجره دن ایستفاده ائتمک اوچون یئنی دن متصیل اول",
|
||||
"pad.modals.unauth": "اوْلماز",
|
||||
|
@ -68,10 +70,14 @@
|
|||
"pad.modals.initsocketfail": "سرور الده دئییلدیر.",
|
||||
"pad.modals.initsocketfail.explanation": "بیرلشدیریلمه سرور لرینه متصیل اولا بیلمه دی",
|
||||
"pad.modals.slowcommit.explanation": "سرور جواب وئرمه ییر.",
|
||||
"pad.modals.slowcommit.cause": "بو، شبکه باغلانتیسیندا خطالار اوچون اولا بیلر.",
|
||||
"pad.modals.corruptPad.explanation": "ال تاپماغا چالیشدیغینیز پد کورلانیبدیر.",
|
||||
"pad.modals.corruptPad.cause": "بو، غلط سرور تنظیملری یوخسا آیری بیر گوزلنیلمز بیر داورانیشدان عمله گله بیلر. لوطفا سرویس ایداره چیسی ایله تماس توتون.",
|
||||
"pad.modals.deleted": "سیلیندی.",
|
||||
"pad.modals.deleted.explanation": "بۇ یادداشت دفترچهسی سیلینیبدیر.",
|
||||
"pad.modals.disconnected": "سیزین باغلانتینیز کسیلیبدیر.",
|
||||
"pad.modals.disconnected.explanation": "سروره باغلانتی کسیلیبدیر.",
|
||||
"pad.modals.disconnected.cause": "سرور ال چاتماز اولا بیلر. بئله قالیرسا سرویس ایداره چیسینی آییق سالین.",
|
||||
"pad.share": "بو نوت دفترچه سینی پایلاش",
|
||||
"pad.share.readonly": "سادهجه اوْخومالی",
|
||||
"pad.share.link": "باغلانتی",
|
||||
|
@ -86,6 +92,8 @@
|
|||
"timeslider.toolbar.exportlink.title": "ائشیگه آپارماق",
|
||||
"timeslider.exportCurrent": "موجود نوسخه نی بو عونوانلا ائشیگه چیخارت:",
|
||||
"timeslider.version": "{{version}} ورژنی",
|
||||
"timeslider.saved": "ساخلانیلدی {{day}} {{month}}, {{year}}",
|
||||
"timeslider.playPause": "پد ایچیندهکیلری یئنه اوْخوت/دۇردور",
|
||||
"timeslider.month.january": "ژانویه",
|
||||
"timeslider.month.february": "فوریه",
|
||||
"timeslider.month.march": "مارس",
|
||||
|
@ -98,11 +106,13 @@
|
|||
"timeslider.month.october": "اوْکتوبر",
|
||||
"timeslider.month.november": "نوْوامبر",
|
||||
"timeslider.month.december": "دسامبر",
|
||||
"pad.savedrevs.marked": "بۇ نوسخه ایندی ذخیره اوْلونموش کیمی علامتلندی.",
|
||||
"pad.userlist.entername": "آدینیزی یازین",
|
||||
"pad.userlist.unnamed": "آدسیز",
|
||||
"pad.userlist.guest": "قوْناق",
|
||||
"pad.userlist.deny": "دانماق",
|
||||
"pad.userlist.approve": "اوْنایلا",
|
||||
"pad.editbar.clearcolors": "بوتون سندلرده یازار بوْیالاری سیلینسین می؟",
|
||||
"pad.impexp.importbutton": "ایندی ایچری گتیر",
|
||||
"pad.impexp.importing": "ایچری گتیریلیر...",
|
||||
"pad.impexp.uploadFailed": "آپلود اولونمادی، یئنه چالیشین",
|
||||
|
|
|
@ -54,10 +54,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Вы можаце імпартаваць толькі з звычайнага тэксту або HTML. Дзеля больш пашыраных магчымасьцяў імпарту, калі ласка, <a 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\">усталюйце abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Вы можаце імпартаваць толькі з звычайнага тэксту або HTML. Дзеля больш пашыраных магчымасьцяў імпарту, калі ласка, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">усталюйце AbiWord</a>.",
|
||||
"pad.modals.connected": "Падлучыліся.",
|
||||
"pad.modals.reconnecting": "Перападлучэньне да вашага дакумэнта...",
|
||||
"pad.modals.forcereconnect": "Прымусовае перападлучэньне",
|
||||
"pad.modals.reconnecttimer": "Спрабуем перападключыцца праз",
|
||||
"pad.modals.cancel": "Адмяніць",
|
||||
"pad.modals.userdup": "Адкрыта ў іншым акне",
|
||||
"pad.modals.userdup.explanation": "Падобна, дакумэнт адкрыты больш чым у адным акне браўзэра на гэтым кампутары.",
|
||||
"pad.modals.userdup.advice": "Паўторна падключыць з выкарыстаньнем гэтага акна.",
|
||||
|
|
69
src/locales/bg.json
Normal file
69
src/locales/bg.json
Normal file
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Vodnokon4e",
|
||||
"StanProg"
|
||||
]
|
||||
},
|
||||
"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": "Зачеркнат (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Подреден списък (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Неподреден списък (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Отстъп (TAB)",
|
||||
"pad.toolbar.unindent.title": "Премахване на отстъпа (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Отмяна (Ctrl+Z)",
|
||||
"pad.toolbar.redo.title": "Връщане (Ctrl+Y)",
|
||||
"pad.toolbar.settings.title": "Настройки",
|
||||
"pad.colorpicker.save": "Съхраняване",
|
||||
"pad.colorpicker.cancel": "Отказване",
|
||||
"pad.loading": "Зареждане...",
|
||||
"pad.wrongPassword": "Неправилна парола",
|
||||
"pad.settings.language": "Език:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "Обикновен текст",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.modals.cancel": "Отказване",
|
||||
"pad.modals.userdup": "Отворен в друг прозорец",
|
||||
"pad.modals.userdup.explanation": "Изглежда, че този пад е отворен на повече от един раздел в браузъра на компютъра.",
|
||||
"pad.modals.looping.explanation": "Има проблеми с комуникацията със сървъра за синхронизация.",
|
||||
"pad.modals.looping.cause": "Може би сте свързани чрез несъвместима защитна стена или прокси.",
|
||||
"pad.modals.initsocketfail": "Сървърът е недостъпен.",
|
||||
"pad.modals.initsocketfail.explanation": "Свързването със сървъра за синхронизация е неуспешно.",
|
||||
"pad.modals.initsocketfail.cause": "Това вероятно се дължи на проблем с браузъра Ви или връзката Ви с Интернет.",
|
||||
"pad.modals.slowcommit.explanation": "Сървърът не отговаря.",
|
||||
"pad.modals.slowcommit.cause": "Това може да се дължи на проблеми с мрежовите връзки.",
|
||||
"pad.modals.deleted": "Изтрито.",
|
||||
"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.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.guest": "Гост"
|
||||
}
|
|
@ -59,6 +59,8 @@
|
|||
"pad.modals.connected": "Kevreet.",
|
||||
"pad.modals.reconnecting": "Adkevreañ war-zu ho pad...",
|
||||
"pad.modals.forcereconnect": "Adkevreañ dre heg",
|
||||
"pad.modals.reconnecttimer": "O klask adkevreañ",
|
||||
"pad.modals.cancel": "Nullañ",
|
||||
"pad.modals.userdup": "Digor en ur prenestr all",
|
||||
"pad.modals.userdup.explanation": "Digor eo ho pad, war a seblant, e meur a brenestr eus ho merdeer en urzhiataer-mañ.",
|
||||
"pad.modals.userdup.advice": "Kevreañ en ur implijout ar prenestr-mañ.",
|
||||
|
|
90
src/locales/bs.json
Normal file
90
src/locales/bs.json
Normal file
|
@ -0,0 +1,90 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Edinwiki",
|
||||
"Srdjan m"
|
||||
]
|
||||
},
|
||||
"pad.toolbar.bold.title": "Podebljano (Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "Ukošeno (Ctrl+I)",
|
||||
"pad.toolbar.underline.title": "Podvučeno (Ctrl+U)",
|
||||
"pad.toolbar.strikethrough.title": "Precrtano (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Poredani spisak (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Neporedani spisak (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Uvučeno (TAB)",
|
||||
"pad.toolbar.unindent.title": "Izvučeno (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Poništi (Ctrl+Z)",
|
||||
"pad.toolbar.redo.title": "Ponovi (Ctrl+Y)",
|
||||
"pad.toolbar.timeslider.title": "Historijski pregled",
|
||||
"pad.toolbar.settings.title": "Postavke",
|
||||
"pad.colorpicker.save": "Sačuvaj",
|
||||
"pad.colorpicker.cancel": "Otkaži",
|
||||
"pad.loading": "Učitavam...",
|
||||
"pad.noCookie": "Kolačić nije pronađen. Dozvolite kolačiće u Vašem pregledniku!",
|
||||
"pad.wrongPassword": "Pogrešna lozinka",
|
||||
"pad.settings.myView": "Moj prikaz",
|
||||
"pad.settings.stickychat": "Ćaskanje uvijek na ekranu",
|
||||
"pad.settings.chatandusers": "Prikaži ćaskanje i korisnike",
|
||||
"pad.settings.linenocheck": "Brojevi redova",
|
||||
"pad.settings.rtlcheck": "Da prikažem sadržaj zdesna ulijevo?",
|
||||
"pad.settings.fontType": "Vrsta fonta:",
|
||||
"pad.settings.fontType.normal": "Normalno",
|
||||
"pad.settings.globalView": "Globalni prikaz",
|
||||
"pad.settings.language": "Jezik:",
|
||||
"pad.importExport.import_export": "Uvoz/Izvoz",
|
||||
"pad.importExport.import": "Postavite bilo koju tekstualnu datoteku ili dokument",
|
||||
"pad.importExport.importSuccessful": "Uspješno!",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "Obični tekst",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.modals.connected": "Spojeno.",
|
||||
"pad.modals.forcereconnect": "Prisilno se ponovo poveži",
|
||||
"pad.modals.reconnecttimer": "Pokušavam se ponovo povezati",
|
||||
"pad.modals.cancel": "Otkaži",
|
||||
"pad.modals.userdup": "Otvoreno u drugom prozoru",
|
||||
"pad.modals.userdup.advice": "Ponovo se povežite da biste koristili ovaj prozor.",
|
||||
"pad.modals.unauth": "Niste ovlašteni",
|
||||
"pad.modals.initsocketfail": "Server je nedostupan.",
|
||||
"pad.modals.initsocketfail.explanation": "Ne mogu se povezati sa sinhronizacijskim serverom.",
|
||||
"pad.modals.slowcommit.explanation": "Server se ne odaziva.",
|
||||
"pad.modals.deleted": "Obrisano.",
|
||||
"pad.modals.disconnected": "Veza je prekinuta.",
|
||||
"pad.modals.disconnected.explanation": "Izgubljena je veza sa serverom",
|
||||
"pad.modals.disconnected.cause": "Moguće je da server nije dostupan. Obavijestite administratora ako se ovo nastavi dešavati.",
|
||||
"pad.share.readonly": "Samo za čitanje",
|
||||
"pad.share.link": "Link",
|
||||
"pad.share.emebdcode": "URL za ugradnju",
|
||||
"pad.chat": "Ćaskanje",
|
||||
"pad.chat.loadmessages": "Učitaj više poruka",
|
||||
"timeslider.pageTitle": "{{appTitle}} Historijski pregled",
|
||||
"timeslider.toolbar.authors": "Autori:",
|
||||
"timeslider.toolbar.authorsList": "Nema autora",
|
||||
"timeslider.toolbar.exportlink.title": "Izvoz",
|
||||
"timeslider.exportCurrent": "Izvezi trenutnu verziju kao:",
|
||||
"timeslider.version": "Verzija {{version}}",
|
||||
"timeslider.saved": "Sačuvano na datum {{day}}. {{month}} {{year}}",
|
||||
"timeslider.month.january": "januar",
|
||||
"timeslider.month.february": "februar",
|
||||
"timeslider.month.march": "mart",
|
||||
"timeslider.month.april": "april",
|
||||
"timeslider.month.may": "maj",
|
||||
"timeslider.month.june": "juni",
|
||||
"timeslider.month.july": "juli",
|
||||
"timeslider.month.august": "august",
|
||||
"timeslider.month.september": "septembar",
|
||||
"timeslider.month.october": "oktobar",
|
||||
"timeslider.month.november": "novembar",
|
||||
"timeslider.month.december": "decembar",
|
||||
"pad.userlist.entername": "Upišite svoje ime",
|
||||
"pad.userlist.unnamed": "bez imena",
|
||||
"pad.userlist.guest": "Gost",
|
||||
"pad.userlist.deny": "Odbij",
|
||||
"pad.userlist.approve": "Odobri",
|
||||
"pad.impexp.importbutton": "Uvezi odmah",
|
||||
"pad.impexp.importing": "Uvozim...",
|
||||
"pad.impexp.uploadFailed": "Postavljanje nije uspjelo. Pokušajte ponovo",
|
||||
"pad.impexp.importfailed": "Uvoz neuspješan"
|
||||
}
|
|
@ -8,7 +8,8 @@
|
|||
"Macofe",
|
||||
"Joan manel",
|
||||
"Eduardo Martinez",
|
||||
"Jaumeortola"
|
||||
"Jaumeortola",
|
||||
"Ssola"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Nou pad",
|
||||
|
@ -63,6 +64,8 @@
|
|||
"pad.modals.connected": "Connectat.",
|
||||
"pad.modals.reconnecting": "S'està tornant a connectar al vostre pad…",
|
||||
"pad.modals.forcereconnect": "Força tornar a connectar",
|
||||
"pad.modals.reconnecttimer": "Intentant reconnectar en",
|
||||
"pad.modals.cancel": "Cancel·la",
|
||||
"pad.modals.userdup": "Obert en una altra finestra",
|
||||
"pad.modals.userdup.explanation": "Aquest pad sembla que està obert en més d'una finestra de navegador de l'ordinador.",
|
||||
"pad.modals.userdup.advice": "Torneu a connectar-vos per a utilitzar aquesta finestra.",
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
"Leanes",
|
||||
"Quinn",
|
||||
"Aktron",
|
||||
"Mormegil"
|
||||
"Mormegil",
|
||||
"Dvorapa"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Založ nový Pad",
|
||||
|
@ -58,7 +59,7 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Importovat můžeš pouze prostý text nebo HTML formátování. Pro pokročilejší funkce importu, prosím, nainstaluj „<a 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\">abiword</a>“.",
|
||||
"pad.importExport.abiword.innerHTML": "Importovat můžeš pouze prostý text nebo HTML formátování. Pro pokročilejší funkce importu, prosím, nainstaluj „<a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord</a>“.",
|
||||
"pad.modals.connected": "Připojeno.",
|
||||
"pad.modals.reconnecting": "Znovupřipojování k Padu…",
|
||||
"pad.modals.forcereconnect": "Vynutit znovupřipojení",
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
"authors": [
|
||||
"Christian List",
|
||||
"Peter Alberti",
|
||||
"Steenth"
|
||||
"Steenth",
|
||||
"Joedalton"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Ny Pad",
|
||||
|
@ -28,12 +29,14 @@
|
|||
"pad.colorpicker.save": "Gem",
|
||||
"pad.colorpicker.cancel": "Afbryd",
|
||||
"pad.loading": "Indlæser ...",
|
||||
"pad.noCookie": "Cookie kunne ikke findes. Tillad venligst cookier i din browser!",
|
||||
"pad.passwordRequired": "Du skal bruge en adgangskode for at få adgang til denne pad",
|
||||
"pad.permissionDenied": "Du har ikke tilladelse til at få adgang til denne pad.",
|
||||
"pad.wrongPassword": "Din adgangskode er forkert",
|
||||
"pad.settings.padSettings": "Pad indstillinger",
|
||||
"pad.settings.myView": "Min visning",
|
||||
"pad.settings.stickychat": "Chat altid på skærmen",
|
||||
"pad.settings.chatandusers": "Vis snak (chat) og brugere",
|
||||
"pad.settings.colorcheck": "Forfatterskabsfarver",
|
||||
"pad.settings.linenocheck": "Linjenumre",
|
||||
"pad.settings.rtlcheck": "Læse indhold fra højre mod venstre?",
|
||||
|
@ -46,15 +49,18 @@
|
|||
"pad.importExport.import": "Uploade en tekstfil eller dokument",
|
||||
"pad.importExport.importSuccessful": "Vellykket!",
|
||||
"pad.importExport.export": "Eksporter aktuelle pad som:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "Almindelig tekst",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Du kan kun importere fra almindelig tekst eller HTML-formater. For mere avancerede importfunktioner, <a 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\">installer venligst abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Du kan kun importere fra almindelig tekst eller HTML-formater. For mere avancerede importfunktioner, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installer AbiWord</a>.",
|
||||
"pad.modals.connected": "Forbundet.",
|
||||
"pad.modals.reconnecting": "Genopretter forbindelsen til din pad...",
|
||||
"pad.modals.forcereconnect": "Gennemtving genoprettelse af forbindelsen",
|
||||
"pad.modals.reconnecttimer": "Prøver at tilkoble igen",
|
||||
"pad.modals.cancel": "Afbryd",
|
||||
"pad.modals.userdup": "Åbnet i et andet vindue",
|
||||
"pad.modals.userdup.explanation": "Denne pad synes at være åbnet i mere end ét browservindue på denne computer.",
|
||||
"pad.modals.userdup.advice": "Tilslut igen for at bruge dette vindue i stedet.",
|
||||
|
@ -91,6 +97,9 @@
|
|||
"timeslider.exportCurrent": "Eksporter aktuelle version som:",
|
||||
"timeslider.version": "Version {{version}}",
|
||||
"timeslider.saved": "Gemt den {{day}}.{{month}} {{year}}",
|
||||
"timeslider.playPause": "Afspil eller sæt padindhold på pause",
|
||||
"timeslider.backRevision": "Gå en revision tilbage i denne pad",
|
||||
"timeslider.forwardRevision": "Gå en revision fremad i denne pad",
|
||||
"timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "januar",
|
||||
"timeslider.month.february": "februar",
|
||||
|
@ -106,6 +115,7 @@
|
|||
"timeslider.month.december": "december",
|
||||
"timeslider.unnamedauthors": "{{num}} {[plural(num) one: unavngiven forfatter, other: unavngivne forfattere]}",
|
||||
"pad.savedrevs.marked": "Denne revision er nu markeret som en gemt revision",
|
||||
"pad.savedrevs.timeslider": "Du kan se gemte revisioner ved at besøge tidslinjen",
|
||||
"pad.userlist.entername": "Indtast dit navn",
|
||||
"pad.userlist.unnamed": "ikke-navngivet",
|
||||
"pad.userlist.guest": "Gæst",
|
||||
|
@ -116,6 +126,7 @@
|
|||
"pad.impexp.importing": "Importerer...",
|
||||
"pad.impexp.confirmimport": "At importere en fil, vil overskrives den aktuelle pad tekst. Er du sikker på du vil fortsætte?",
|
||||
"pad.impexp.convertFailed": "Vi var ikke i stand til at importere denne fil. Brug et andet dokument-format eller kopier og sæt ind manuelt",
|
||||
"pad.impexp.padHasData": "Vi kunne ikke importere denne fil, da denne pad allerede har haft ændringer; lav venligst import til en ny pad",
|
||||
"pad.impexp.uploadFailed": "Upload mislykkedes, prøv igen",
|
||||
"pad.impexp.importfailed": "Importen mislykkedes",
|
||||
"pad.impexp.copypaste": "Venligst kopier og sæt ind",
|
||||
|
|
|
@ -58,10 +58,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Sie können nur aus reinen Text- oder HTML-Formaten importieren. Für umfangreichere Importfunktionen <a 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\">installieren Sie bitte abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Sie können nur aus reinen Text- oder HTML-Formaten importieren. Für umfangreichere Importfunktionen <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installieren Sie bitte AbiWord</a>.",
|
||||
"pad.modals.connected": "Verbunden.",
|
||||
"pad.modals.reconnecting": "Wiederherstellen der Verbindung …",
|
||||
"pad.modals.forcereconnect": "Erneutes Verbinden erzwingen",
|
||||
"pad.modals.reconnecttimer": "Versuche Neuverbindung in",
|
||||
"pad.modals.cancel": "Abbrechen",
|
||||
"pad.modals.userdup": "In einem anderen Fenster geöffnet",
|
||||
"pad.modals.userdup.explanation": "Dieses Pad scheint in mehr als einem Browser-Fenster auf diesem Rechner geöffnet zu sein.",
|
||||
"pad.modals.userdup.advice": "Um stattdessen dieses Fenster zu verwenden, verbinden Sie sich bitte erneut.",
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
"Erdemaslancan",
|
||||
"Gorizon",
|
||||
"Mirzali",
|
||||
"Kumkumuk"
|
||||
"Kumkumuk",
|
||||
"1917 Ekim Devrimi",
|
||||
"Gırd"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Pedo newe",
|
||||
|
@ -25,7 +27,7 @@
|
|||
"pad.toolbar.savedRevision.title": "Çımraviyarnayışi qeyd ke",
|
||||
"pad.toolbar.settings.title": "Sazkerdışi",
|
||||
"pad.toolbar.embed.title": "Na bloknot degusn u bıhesrne",
|
||||
"pad.toolbar.showusers.title": "Na bloknot de karbera bıasne",
|
||||
"pad.toolbar.showusers.title": "Karbera ena bloknot dı bımotné",
|
||||
"pad.colorpicker.save": "Qeyd ke",
|
||||
"pad.colorpicker.cancel": "Bıtexelne",
|
||||
"pad.loading": "Bar beno...",
|
||||
|
@ -55,10 +57,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Teyna duz metini yana html formati şıma şenê azete dê. Dehana vêşi xısusiyetanê azere kerdışi rê grey <a 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\">AbiWord'i bar kerên</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Şıma şenê tenya metınanê zelalan ya zi formatanê HTML-i biyarê. Seba vêşi xısusiyetanê arezekerdışi ra gırey <a 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\">AbiWord-i bar kerên</a>.",
|
||||
"pad.modals.connected": "Gırediya.",
|
||||
"pad.modals.reconnecting": "Bloknot da şıma rê fına irtibat kewê no",
|
||||
"pad.modals.forcereconnect": "Mecbur anciya gırê de",
|
||||
"pad.modals.reconnecttimer": "Anciya gırê beno",
|
||||
"pad.modals.cancel": "Bıtexelne",
|
||||
"pad.modals.userdup": "Zewbina pençere de bi a",
|
||||
"pad.modals.userdup.explanation": "Ena bloknot ena komputer de yew ra zeder penceran dı akerde asena",
|
||||
"pad.modals.userdup.advice": "Ena pencera ra kar finayışi rê fına irtibat kewê",
|
||||
|
@ -114,7 +118,7 @@
|
|||
"timeslider.unnamedauthors": "{{num}} unnamed {[plural(num) zu: nuştoğ, zewbi: nustoği ]}",
|
||||
"pad.savedrevs.marked": "Eno vurriyayış henda qeyd bıyaye yew vurriyayış deyne nışan bıyo",
|
||||
"pad.savedrevs.timeslider": "Xızberê zemani ziyer kerdış ra şıma şenê revizyonanê qeyd bıyayan bıvinê",
|
||||
"pad.userlist.entername": "Nameyê xo cıkewe",
|
||||
"pad.userlist.entername": "Namey xo cıkewe",
|
||||
"pad.userlist.unnamed": "Name nébıyo",
|
||||
"pad.userlist.guest": "Meyman",
|
||||
"pad.userlist.deny": "Red ke",
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
"Nirajan pant"
|
||||
]
|
||||
},
|
||||
"index.newPad": "नयाँ प्याड",
|
||||
"index.createOpenPad": "नाम सहितको नयाँ प्याड सिर्जना गद्य्या / खोल्या :",
|
||||
"index.newPad": "नौलो प्याड",
|
||||
"index.createOpenPad": "नाउँ सहितको नौलो प्याड सिर्जना गद्य्या / खोल्ल्या :",
|
||||
"pad.toolbar.bold.title": "मोटो (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "ढल्के (Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "इसो रेखाङ्कन (Ctrl-U)",
|
||||
|
@ -16,46 +16,48 @@
|
|||
"pad.toolbar.ul.title": "अक्रमाङ्कित सूची (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "इन्डेन्ट (TAB)",
|
||||
"pad.toolbar.unindent.title": "आउटडेन्ट (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "खारेजी (Ctrl-Z)",
|
||||
"pad.toolbar.undo.title": "अण्डू (Ctrl-Z)",
|
||||
"pad.toolbar.redo.title": "दोसर्या:लागु (Ctrl-Y)",
|
||||
"pad.toolbar.clearAuthorship.title": "लेखकीय रङ्ग हटाउन्या (Ctrl+Shift+C)",
|
||||
"pad.toolbar.import_export.title": "विविध फाइल फर्म्याटअन बठेइ/मी आयात/निर्यात",
|
||||
"pad.toolbar.timeslider.title": "टाइमस्लाइडर",
|
||||
"pad.toolbar.savedRevision.title": "पुनरावलोकन संग्रहा गद्य्य",
|
||||
"pad.toolbar.settings.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.loading": "लोड हुन्नाछ़....",
|
||||
"pad.noCookie": "कुकी पाउन नाइ सकियो। तमरा ब्राउजरमी कुकी राख्दाइ अनुमति दिय!",
|
||||
"pad.passwordRequired": "यो प्यड खोल्लाकी पासवर्ड चाहिन्छ",
|
||||
"pad.passwordRequired": "यो प्याड खोल्लाकी पासवर्ड चाहिन्छ",
|
||||
"pad.permissionDenied": "तमलाईँ यै प्याड खोल्लाकी अनुमति नाइथिन",
|
||||
"pad.wrongPassword": "तमरो पासवर्ड गलत थ्यो",
|
||||
"pad.settings.padSettings": "प्याड सेटिङ्गहरू",
|
||||
"pad.settings.padSettings": "प्याड सेटिङ्गअन",
|
||||
"pad.settings.myView": "मेरि हेराइ",
|
||||
"pad.settings.stickychat": "पर्दामा जबलई कुरडी गद्य्या",
|
||||
"pad.settings.chatandusers": "वार्ता और प्रयोगकर्ताहरू देखाउन्या",
|
||||
"pad.settings.stickychat": "जबलई पर्दामी कुरडी गद्य्या",
|
||||
"pad.settings.chatandusers": "वार्ता और प्रयोगकर्ताअन देखाउन्या",
|
||||
"pad.settings.colorcheck": "लेखकीय रङ्ग",
|
||||
"pad.settings.linenocheck": "हरफ संख्या",
|
||||
"pad.settings.rtlcheck": "के सामग्री दाहिना बठे देब्रे पढ्न्या हो ?",
|
||||
"pad.settings.rtlcheck": "सामग्री दाहिना बठे देब्रे पढ्न्या हो कि?",
|
||||
"pad.settings.fontType": "फन्ट प्रकार:",
|
||||
"pad.settings.globalView": "विश्वव्यापी दृष्य",
|
||||
"pad.settings.language": "भाषा: $1",
|
||||
"pad.importExport.import_export": "आउन्या/झान्या",
|
||||
"pad.importExport.import": "कोइलै पाठ रयाको फाइल और कागजात अपलोड गरिदिय",
|
||||
"pad.settings.language": "भाषा:",
|
||||
"pad.importExport.import_export": "आयात/निर्यात",
|
||||
"pad.importExport.import": "कोइलै पाठ फाइल और कागजात अपलोड अरऽ",
|
||||
"pad.importExport.importSuccessful": "सफल भयो!",
|
||||
"pad.importExport.export": "निम्न रुपमि प्याड पठौन्या :",
|
||||
"pad.importExport.export": "निम्न रुपमि प्याड निर्यात:",
|
||||
"pad.importExport.exportetherpad": "इथरप्याड",
|
||||
"pad.importExport.exporthtml": "हटमेल",
|
||||
"pad.importExport.exportplain": "सानतिनो पाठ",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "सादा पाठ",
|
||||
"pad.importExport.exportword": "माइक्रोसफ्ट वर्ड",
|
||||
"pad.importExport.exportpdf": "पिडिएफ",
|
||||
"pad.importExport.exportopen": "ओडिएफ(खुल्ला कागजात ढाँचा)",
|
||||
"pad.importExport.exportopen": "ओडिएफ (खुल्ला कागजात ढाँचा)",
|
||||
"pad.importExport.abiword.innerHTML": "तम सादा पाठ या HTML ढाँचा बठेइ मात्तरी आयात अरीसकन्छऽ। विस्तारित आयात विशेषता खिलाई कृपया <a 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\">abiword स्थापना अरऽ</a>।",
|
||||
"pad.modals.connected": "जोडीयाको",
|
||||
"pad.modals.reconnecting": "तमरो प्याडमि आजि: जडान हुन्नाछ",
|
||||
"pad.modals.connected": "जोडीयाको।",
|
||||
"pad.modals.reconnecting": "तमरा प्याडमि दोबरा जडान अद्दाछ़..",
|
||||
"pad.modals.forcereconnect": "बलात् पुन:जडान",
|
||||
"pad.modals.reconnecttimer": "दोबरा जोड्डाइ प्रयास अद्दाछ़",
|
||||
"pad.modals.cancel": "रद्द",
|
||||
"pad.modals.userdup": "अर्खा विण्डोमी खुलिरैछ",
|
||||
"pad.modals.userdup.explanation": "यो प्याड येइ कम्प्युटरमी एक़ है बर्ता ब्राउजर सञ्झ्यालमी खोल्याऽ धेकीँछ।",
|
||||
"pad.modals.userdup.advice": "बरु यो विण्डो प्रयोग अद्दाइ दोसर्याँ जोणिय।",
|
||||
|
@ -63,8 +65,8 @@
|
|||
"pad.modals.unauth.explanation": "येइ पन्ना हेरनज्याँ तमरा अधिकार बदेलिया। दोसर्याँ जोणिन्या प्रयास अरऽ।",
|
||||
"pad.modals.looping.explanation": "सिक्रोनाइजेसन सर्भर सित सञ्चार समस्या धेकिन्नाछ़।",
|
||||
"pad.modals.looping.cause": "शायद तम यक असंगत फायरवाल या प्रोक्सी का माध्यम बठेइ जोणीरैछऽ।",
|
||||
"pad.modals.initsocketfail": "सर्भरमा पहुँच पुर्याउन नाइसकियो ।",
|
||||
"pad.modals.initsocketfail.explanation": "सिङ्क्रोनाइजेसन सर्भर सित जोणीन नाइ सकियो?",
|
||||
"pad.modals.initsocketfail": "सर्भरमी पहुँच पुर्याउन नाइसकियो।",
|
||||
"pad.modals.initsocketfail.explanation": "सिङ्क्रोनाइजेसन सर्भर सित जोणीन नाइ सकियो।",
|
||||
"pad.modals.initsocketfail.cause": "यो शायद तमरा ब्राउजर या इन्टरनेट जडान सित सम्बन्धित समस्याऽ कारणले होइ सकन्छ़।",
|
||||
"pad.modals.slowcommit.explanation": "सर्भर प्रत्युत्तर दिन्नारेन।",
|
||||
"pad.modals.slowcommit.cause": "यो नेटवर्क कनेक्टिविटी सङ्ङ सम्बन्धित समस्याऽ कारण ले होइसकन्छ।",
|
||||
|
@ -72,13 +74,13 @@
|
|||
"pad.modals.badChangeset.cause": "यो यक गलत सर्भर विन्यास या केइ और अप्रत्याशित चालचलनाऽ कारण़ ले होइसकन्छ। यदि तमलाई यो गल्ती हो भण्ण्या लागन्छ भँण्या, कृपया सेवा व्यवस्थापकलाई सम्पर्क अरऽ। सम्पादन चालु राख्दाइ दोसर्याँ जोणिन्या प्रयास अरऽ।",
|
||||
"pad.modals.corruptPad.explanation": "तमले उपयोग अद्द़ खोज्याऽ प्याड बिगण्योऽ छ।",
|
||||
"pad.modals.corruptPad.cause": "यो गलत सर्भर विन्यास या केइ और नसोच्याऽ चालचलनले होइसकन्छ। कृपया सेवा व्यवस्थापकलाई सम्पर्क अरऽ।",
|
||||
"pad.modals.deleted": "मेटियाको",
|
||||
"pad.modals.deleted.explanation": "यो प्याड हटाइसक्याको छ ।",
|
||||
"pad.modals.disconnected": "तमरो जडान अवरुद्ध भयो ।",
|
||||
"pad.modals.deleted": "मेटियाको।",
|
||||
"pad.modals.deleted.explanation": "यो प्याड हटाइसकीरैछ।",
|
||||
"pad.modals.disconnected": "तमरो जडान अवरुद्ध भयो।",
|
||||
"pad.modals.disconnected.explanation": "तमरो सर्भरसितको जडान अवरुद्ध भयो",
|
||||
"pad.modals.disconnected.cause": "सर्भर अनुपलब्ध होइसकन्छ। यदि यो हुनोइ रयाबर कृपया सेवा व्यवस्थापकलाई सूचित अरऽ।",
|
||||
"pad.share": "यस प्यडलाई बाड्न्या",
|
||||
"pad.share.readonly": "पड्या मात्तरै",
|
||||
"pad.share": "यस प्याडलाई बाड्न्या",
|
||||
"pad.share.readonly": "पड्ड्या मात्तरै",
|
||||
"pad.share.link": "लिङ्क",
|
||||
"pad.share.emebdcode": "URL थप्प्या",
|
||||
"pad.chat": "कुरणिकानी",
|
||||
|
@ -117,13 +119,13 @@
|
|||
"pad.userlist.deny": "अस्वीकार",
|
||||
"pad.userlist.approve": "अनुमोदन",
|
||||
"pad.editbar.clearcolors": "सङताइ कागताजमी है लेखक रङ्ङअन साप अद्द्या?",
|
||||
"pad.impexp.importbutton": "ऐलै आयार अरऽ",
|
||||
"pad.impexp.importbutton": "ऐलै आयात अरऽ",
|
||||
"pad.impexp.importing": "आयात अद्दाछ़...",
|
||||
"pad.impexp.confirmimport": "फाइल आयात़ ले प्याडओ अइलओ पाठ बदेलिन्या हो। तम ऐतिऱ बड्ड चाहन्छ भणिबर पक्का छऽ?",
|
||||
"pad.impexp.convertFailed": "एइ फाइललाई आयात अद्द नाइसक्यो। कृपया जुदोइ कागजात फर्याट प्रयोग अरऽ या नकल पेस्ट अरऽ",
|
||||
"pad.impexp.padHasData": "हम एइ फाइलाई आयात अद्दाइ असमर्थ छौँ क्याइकि एइ प्याडमी पैली अरीयाऽ फेलबदेल छन्, कृपया नयाँ प्याडमी आयात अरऽ",
|
||||
"pad.impexp.uploadFailed": "अपलोड असफल, कृपया दोसर्याँ प्रयास अर:",
|
||||
"pad.impexp.uploadFailed": "अपलोड असफल, कृपया दोसर्याँ प्रयास अरऽ",
|
||||
"pad.impexp.importfailed": "आयात असफल",
|
||||
"pad.impexp.copypaste": "कृपया नकल सार अर:",
|
||||
"pad.impexp.copypaste": "कृपया नकल सार अरऽ",
|
||||
"pad.impexp.exportdisabled": "{{type}} फर्म्याटमी निर्यात अक्षम अरीरैछ। विवरण खिलाइ कृपया तमरा संयन्त्र प्रशासकलाई सम्पर्क अर:।"
|
||||
}
|
||||
|
|
|
@ -60,6 +60,8 @@
|
|||
"pad.modals.connected": "Συνδεμένοι.",
|
||||
"pad.modals.reconnecting": "Επανασύνδεση στο pad σας...",
|
||||
"pad.modals.forcereconnect": "Επιβολή επανασύνδεσης",
|
||||
"pad.modals.reconnecttimer": "Επαναπροσπάθεια σε",
|
||||
"pad.modals.cancel": "Ακύρωση",
|
||||
"pad.modals.userdup": "Ανοιγμένο σε άλλο παράθυρο",
|
||||
"pad.modals.userdup.explanation": "Αυτό το pad φαίνεται να είναι ανοιχτό σε περισσότερα από ένα παράθυρο του προγράμματος περιήγησης σε αυτόν τον υπολογιστή.",
|
||||
"pad.modals.userdup.advice": "Επανασυνδεθείτε για να χρησιμοποιήσετε αυτό το παράθυρο.",
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
"@metadata": {
|
||||
"authors": [
|
||||
"Chase me ladies, I'm the Cavalry",
|
||||
"Shirayuki"
|
||||
"Shirayuki",
|
||||
"Andibing",
|
||||
"HairyFotr"
|
||||
]
|
||||
},
|
||||
"index.newPad": "New Pad",
|
||||
|
@ -53,10 +55,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "You only can import from plain text or HTML formats. For more advanced import features please <a 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\">install abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "You only can import from plain text or HTML formats. For more advanced import features please <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">install AbiWord</a>.",
|
||||
"pad.modals.connected": "Connected.",
|
||||
"pad.modals.reconnecting": "Reconnecting to your pad..",
|
||||
"pad.modals.forcereconnect": "Force reconnect",
|
||||
"pad.modals.reconnecttimer": "Trying to reconnect in",
|
||||
"pad.modals.cancel": "Cancel",
|
||||
"pad.modals.userdup": "Opened in another window",
|
||||
"pad.modals.userdup.explanation": "This pad seems to be opened in more than one browser window on this computer.",
|
||||
"pad.modals.userdup.advice": "Reconnect to use this window instead.",
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
"pad.settings.fontType.normal": "Normal",
|
||||
"pad.settings.fontType.opendyslexic": "Open Dyslexic",
|
||||
"pad.settings.fontType.monospaced": "Monospace",
|
||||
"pad.settings.fontType.montserrat": "Montserrat",
|
||||
"pad.settings.fontType.comicsans": "Comic Sans",
|
||||
"pad.settings.fontType.couriernew": "Courier New",
|
||||
"pad.settings.fontType.georgia": "Georgia",
|
||||
|
@ -47,6 +48,7 @@
|
|||
"pad.settings.fontType.lucida": "Lucida",
|
||||
"pad.settings.fontType.lucidasans": "Lucida Sans",
|
||||
"pad.settings.fontType.palatino": "Palatino",
|
||||
"pad.settings.fontType.robotomono": "RobotoMono",
|
||||
"pad.settings.fontType.tahoma": "Tahoma",
|
||||
"pad.settings.fontType.timesnewroman": "Times New Roman",
|
||||
"pad.settings.fontType.trebuchet": "Trebuchet",
|
||||
|
@ -69,11 +71,13 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "You only can import from plain text or HTML formats. For more advanced import features please <a 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\">install abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "You only can import from plain text or HTML formats. For more advanced import features please <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">install AbiWord</a>.",
|
||||
|
||||
"pad.modals.connected": "Connected.",
|
||||
"pad.modals.reconnecting": "Reconnecting to your pad..",
|
||||
"pad.modals.forcereconnect": "Force reconnect",
|
||||
"pad.modals.reconnecttimer": "Trying to reconnect in ",
|
||||
"pad.modals.cancel": "Cancel",
|
||||
|
||||
"pad.modals.userdup": "Opened in another window",
|
||||
"pad.modals.userdup.explanation": "This pad seems to be opened in more than one browser window on this computer.",
|
||||
|
|
|
@ -55,10 +55,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Formato “OpenDocument”)",
|
||||
"pad.importExport.abiword.innerHTML": "Nur kapablas enporti de plata teksto aŭ HTML. Por pli speciala importkapablo, bonvolu <a 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\">instalu la programon, Abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Nur kapablas enporti de plata teksto aŭ HTML. Por pli speciala importkapablo, bonvolu <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instalu la programon, Abiword</a>.",
|
||||
"pad.modals.connected": "Konektita.",
|
||||
"pad.modals.reconnecting": "Rekonektanta al via redaktilo..",
|
||||
"pad.modals.forcereconnect": "Perforte rekonekti",
|
||||
"pad.modals.reconnecttimer": "Provos rekonekti post",
|
||||
"pad.modals.cancel": "Nuligi",
|
||||
"pad.modals.userdup": "Malfermita en alia fenestro",
|
||||
"pad.modals.userdup.explanation": "Ĉi tiu teksto ŝajne estas malferma en pli ol unu retumilo sur ĉi tiu komputilo.",
|
||||
"pad.modals.userdup.advice": "Rekonekti por anstataŭe uzi ĉi tiun fenestron.",
|
||||
|
|
|
@ -11,7 +11,9 @@
|
|||
"Vivaelcelta",
|
||||
"Xuacu",
|
||||
"Macofe",
|
||||
"Fitoschido"
|
||||
"Fitoschido",
|
||||
"Dgstranz",
|
||||
"Luzcaru"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Nuevo pad",
|
||||
|
@ -36,7 +38,7 @@
|
|||
"pad.colorpicker.save": "Guardar",
|
||||
"pad.colorpicker.cancel": "Cancelar",
|
||||
"pad.loading": "Cargando...",
|
||||
"pad.noCookie": "La cookie no se pudo encontrar. ¡Habilita las cookies en tu navegador!",
|
||||
"pad.noCookie": "No se pudo encontrar la «cookie». Permite la utilización de «cookies» en el navegador.",
|
||||
"pad.passwordRequired": "Necesitas una contraseña para acceder a este pad",
|
||||
"pad.permissionDenied": "No tienes permiso para acceder a este pad",
|
||||
"pad.wrongPassword": "La contraseña era incorrecta",
|
||||
|
@ -62,10 +64,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Solo es posible importar texto sin formato o en HTML. Para obtener funciones de importación más avanzadas es necesario <a 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\">instalar AbiWord</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Solo es posible importar texto sin formato o en HTML. Para obtener funciones de importación más avanzadas es necesario <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instalar AbiWord</a>.",
|
||||
"pad.modals.connected": "Conectado.",
|
||||
"pad.modals.reconnecting": "Reconectando a tu pad..",
|
||||
"pad.modals.forcereconnect": "Forzar reconexión",
|
||||
"pad.modals.reconnecttimer": "Se intentará reconectar en",
|
||||
"pad.modals.cancel": "Cancelar",
|
||||
"pad.modals.userdup": "Abierto en otra ventana",
|
||||
"pad.modals.userdup.explanation": "Este pad parece estar abierto en más de una ventana de tu navegador.",
|
||||
"pad.modals.userdup.advice": "Reconectar para usar esta ventana.",
|
||||
|
@ -74,7 +78,7 @@
|
|||
"pad.modals.looping.explanation": "Hay problemas con el servidor de sincronización.",
|
||||
"pad.modals.looping.cause": "Puede deberse a que te conectes a través de un proxy o un cortafuegos incompatible.",
|
||||
"pad.modals.initsocketfail": "Servidor incalcanzable.",
|
||||
"pad.modals.initsocketfail.explanation": "No se pudo conectar al servidor de sincronización.",
|
||||
"pad.modals.initsocketfail.explanation": "No se pudo conectar con el servidor de sincronización.",
|
||||
"pad.modals.initsocketfail.cause": "Probablemente debido a un problema en tu navegador o en tu conexión a Internet.",
|
||||
"pad.modals.slowcommit.explanation": "El servidor no responde.",
|
||||
"pad.modals.slowcommit.cause": "Puede deberse a problemas con tu conexión de red.",
|
||||
|
@ -88,7 +92,7 @@
|
|||
"pad.modals.disconnected.explanation": "Se perdió la conexión con el servidor",
|
||||
"pad.modals.disconnected.cause": "El servidor podría no estar disponible. Contacta al administrador del servicio si esto continúa sucediendo.",
|
||||
"pad.share": "Compatir este pad",
|
||||
"pad.share.readonly": "Sólo lectura",
|
||||
"pad.share.readonly": "Solo lectura",
|
||||
"pad.share.link": "Enlace",
|
||||
"pad.share.emebdcode": "Incrustar URL",
|
||||
"pad.chat": "Chat",
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
"Theklan",
|
||||
"Subi",
|
||||
"Xabier Armendaritz",
|
||||
"An13sa"
|
||||
"An13sa",
|
||||
"Mikel Ibaiba",
|
||||
"HairyFotr"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Pad berria",
|
||||
|
@ -55,10 +57,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Testu laua edo html formatudun testuak bakarrik inporta ditzakezu. Aurreratuagoak diren inportazio aukerak izateko <a 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\">abiword instala ezazu</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Testu laua edo HTML formatudun testuak bakarrik inporta ditzakezu. Aurreratuagoak diren inportazio aukerak izateko <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord instala ezazu</a>.",
|
||||
"pad.modals.connected": "Konektatuta.",
|
||||
"pad.modals.reconnecting": "Zure pad-era birkonektatu...",
|
||||
"pad.modals.forcereconnect": "Berkonexioa fortzatu",
|
||||
"pad.modals.reconnecttimer": "Berriz konektatzen saiatzen",
|
||||
"pad.modals.cancel": "Deuseztatu",
|
||||
"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.",
|
||||
|
@ -72,6 +76,9 @@
|
|||
"pad.modals.slowcommit.explanation": "Zerbitzariak ez du erantzuten.",
|
||||
"pad.modals.slowcommit.cause": "Baliteke hau sarearen konexio arazoak direla eta izatea.",
|
||||
"pad.modals.badChangeset.explanation": "Sinkronizazio zerbitzariak, zuk egindako aldaketa bat legez kanpokotzat jo du.",
|
||||
"pad.modals.badChangeset.cause": "Honek zerbitzariaren konfigurazio okerra edo ustekabeko beste jokabidearen baten ondorio izan liteke. Jarri harremanetan zerbitzu-administratzailearekin, errore bat dela uste baduzu. Saiatu berriro konektatzen edizioarekin jarraitzeko.",
|
||||
"pad.modals.corruptPad.explanation": "Sartzen saiatzen ari zaren Pad-a hondatuta dago.",
|
||||
"pad.modals.corruptPad.cause": "Baliteke zerbitzari okerreko konfigurazioa edo beste ustekabeko portaera batzuk izatea. Jarri harremanetan zerbitzu-administratzailearekin.",
|
||||
"pad.modals.deleted": "Ezabatua.",
|
||||
"pad.modals.deleted.explanation": "Pad hau ezabatua izan da.",
|
||||
"pad.modals.disconnected": "Deskonektatua izan zara.",
|
||||
|
@ -92,6 +99,9 @@
|
|||
"timeslider.exportCurrent": "Gorde bertsio hau honela:",
|
||||
"timeslider.version": "Bertsioa {{version}}",
|
||||
"timeslider.saved": "{{year}}ko {{month}}ren {{day}}an gordeta",
|
||||
"timeslider.playPause": "Berriro erreproduzitu / gelditu Pad edukiak",
|
||||
"timeslider.backRevision": "Berrikusketa bat atzerago joan Pad honetan",
|
||||
"timeslider.forwardRevision": "Berrikusketa bat aurrerago joan Pad honetan",
|
||||
"timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "Urtarrila",
|
||||
"timeslider.month.february": "Otsaila",
|
||||
|
@ -107,6 +117,7 @@
|
|||
"timeslider.month.december": "Abendua",
|
||||
"timeslider.unnamedauthors": "{{num}} izenik gabeko {[plural(num) one: egilea, other: egileak]}",
|
||||
"pad.savedrevs.marked": "Berrikuspen hau markatua dago gordetako berrikuspen gisa",
|
||||
"pad.savedrevs.timeslider": "Gordetako berrikusketak ikus ditzakezu denbora-graduatzailea bisitatuz",
|
||||
"pad.userlist.entername": "Sartu zure erabiltzaile izena",
|
||||
"pad.userlist.unnamed": "izenik gabe",
|
||||
"pad.userlist.guest": "Gonbidatua",
|
||||
|
@ -117,6 +128,7 @@
|
|||
"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.padHasData": "Artxibo hau ezin izan dugu inportatu Pad hau aldaketak izan dituelako jada, Pad berria inportatu mesedez.",
|
||||
"pad.impexp.uploadFailed": "Igotzean akatsa egon da, saia zaitez berriro",
|
||||
"pad.impexp.importfailed": "Inportazioak akatsa egin du",
|
||||
"pad.impexp.copypaste": "Mesedez kopiatu eta pegatu",
|
||||
|
|
|
@ -58,10 +58,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (قالب سند باز)",
|
||||
"pad.importExport.abiword.innerHTML": "شما تنها میتوانید از قالب متن ساده یا اچتیامال درونریزی کنید. برای بیشتر شدن ویژگیهای درونریزی پیشرفته <a 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\">AbiWord</a> را نصب کنید.",
|
||||
"pad.importExport.abiword.innerHTML": "شما تنها میتوانید از قالب متن ساده یا اچتیامال درونریزی کنید. برای بیشتر شدن ویژگیهای درونریزی پیشرفته <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord</a> را نصب کنید.",
|
||||
"pad.modals.connected": "متصل شد.",
|
||||
"pad.modals.reconnecting": "در حال اتصال دوباره به دفترچه یادداشت شما..",
|
||||
"pad.modals.forcereconnect": "واداشتن به اتصال دوباره",
|
||||
"pad.modals.reconnecttimer": "تلاش برای اتصال مجدد",
|
||||
"pad.modals.cancel": "لغو",
|
||||
"pad.modals.userdup": "در پنجرهای دیگر باز شد",
|
||||
"pad.modals.userdup.explanation": "گمان میرود این دفترچه یادداشت در بیش از یک پنجرهی مرورگر باز شدهاست.",
|
||||
"pad.modals.userdup.advice": "برای استفاده از این پنجره دوباره وصل شوید.",
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
"Macofe",
|
||||
"MrTapsa",
|
||||
"Silvonen",
|
||||
"Espeox"
|
||||
"Espeox",
|
||||
"Pyscowicz"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Uusi muistio",
|
||||
|
@ -68,6 +69,8 @@
|
|||
"pad.modals.connected": "Yhdistetty.",
|
||||
"pad.modals.reconnecting": "Muodostetaan yhteyttä muistioon uudelleen...",
|
||||
"pad.modals.forcereconnect": "Pakota yhdistämään uudelleen",
|
||||
"pad.modals.reconnecttimer": "Yritetään yhdistää uudelleen",
|
||||
"pad.modals.cancel": "Peruuta",
|
||||
"pad.modals.userdup": "Avattu toisessa ikkunassa",
|
||||
"pad.modals.userdup.explanation": "Tämä muistio vaikuttaa olevan avoinna useammassa eri selainikkunassa tällä koneella.",
|
||||
"pad.modals.userdup.advice": "Yhdistä uudelleen, jos haluat käyttää tätä ikkunaa.",
|
||||
|
|
|
@ -22,7 +22,8 @@
|
|||
"Framafan",
|
||||
"Fylip22",
|
||||
"C13m3n7",
|
||||
"Wladek92"
|
||||
"Wladek92",
|
||||
"Urhixidur"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Nouveau pad",
|
||||
|
@ -47,13 +48,13 @@
|
|||
"pad.colorpicker.save": "Enregistrer",
|
||||
"pad.colorpicker.cancel": "Annuler",
|
||||
"pad.loading": "Chargement…",
|
||||
"pad.noCookie": "Le cookie n’a pas pu être trouvé. Veuillez autoriser les cookies dans votre navigateur !",
|
||||
"pad.noCookie": "Le témoin (cookie) n’a pas pu être trouvé. Veuillez autoriser les témoins dans votre navigateur !",
|
||||
"pad.passwordRequired": "Vous avez besoin d'un mot de passe pour accéder à ce pad",
|
||||
"pad.permissionDenied": "Vous n'avez pas la permission d’accéder à ce pad",
|
||||
"pad.wrongPassword": "Votre mot de passe est incorrect",
|
||||
"pad.settings.padSettings": "Paramètres du pad",
|
||||
"pad.settings.myView": "Ma vue",
|
||||
"pad.settings.stickychat": "Toujours afficher le tchat",
|
||||
"pad.settings.stickychat": "Toujours afficher le clavardage",
|
||||
"pad.settings.chatandusers": "Afficher la discussion et les utilisateurs",
|
||||
"pad.settings.colorcheck": "Couleurs d’identification",
|
||||
"pad.settings.linenocheck": "Numéros de lignes",
|
||||
|
@ -73,17 +74,19 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Vous ne pouvez importer que des formats texte brut ou HTML. Pour des fonctionnalités d'importation plus évoluées, veuillez <a 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\">installer Abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Vous ne pouvez importer que des formats texte brut ou HTML. Pour des fonctionnalités d'importation plus évoluées, veuillez <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installer AbiWord</a>.",
|
||||
"pad.modals.connected": "Connecté.",
|
||||
"pad.modals.reconnecting": "Reconnexion vers votre pad...",
|
||||
"pad.modals.forcereconnect": "Forcer la reconnexion",
|
||||
"pad.modals.reconnecttimer": "Essai de reconnexion",
|
||||
"pad.modals.cancel": "Annuler",
|
||||
"pad.modals.userdup": "Ouvert dans une autre fenêtre",
|
||||
"pad.modals.userdup.explanation": "Ce pad semble être ouvert dans plusieurs fenêtres sur cet ordinateur.",
|
||||
"pad.modals.userdup.advice": "Se reconnecter en utilisant cette fenêtre.",
|
||||
"pad.modals.unauth": "Non autorisé",
|
||||
"pad.modals.unauth.explanation": "Vos permissions ont été changées lors de l'affichage de cette page. Essayez de vous reconnecter.",
|
||||
"pad.modals.looping.explanation": "Nous éprouvons un problème de communication au serveur de synchronisation.",
|
||||
"pad.modals.looping.cause": "Il est possible que vous soyez connecté avec un pare-feu ou un proxy incompatible.",
|
||||
"pad.modals.looping.cause": "Il est possible que vous soyez connecté avec un pare-feu ou un 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": "Ceci est probablement dû à un problème avec votre navigateur ou votre connexion internet.",
|
||||
|
@ -102,8 +105,8 @@
|
|||
"pad.share.readonly": "Lecture seule",
|
||||
"pad.share.link": "Lien",
|
||||
"pad.share.emebdcode": "Incorporer un lien",
|
||||
"pad.chat": "Chat",
|
||||
"pad.chat.title": "Ouvrir le chat de ce pad.",
|
||||
"pad.chat": "Clavardage",
|
||||
"pad.chat.title": "Ouvrir le clavardoir de ce pad.",
|
||||
"pad.chat.loadmessages": "Charger davantage de messages",
|
||||
"timeslider.pageTitle": "Historique dynamique de {{appTitle}}",
|
||||
"timeslider.toolbar.returnbutton": "Retourner au pad",
|
||||
|
|
43
src/locales/fy.json
Normal file
43
src/locales/fy.json
Normal file
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Robin van der Vliet"
|
||||
]
|
||||
},
|
||||
"pad.toolbar.bold.title": "Fet (Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "Kursyf (Ctrl+I)",
|
||||
"pad.toolbar.underline.title": "Understreekje (Ctrl+U)",
|
||||
"pad.toolbar.settings.title": "Ynstellingen",
|
||||
"pad.colorpicker.save": "Bewarje",
|
||||
"pad.colorpicker.cancel": "Annulearje",
|
||||
"pad.settings.fontType.normal": "Normaal",
|
||||
"pad.settings.fontType.monospaced": "Monospace",
|
||||
"pad.settings.language": "Taal:",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.modals.connected": "Ferbûn.",
|
||||
"pad.modals.deleted": "Fuortsmiten.",
|
||||
"pad.share.link": "Keppeling",
|
||||
"timeslider.toolbar.authors": "Auteurs:",
|
||||
"timeslider.toolbar.authorsList": "Gjin auteurs",
|
||||
"timeslider.toolbar.exportlink.title": "Eksportearje",
|
||||
"timeslider.version": "Ferzje {{version}}",
|
||||
"timeslider.dateformat": "{{day}}-{{month}}-{{year}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "jannewaris",
|
||||
"timeslider.month.february": "febrewaris",
|
||||
"timeslider.month.march": "maart",
|
||||
"timeslider.month.april": "april",
|
||||
"timeslider.month.may": "maaie",
|
||||
"timeslider.month.june": "juny",
|
||||
"timeslider.month.july": "july",
|
||||
"timeslider.month.august": "augustus",
|
||||
"timeslider.month.september": "septimber",
|
||||
"timeslider.month.october": "oktober",
|
||||
"timeslider.month.november": "novimber",
|
||||
"timeslider.month.december": "desimber",
|
||||
"pad.userlist.unnamed": "sûnder namme",
|
||||
"pad.userlist.guest": "Gast",
|
||||
"pad.userlist.deny": "Wegerje",
|
||||
"pad.userlist.approve": "Goedkarre"
|
||||
}
|
|
@ -57,6 +57,8 @@
|
|||
"pad.modals.connected": "Conectado.",
|
||||
"pad.modals.reconnecting": "Reconectando co seu documento...",
|
||||
"pad.modals.forcereconnect": "Forzar a reconexión",
|
||||
"pad.modals.reconnecttimer": "Intentarase reconectar en",
|
||||
"pad.modals.cancel": "Cancelar",
|
||||
"pad.modals.userdup": "Aberto noutra ventá",
|
||||
"pad.modals.userdup.explanation": "Semella que este documento está aberto en varias ventás do navegador neste ordenador.",
|
||||
"pad.modals.userdup.advice": "Reconectar para usar esta ventá.",
|
||||
|
|
|
@ -55,10 +55,12 @@
|
|||
"pad.importExport.exportword": "מיקרוסופט וורד",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "באפשרותך לייבא מטקסט פשוט או מ־HTML. לאפשרויות ייבוא מתקדמות יותר יש <a 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\">להתקין את abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "באפשרותך לייבא מטקסט פשוט או מ־HTML. לאפשרויות ייבוא מתקדמות יותר יש <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">להתקין AbiWord</a>.",
|
||||
"pad.modals.connected": "מחובר.",
|
||||
"pad.modals.reconnecting": "מתבצע חיבור מחדש...",
|
||||
"pad.modals.forcereconnect": "לכפות חיבור מחדש",
|
||||
"pad.modals.reconnecttimer": "מנסה להתחבר מחדש בעוד",
|
||||
"pad.modals.cancel": "ביטול",
|
||||
"pad.modals.userdup": "פתוח בחלון אחר",
|
||||
"pad.modals.userdup.explanation": "נראה שהפנקס הזה פתוח ביותר מחלון דפדפן אחד במחשב הזה.",
|
||||
"pad.modals.userdup.advice": "להתחבר מחדש באמצעות החלון הזה.",
|
||||
|
|
39
src/locales/hi.json
Normal file
39
src/locales/hi.json
Normal file
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Sfic"
|
||||
]
|
||||
},
|
||||
"pad.toolbar.bold.title": "गहरा (Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "तिरछा (Ctrl+I)",
|
||||
"pad.toolbar.strikethrough.title": "काटें (Ctrl+5)",
|
||||
"pad.colorpicker.save": "सहेजें",
|
||||
"pad.colorpicker.cancel": "रद्द करें",
|
||||
"pad.loading": "लोड हो रहा है...",
|
||||
"pad.settings.language": "भाषा:",
|
||||
"pad.importExport.import_export": "आयात/निर्यात",
|
||||
"pad.importExport.exportpdf": "पीडीएफ़",
|
||||
"pad.modals.cancel": "रद्द करें",
|
||||
"timeslider.toolbar.authors": "लेखक:",
|
||||
"timeslider.toolbar.exportlink.title": "निर्यात",
|
||||
"timeslider.version": "संस्करण {{version}}",
|
||||
"timeslider.saved": "{{day}} {{month}} {{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.guest": "अतिथि",
|
||||
"pad.impexp.importbutton": "अभी आयात करें",
|
||||
"pad.impexp.importing": "आयात कर रहा...",
|
||||
"pad.impexp.importfailed": "आयात विफल हुआ",
|
||||
"pad.impexp.copypaste": "कृपया कॉपी पेस्ट करें"
|
||||
}
|
129
src/locales/hr.json
Normal file
129
src/locales/hr.json
Normal file
|
@ -0,0 +1,129 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Bugoslav"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Novi blokić",
|
||||
"index.createOpenPad": "ili stvori/otvori blokić s imenom:",
|
||||
"pad.toolbar.bold.title": "Masno (Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "Ukošeno (Ctrl+I)",
|
||||
"pad.toolbar.underline.title": "Podcrtano (Ctrl+U)",
|
||||
"pad.toolbar.strikethrough.title": "Prekriženo (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Uređeni popis (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Neuređeni popis (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Uvlaka (TAB)",
|
||||
"pad.toolbar.unindent.title": "Izvlaka (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Poništi (Ctrl+Z)",
|
||||
"pad.toolbar.redo.title": "Ponovi (Ctrl+Y)",
|
||||
"pad.toolbar.clearAuthorship.title": "Ukloni boje autorstva (Ctrl+Shift+C)",
|
||||
"pad.toolbar.import_export.title": "Uvezi/izvezi iz/na različite datotečne formate",
|
||||
"pad.toolbar.timeslider.title": "Pokazivač vremenske lente",
|
||||
"pad.toolbar.savedRevision.title": "Spremi inačicu",
|
||||
"pad.toolbar.settings.title": "Postavke",
|
||||
"pad.toolbar.embed.title": "Dijeli i umetni ovaj blokić",
|
||||
"pad.toolbar.showusers.title": "Pokaži suradnike ovoga blokića",
|
||||
"pad.colorpicker.save": "Spremi",
|
||||
"pad.colorpicker.cancel": "Otkaži",
|
||||
"pad.loading": "Učitavanje...",
|
||||
"pad.noCookie": "Kolačić nije pronađen. Molimo Vas da uključite kolačiće u Vašem pregledniku!",
|
||||
"pad.passwordRequired": "Potrebna Vam je zaporka za pristup ovomu blokiću",
|
||||
"pad.permissionDenied": "Nemate dopuštenje za pristup ovome blokiću",
|
||||
"pad.wrongPassword": "Vaša zaporka nije valjana",
|
||||
"pad.settings.padSettings": "Postavke blokića",
|
||||
"pad.settings.myView": "Vaš prikaz",
|
||||
"pad.settings.stickychat": "Stavi čavrljanje uvijek na ekranu",
|
||||
"pad.settings.chatandusers": "Prikaži čavrljanje i suradnike",
|
||||
"pad.settings.colorcheck": "Boje autorstva",
|
||||
"pad.settings.linenocheck": "Brojevi redaka",
|
||||
"pad.settings.rtlcheck": "Želite li prikaz sadržaja s desna na lijevo?",
|
||||
"pad.settings.fontType": "Vrsta fonta:",
|
||||
"pad.settings.globalView": "Globalni prikaz",
|
||||
"pad.settings.language": "Jezik:",
|
||||
"pad.importExport.import_export": "Uvoz/Izvoz",
|
||||
"pad.importExport.import": "Postavite bilo koju tekstualnu datoteku ili dokument",
|
||||
"pad.importExport.importSuccessful": "Uspješno!",
|
||||
"pad.importExport.export": "Izvezi trenutačni blokić kao:",
|
||||
"pad.importExport.exportetherpad": "Etherpad (virtualni blokići)",
|
||||
"pad.importExport.exporthtml": "HTML (oblikovanje sadržaja)",
|
||||
"pad.importExport.exportplain": "Obični tekst (bez oblikovanja)",
|
||||
"pad.importExport.exportword": "Datoteku programa Microsoft Word",
|
||||
"pad.importExport.exportpdf": "Datoteku Acrobatova PDF formata",
|
||||
"pad.importExport.exportopen": "Datoteku formata Open Document (ODF)",
|
||||
"pad.importExport.abiword.innerHTML": "Možete uvoziti datoteke formata za obični tekst (bez oblikovanja) te datoteke u HTML-u. Za naprednije mogućnosti uvoza molimo Vas, instalirajte <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">program AbiWord</a>.",
|
||||
"pad.modals.connected": "Povezano.",
|
||||
"pad.modals.reconnecting": "Ponovo Vas povezujemo s Vašim blokićem...",
|
||||
"pad.modals.forcereconnect": "Prisilno se ponovo poveži",
|
||||
"pad.modals.reconnecttimer": "Sustav Vas pokušava ponovo povezati",
|
||||
"pad.modals.cancel": "Odustani",
|
||||
"pad.modals.userdup": "Otvoreno u drugom prozoru",
|
||||
"pad.modals.userdup.explanation": "Čini se da je ovaj blokić otvoren u više od jednoga prozora Vašega preglednika na ovom računalu.",
|
||||
"pad.modals.userdup.advice": "Ponovo se povežite da biste rabili ovaj prozor.",
|
||||
"pad.modals.unauth": "Niste ovlašteni",
|
||||
"pad.modals.unauth.explanation": "Vaše su ovlasti promijenjene za vrijeme dok ste pregledavali stranicu.\nPokušajte se ponovo spojiti.",
|
||||
"pad.modals.looping.explanation": "Postoje komunikacijski problemi sa sinkronizacijskim poslužiteljem.",
|
||||
"pad.modals.looping.cause": "Možda ste se spojili preko nekompatibilne sigurnosne stijene ili proxyja.",
|
||||
"pad.modals.initsocketfail": "Poslužitelj nije dostupan.",
|
||||
"pad.modals.initsocketfail.explanation": "Ne mogu se povezati sa sinkronizacijskim poslužiteljem.",
|
||||
"pad.modals.initsocketfail.cause": "Najvjerojatnije je došlo do problema s Vašim preglednikom ili s Vašom internetskom vezom.",
|
||||
"pad.modals.slowcommit.explanation": "Poslužitelj ne šalje odziv.",
|
||||
"pad.modals.slowcommit.cause": "Najvjerojatnije je došlo do problema s dostupnošću mreže.",
|
||||
"pad.modals.badChangeset.explanation": "Sinkronizacijski poslužitelj označio je Vaše uređivanje kao nedopušteno.",
|
||||
"pad.modals.badChangeset.cause": "Moguće je da je došlo do pogrješke konfiguracije poslužitelja ili nekog drugog neočekivanog događaja odnosno postupka. Molimo Vas da kontaktirate s Vašim administratorom usluge, ukoliko držite da je ovo pogrješka. Molimo Vas, pokušajte se ponovo spojiti kako biste nastavili s uređivanjem.",
|
||||
"pad.modals.corruptPad.explanation": "Blokić kom pokušavate pristupiti je oštećen.",
|
||||
"pad.modals.corruptPad.cause": "Moguće je došlo do pogrješne konfiguracije poslužitelja ili nekog drugog neočekivanog događaja ili postupka. Molimo Vas, kontaktirajte administratora usluge.",
|
||||
"pad.modals.deleted": "Pobrisano.",
|
||||
"pad.modals.deleted.explanation": "Blokić je bio uklonjen.",
|
||||
"pad.modals.disconnected": "Vaša je veza prekinuta.",
|
||||
"pad.modals.disconnected.explanation": "Veza s poslužiteljem je izgubljena.",
|
||||
"pad.modals.disconnected.cause": "Moguće je da poslužitelj nije dostupan. Molimo Vas, obavijestite administratora usluge ukoliko se to nastavi događati.",
|
||||
"pad.share": "Dijeljenje ovoga blokića.",
|
||||
"pad.share.readonly": "Samo za čitanje",
|
||||
"pad.share.link": "Poveznica",
|
||||
"pad.share.emebdcode": "Umetni poveznicu (URL)",
|
||||
"pad.chat": "Čavrljanje",
|
||||
"pad.chat.title": "Otvori čavrljanje uz ovaj blokić.",
|
||||
"pad.chat.loadmessages": "Učitaj više poruka",
|
||||
"timeslider.pageTitle": "{{appTitle}} Vremenska lenta",
|
||||
"timeslider.toolbar.returnbutton": "Vrati se natrag na blokić",
|
||||
"timeslider.toolbar.authors": "Autori:",
|
||||
"timeslider.toolbar.authorsList": "Nema autora",
|
||||
"timeslider.toolbar.exportlink.title": "Izvoz",
|
||||
"timeslider.exportCurrent": "Izvezi trenutačnu inačicu kao:",
|
||||
"timeslider.version": "Inačica {{version}}",
|
||||
"timeslider.saved": "Spremljeno dana {{day}}. {{month}} {{year}}.",
|
||||
"timeslider.playPause": "Izvrti/pauziraj sadržaj blokića",
|
||||
"timeslider.backRevision": "Idi jednu inačicu ovog blokića natrag",
|
||||
"timeslider.forwardRevision": "Idi jednu inačicu ovog blokića naprijed",
|
||||
"timeslider.dateformat": "{{day}}. {{month}}. {{year}}. {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "siječnja",
|
||||
"timeslider.month.february": "veljače",
|
||||
"timeslider.month.march": "ožujka",
|
||||
"timeslider.month.april": "travnja",
|
||||
"timeslider.month.may": "svibnja",
|
||||
"timeslider.month.june": "lipnja",
|
||||
"timeslider.month.july": "srpnja",
|
||||
"timeslider.month.august": "kolovoza",
|
||||
"timeslider.month.september": "rujna",
|
||||
"timeslider.month.october": "listopada",
|
||||
"timeslider.month.november": "studenoga",
|
||||
"timeslider.month.december": "prosinca",
|
||||
"timeslider.unnamedauthors": "{{num}} {[plural(num) one: neimenovani autor, plural(num) two: neimenovana autora, plural(num) other: neimenovanih autora ]}",
|
||||
"pad.savedrevs.marked": "Ova inačica označena je sada kao spremljena inačica",
|
||||
"pad.savedrevs.timeslider": "Možete vidjeti spremljene inačice rabeći vremensku lentu (timeslider)",
|
||||
"pad.userlist.entername": "Unesite Vaše suradničko ime",
|
||||
"pad.userlist.unnamed": "bez imena",
|
||||
"pad.userlist.guest": "Gost",
|
||||
"pad.userlist.deny": "Odbij",
|
||||
"pad.userlist.approve": "Odobri",
|
||||
"pad.editbar.clearcolors": "Ukloniti boje autorstva u cijelom blokiću?",
|
||||
"pad.impexp.importbutton": "Uvezi odmah",
|
||||
"pad.impexp.importing": "Uvoženje...",
|
||||
"pad.impexp.confirmimport": "Uvoženje datoteke presnimit će trenutačni sadržaj blokića.\nJeste li sigurni da želite nastaviti?",
|
||||
"pad.impexp.convertFailed": "Nismo bili u mogućnosti uvesti tu datoteku. Molimo Vas, rabite neki drugi format dokumenta ili ručno preslikajte/zalijepite sadržaj",
|
||||
"pad.impexp.padHasData": "Nismo bili u mogućnosti uvesti navedenu datoteku, jer je blokić već bio mijenjan, molimo Vas uvezite u novi blokić",
|
||||
"pad.impexp.uploadFailed": "Postavljanje nije uspjelo. molimo Vas, pokušajte ponovo",
|
||||
"pad.impexp.importfailed": "Uvoz nije uspio",
|
||||
"pad.impexp.copypaste": "Molimo preslikajte/zalijepite",
|
||||
"pad.impexp.exportdisabled": "Izvoz u formatu {{type}} nije omogućen. Molimo Vas, kontaktirajte Vašega administratora sustava za više pojedinosti."
|
||||
}
|
|
@ -5,14 +5,16 @@
|
|||
"Misibacsi",
|
||||
"R-Joe",
|
||||
"Tgr",
|
||||
"Csega"
|
||||
"Csega",
|
||||
"BanKris",
|
||||
"Notramo"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Új notesz",
|
||||
"index.createOpenPad": "vagy notesz létrehozása/megnyitása ezzel a névvel:",
|
||||
"pad.toolbar.bold.title": "Félkövér (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "Dőlt (Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "Aláhúzás (Ctrl-U)",
|
||||
"pad.toolbar.bold.title": "Félkövér (Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "Dőlt (Ctrl+I)",
|
||||
"pad.toolbar.underline.title": "Aláhúzás (Ctrl+U)",
|
||||
"pad.toolbar.strikethrough.title": "Áthúzás (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Számozott lista (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Számozatlan lista (Ctrl+Shift+L)",
|
||||
|
@ -60,6 +62,8 @@
|
|||
"pad.modals.connected": "Kapcsolódva.",
|
||||
"pad.modals.reconnecting": "Újrakapcsolódás a noteszhez...",
|
||||
"pad.modals.forcereconnect": "Újrakapcsolódás kényszerítése",
|
||||
"pad.modals.reconnecttimer": "Megpróbálok újracsatlakozni ennyi múlva:",
|
||||
"pad.modals.cancel": "Mégse",
|
||||
"pad.modals.userdup": "Új ablakban megnyitva",
|
||||
"pad.modals.userdup.explanation": "Úgy tűnik, ez a notesz több különböző böngészőablakban is meg van nyitva a számítógépeden.",
|
||||
"pad.modals.userdup.advice": "Kapcsolódj újra, ha ezt az ablakot akarod használni.",
|
||||
|
@ -112,7 +116,7 @@
|
|||
"timeslider.month.october": "október",
|
||||
"timeslider.month.november": "november",
|
||||
"timeslider.month.december": "december",
|
||||
"timeslider.unnamedauthors": "{{num}} névtelen {[plural(num), one: szerző, other: szerzők]}",
|
||||
"timeslider.unnamedauthors": "{{num}} névtelen {[plural(num), one: szerző, other: szerző]}",
|
||||
"pad.savedrevs.marked": "Ez a revízió mostantól mentettként jelölve",
|
||||
"pad.savedrevs.timeslider": "A mentett revíziókat az időcsúszkán tudod megnézni",
|
||||
"pad.userlist.entername": "Add meg a nevedet",
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.modals.connected": "Կապված է",
|
||||
"pad.modals.forcereconnect": "Հարկադիր վերամիավորել",
|
||||
"pad.modals.cancel": "Չեղարկել",
|
||||
"pad.modals.userdup": "Բաց է մյուս պատուհանում",
|
||||
"pad.modals.initsocketfail": "Սերվերը անհասանելի է ։",
|
||||
"pad.modals.slowcommit.explanation": "Սերվերը չի պատասխանում։",
|
||||
|
|
|
@ -56,6 +56,8 @@
|
|||
"pad.modals.connected": "Connectite.",
|
||||
"pad.modals.reconnecting": "Reconnecte a tu pad…",
|
||||
"pad.modals.forcereconnect": "Fortiar reconnexion",
|
||||
"pad.modals.reconnecttimer": "Tentativa de reconnexion in",
|
||||
"pad.modals.cancel": "Cancellar",
|
||||
"pad.modals.userdup": "Aperte in un altere fenestra",
|
||||
"pad.modals.userdup.explanation": "Iste pad pare esser aperte in plus de un fenestra de navigator in iste computator.",
|
||||
"pad.modals.userdup.advice": "Reconnecte pro usar iste fenestra.",
|
||||
|
|
|
@ -57,6 +57,8 @@
|
|||
"pad.modals.connected": "Tengt.",
|
||||
"pad.modals.reconnecting": "Endurtengist skrifblokkinni þinni...",
|
||||
"pad.modals.forcereconnect": "Þvinga endurtengingu",
|
||||
"pad.modals.reconnecttimer": "Reyni aftur að tengjast eftir",
|
||||
"pad.modals.cancel": "Hætta við",
|
||||
"pad.modals.userdup": "Opnað í öðrum glugga",
|
||||
"pad.modals.userdup.explanation": "Þessi skrifblokk virðist vera opin í fleiri en einum vafraglugga á þessari tölvu.",
|
||||
"pad.modals.userdup.advice": "Endurtengdu til að nota þennan glugga í staðinn.",
|
||||
|
|
|
@ -57,10 +57,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "È possibile importare solo i formati di testo semplice o HTML. Per metodi più avanzati di importazione <a href=https://github.com/broadcast/etherpad-lite/wiki/How-to-enable-importing and exporting-different file formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord>installare Abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "È possibile importare solo i formati di testo semplice o HTML. Per metodi più avanzati di importazione <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installare AbiWord</a>.",
|
||||
"pad.modals.connected": "Connesso.",
|
||||
"pad.modals.reconnecting": "Riconnessione al pad in corso...",
|
||||
"pad.modals.forcereconnect": "Forza la riconnessione",
|
||||
"pad.modals.reconnecttimer": "Tentativo di riconnessione",
|
||||
"pad.modals.cancel": "Annulla",
|
||||
"pad.modals.userdup": "Aperto in un'altra finestra",
|
||||
"pad.modals.userdup.explanation": "Questo Pad sembra essere aperto in più di una finestra del browser su questo computer.",
|
||||
"pad.modals.userdup.advice": "Riconnettiti per utilizzare invece questa finestra.",
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
"@metadata": {
|
||||
"authors": [
|
||||
"Shirayuki",
|
||||
"Torinky"
|
||||
"Torinky",
|
||||
"Omotecho",
|
||||
"Aefgh39622"
|
||||
]
|
||||
},
|
||||
"index.newPad": "新規作成",
|
||||
|
@ -53,10 +55,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "プレーンテキストまたは HTML ファイルからのみインポートできます。より高度なインポート機能を使用するには、<a 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\">abiword をインストール</a>してください。",
|
||||
"pad.importExport.abiword.innerHTML": "プレーンテキストまたは HTML ファイルからのみインポートできます。より高度なインポート機能を使用するには、<a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord をインストール</a>してください。",
|
||||
"pad.modals.connected": "接続されました。",
|
||||
"pad.modals.reconnecting": "パッドに再接続中...",
|
||||
"pad.modals.forcereconnect": "強制的に再接続",
|
||||
"pad.modals.reconnecttimer": "再接続を試行中",
|
||||
"pad.modals.cancel": "中止",
|
||||
"pad.modals.userdup": "別のウィンドウで開かれています",
|
||||
"pad.modals.userdup.explanation": "このコンピューターの複数のブラウザーウィンドウで、このパッドを開いているようです。",
|
||||
"pad.modals.userdup.advice": "代わりにこのウィンドウを再接続します。",
|
||||
|
|
129
src/locales/kab.json
Normal file
129
src/locales/kab.json
Normal file
|
@ -0,0 +1,129 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Belkacem77"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Apad amaynut",
|
||||
"index.createOpenPad": "neɣ rnu/ldi apad s yisem:",
|
||||
"pad.toolbar.bold.title": "Zur (Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "Uknan (Ctrl+I)",
|
||||
"pad.toolbar.underline.title": "Ituderrer (Ctrl+U)",
|
||||
"pad.toolbar.strikethrough.title": "Ittujerreḍ (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Tabdart n usmizzwer (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Tabdart s war asmizzwer (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Rigel (TAB)",
|
||||
"pad.toolbar.unindent.title": "Kkes ariger (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Sefsex (Ctrl+Z)",
|
||||
"pad.toolbar.redo.title": "Err-d (Ctrl+Y)",
|
||||
"pad.toolbar.clearAuthorship.title": "Sfeḍ initen yemmalen imeskaren (Ctrl+Shift+C)",
|
||||
"pad.toolbar.import_export.title": "Kter/Sifeḍ seg/ɣer umasal n ufaylu-nnḍen",
|
||||
"pad.toolbar.timeslider.title": "Amazray asmussan",
|
||||
"pad.toolbar.savedRevision.title": "Sekles aceggir",
|
||||
"pad.toolbar.settings.title": "Iɣewwaṛen",
|
||||
"pad.toolbar.embed.title": "Bḍu sakin seddu apad-agi",
|
||||
"pad.toolbar.showusers.title": "Sken iseqdacen ɣef upad-agi",
|
||||
"pad.colorpicker.save": "Sekles",
|
||||
"pad.colorpicker.cancel": "Sefsex",
|
||||
"pad.loading": "Asali...",
|
||||
"pad.noCookie": "Anagi n tuqqna ulac-it. Sireg inagan n tuqqna deg iminig-ik!",
|
||||
"pad.passwordRequired": "Tesriḍ awal uffir akken ad tkecmeḍ ar upad-agi",
|
||||
"pad.permissionDenied": "Ur ɣur-k ara tasiregt akken ad tkecmeḍ ar upad-agi",
|
||||
"pad.wrongPassword": "Awal-uhhir mačči d ameɣtu",
|
||||
"pad.settings.padSettings": "Iɣewwaṛen n upad",
|
||||
"pad.settings.myView": "Timeẓri-iw",
|
||||
"pad.settings.stickychat": "Asqerdec yezga deg ugdil",
|
||||
"pad.settings.chatandusers": "Sken asqerdec akken iseqdacen",
|
||||
"pad.settings.colorcheck": "Initen n usulu",
|
||||
"pad.settings.linenocheck": "Uṭṭunen n izirigen",
|
||||
"pad.settings.rtlcheck": "Ɣeṛ agbur seg uyeffus s azelmaḍ?",
|
||||
"pad.settings.fontType": "Anaw n tsefsit:",
|
||||
"pad.settings.globalView": "Timeẓri tamatut:",
|
||||
"pad.settings.language": "Tutlayt:",
|
||||
"pad.importExport.import_export": "Kter/Sifeḍ",
|
||||
"pad.importExport.import": "Sali aḍris neɣ isemli",
|
||||
"pad.importExport.importSuccessful": "Yedda!",
|
||||
"pad.importExport.export": "Sifeḍ apad amiran am:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "Adris aččuran",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Tzemreḍ kan ad ketreḍ aḍris aččuran neɣ imasalen HTML. Ugar n tmahilin n ukter leqqayen, rzu ar <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">Sebded AbiWord</a>.",
|
||||
"pad.modals.connected": "Iqqen.",
|
||||
"pad.modals.reconnecting": "Tulsa n tuqqna ar upad-ik.",
|
||||
"pad.modals.forcereconnect": "Ḥettem tulsa n tuqqna",
|
||||
"pad.modals.reconnecttimer": "Ɛreḍ tikelt-nniḍen tuqqna",
|
||||
"pad.modals.cancel": "Sefsex",
|
||||
"pad.modals.userdup": "Yeldi deg usfaylu-nniḍen",
|
||||
"pad.modals.userdup.explanation": "Apad-agi yettban yeldi deg isfuyla-nniḍen deg uselkim-agi.",
|
||||
"pad.modals.userdup.advice": "Ales tuqqna akken ad tesqedceḍ asfaylu-agi.",
|
||||
"pad.modals.unauth": "Ur uettwasireg ara",
|
||||
"pad.modals.unauth.explanation": "Tisirag-ik beddlent makken ad d-yettwaskan usebter. Ɛreḍ ad teqqneḍ.",
|
||||
"pad.modals.looping.explanation": "Nufa-d uguren n teywalt akked uqeddac n umtawi.",
|
||||
"pad.modals.looping.cause": "Ahat teqqneḍ s uɣrab n tmes neɣ apṛuksi ur yemṣadan ara",
|
||||
"pad.modals.initsocketfail": "Ulac aqeddac.",
|
||||
"pad.modals.initsocketfail.explanation": "Ur izmir ara ad yeqqen ar uqeddac n umtawi.",
|
||||
"pad.modals.initsocketfail.cause": "Ahat d ugur i d-yekkan seg iminig-ik neɣ tuqqna ar Internet.",
|
||||
"pad.modals.slowcommit.explanation": "Aqeddac ur d-yettara ara awal.",
|
||||
"pad.modals.slowcommit.cause": "Ahat d ugur i d-yekkan seg tuqqna ar uẓeṭṭa.",
|
||||
"pad.modals.badChangeset.explanation": "Abeddel i tgiḍ yettwammel d ayen ur ilaqen ara deg uqeddac n umtawi.",
|
||||
"pad.modals.badChangeset.cause": "Ahat ayagi yekka-d si yir tawila n uqeddac neɣ kra n wayen ur nerǧi ara. Nermes anebdal n umeẓlu, ma yella tḥulfaḍ d tuccḍa. Ɛreḍ tuqqna akken ad tkemmleḍ taẓrigt.",
|
||||
"pad.modals.corruptPad.explanation": "Apad i tettaɣraḍeḍ ad tkecmeḍ yexseṛ.",
|
||||
"pad.modals.corruptPad.cause": "Ayagi ahat yekka-d seg yir tawila n uqeddac neɣ ayen ur yettwaṛǧan ara. Nermes anebdal n umeẓlu.",
|
||||
"pad.modals.deleted": "Yettwakkes.",
|
||||
"pad.modals.deleted.explanation": "Apad-agi yettwakkes.",
|
||||
"pad.modals.disconnected": "Suffren-k.",
|
||||
"pad.modals.disconnected.explanation": "Tuqqna ar uqeddac truḥ",
|
||||
"pad.modals.disconnected.cause": "Ahat aqeddac ulac-it. Nermes anebdal n umeẓlu ma yella yezga iḍeṛṛu",
|
||||
"pad.share": "Bḍu apad-agi",
|
||||
"pad.share.readonly": "Taɣuri kan",
|
||||
"pad.share.link": "Aseɣwen",
|
||||
"pad.share.emebdcode": "Seddu URL",
|
||||
"pad.chat": "Asqerdec",
|
||||
"pad.chat.title": "Ldi asqerdec deg upad-agi.",
|
||||
"pad.chat.loadmessages": "Sali-d ugar n yiznan",
|
||||
"timeslider.pageTitle": "Amazray asmussan n {{appTitle}}",
|
||||
"timeslider.toolbar.returnbutton": "Uqal ar upad",
|
||||
"timeslider.toolbar.authors": "Imeskaren:",
|
||||
"timeslider.toolbar.authorsList": "Ulac imeskaren",
|
||||
"timeslider.toolbar.exportlink.title": "Sifeḍ",
|
||||
"timeslider.exportCurrent": "Sifeḍ lqem-agi amiran am:",
|
||||
"timeslider.version": "Lqem {{version}}",
|
||||
"timeslider.saved": "Yettwasekles deg {{day}}-{{month}}-{{year}}",
|
||||
"timeslider.playPause": "Taɣuri/Aserǧu n igburen n upad",
|
||||
"timeslider.backRevision": "Uɣal s yiwen n uceggir ar deffir deg upad-agi",
|
||||
"timeslider.forwardRevision": "Ddu ar zdat s yiwen n uceggir deg upad-agi",
|
||||
"timeslider.dateformat": "{{day}}-{{month}}-{{year}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "Yennayer",
|
||||
"timeslider.month.february": "Fuṛaṛ",
|
||||
"timeslider.month.march": "Meɣres",
|
||||
"timeslider.month.april": "Yebrir",
|
||||
"timeslider.month.may": "Mayyu",
|
||||
"timeslider.month.june": "Yunyu",
|
||||
"timeslider.month.july": "Yulyu",
|
||||
"timeslider.month.august": "Ɣuct",
|
||||
"timeslider.month.september": "Ctamber",
|
||||
"timeslider.month.october": "Tuber",
|
||||
"timeslider.month.november": "Wamber",
|
||||
"timeslider.month.december": "Dujamber",
|
||||
"timeslider.unnamedauthors": "{{num}}{[plural(num) one: ameskar udrig, other: imeskaren udrigen]}",
|
||||
"pad.savedrevs.marked": "Aceggir-agi yettwacreḍ tura d aceggir yettwaskelsen",
|
||||
"pad.savedrevs.timeslider": "Tzemreḍ ad waliḍ iceggiren yettwaskelsen ticki teldiḍ amazray",
|
||||
"pad.userlist.entername": "Sekcem isem-ik",
|
||||
"pad.userlist.unnamed": "udrig",
|
||||
"pad.userlist.guest": "Inebgi",
|
||||
"pad.userlist.deny": "Agwi",
|
||||
"pad.userlist.approve": "Qbel",
|
||||
"pad.editbar.clearcolors": "Sfeḍ akk initen icudden ar imeskaren deg isemliyen meṛṛa?",
|
||||
"pad.impexp.importbutton": "Kter tura",
|
||||
"pad.impexp.importing": "Aktar iteddu...",
|
||||
"pad.impexp.confirmimport": "Akter n ufaylu ad yesfeɛj aḍris amiran deg upad. Tebɣiḍ ad tkemleḍ?",
|
||||
"pad.impexp.convertFailed": "Ur nezmir ara ad d-nekter afaylu-agi. Ma ulac aɣilif seqdec amasal n isemli-nniḍen neɣ nɣel/senteḍ s ufus.",
|
||||
"pad.impexp.padHasData": "Ur nezmir ara ad d-nekter afaylu-agi acku apad-agi ibeddel yakan, ma ulac aɣilif, kter ar upad amaynut",
|
||||
"pad.impexp.uploadFailed": "Asali yecceḍ, ma ulac aɣilif ɛreḍ tikelt-nniḍen",
|
||||
"pad.impexp.importfailed": "Akter ur yeddi ara",
|
||||
"pad.impexp.copypaste": "Ma ulac aɣilif nɣel/senteḍ",
|
||||
"pad.impexp.exportdisabled": "Aɣewwaṛ n usifeḍ s umasal{{type}} yensa. Nermes anebdal-ik n unagraw i ugar n telqayt."
|
||||
}
|
|
@ -6,7 +6,8 @@
|
|||
"Revi",
|
||||
"Kurousagi",
|
||||
"SeoJeongHo",
|
||||
"Ykhwong"
|
||||
"Ykhwong",
|
||||
"CYAN"
|
||||
]
|
||||
},
|
||||
"index.newPad": "새 패드",
|
||||
|
@ -27,7 +28,7 @@
|
|||
"pad.toolbar.savedRevision.title": "판 저장",
|
||||
"pad.toolbar.settings.title": "설정",
|
||||
"pad.toolbar.embed.title": "이 패드를 공유하고 포함하기",
|
||||
"pad.toolbar.showusers.title": "이 패드에 사용자 보기",
|
||||
"pad.toolbar.showusers.title": "이 패드의 사용자 보기",
|
||||
"pad.colorpicker.save": "저장",
|
||||
"pad.colorpicker.cancel": "취소",
|
||||
"pad.loading": "불러오는 중...",
|
||||
|
@ -38,7 +39,7 @@
|
|||
"pad.settings.padSettings": "패드 설정",
|
||||
"pad.settings.myView": "내 보기",
|
||||
"pad.settings.stickychat": "화면에 항상 대화 보기",
|
||||
"pad.settings.chatandusers": "채트와 사용자 보기",
|
||||
"pad.settings.chatandusers": "대화와 사용자 보기",
|
||||
"pad.settings.colorcheck": "저자 색",
|
||||
"pad.settings.linenocheck": "줄 번호",
|
||||
"pad.settings.rtlcheck": "우횡서(오른쪽에서 왼쪽으로)입니까?",
|
||||
|
@ -54,19 +55,21 @@
|
|||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "일반 텍스트",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportword": "마이크로소프트 워드",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "일반 텍스트나 html 형식으로만 가져올 수 있습니다. 고급 가져오기 기능에 대해서는 <a 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\">abiword를 설치</a>하세요.",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format, 개방형 문서 형식)",
|
||||
"pad.importExport.abiword.innerHTML": "일반 텍스트나 HTML 형식으로만 가져올 수 있습니다. 고급 가져오기 기능에 대해서는 <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord를 설치</a>하세요.",
|
||||
"pad.modals.connected": "연결했습니다.",
|
||||
"pad.modals.reconnecting": "패드에 다시 연결 중..",
|
||||
"pad.modals.forcereconnect": "강제로 다시 연결",
|
||||
"pad.modals.userdup": "다른 창에서 열리고 있습니다",
|
||||
"pad.modals.userdup.explanation": "이 패드는 이 컴퓨터에 하나보다 많이 브라우저 창에서 열린 것 같습니다.",
|
||||
"pad.modals.reconnecttimer": "다시 접속 시도 중",
|
||||
"pad.modals.cancel": "취소",
|
||||
"pad.modals.userdup": "다른 창에서 열렸습니다",
|
||||
"pad.modals.userdup.explanation": "이 패드는 이 컴퓨터에 하나 이상의 브라우저 창에서 열린 것 같습니다.",
|
||||
"pad.modals.userdup.advice": "대신 이 창을 사용해 다시 연결합니다.",
|
||||
"pad.modals.unauth": "권한이 없음",
|
||||
"pad.modals.unauth.explanation": "이 문서를 보는 동안 권한이 바뀌었습니다. 다시 연결을 시도하세요.",
|
||||
"pad.modals.looping.explanation": "동기 서버와의 통신 문제가 있습니다.",
|
||||
"pad.modals.unauth.explanation": "이 페이지를 보는 동안 권한이 바뀌었습니다. 연결을 다시 시도하세요.",
|
||||
"pad.modals.looping.explanation": "동기화 서버와 통신 문제가 있습니다.",
|
||||
"pad.modals.looping.cause": "아마 호환되지 않는 방화벽이나 프록시를 통해 연결되어 있습니다.",
|
||||
"pad.modals.initsocketfail": "서버에 연결할 수 없습니다.",
|
||||
"pad.modals.initsocketfail.explanation": "동기 서버에 연결할 수 없습니다.",
|
||||
|
|
41
src/locales/krc.json
Normal file
41
src/locales/krc.json
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Ernác"
|
||||
]
|
||||
},
|
||||
"pad.toolbar.settings.title": "Джарашдырыула",
|
||||
"pad.colorpicker.save": "Сакъла",
|
||||
"pad.loading": "Джюклениу...",
|
||||
"pad.settings.fontType.normal": "Нормал",
|
||||
"pad.settings.fontType.monospaced": "Монокенгликли",
|
||||
"pad.settings.globalView": "Глобал кёрюнюу",
|
||||
"pad.settings.language": "Тил:",
|
||||
"pad.importExport.import_export": "Импорт/экспорт",
|
||||
"pad.importExport.importSuccessful": "Тыйыншлы!",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "Тюз текст",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (OpenOffice'ни документи)",
|
||||
"pad.chat": "Чат",
|
||||
"timeslider.toolbar.returnbutton": "Документге",
|
||||
"timeslider.toolbar.authors": "Авторла:",
|
||||
"timeslider.toolbar.exportlink.title": "Эспорт эт",
|
||||
"timeslider.version": "{{version}} версия",
|
||||
"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.guest": "Къонакъ",
|
||||
"pad.impexp.importing": "Импорт этиу…"
|
||||
}
|
|
@ -45,6 +45,7 @@
|
|||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.modals.connected": "Verbonnen.",
|
||||
"pad.modals.cancel": "Ofbriechen",
|
||||
"pad.modals.userdup": "An enger anerer Fënster opgemaach",
|
||||
"pad.modals.unauth": "Net autoriséiert",
|
||||
"pad.modals.unauth.explanation": "Är Rechter hu geännert während deem Dir dës säit gekuckt hutt. Probéiert fir Iech nei ze connectéieren.",
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open dokumenta formāts)",
|
||||
"pad.modals.connected": "Pievienojies.",
|
||||
"pad.modals.cancel": "Atcelt",
|
||||
"pad.modals.userdup": "Atvērts citā logā",
|
||||
"pad.modals.unauth": "Nav atļauts",
|
||||
"pad.modals.looping.explanation": "Pastāv sakaru problēmas ar sinhronizācijas servera.",
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"StefanusRA"
|
||||
"StefanusRA",
|
||||
"Empu"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Pad Anyar",
|
||||
|
@ -30,7 +31,7 @@
|
|||
"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.myView": "Delengané Inyong",
|
||||
"pad.settings.stickychat": "Dopokan mesti nang layar",
|
||||
"pad.settings.colorcheck": "Authorship colors",
|
||||
"pad.settings.linenocheck": "Nomer baris",
|
||||
|
|
90
src/locales/mg.json
Normal file
90
src/locales/mg.json
Normal file
|
@ -0,0 +1,90 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Jagwar"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Pad vaovao",
|
||||
"index.createOpenPad": "na hamorona/hanokatra Pad manana anarana:",
|
||||
"pad.toolbar.bold.title": "Matevina (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "Mandry (Ctrl-L)",
|
||||
"pad.toolbar.underline.title": "Tsipihana (Ctrl-U)",
|
||||
"pad.toolbar.strikethrough.title": "Voatsipika",
|
||||
"pad.toolbar.ol.title": "Lisitra nalamina",
|
||||
"pad.toolbar.ul.title": "Lisitra tsy voalamina",
|
||||
"pad.toolbar.undo.title": "Averina (Ctrl-Z)",
|
||||
"pad.toolbar.redo.title": "Averina (Ctrl-Y)",
|
||||
"pad.toolbar.clearAuthorship.title": "Hanala ny loko famantarana mpanorona",
|
||||
"pad.toolbar.import_export.title": "Hampiditra/Hamoaka amin'ny karazan-drakitra hafa",
|
||||
"pad.toolbar.settings.title": "Fanafahana",
|
||||
"pad.colorpicker.save": "Tehirizina",
|
||||
"pad.colorpicker.cancel": "Aoka ihany",
|
||||
"pad.loading": "Am-pakàna…",
|
||||
"pad.permissionDenied": "Tsy manana lalalana mijery ity pad ity ianao",
|
||||
"pad.wrongPassword": "Diso ny tenimiafinao",
|
||||
"pad.settings.padSettings": "Safidin'ny ped",
|
||||
"pad.settings.myView": "Ny jeriko",
|
||||
"pad.settings.linenocheck": "Laharan'ny andalana",
|
||||
"pad.settings.rtlcheck": "Hamaky ny votoatiny miankavia?",
|
||||
"pad.settings.fontType": "Karazan-tarehintsoratra:",
|
||||
"pad.settings.globalView": "Jery ankapobe",
|
||||
"pad.settings.language": "Fiteny:",
|
||||
"pad.importExport.import_export": "Hampiditra/Hamoaka",
|
||||
"pad.importExport.import": "Hampiditra raki-tsoratra na rakitra",
|
||||
"pad.importExport.importSuccessful": "Vita soa aman-tsara!",
|
||||
"pad.importExport.export": "Hamoaka ny pad ankehitriny ho:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "Soratra tsotra",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.modals.connected": "Tafaray.",
|
||||
"pad.modals.forcereconnect": "Hanery ny famerenam-pifandraisana",
|
||||
"pad.modals.reconnecttimer": "Manandrana mamerim-pifandraisana",
|
||||
"pad.modals.cancel": "Aoka ihany",
|
||||
"pad.modals.userdup": "Nosokafana tanaty varavarankely hafa",
|
||||
"pad.modals.unauth": "Tsy nahazo alalana",
|
||||
"pad.modals.initsocketfail": "Tsy hita ny lohamilina.",
|
||||
"pad.modals.slowcommit.explanation": "Tsy mamaly ny lohamilina",
|
||||
"pad.modals.slowcommit.cause": "Izany zavatra izany dia mety nohon'ny fifandraisana ratsy amin'ny lohamilina.",
|
||||
"pad.modals.badChangeset.explanation": "Voasokajin'ny lohamilim-pirindrana ho tsy azo atao ny fiovana nataonao.",
|
||||
"pad.modals.badChangeset.cause": "Izany zavatra izany dia mety nohon'ny configuration lohamilina diso na hetsika tsy nampoizina hafa. Mifandraisa amin'ny mpandrindran'ny serivisy, raha heverinao fa hadisoana io. Mifandraisa indray ahafahanao manohy ny fanovana.",
|
||||
"pad.modals.deleted": "Voafafa.",
|
||||
"pad.modals.deleted.explanation": "Nesorina ity pad ity.",
|
||||
"pad.modals.disconnected": "Tapaka ny fifandraisanao.",
|
||||
"pad.modals.disconnected.explanation": "Very ny fifandraisana tamin'ny lohamilina",
|
||||
"pad.share": "Hizara ity pad ity",
|
||||
"pad.share.readonly": "Vakiana ihany",
|
||||
"pad.share.link": "Rohy",
|
||||
"pad.share.emebdcode": "Hampiditra URL",
|
||||
"pad.chat": "Resaka mivantana",
|
||||
"pad.chat.title": "Hampiditra ny karajia ho an'ity pad ity.",
|
||||
"pad.chat.loadmessages": "Haka hafatra be kokoa",
|
||||
"timeslider.pageTitle": "Tantara dinamikan'i {{appTitle}}",
|
||||
"timeslider.toolbar.returnbutton": "Hiverina amin'ny pad",
|
||||
"timeslider.toolbar.authors": "Mpamorona:",
|
||||
"timeslider.toolbar.authorsList": "Tsy misy mpamorona",
|
||||
"timeslider.toolbar.exportlink.title": "Avoaka",
|
||||
"timeslider.exportCurrent": "Hamoaka ny versiona ankehitriny ho:",
|
||||
"timeslider.version": "Versiona {{version}}",
|
||||
"timeslider.saved": "Notahirizina ny {{day}} {{month}} {{year}}",
|
||||
"timeslider.month.january": "Janoary",
|
||||
"timeslider.month.february": "Febroary",
|
||||
"timeslider.month.march": "Martsa",
|
||||
"timeslider.month.april": "Aprily",
|
||||
"timeslider.month.may": "Mey",
|
||||
"timeslider.month.june": "Jiona",
|
||||
"timeslider.month.july": "Jolay",
|
||||
"timeslider.month.august": "Aogositra",
|
||||
"timeslider.month.september": "Septambra",
|
||||
"timeslider.month.october": "Oktobra",
|
||||
"timeslider.month.november": "Novambra",
|
||||
"timeslider.month.december": "Desambra",
|
||||
"pad.userlist.unnamed": "tsy manana naarana",
|
||||
"pad.userlist.guest": "Nasaina",
|
||||
"pad.userlist.deny": "Lavina",
|
||||
"pad.userlist.approve": "Ekena",
|
||||
"pad.impexp.importbutton": "Ampidirina izao",
|
||||
"pad.impexp.importing": "Mampiditra..."
|
||||
}
|
|
@ -57,6 +57,8 @@
|
|||
"pad.modals.connected": "Поврзано.",
|
||||
"pad.modals.reconnecting": "Ве преповрзувам со тетратката...",
|
||||
"pad.modals.forcereconnect": "Наметни преповрзување",
|
||||
"pad.modals.reconnecttimer": "Се преповрзувам за",
|
||||
"pad.modals.cancel": "Откажи",
|
||||
"pad.modals.userdup": "Отворено во друг прозорец",
|
||||
"pad.modals.userdup.explanation": "Оваа тетратка е отворена на повеќе од еден прозорец (во прелистувач) на сметачот.",
|
||||
"pad.modals.userdup.advice": "Преповрзете се за да го користите овој прозорец.",
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Anakmalaysia"
|
||||
"Anakmalaysia",
|
||||
"Jeluang Terluang"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Pad baru",
|
||||
|
@ -69,7 +70,7 @@
|
|||
"pad.modals.slowcommit.explanation": "Pelayan tidak membalas.",
|
||||
"pad.modals.slowcommit.cause": "Ini mungkin disebabkan oleh masalah dengan kesambungan rangkaian anda.",
|
||||
"pad.modals.badChangeset.explanation": "Suntingan yang telah anda lakukan telah dikira sebagai terlarang oleh pelayan penyegerakan.",
|
||||
"pad.modals.badChangeset.cause": "Ini mungkin disebabkan oleh konfigurasi pelayan salah atau sesuatu kelakuan yang tidak dijangka. Sila hubungi penyelia servis anda jika anda merasakan ini adalah satu kesilapan. Cuba sambungkan semula talian untuk terus menyuntung.",
|
||||
"pad.modals.badChangeset.cause": "Hal ini mungkin disebabkan oleh konfigurasi pelayan salah atau sesuatu kelakuan yang tidak dijangka. Sila hubungi penyelia servis anda jika anda merasakan ini ialah satu kesilapan. Cuba sambungkan semula talian untuk terus menyunting.",
|
||||
"pad.modals.corruptPad.explanation": "Pad yang anda cuba akses itu telah tercemar.",
|
||||
"pad.modals.corruptPad.cause": "Ini mungkin disebabkan oleh konfigurasi pelayan salah atau sesuatu kelakuan yang tidak dijangka. Sila hubungi penyelia servis anda.",
|
||||
"pad.modals.deleted": "Dihapuskan.",
|
||||
|
|
42
src/locales/nah.json
Normal file
42
src/locales/nah.json
Normal file
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Akapochtli",
|
||||
"Taresi"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Yancuic Pad",
|
||||
"index.createOpenPad": "auh xicchīhua/xictlapo cē Pad in ītōcā:",
|
||||
"pad.toolbar.bold.title": "Tilāhuac (Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "Coltic (Ctrl+I)",
|
||||
"pad.toolbar.underline.title": "Tlahuahuantli (Ctrl+U)",
|
||||
"pad.toolbar.strikethrough.title": "Tlīlhuahuantli (Ctrl+5)",
|
||||
"pad.toolbar.undo.title": "Xicmācuepa (Ctrl+Z)",
|
||||
"pad.toolbar.redo.title": "Occeppa (Ctrl+Y)",
|
||||
"pad.toolbar.settings.title": "Tlatlālīliztli",
|
||||
"pad.colorpicker.save": "Xicpiya",
|
||||
"pad.colorpicker.cancel": "Xiccāhua",
|
||||
"pad.settings.padSettings": "Pad Ītlatlālīliz",
|
||||
"pad.settings.myView": "Notlachiyaliz",
|
||||
"pad.settings.language": "Tlahtōlli:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.modals.deleted": "Omopohpoloh.",
|
||||
"pad.modals.deleted.explanation": "Ōmopoloh inīn Pad.",
|
||||
"timeslider.version": "Inīc {{version}} Cuepaliztli",
|
||||
"timeslider.month.january": "Īccēmētztli",
|
||||
"timeslider.month.february": "Īcōmemētztli",
|
||||
"timeslider.month.march": "Īcyēyimētztli",
|
||||
"timeslider.month.april": "Īcnāhuimētztli",
|
||||
"timeslider.month.may": "Īcmācuīllimētztli",
|
||||
"timeslider.month.june": "Īcchicuacemmētztli",
|
||||
"timeslider.month.july": "Īcchicōmemētztli",
|
||||
"timeslider.month.august": "Īcchicuēyimētztli",
|
||||
"timeslider.month.september": "Īcchiucnāhuimētztli",
|
||||
"timeslider.month.october": "Īcmahtlactlimētztli",
|
||||
"timeslider.month.november": "Īcmahtlactlioncēmētztli",
|
||||
"timeslider.month.december": "Īcmahtlactliomōmemētztli"
|
||||
}
|
|
@ -4,7 +4,8 @@
|
|||
"Laaknor",
|
||||
"Cocu",
|
||||
"Chameleon222",
|
||||
"SuperPotato"
|
||||
"SuperPotato",
|
||||
"Jon Harald Søby"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Ny Pad",
|
||||
|
@ -55,10 +56,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Du kan bare importere fra ren tekst eller HTML-formater. For mer avanserte importfunksjoner, <a 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\">installer abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Du kan bare importere fra ren tekst eller HTML-formater. For mer avanserte importfunksjoner, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installer AbiWord</a>.",
|
||||
"pad.modals.connected": "Tilkoblet.",
|
||||
"pad.modals.reconnecting": "Kobler til din blokk på nytt...",
|
||||
"pad.modals.forcereconnect": "Tving gjenoppkobling",
|
||||
"pad.modals.reconnecttimer": "Prøver å koble til igjen",
|
||||
"pad.modals.cancel": "Avbryt",
|
||||
"pad.modals.userdup": "Åpnet i nytt vindu",
|
||||
"pad.modals.userdup.explanation": "Denne blokken ser ut til å være åpnet i mer enn et nettleservindu på denne maskinen.",
|
||||
"pad.modals.userdup.advice": "Koble til igjen for å bruke dette vinduet i stedenfor.",
|
||||
|
|
|
@ -59,6 +59,8 @@
|
|||
"pad.modals.connected": "Verbonden.",
|
||||
"pad.modals.reconnecting": "Opnieuw verbinding maken met uw pad...",
|
||||
"pad.modals.forcereconnect": "Opnieuw verbinden",
|
||||
"pad.modals.reconnecttimer": "Proberen te verbinden over",
|
||||
"pad.modals.cancel": "Annuleren",
|
||||
"pad.modals.userdup": "In een ander venster geopend",
|
||||
"pad.modals.userdup.explanation": "Dit pad is meer dan één keer geopend in een browservenster op deze computer.",
|
||||
"pad.modals.userdup.advice": "Maak opnieuw verbinding als u dit venster wilt gebruiken.",
|
||||
|
|
|
@ -52,10 +52,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Podètz pas importar que de formats tèxte brut o html. Per de foncionalitats d'importacion mai evoluadas, <a 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\">installatz abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Podètz pas importar que de formats tèxte brut o html. Per de foncionalitats d'importacion mai evoluadas, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installatz abiword</a>.",
|
||||
"pad.modals.connected": "Connectat.",
|
||||
"pad.modals.reconnecting": "Reconnexion cap a vòstre Pad...",
|
||||
"pad.modals.forcereconnect": "Forçar la reconnexion.",
|
||||
"pad.modals.reconnecttimer": "Ensag de reconnexion",
|
||||
"pad.modals.cancel": "Anullar",
|
||||
"pad.modals.userdup": "Dobèrt dins una autra fenèstra",
|
||||
"pad.modals.userdup.explanation": "Sembla qu'aqueste Pad es dobèrt dins mai d'una fenèstra de vòstre navigador sus aqueste ordinator.",
|
||||
"pad.modals.userdup.advice": "Se reconnectar en utilizant aquesta fenèstra.",
|
||||
|
@ -91,7 +93,7 @@
|
|||
"timeslider.toolbar.exportlink.title": "Exportar",
|
||||
"timeslider.exportCurrent": "Exportar la version actuala en :",
|
||||
"timeslider.version": "Version {{version}}",
|
||||
"timeslider.saved": "Enregistrat lo {{day}} {{month}} {{year}}",
|
||||
"timeslider.saved": "Enregistrat lo {{day}} de {{month}} de {{year}}",
|
||||
"timeslider.playPause": "Lectura / Pausa dels contenguts del pad",
|
||||
"timeslider.backRevision": "Recular d’una revision dins aqueste pad",
|
||||
"timeslider.forwardRevision": "Avançar d’una revision dins aqueste pad",
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
"Woytecr",
|
||||
"Macofe",
|
||||
"Pan Cube",
|
||||
"Mateon1"
|
||||
"Mateon1",
|
||||
"Teeed"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Nowy dokument",
|
||||
|
@ -19,7 +20,7 @@
|
|||
"pad.toolbar.ol.title": "Lista uporządkowana (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Lista nieuporządkowana (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Wcięcie (TAB)",
|
||||
"pad.toolbar.unindent.title": "Wcięcie (Shift + TAB)",
|
||||
"pad.toolbar.unindent.title": "Usunięcie wcięcia (Shift + TAB)",
|
||||
"pad.toolbar.undo.title": "Cofnij (Ctrl-Z)",
|
||||
"pad.toolbar.redo.title": "Ponów (Ctrl-Y)",
|
||||
"pad.toolbar.clearAuthorship.title": "Usuń kolory autorów (Ctrl+Shift+C)",
|
||||
|
@ -32,7 +33,7 @@
|
|||
"pad.colorpicker.save": "Zapisz",
|
||||
"pad.colorpicker.cancel": "Anuluj",
|
||||
"pad.loading": "Ładowanie...",
|
||||
"pad.noCookie": "Nie znaleziono pliku cookie. Proszę zezwolić pliki cookie w przeglądarce!",
|
||||
"pad.noCookie": "Nie znaleziono pliku cookie. Proszę zezwolić na pliki cookie w przeglądarce!",
|
||||
"pad.passwordRequired": "Musisz podać hasło aby uzyskać dostęp do tego dokumentu",
|
||||
"pad.permissionDenied": "Nie masz uprawnień dostępu do tego dokumentu",
|
||||
"pad.wrongPassword": "Nieprawidłowe hasło",
|
||||
|
@ -62,6 +63,8 @@
|
|||
"pad.modals.connected": "Połączony.",
|
||||
"pad.modals.reconnecting": "Ponowne łączenie z dokumentem...",
|
||||
"pad.modals.forcereconnect": "Wymuś ponowne połączenie",
|
||||
"pad.modals.reconnecttimer": "Trwa próba ponownego połączenia",
|
||||
"pad.modals.cancel": "Anuluj",
|
||||
"pad.modals.userdup": "Otwarty w innym oknie",
|
||||
"pad.modals.userdup.explanation": "Ten dokument prawdopodobnie został otwarty w więcej niż jednym oknie przeglądarki.",
|
||||
"pad.modals.userdup.advice": "Połącz ponownie przy użyciu tego okna.",
|
||||
|
@ -73,9 +76,9 @@
|
|||
"pad.modals.initsocketfail.explanation": "Nie udało się połączyć z serwerem synchronizacji.",
|
||||
"pad.modals.initsocketfail.cause": "Prawdopodobnie jest to spowodowane problemami z przeglądarką lub połączeniem internetowym.",
|
||||
"pad.modals.slowcommit.explanation": "Serwer nie odpowiada.",
|
||||
"pad.modals.slowcommit.cause": "Może być to spowodowane problemami z Twoim połączeniem z siecią.",
|
||||
"pad.modals.badChangeset.explanation": "Edycja, którą wykonałeś, została niewłaściwie zakwalifikowana przez serwer synchronizacji.",
|
||||
"pad.modals.badChangeset.cause": "Może być to spowodowane złą konfiguracją serwera lub innym nieoczekiwanym zachowaniem. Skontaktuj się z administratorem serwisu, jeżeli wydaje Ci się, że to jest błąd. Spróbuj ponownie połączyć się aby kontynuować edycję.",
|
||||
"pad.modals.slowcommit.cause": "Może być to spowodowane problemami z Twoim połączeniem sieciowym.",
|
||||
"pad.modals.badChangeset.explanation": "Edycja, którą wykonałeś, została uznana przez serwer synchronizacji jako niepoprawna.",
|
||||
"pad.modals.badChangeset.cause": "Może być to spowodowane złą konfiguracją serwera lub innym nieoczekiwanym zachowaniem. Skontaktuj się z administratorem serwisu, jeżeli wydaje Ci się, że to jest błąd. Spróbuj połączyć się ponownie aby kontynuować edycję.",
|
||||
"pad.modals.corruptPad.explanation": "Dokument, do którego próbujesz uzyskać dostęp, jest uszkodzony.",
|
||||
"pad.modals.corruptPad.cause": "Może być to spowodowane złą konfiguracją serwera lub innym nieoczekiwanym zachowaniem. Skontaktuj się z administratorem serwisu.",
|
||||
"pad.modals.deleted": "Usunięto.",
|
||||
|
@ -98,7 +101,7 @@
|
|||
"timeslider.exportCurrent": "Eksportuj bieżącą wersję jako:",
|
||||
"timeslider.version": "Wersja {{version}}",
|
||||
"timeslider.saved": "Zapisano {{day}} {{month}} {{year}}",
|
||||
"timeslider.playPause": "Odtwarzaj / pauzuj zawartość dokumentu",
|
||||
"timeslider.playPause": "Odtwarzaj / zatrzymaj przewijanie historii dokumentu",
|
||||
"timeslider.backRevision": "Przejdź do poprzedniej wersji dokumentu",
|
||||
"timeslider.forwardRevision": "Przejdź do następnej wersji dokumentu",
|
||||
"timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
|
|
|
@ -15,7 +15,8 @@
|
|||
"Fasouzafreitas",
|
||||
"Lpagliari",
|
||||
"Walesson",
|
||||
"Cainamarques"
|
||||
"Cainamarques",
|
||||
"Eduardo Addad de Oliveira"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Nova Nota",
|
||||
|
@ -70,6 +71,8 @@
|
|||
"pad.modals.connected": "Conectado.",
|
||||
"pad.modals.reconnecting": "Reconectando à sua nota...",
|
||||
"pad.modals.forcereconnect": "Forçar reconexão",
|
||||
"pad.modals.reconnecttimer": "Tentando se reconectar",
|
||||
"pad.modals.cancel": "Cancelar",
|
||||
"pad.modals.userdup": "Aberto em outra janela",
|
||||
"pad.modals.userdup.explanation": "Esta nota parece estar aberta em mais de uma janela de navegador deste computador.",
|
||||
"pad.modals.userdup.advice": "Reconectar para usar esta janela.",
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
"Imperadeiro98",
|
||||
"Macofe",
|
||||
"Ti4goc",
|
||||
"Cainamarques"
|
||||
"Cainamarques",
|
||||
"Athena in Wonderland"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Nova Nota",
|
||||
|
@ -33,12 +34,14 @@
|
|||
"pad.colorpicker.save": "Gravar",
|
||||
"pad.colorpicker.cancel": "Cancelar",
|
||||
"pad.loading": "A carregar…",
|
||||
"pad.noCookie": "O cookie não foi encontrado. Por favor, ative os cookies no seu navegador!",
|
||||
"pad.passwordRequired": "Precisa de uma senha para aceder a este pad",
|
||||
"pad.permissionDenied": "Não tem permissão para aceder a este pad.",
|
||||
"pad.wrongPassword": "A palavra-chave está errada",
|
||||
"pad.settings.padSettings": "Configurações da Nota",
|
||||
"pad.settings.myView": "Minha vista",
|
||||
"pad.settings.stickychat": "Bate-papo sempre no ecrã",
|
||||
"pad.settings.chatandusers": "Mostrar a conversação e os utilizadores",
|
||||
"pad.settings.colorcheck": "Cores de autoria",
|
||||
"pad.settings.linenocheck": "Números de linha",
|
||||
"pad.settings.rtlcheck": "Ler o conteúdo da direita para a esquerda?",
|
||||
|
@ -51,21 +54,34 @@
|
|||
"pad.importExport.import": "Carregar qualquer ficheiro de texto ou documento",
|
||||
"pad.importExport.importSuccessful": "Bem sucedido!",
|
||||
"pad.importExport.export": "Exportar a Nota atual como:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "Texto simples",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Só é possível importar texto sem formatação ou HTML. Para obter funcionalidades de importação mais avançadas, por favor <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instale o AbiWord</a>.",
|
||||
"pad.modals.connected": "Ligado.",
|
||||
"pad.modals.reconnecting": "Reconectando-se ao seu bloco…",
|
||||
"pad.modals.forcereconnect": "Forçar reconexão",
|
||||
"pad.modals.reconnecttimer": "A tentar religar",
|
||||
"pad.modals.cancel": "Cancelar",
|
||||
"pad.modals.userdup": "Aberto noutra janela",
|
||||
"pad.modals.userdup.explanation": "Este pad parece estar aberto em mais do que uma janela do navegador neste computador.",
|
||||
"pad.modals.userdup.advice": "Religar para utilizar esta janela.",
|
||||
"pad.modals.unauth": "Não autorizado",
|
||||
"pad.modals.unauth.explanation": "As suas permissões foram alteradas enquanto revia esta página. Tente religar.",
|
||||
"pad.modals.looping.explanation": "Existem problemas de comunicação com o servidor de sincronização.",
|
||||
"pad.modals.looping.cause": "Talvez tenha ligado por um firewall ou proxy incompatível.",
|
||||
"pad.modals.initsocketfail": "O servidor está inacessível.",
|
||||
"pad.modals.initsocketfail.explanation": "Não foi possível a conexão ao servidor de sincronização.",
|
||||
"pad.modals.initsocketfail.cause": "Isto provavelmente ocorreu por um problema no seu navegador ou na sua ligação de Internet.",
|
||||
"pad.modals.slowcommit.explanation": "O servidor não está a responder.",
|
||||
"pad.modals.slowcommit.cause": "Isto pode ser por problemas com a ligação de rede.",
|
||||
"pad.modals.badChangeset.explanation": "Uma edição que fez foi classificada como ilegal pelo servidor de sincronização.",
|
||||
"pad.modals.badChangeset.cause": "Isto pode ocorrer devido a uma configuração errada do servidor ou algum outro comportamento inesperado. Por favor contacte o administrador, se acredita que é um erro. Tente religar para continuar a editar.",
|
||||
"pad.modals.corruptPad.explanation": "A nota que está a tentar aceder está corrompida.",
|
||||
"pad.modals.corruptPad.cause": "Isto pode ocorrer devido a uma configuração errada do servidor ou algum outro comportamento inesperado. Por favor contacte o administrador.",
|
||||
"pad.modals.deleted": "Eliminado.",
|
||||
"pad.modals.deleted.explanation": "Este pad foi removido.",
|
||||
"pad.modals.disconnected": "Você foi desconectado.",
|
||||
|
@ -74,9 +90,11 @@
|
|||
"pad.share": "Compartilhar este pad",
|
||||
"pad.share.readonly": "Somente para leitura",
|
||||
"pad.share.link": "Ligação",
|
||||
"pad.share.emebdcode": "Incorporar o URL",
|
||||
"pad.chat": "Bate-papo",
|
||||
"pad.chat.title": "Abrir o bate-papo para este pad.",
|
||||
"pad.chat.loadmessages": "Carregar mais mensagens",
|
||||
"timeslider.pageTitle": "Linha do tempo de {{appTitle}}",
|
||||
"timeslider.toolbar.returnbutton": "Voltar ao pad",
|
||||
"timeslider.toolbar.authors": "Autores:",
|
||||
"timeslider.toolbar.authorsList": "Sem Autores",
|
||||
|
@ -84,6 +102,9 @@
|
|||
"timeslider.exportCurrent": "Exportar versão atual como:",
|
||||
"timeslider.version": "Versão {{version}}",
|
||||
"timeslider.saved": "Gravado a {{day}} de {{month}} de {{ano}}",
|
||||
"timeslider.playPause": "Reproduzir / Pausar conteúdo do Pad",
|
||||
"timeslider.backRevision": "Voltar a uma revisão anterior neste Pad",
|
||||
"timeslider.forwardRevision": "Ir a uma revisão posterior neste Pad",
|
||||
"timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "Janeiro",
|
||||
"timeslider.month.february": "Fevereiro",
|
||||
|
@ -97,7 +118,9 @@
|
|||
"timeslider.month.october": "Outubro",
|
||||
"timeslider.month.november": "Novembro",
|
||||
"timeslider.month.december": "Dezembro",
|
||||
"timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor anónimo, other: autores anónimos ]}",
|
||||
"pad.savedrevs.marked": "Esta revisão está agora marcada como gravada",
|
||||
"pad.savedrevs.timeslider": "Pode consultar as revisões gravadas visitando a linha do tempo",
|
||||
"pad.userlist.entername": "Insira o seu nome",
|
||||
"pad.userlist.unnamed": "sem nome",
|
||||
"pad.userlist.guest": "Convidado",
|
||||
|
@ -107,8 +130,10 @@
|
|||
"pad.impexp.importbutton": "Importar agora",
|
||||
"pad.impexp.importing": "Importando...",
|
||||
"pad.impexp.confirmimport": "A importação de um ficheiro irá substituir o texto atual do pad. Tem certeza que deseja continuar?",
|
||||
"pad.impexp.padHasData": "Não fomos capazes de importar este arquivo porque este Pad já tinha alterações, por favor importe para um novo pad",
|
||||
"pad.impexp.convertFailed": "Não foi possível importar este ficheiro. Utilize outro formato ou copie e insira manualmente",
|
||||
"pad.impexp.padHasData": "Não fomos capazes de importar este ficheiro porque este Pad já tinha alterações, por favor importe para um novo pad",
|
||||
"pad.impexp.uploadFailed": "O upload falhou. Por favor, tente novamente",
|
||||
"pad.impexp.importfailed": "A importação falhou",
|
||||
"pad.impexp.copypaste": "Por favor, copie e cole"
|
||||
"pad.impexp.copypaste": "Por favor, copie e cole",
|
||||
"pad.impexp.exportdisabled": "A exportação no formato {{type}} está desativada. Por favor, contacte o administrador do sistema para mais informações."
|
||||
}
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
"pad.modals.connected": "Used as HTML <code><nowiki><h2></nowiki></code> heading to indicate the status.\n\nSee also:\n* {{msg-etherpadlite|Pad.modals.reconnecting}}\n{{Identical|Connected}}",
|
||||
"pad.modals.reconnecting": "Used as HTML <code><nowiki><h2></nowiki></code> heading to indicate the status.\n\nSee also:\n* {{msg-etherpadlite|Pad.modals.connected}}",
|
||||
"pad.modals.forcereconnect": "Label of a button that will make the browser reconnect to the synchronization server.",
|
||||
"pad.modals.cancel": "{{Identical|Cancel}}",
|
||||
"pad.modals.userdup": "Used as HTML <code><nowiki><h1></nowiki></code> heading to indicate that the pad is opened in another window on this computer.\n\nFollowed by the following messages:\n* {{msg-etherpadlite|Pad.modals.userdup.explanation}} - <code><nowiki><h2></nowiki></code> heading\n* {{msg-etherpadlite|Pad.modals.userdup.advice}}",
|
||||
"pad.modals.userdup.explanation": "Used as HTML <code><nowiki><h2></nowiki></code> heading.\n\nPreceded by the parent heading {{msg-etherpadlite|Pad.modals.userdup}}.\n\nFollowed by the message {{msg-etherpadlite|Pad.modals.userdup.advice}}.",
|
||||
"pad.modals.userdup.advice": "Preceded by the following headings:\n* {{msg-etherpadlite|Pad.modals.userdup}}\n* {{msg-etherpadlite|Pad.modals.userdup.explanation}}",
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
"Eleferen",
|
||||
"Okras",
|
||||
"Volkov",
|
||||
"Nzeemin"
|
||||
"Nzeemin",
|
||||
"Facenapalm"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Создать",
|
||||
|
@ -61,6 +62,8 @@
|
|||
"pad.modals.connected": "Подключен.",
|
||||
"pad.modals.reconnecting": "Повторное подключение к вашему документу",
|
||||
"pad.modals.forcereconnect": "Принудительное переподключение",
|
||||
"pad.modals.reconnecttimer": "Попытка переподключения",
|
||||
"pad.modals.cancel": "Отмена",
|
||||
"pad.modals.userdup": "Открыто в другом окне",
|
||||
"pad.modals.userdup.explanation": "Документ, возможно, открыт более чем в одном окне браузера на этом компьютере.",
|
||||
"pad.modals.userdup.advice": "Повторно подключить с использованием этого окна.",
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"John Reid"
|
||||
"John Reid",
|
||||
"AmaryllisGardener"
|
||||
]
|
||||
},
|
||||
"index.newPad": "New Pad",
|
||||
|
@ -9,14 +10,14 @@
|
|||
"pad.toolbar.bold.title": "Bold (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "Italic (Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "Underline (Ctrl-U)",
|
||||
"pad.toolbar.strikethrough.title": "Cross-oot",
|
||||
"pad.toolbar.ol.title": "Ordered leet",
|
||||
"pad.toolbar.ul.title": "Onordered Leet",
|
||||
"pad.toolbar.strikethrough.title": "Strikethrou (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Ordered leet (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Unordered Leet (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Indent (TAB)",
|
||||
"pad.toolbar.unindent.title": "Ootdent (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Ondae (Ctrl-Z)",
|
||||
"pad.toolbar.redo.title": "Redae (Ctrl-Y)",
|
||||
"pad.toolbar.clearAuthorship.title": "Clear Authorship Colours",
|
||||
"pad.toolbar.clearAuthorship.title": "Clear Authorship Colours (Ctrl+Shift+C)",
|
||||
"pad.toolbar.import_export.title": "Import/Export fae/til different file formats",
|
||||
"pad.toolbar.timeslider.title": "Timeslider",
|
||||
"pad.toolbar.savedRevision.title": "Hain Reveesion",
|
||||
|
@ -26,12 +27,14 @@
|
|||
"pad.colorpicker.save": "Hain",
|
||||
"pad.colorpicker.cancel": "Cancel",
|
||||
"pad.loading": "Laidin...",
|
||||
"pad.noCookie": "Cookie could nae be foond. Please allae cookies in yer brouser!",
|
||||
"pad.passwordRequired": "Ye need ae passwaird fer tae access this pad",
|
||||
"pad.permissionDenied": "Ye dinna hae permeession tae access this pad",
|
||||
"pad.wrongPassword": "Yer password wis wrang",
|
||||
"pad.settings.padSettings": "Pad Settins",
|
||||
"pad.settings.myView": "Ma Luik",
|
||||
"pad.settings.stickychat": "Tauk aye oan screen",
|
||||
"pad.settings.chatandusers": "Shaw Chat an Uisers",
|
||||
"pad.settings.colorcheck": "Authorship colours",
|
||||
"pad.settings.linenocheck": "Line nummers",
|
||||
"pad.settings.rtlcheck": "Read content fae richt til cair?",
|
||||
|
@ -44,6 +47,7 @@
|
|||
"pad.importExport.import": "Upload oni tex file or document",
|
||||
"pad.importExport.importSuccessful": "Success!",
|
||||
"pad.importExport.export": "Export current pad as:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "Plain tex",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
|
@ -89,6 +93,9 @@
|
|||
"timeslider.exportCurrent": "Export current version as:",
|
||||
"timeslider.version": "Version {{version}}",
|
||||
"timeslider.saved": "Saved {{day}} {{month}}, {{year}}",
|
||||
"timeslider.playPause": "Playback / Pause Pad Contents",
|
||||
"timeslider.backRevision": "Gae back a reveesion in this Pad",
|
||||
"timeslider.forwardRevision": "Gae forwart a reveesion in this Pad",
|
||||
"timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "Januair",
|
||||
"timeslider.month.february": "Febuair",
|
||||
|
@ -104,6 +111,7 @@
|
|||
"timeslider.month.december": "Dizember",
|
||||
"timeslider.unnamedauthors": "{{num}} onnamed {[plural(num) one: writer, other: writers ]}",
|
||||
"pad.savedrevs.marked": "This reveesion is nou tagged aes ae hained reveesion",
|
||||
"pad.savedrevs.timeslider": "Ye can see saved reveesions bi veesitin the timeslider",
|
||||
"pad.userlist.entername": "Enter yer name",
|
||||
"pad.userlist.unnamed": "onnamed",
|
||||
"pad.userlist.guest": "Guest",
|
||||
|
@ -114,6 +122,7 @@
|
|||
"pad.impexp.importing": "Importing...",
|
||||
"pad.impexp.confirmimport": "Importin ae file will owerwrite the current tex o the pad. Ar ye sair ye want tae proceed?",
|
||||
"pad.impexp.convertFailed": "We coudna import this file. Please uise ae different document format or copy paste manually",
|
||||
"pad.impexp.padHasData": "We war nae able tae import this file acause this Pad haes awready haed chynges, please import tae a new pad",
|
||||
"pad.impexp.uploadFailed": "The upload failed, please try again",
|
||||
"pad.impexp.importfailed": "The import failed",
|
||||
"pad.impexp.copypaste": "Please copy paste",
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"Teslaton",
|
||||
"Kusavica",
|
||||
"Rudko",
|
||||
"Mark"
|
||||
"Mark",
|
||||
"Lexected"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Nový Pad",
|
||||
|
@ -29,12 +30,14 @@
|
|||
"pad.colorpicker.save": "Uložiť",
|
||||
"pad.colorpicker.cancel": "Zrušiť",
|
||||
"pad.loading": "Načítava sa...",
|
||||
"pad.noCookie": "Cookie nebolo možné nájsť. Povoľte prosím cookies vo vašom prehliadači.",
|
||||
"pad.passwordRequired": "Prístup k tomuto Padu je chránený heslom",
|
||||
"pad.permissionDenied": "Ľutujeme, nemáte oprávnenie pristupovať k tomuto Padu",
|
||||
"pad.wrongPassword": "Nesprávne heslo",
|
||||
"pad.settings.padSettings": "Nastavenia Padu",
|
||||
"pad.settings.myView": "Vlastný pohľad",
|
||||
"pad.settings.stickychat": "Chat stále na obrazovke",
|
||||
"pad.settings.chatandusers": "Zobraziť chat a užívateľov",
|
||||
"pad.settings.colorcheck": "Farby autorstva",
|
||||
"pad.settings.linenocheck": "Čísla riadkov",
|
||||
"pad.settings.rtlcheck": "Čítať obsah sprava doľava?",
|
||||
|
@ -53,10 +56,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Importovať môžete len čistý text alebo HTML. Pre pokročilejšie funkcie importu prosím nainštalujte „<a 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\">Abiword</a>“.",
|
||||
"pad.importExport.abiword.innerHTML": "Importovať môžete len čistý text alebo HTML. Pre pokročilejšie funkcie importu prosím nainštalujte „<a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord</a>“.",
|
||||
"pad.modals.connected": "Pripojené.",
|
||||
"pad.modals.reconnecting": "Opätovné pripájanie k vášmu Padu...",
|
||||
"pad.modals.forcereconnect": "Vynútiť znovupripojenie",
|
||||
"pad.modals.reconnecttimer": "Skúšam sa pripojiť",
|
||||
"pad.modals.cancel": "Zrušiť",
|
||||
"pad.modals.userdup": "Otvorené v inom okne",
|
||||
"pad.modals.userdup.explanation": "Zdá sa, že tento Pad je na tomto počítači otvorený vo viacerých oknách prehliadača.",
|
||||
"pad.modals.userdup.advice": "Pre použitie tohoto okna se musíte znovu pripojiť.",
|
||||
|
@ -93,6 +98,9 @@
|
|||
"timeslider.exportCurrent": "Exportovať aktuálnu verziu ako:",
|
||||
"timeslider.version": "Verzia {{version}}",
|
||||
"timeslider.saved": "Uložené {{day}}. {{month}} {{year}}",
|
||||
"timeslider.playPause": "Pustiť / Pozastaviť obsah padu",
|
||||
"timeslider.backRevision": "Ísť v tomto pade a revíziu späť",
|
||||
"timeslider.forwardRevision": "Ísť v tomto pade o revíziu vpred",
|
||||
"timeslider.dateformat": "{{day}}. {{month}} {{year}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "januára",
|
||||
"timeslider.month.february": "februára",
|
||||
|
@ -108,6 +116,7 @@
|
|||
"timeslider.month.december": "decembra",
|
||||
"timeslider.unnamedauthors": "{{num}} {[ plural(num) one: nemenovaný autor, few: nemenovaní autori, other: nemenovaných autorov ]}",
|
||||
"pad.savedrevs.marked": "Táto revízia bola označená ako uložená",
|
||||
"pad.savedrevs.timeslider": "Návštevou časovej osi môžete zobraziť uložené revízie",
|
||||
"pad.userlist.entername": "Zadajte svoje meno",
|
||||
"pad.userlist.unnamed": "nemenovaný",
|
||||
"pad.userlist.guest": "Hosť",
|
||||
|
@ -118,6 +127,7 @@
|
|||
"pad.impexp.importing": "Prebieha import...",
|
||||
"pad.impexp.confirmimport": "Import súboru prepíše celý súčasný obsah Padu. Skutočne si želáte vykonať túto akciu?",
|
||||
"pad.impexp.convertFailed": "Tento súbor nie je možné importovať. Použite prosím iný formát súboru alebo nakopírujte text manuálne",
|
||||
"pad.impexp.padHasData": "Nebolo možné importovať tento súbor, pretože tento pad už bol pozmenený. Importujte prosím súbor do nového padu",
|
||||
"pad.impexp.uploadFailed": "Nahrávanie zlyhalo, skúste to prosím znovu",
|
||||
"pad.impexp.importfailed": "Import zlyhal",
|
||||
"pad.impexp.copypaste": "Vložte prosím kópiu cez schránku",
|
||||
|
|
69
src/locales/skr-arab.json
Normal file
69
src/locales/skr-arab.json
Normal file
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Saraiki"
|
||||
]
|
||||
},
|
||||
"index.newPad": "نواں پیڈ",
|
||||
"pad.toolbar.bold.title": "بولڈ(Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "ترچھے (Ctrl+I)",
|
||||
"pad.toolbar.underline.title": "ہیٹھ لکیر (Ctrl+U)",
|
||||
"pad.toolbar.savedRevision.title": "رویژن بچاؤ",
|
||||
"pad.toolbar.settings.title": "ترتیباں",
|
||||
"pad.colorpicker.save": "بچاؤ",
|
||||
"pad.colorpicker.cancel": "منسوخ",
|
||||
"pad.loading": "لوڈ تھیندا پئے۔۔۔",
|
||||
"pad.wrongPassword": "تہاݙ پاسورڈ غلط ہے",
|
||||
"pad.settings.padSettings": "پیڈ ترتیباں",
|
||||
"pad.settings.fontType": "فونٹ قسم:",
|
||||
"pad.settings.globalView": "عالمی منظر",
|
||||
"pad.settings.language": "زبان:",
|
||||
"pad.importExport.importSuccessful": "کامیاب!",
|
||||
"pad.importExport.exportetherpad": "ایتھرپیڈ",
|
||||
"pad.importExport.exporthtml": "ایچ ٹی ایم ایل",
|
||||
"pad.importExport.exportplain": "سادہ متن",
|
||||
"pad.importExport.exportword": "مائیکروسافٹ ورڈ",
|
||||
"pad.importExport.exportpdf": "پی ڈی ایف",
|
||||
"pad.modals.connected": "ڄُڑ ڳیا۔",
|
||||
"pad.modals.cancel": "منسوخ",
|
||||
"pad.modals.unauth": "اجازت کائنی",
|
||||
"pad.modals.initsocketfail": "سرور تائیں پہنچݨ ممکن کائنی",
|
||||
"pad.modals.slowcommit.explanation": "سرور توں جواب کائنی امدا پیا",
|
||||
"pad.modals.deleted": "مٹا ݙتے",
|
||||
"pad.modals.deleted.explanation": "ایہ پیڈ ہٹا ݙتا ڳئے۔",
|
||||
"pad.modals.disconnected": "تہاݙا کنکشن مُک ڳئے",
|
||||
"pad.share": "ایہ پیڈ شیئر کرو",
|
||||
"pad.share.readonly": "صرف پڑھو",
|
||||
"pad.share.link": "ربط",
|
||||
"pad.share.emebdcode": "امنیڈ یو آر ایل",
|
||||
"pad.chat": "چیٹ",
|
||||
"pad.chat.loadmessages": "ٻئے سنیہے لوڈ کرو",
|
||||
"timeslider.toolbar.returnbutton": "واپس پیڈ تے ونڄو",
|
||||
"timeslider.toolbar.authors": "مصنف:",
|
||||
"timeslider.toolbar.authorsList": "کوئی مصنف کائنی",
|
||||
"timeslider.toolbar.exportlink.title": "ٻاہر بھیڄو",
|
||||
"timeslider.version": "ورژن {{version}}",
|
||||
"timeslider.saved": "محفوظ تھیا {{month}} {{day}}, {{year}}",
|
||||
"timeslider.dateformat": "{{month}}/{{day}}/{{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": "ٻاہروں آ نی سڳے"
|
||||
}
|
|
@ -3,11 +3,12 @@
|
|||
"authors": [
|
||||
"Dbc334",
|
||||
"Mateju",
|
||||
"Skalcaa"
|
||||
"Skalcaa",
|
||||
"HairyFotr"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Nov dokument",
|
||||
"index.createOpenPad": "ali pa odpri dokument z imenom:",
|
||||
"index.createOpenPad": "ali pa ustvari/odpri dokument z imenom:",
|
||||
"pad.toolbar.bold.title": "Krepko (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "Ležeče (Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "Podčrtano (Ctrl-U)",
|
||||
|
@ -18,23 +19,23 @@
|
|||
"pad.toolbar.unindent.title": "Zamik levo (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Razveljavi (Ctrl-Z)",
|
||||
"pad.toolbar.redo.title": "Ponovno uveljavi (Ctrl-Y)",
|
||||
"pad.toolbar.clearAuthorship.title": "Počisti barvo avtorstva (Ctrl+Shift+C)",
|
||||
"pad.toolbar.import_export.title": "Izvozi/Uvozi različne oblike zapisov",
|
||||
"pad.toolbar.timeslider.title": "Drsnik zgodovine",
|
||||
"pad.toolbar.savedRevision.title": "Shrani predelavo",
|
||||
"pad.toolbar.clearAuthorship.title": "Počisti barve avtorstva (Ctrl+Shift+C)",
|
||||
"pad.toolbar.import_export.title": "Uvozi/Izvozi različne oblike zapisov",
|
||||
"pad.toolbar.timeslider.title": "Časovni trak",
|
||||
"pad.toolbar.savedRevision.title": "Shrani redakcijo",
|
||||
"pad.toolbar.settings.title": "Nastavitve",
|
||||
"pad.toolbar.embed.title": "Deli in vključi dokument",
|
||||
"pad.toolbar.embed.title": "Deli in vključi ta dokument",
|
||||
"pad.toolbar.showusers.title": "Pokaži uporabnike dokumenta",
|
||||
"pad.colorpicker.save": "Shrani",
|
||||
"pad.colorpicker.cancel": "Prekliči",
|
||||
"pad.loading": "Nalaganje ...",
|
||||
"pad.noCookie": "Piškotka ni bilo mogoče najti. Prosimo, dovolite piškotke v vašem brskalniku!",
|
||||
"pad.passwordRequired": "Za dostop do dokumenta je zahtevano geslo.",
|
||||
"pad.permissionDenied": "Za dostop do dokumenta so zahtevana posebna dovoljenja.",
|
||||
"pad.wrongPassword": "Vpisano geslo je napačno.",
|
||||
"pad.passwordRequired": "Za dostop do dokumenta potrebujete geslo.",
|
||||
"pad.permissionDenied": "Nimate dovoljenja za dostop do tega dokumenta.",
|
||||
"pad.wrongPassword": "Vpisano geslo je napačno",
|
||||
"pad.settings.padSettings": "Nastavitve dokumenta",
|
||||
"pad.settings.myView": "Pogled",
|
||||
"pad.settings.stickychat": "Vsebina klepeta je vedno na zaslonu.",
|
||||
"pad.settings.myView": "Moj pogled",
|
||||
"pad.settings.stickychat": "Vsebina klepeta je vedno na zaslonu",
|
||||
"pad.settings.chatandusers": "Prikaži klepet in uporabnike",
|
||||
"pad.settings.colorcheck": "Barve avtorstva",
|
||||
"pad.settings.linenocheck": "Številke vrstic",
|
||||
|
@ -54,41 +55,43 @@
|
|||
"pad.importExport.exportword": "DOC (zapis Microsoft Word)",
|
||||
"pad.importExport.exportpdf": "PDF (zapis Acrobat PDF)",
|
||||
"pad.importExport.exportopen": "ODF (zapis Open Document)",
|
||||
"pad.importExport.abiword.innerHTML": "Uvoziti je mogoče le običajno neoblikovano besedilo in zapise HTML. Za naprednejše zmožnosti namestite <a 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\\\">program Abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Uvoziti je mogoče le običajno neoblikovano besedilo in zapise HTML. Za naprednejše zmožnosti namestite <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">program AbiWord</a>.",
|
||||
"pad.modals.connected": "Povezano.",
|
||||
"pad.modals.reconnecting": "Poteka povezovanje z dokumentom ...",
|
||||
"pad.modals.forcereconnect": "Vsili ponovno povezavo.",
|
||||
"pad.modals.userdup": "Dokument je že odprt v v drugem oknu.",
|
||||
"pad.modals.forcereconnect": "Vsili ponovno povezavo",
|
||||
"pad.modals.reconnecttimer": "Poskus ponovne vzpostavitve povezave čez",
|
||||
"pad.modals.cancel": "Prekliči",
|
||||
"pad.modals.userdup": "Dokument je že odprt v v drugem oknu",
|
||||
"pad.modals.userdup.explanation": "Videti je, da je ta dokument odprt v več kot enem oknu brskalnika na tem računalniku.",
|
||||
"pad.modals.userdup.advice": "Ponovno vzpostavite povezavo in uporabljajte to okno.",
|
||||
"pad.modals.unauth": "Nepooblaščen dostop",
|
||||
"pad.modals.unauth.explanation": "Med pregledovanjem te strani so se dovoljenja za ogled spremenila. Treba se bo znova povezati.",
|
||||
"pad.modals.looping.explanation": "Zaznane so težave s povezavo za usklajevanje s strežnikom.",
|
||||
"pad.modals.looping.cause": "Morda je vzpostavljena povezava preko neustrezno nastavljenega požarnega zidu ali posredniškega strežnika.",
|
||||
"pad.modals.initsocketfail": "Dostop do strežnika ni mogoč.",
|
||||
"pad.modals.unauth.explanation": "Med pregledovanjem te strani so se dovoljenja za ogled spremenila. Poskusite se ponovno povezati.",
|
||||
"pad.modals.looping.explanation": "Zaznane so težave pri komunikaciji s strežnikom za usklajevanje.",
|
||||
"pad.modals.looping.cause": "Morda ste se povezali preko neustrezno nastavljenega požarnega zidu ali posredniškega strežnika.",
|
||||
"pad.modals.initsocketfail": "Strežnika je nedosegljiv.",
|
||||
"pad.modals.initsocketfail.explanation": "Povezava s strežnikom za usklajevanje ni mogoča.",
|
||||
"pad.modals.initsocketfail.cause": "Najverjetneje je težava v brskalniku, ali pa so težave z internetno povezavo.",
|
||||
"pad.modals.initsocketfail.cause": "Najverjetneje gre za težavo z vašim brskalnikom, ali internetno povezavo.",
|
||||
"pad.modals.slowcommit.explanation": "Strežnik se ne odziva.",
|
||||
"pad.modals.slowcommit.cause": "Najverjetneje je prišlo do napake med vzpostavitvijo povezave.",
|
||||
"pad.modals.badChangeset.explanation": "Urejanje, ki ste ga naredili, je sinhronizacijski strežnik označil kot nelegalno.",
|
||||
"pad.modals.badChangeset.cause": "Razlog za to je morda napačna konfiguracija strežnika ali neko drugo nepričakovano vedenje. Prosimo, stopite v stik z upravljavcem storitve, če menite, da gre za napako. Poskusite se ponovno povezati, da nadaljujete z urejanjem.",
|
||||
"pad.modals.slowcommit.cause": "Možen vzrok so težave z omrežno povezljivostjo.",
|
||||
"pad.modals.badChangeset.explanation": "Urejanje, ki ste ga naredili, je strežnik za usklajevanje označil kot nedovoljeno.",
|
||||
"pad.modals.badChangeset.cause": "Razlog za to je morda napačna konfiguracija strežnika ali neko drugo nepričakovano vedenje. Prosimo, stopite v stik z skrbnikom storitve, če menite, da gre za napako. Poskusite se ponovno povezati, da nadaljujete z urejanjem.",
|
||||
"pad.modals.corruptPad.explanation": "Dokument, do katerega želite dostopati, je poškodovan.",
|
||||
"pad.modals.corruptPad.cause": "Razlog za to je morda napačna konfiguracija strežnika ali neko drugo nepričakovano vedenje. Prosimo, stopite v stik z upravljavcem storitve.",
|
||||
"pad.modals.corruptPad.cause": "Razlog za to je morda napačna konfiguracija strežnika ali neko drugo nepričakovano vedenje. Prosimo, stopite v stik s skrbnikom storitve.",
|
||||
"pad.modals.deleted": "Izbrisano.",
|
||||
"pad.modals.deleted.explanation": "Dokument je odstranjen.",
|
||||
"pad.modals.disconnected": "Povezava je prekinjena.",
|
||||
"pad.modals.disconnected.explanation": "Povezava s strežnikom je bila prekinjena.",
|
||||
"pad.modals.disconnected.cause": "Strežnik je morda nedosegljiv. Prosimo, obvestite skrbnika storitve, če se to zgodi večkrat.",
|
||||
"pad.modals.deleted.explanation": "Dokument je bil odstranjen.",
|
||||
"pad.modals.disconnected": "Vaša povezava je bila prekinjena.",
|
||||
"pad.modals.disconnected.explanation": "Povezava s strežnikom je bila izgubljena.",
|
||||
"pad.modals.disconnected.cause": "Strežnik morda ni na voljo. Prosimo, obvestite skrbnika storitve, če se to zgodi večkrat.",
|
||||
"pad.share": "Določi souporabo dokumenta",
|
||||
"pad.share.readonly": "Le za branje",
|
||||
"pad.share.link": "Povezava",
|
||||
"pad.share.emebdcode": "Vstavi naslov URL",
|
||||
"pad.share.emebdcode": "URL za vključitev",
|
||||
"pad.chat": "Klepet",
|
||||
"pad.chat.title": "Odpri klepetalno okno dokumenta.",
|
||||
"pad.chat.loadmessages": "Naloži več sporočil",
|
||||
"timeslider.pageTitle": "Zgodovina dokumenta {{appTitle}}",
|
||||
"timeslider.pageTitle": "Časovni trak {{appTitle}}",
|
||||
"timeslider.toolbar.returnbutton": "Vrni se na dokument",
|
||||
"timeslider.toolbar.authors": "Autorji:",
|
||||
"timeslider.toolbar.authors": "Avtorji:",
|
||||
"timeslider.toolbar.authorsList": "Ni določenih avtorjev",
|
||||
"timeslider.toolbar.exportlink.title": "Izvozi",
|
||||
"timeslider.exportCurrent": "Izvozi trenutno različico kot:",
|
||||
|
@ -96,7 +99,7 @@
|
|||
"timeslider.saved": "Shranjeno {{day}}.{{month}}.{{year}}",
|
||||
"timeslider.playPause": "Predvajaj/začasno ustavi vsebino dokumenta",
|
||||
"timeslider.backRevision": "Pojdi eno redakcijo nazaj v tem dokumentu",
|
||||
"timeslider.forwardRevision": "Pojdi redakcijo naprej v tem dokumentu",
|
||||
"timeslider.forwardRevision": "Pojdi eno redakcijo naprej v tem dokumentu",
|
||||
"timeslider.dateformat": "{{day}}.{{month}}.{{year}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "Januar",
|
||||
"timeslider.month.february": "Februar",
|
||||
|
@ -111,9 +114,9 @@
|
|||
"timeslider.month.november": "November",
|
||||
"timeslider.month.december": "December",
|
||||
"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čena kot shranjena predelava.",
|
||||
"pad.savedrevs.timeslider": "Shranjene revizije si lahko ogledate s pomočjo časovnega traku",
|
||||
"pad.userlist.entername": "Vpišite ime",
|
||||
"pad.savedrevs.marked": "Ta redakcija je zdaj označena kot shranjena redakcija",
|
||||
"pad.savedrevs.timeslider": "Shranjene redakcije si lahko ogledate s pomočjo časovnega traku",
|
||||
"pad.userlist.entername": "Vnesite svoje ime",
|
||||
"pad.userlist.unnamed": "neimenovana oseba",
|
||||
"pad.userlist.guest": "Gost",
|
||||
"pad.userlist.deny": "Zavrni",
|
||||
|
@ -122,10 +125,10 @@
|
|||
"pad.impexp.importbutton": "Uvozi takoj",
|
||||
"pad.impexp.importing": "Poteka uvažanje ...",
|
||||
"pad.impexp.confirmimport": "Uvoz datoteke prepiše obstoječe besedilo dokumenta. Ali ste prepričani, da želite nadaljevati?",
|
||||
"pad.impexp.convertFailed": "Datoteke ni mogoče uvoziti. Uporabiti je treba enega izmed podprtih zapisov dokumentov ali pa vsebino prilepiti ročno.",
|
||||
"pad.impexp.convertFailed": "Datoteke ni bilo mogoče uvoziti. Prosimo uporabite drug podprt zapis dokumenta ali pa vsebino prilepite ročno",
|
||||
"pad.impexp.padHasData": "Nismo mogli uvoziti datoteke, ker dokument že vsebuje spremembe. Prosimo, uvozite datoteko v nov dokument",
|
||||
"pad.impexp.uploadFailed": "Nalaganje je spodletelo, poskusite znova.",
|
||||
"pad.impexp.importfailed": "Uvoz je spodletel.",
|
||||
"pad.impexp.copypaste": "Vsebino kopirajte in prilepite.",
|
||||
"pad.impexp.uploadFailed": "Nalaganje je spodletelo, prosimo poskusite znova",
|
||||
"pad.impexp.importfailed": "Uvoz je spodletel",
|
||||
"pad.impexp.copypaste": "Vsebino kopirajte in prilepite",
|
||||
"pad.impexp.exportdisabled": "Izvoz v zapis {{type}} je onemogočen. Za več podrobnosti stopite v stik s skrbnikom."
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"Kosovastar"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Bllok i Ri",
|
||||
"index.newPad": "Bllok i ri",
|
||||
"index.createOpenPad": "ose krijoni/hapni një Bllok me emrin:",
|
||||
"pad.toolbar.bold.title": "Të trasha (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "Të pjerrëta (Ctrl-I)",
|
||||
|
@ -20,7 +20,7 @@
|
|||
"pad.toolbar.clearAuthorship.title": "Hiqu Ngjyra Autorësish (Ctrl+Shift+C)",
|
||||
"pad.toolbar.import_export.title": "Importoni/Eksportoni nga/në formate të tjera kartelash",
|
||||
"pad.toolbar.timeslider.title": "Rrjedha kohore",
|
||||
"pad.toolbar.savedRevision.title": "Ruaje Rishikimin",
|
||||
"pad.toolbar.savedRevision.title": "Ruaje rishikimin",
|
||||
"pad.toolbar.settings.title": "Rregullime",
|
||||
"pad.toolbar.embed.title": "Ndajeni me të tjerët dhe Trupëzojeni këtë bllok",
|
||||
"pad.toolbar.showusers.title": "Shfaq përdoruesit në këtë bllok",
|
||||
|
@ -88,7 +88,7 @@
|
|||
"timeslider.pageTitle": "Rrjedhë kohore e {{appTitle}}",
|
||||
"timeslider.toolbar.returnbutton": "Rikthehuni te blloku",
|
||||
"timeslider.toolbar.authors": "Autorë:",
|
||||
"timeslider.toolbar.authorsList": "S’ka Autorë",
|
||||
"timeslider.toolbar.authorsList": "S’ka autorë",
|
||||
"timeslider.toolbar.exportlink.title": "Eksportoje",
|
||||
"timeslider.exportCurrent": "Eksportojeni versionin e tanishëm si:",
|
||||
"timeslider.version": "Versioni {{version}}",
|
||||
|
|
|
@ -4,21 +4,23 @@
|
|||
"Aktron",
|
||||
"Milicevic01",
|
||||
"Милан Јелисавчић",
|
||||
"Srdjan m"
|
||||
"Srdjan m",
|
||||
"Obsuser",
|
||||
"Acamicamacaraca"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Нови Пад",
|
||||
"index.createOpenPad": "или направите/отворите пад следећег назива:",
|
||||
"pad.toolbar.bold.title": "Подебљано (Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "Искошено (Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "Подвучено (Ctrl-U)",
|
||||
"pad.toolbar.bold.title": "Подебљано (Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "Искошено (Ctrl+I)",
|
||||
"pad.toolbar.underline.title": "Подвучено (Ctrl+U)",
|
||||
"pad.toolbar.strikethrough.title": "Прецртано (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "Уређен списак (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "Неуређен списак (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "Увлачење (TAB)",
|
||||
"pad.toolbar.unindent.title": "Извлачење (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "Опозови (Ctrl+Z)",
|
||||
"pad.toolbar.redo.title": "Опозови (Ctrl+Z)",
|
||||
"pad.toolbar.redo.title": "Понови (Ctrl+Z)",
|
||||
"pad.toolbar.clearAuthorship.title": "Очисти ауторске боје (Ctrl+Shift+C)",
|
||||
"pad.toolbar.import_export.title": "Увези/извези из/на друге датотечне формате",
|
||||
"pad.toolbar.timeslider.title": "Временска линија",
|
||||
|
@ -28,9 +30,9 @@
|
|||
"pad.toolbar.showusers.title": "Прикажи кориснике на овом паду",
|
||||
"pad.colorpicker.save": "Сачувај",
|
||||
"pad.colorpicker.cancel": "Откажи",
|
||||
"pad.loading": "Учитавање...",
|
||||
"pad.loading": "Учитавам…",
|
||||
"pad.noCookie": "Колачић није пронађен. Молимо да укључите колачиће у вашем прегледавачу!",
|
||||
"pad.passwordRequired": "Требате лозинку како бисте приступили овом паду",
|
||||
"pad.passwordRequired": "Требате имати лозинку како бисте приступили овом паду",
|
||||
"pad.permissionDenied": "Немате дозволу да приступите овом паду",
|
||||
"pad.wrongPassword": "Ваша лозинка није исправна",
|
||||
"pad.settings.padSettings": "Подешавања пада",
|
||||
|
@ -47,18 +49,20 @@
|
|||
"pad.settings.language": "Језик:",
|
||||
"pad.importExport.import_export": "Увоз/извоз",
|
||||
"pad.importExport.import": "Отпремите било коју текстуалну датотеку или документ",
|
||||
"pad.importExport.importSuccessful": "Успело!",
|
||||
"pad.importExport.importSuccessful": "Успешно!",
|
||||
"pad.importExport.export": "Извези тренутни пад као:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "чист текст",
|
||||
"pad.importExport.exportplain": "Чист текст",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Једино можете увести са једноставног текстуалног формата или HTML формата. За компликованије функције о увозу, молимо да <a 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\">инсталирате AbiWord</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Једино можете увести са једноставног текстуалног формата или HTML формата. За компликованије функције о увозу, молимо да <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">инсталирате AbiWord</a>.",
|
||||
"pad.modals.connected": "Повезано.",
|
||||
"pad.modals.reconnecting": "Поново се повезујем на ваш пад..",
|
||||
"pad.modals.forcereconnect": "Присилно се поново повежи",
|
||||
"pad.modals.reconnecttimer": "Покушавам се поново повезати",
|
||||
"pad.modals.cancel": "Откажи",
|
||||
"pad.modals.userdup": "Отворено у другом прозору",
|
||||
"pad.modals.userdup.explanation": "Изгледа да је овај пад отворен у два или више прозора на овом рачунару.",
|
||||
"pad.modals.userdup.advice": "Поново се повежите на овој прозор.",
|
||||
|
@ -80,24 +84,24 @@
|
|||
"pad.modals.disconnected": "Веза је прекинута.",
|
||||
"pad.modals.disconnected.explanation": "Изгубљена је веза са сервером",
|
||||
"pad.modals.disconnected.cause": "Сервер није доступан. Обавестите сервисног администратора ако се ово настави дешавати.",
|
||||
"pad.share": "Дели овај пад",
|
||||
"pad.share": "Пофели овај пад",
|
||||
"pad.share.readonly": "Само за читање",
|
||||
"pad.share.link": "Веза",
|
||||
"pad.share.emebdcode": "Угради везу",
|
||||
"pad.chat": "Ћаскање",
|
||||
"pad.chat.title": "Отворите ћаскање за овај пад.",
|
||||
"pad.chat.loadmessages": "Учитајте више порука.",
|
||||
"pad.chat.loadmessages": "Учитај више порука",
|
||||
"timeslider.pageTitle": "{{appTitle}} временска линија",
|
||||
"timeslider.toolbar.returnbutton": "Врати се на пад",
|
||||
"timeslider.toolbar.authors": "Аутори:",
|
||||
"timeslider.toolbar.authorsList": "Нема аутора",
|
||||
"timeslider.toolbar.exportlink.title": "Извези",
|
||||
"timeslider.exportCurrent": "Извези тренутну верзију као:",
|
||||
"timeslider.version": "Верзија {{version}}",
|
||||
"timeslider.version": "Издање {{version}}",
|
||||
"timeslider.saved": "Сачувано на {{day}}. {{month}}. {{year}}",
|
||||
"timeslider.playPause": "Пусти/паузирај садржај пада",
|
||||
"timeslider.backRevision": "Иди на претходну верзију овог пада",
|
||||
"timeslider.forwardRevision": "Иди на следећу верзију овог пада",
|
||||
"timeslider.forwardRevision": "Иди на следеће издање пада",
|
||||
"timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "јануар",
|
||||
"timeslider.month.february": "фебруар",
|
||||
|
@ -112,21 +116,21 @@
|
|||
"timeslider.month.november": "новембар",
|
||||
"timeslider.month.december": "децембар",
|
||||
"timeslider.unnamedauthors": "{{num}} неименован(и) {[plural(num) one: аутор, other: аутори ]}",
|
||||
"pad.savedrevs.marked": "Ова верзија је сада означена као сачувана",
|
||||
"pad.savedrevs.marked": "Ова измена је сада означена као сачувана",
|
||||
"pad.savedrevs.timeslider": "Можете видети сачуване измене користећи се временском линијом",
|
||||
"pad.userlist.entername": "Упишите своје име",
|
||||
"pad.userlist.unnamed": "нема имена",
|
||||
"pad.userlist.unnamed": "неименован",
|
||||
"pad.userlist.guest": "Гост",
|
||||
"pad.userlist.deny": "Одбиј",
|
||||
"pad.userlist.approve": "одобрено",
|
||||
"pad.userlist.approve": "Одобри",
|
||||
"pad.editbar.clearcolors": "Очисти ауторске боје за цели документ?",
|
||||
"pad.impexp.importbutton": "Увези одмах",
|
||||
"pad.impexp.importing": "Увожење...",
|
||||
"pad.impexp.importing": "Увозим...",
|
||||
"pad.impexp.confirmimport": "Увоз датотеке ће преписати тренутни текст пада. Да ли сте сигурни да желите наставити?",
|
||||
"pad.impexp.convertFailed": "Не можемо увести ову датотеку. Молимо да користите други формат документа или да документ копирате ручно",
|
||||
"pad.impexp.padHasData": "Не можемо да увеземо ову датотеку зато што је већ било промена на овом паду, молимо да увезете нови пад",
|
||||
"pad.impexp.uploadFailed": "Отпремање није успело, молимо да покушате поново",
|
||||
"pad.impexp.importfailed": "Увоз неуспешан",
|
||||
"pad.impexp.copypaste": "Молимо да ручно копирате",
|
||||
"pad.impexp.convertFailed": "Не могу да увезем ову датотеку. Молимо да користите други формат документа или да документ копирате ручно",
|
||||
"pad.impexp.padHasData": "Не могу да увезем ову датотеку зато што је већ било промена на овом паду, молимо да увезете нови пад",
|
||||
"pad.impexp.uploadFailed": "Нисам успео да отпремим, молимо покушате поново",
|
||||
"pad.impexp.importfailed": "Нисам успео да увезем",
|
||||
"pad.impexp.copypaste": "Копирајте и залепите",
|
||||
"pad.impexp.exportdisabled": "Извоз у формату {{type}} није дозвољен. Контактирајте системског администратора за детаље."
|
||||
}
|
||||
|
|
|
@ -54,10 +54,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "Du kan endast importera från oformaterad text eller HTML-format. För mer avancerade importeringsfunktioner, var god <a 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\">installera abiword</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Du kan endast importera från oformaterad text eller HTML-format. För mer avancerade importfunktioner, var god <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installera AbiWord</a>.",
|
||||
"pad.modals.connected": "Ansluten.",
|
||||
"pad.modals.reconnecting": "Återansluter till ditt block...",
|
||||
"pad.modals.forcereconnect": "Tvinga återanslutning",
|
||||
"pad.modals.reconnecttimer": "Försöker ansluta igen",
|
||||
"pad.modals.cancel": "Avbryt",
|
||||
"pad.modals.userdup": "Öppnades i ett nytt fönster",
|
||||
"pad.modals.userdup.explanation": "Detta block verkar vara öppet i mer än ett fönster på denna dator.",
|
||||
"pad.modals.userdup.advice": "Återanslut för att använda detta fönster istället.",
|
||||
|
|
77
src/locales/ta.json
Normal file
77
src/locales/ta.json
Normal file
|
@ -0,0 +1,77 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Balajijagadesh",
|
||||
"ElangoRamanujam",
|
||||
"Sank"
|
||||
]
|
||||
},
|
||||
"index.newPad": "புதிய அட்டை",
|
||||
"index.createOpenPad": "அல்லது பெயருடன் ஒரு அட்டையை உருவாக்கு/திற",
|
||||
"pad.toolbar.bold.title": "தடித்த (Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "சாய்ந்த (Ctrl+l)",
|
||||
"pad.toolbar.underline.title": "அடிக்கோடு (Ctrl-U)",
|
||||
"pad.toolbar.strikethrough.title": "குறுக்குக்கோடு (Ctrl+5)",
|
||||
"pad.toolbar.timeslider.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.chatandusers": "அரட்டை மற்றும் பயனர்களை காட்டுக",
|
||||
"pad.settings.colorcheck": "ஆசிரியர் நிறங்கள்",
|
||||
"pad.settings.linenocheck": "வரி எண்கள்",
|
||||
"pad.settings.fontType": "எழுத்துரு வகை:",
|
||||
"pad.settings.globalView": "உலக பார்வை",
|
||||
"pad.settings.language": "மொழி:",
|
||||
"pad.importExport.import_export": "இறக்குமதி/ஏற்றுமதி",
|
||||
"pad.importExport.importSuccessful": "வெற்றி!",
|
||||
"pad.modals.connected": "இணைக்கப்பட்டது.",
|
||||
"pad.modals.initsocketfail": "வழங்கியை தொடர்பு கொள்ளமுடியவில்லை",
|
||||
"pad.modals.deleted": "நீக்கப்பட்டது",
|
||||
"pad.modals.deleted.explanation": "இந்த அட்டை நீக்கப்பட்டது.",
|
||||
"pad.modals.disconnected": "தாங்கள் துண்டிக்கப்பட்டுள்ளீர்கள்",
|
||||
"pad.modals.disconnected.explanation": "வழங்கியின் தொடர்பு தொலைந்து",
|
||||
"pad.share": "இவ்வட்டையை பகிர்க",
|
||||
"pad.share.readonly": "வாசிக்க மாத்திரம்",
|
||||
"pad.share.link": "இணைப்பு",
|
||||
"pad.share.emebdcode": "உரலியை பதிக",
|
||||
"pad.chat": "அரட்டை",
|
||||
"pad.chat.title": "இவ்வட்டைக்கு அரட்டையை திறக்கவும்",
|
||||
"pad.chat.loadmessages": "மேலும் தகவல்களை பதிவேற்றவும்",
|
||||
"timeslider.pageTitle": "{{appTitle}} நேரவழுக்கி",
|
||||
"timeslider.toolbar.returnbutton": "அட்டைக்கு திரும்பவும்",
|
||||
"timeslider.toolbar.authors": "ஆசிரியர்கள்:",
|
||||
"timeslider.toolbar.authorsList": "ஆசிரியர்கள் இல்லை",
|
||||
"timeslider.toolbar.exportlink.title": "ஏற்றுமதி செய்க",
|
||||
"timeslider.version": "பதிப்பு {{version}}",
|
||||
"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": "படியெடுத்து ஒட்டுக"
|
||||
}
|
48
src/locales/tcy.json
Normal file
48
src/locales/tcy.json
Normal file
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"BHARATHESHA ALASANDEMAJALU",
|
||||
"VASANTH S.N."
|
||||
]
|
||||
},
|
||||
"index.newPad": "ಪೊಸ ಪ್ಯಾಡ್",
|
||||
"index.createOpenPad": "ಅತಂಡ ಈ ಪುದರ್ತ ಪ್ಯಾಡನ್ನು ಉಂಡು ಮನ್ಪು/ತೋಜಾಲ:",
|
||||
"pad.toolbar.bold.title": "ದಪ್ಪೊ(Ctrl+B)",
|
||||
"pad.toolbar.italic.title": "ಓರೆ (Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "ಅಡಿಗೆರೆ(Ctrl-U)",
|
||||
"pad.toolbar.indent.title": "Indent (TAB)",
|
||||
"pad.toolbar.undo.title": "ಪಿರವುತ(Ctrl+Z)",
|
||||
"pad.toolbar.redo.title": "ದುಂಬುತ್ತ(Ctrl+Y)",
|
||||
"pad.toolbar.settings.title": "ಸಂಯೋಜನೆಲು",
|
||||
"pad.toolbar.showusers.title": "ಈ ಪ್ಯಾಡ್ ಟ್ ಗಲಸುನಾಯಾನ್ ತೋಜಾಲೆ",
|
||||
"pad.colorpicker.save": "ಒರಿಪಾಲೆ",
|
||||
"pad.colorpicker.cancel": "ವಜಾ ಮಲ್ಪುಲೆ",
|
||||
"pad.loading": "ದಿಂಜಾವೊಂದುಂಡು......",
|
||||
"pad.wrongPassword": "ಇರೇನಾ ಪಾಸ್ ವರ್ಡ್ ತಪ್ಪತುಂಡ್",
|
||||
"pad.settings.padSettings": "ಪ್ಯಾಡ್ ಸಂಯೋಜನೆ",
|
||||
"pad.settings.language": "ಬಾಸೆ:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.modals.connected": "ನೆಟ್ ವರ್ಕ್ ತಿಕೊಂತುಂಡು.",
|
||||
"pad.modals.cancel": "ವಜಾ ಮಲ್ಪುಲೆ",
|
||||
"pad.modals.deleted": "ಮಾಜಾಯಿನ.",
|
||||
"pad.share.readonly": "ಓದ್ಯರಾ ಮಾತ್ರ",
|
||||
"pad.share.link": "ಕೊಂಡಿಲು",
|
||||
"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.approve": "ಒಪ್ಪಂದ ಅಂಡ್"
|
||||
}
|
|
@ -14,7 +14,7 @@
|
|||
"pad.toolbar.bold.title": "మందం",
|
||||
"pad.toolbar.italic.title": "వాలు అక్షరాలు",
|
||||
"pad.toolbar.underline.title": "క్రిందగీత",
|
||||
"pad.toolbar.strikethrough.title": "కొట్టివేత",
|
||||
"pad.toolbar.strikethrough.title": "కొట్టివేత (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "నిర్ధేశింపబడిన జాబితా",
|
||||
"pad.toolbar.ul.title": "అనిర్దేశిత జాబితా, ( క్రమపద్ధతి లేని జాబితా )",
|
||||
"pad.toolbar.undo.title": "చేయవద్దు",
|
||||
|
|
129
src/locales/th.json
Normal file
129
src/locales/th.json
Normal file
|
@ -0,0 +1,129 @@
|
|||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Aefgh39622"
|
||||
]
|
||||
},
|
||||
"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": "ขีดทับ (Ctrl+5)",
|
||||
"pad.toolbar.ol.title": "รายการที่เรียงลำดับ (Ctrl+Shift+N)",
|
||||
"pad.toolbar.ul.title": "รายการที่ไม่เรียงลำดับ (Ctrl+Shift+L)",
|
||||
"pad.toolbar.indent.title": "เยื้องเข้า (TAB)",
|
||||
"pad.toolbar.unindent.title": "เยื้องออก (Shift+TAB)",
|
||||
"pad.toolbar.undo.title": "เลิกทำ (Ctrl+Z)",
|
||||
"pad.toolbar.redo.title": "ทำซ้ำ (Ctrl+Y)",
|
||||
"pad.toolbar.clearAuthorship.title": "ลบสีผู้เขียน (Ctrl+Shift+C)",
|
||||
"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.noCookie": "ไม่พบคุกกี้ โปรดเปิดใช้งานคุกกี้ในเบราว์เซอร์ของคุณ!",
|
||||
"pad.passwordRequired": "คุณต้องใช้รหัสผ่านเพื่อเข้าถึงแผ่นจดบันทึกนี้",
|
||||
"pad.permissionDenied": "คุณไม่มีสิทธิ์เข้าถึงแผ่นจดบันทึกนี้",
|
||||
"pad.wrongPassword": "รหัสผ่านของคุณผิด",
|
||||
"pad.settings.padSettings": "การตั้งค่าแผ่นจดบันทึก",
|
||||
"pad.settings.myView": "มุมมองของฉัน",
|
||||
"pad.settings.stickychat": "แสดงการแชทบนหน้าจอเสมอ",
|
||||
"pad.settings.chatandusers": "แสดงการแชทและผู้ใช้",
|
||||
"pad.settings.colorcheck": "สีผู้เขียน",
|
||||
"pad.settings.linenocheck": "เลขบรรทัด",
|
||||
"pad.settings.rtlcheck": "อ่านเนื้อหาจากขวาไปซ้ายหรือไม่?",
|
||||
"pad.settings.fontType": "ชนิดแบบอักษร:",
|
||||
"pad.settings.globalView": "มุมมองสากล",
|
||||
"pad.settings.language": "ภาษา:",
|
||||
"pad.importExport.import_export": "นำเข้า/ส่งออก",
|
||||
"pad.importExport.import": "อัปโหลดไฟล์ข้อความหรือเอกสารใดๆ",
|
||||
"pad.importExport.importSuccessful": "สำเร็จ!",
|
||||
"pad.importExport.export": "ส่งออกแผ่นจดบันทึกปัจจุบันเป็น:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "ข้อความธรรมดา",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Open Document Format)",
|
||||
"pad.importExport.abiword.innerHTML": "คุณสามารถนำเข้าได้จากรูปแบบ HTML หรือข้อความธรรมดาเท่านั้น สำหรับคุณสมบัติการนำเข้าขั้นสูงเพิ่มเติม โปรด<a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">ติดตั้ง AbiWord</a>",
|
||||
"pad.modals.connected": "เชื่อมต่อแล้ว",
|
||||
"pad.modals.reconnecting": "กำลังเชื่อมต่อกับแผ่นจดบันทึกของคุณใหม่..",
|
||||
"pad.modals.forcereconnect": "บังคับเชื่อมต่อใหม่",
|
||||
"pad.modals.reconnecttimer": "กำลังพยายามเชื่อมต่อใหม่ใน",
|
||||
"pad.modals.cancel": "ยกเลิก",
|
||||
"pad.modals.userdup": "เปิดในหน้าต่างอื่นแล้ว",
|
||||
"pad.modals.userdup.explanation": "แผ่นจดบันทึกนี้ดูเหมือนว่าจะถูกเปิดในหน้าต่างเบราว์เซอร์มากกว่าหนึ่งหน้าต่างบนคอมพิวเตอร์นี้",
|
||||
"pad.modals.userdup.advice": "เชื่อมต่อใหม่เพื่อใช้หน้าต่างนี้แทน",
|
||||
"pad.modals.unauth": "ไม่ได้รับอนุญาต",
|
||||
"pad.modals.unauth.explanation": "สิทธิของคุณถูกเปลี่ยนขณะที่คุณดูหน้านี้อยู่ พยายามเชื่อมต่อใหม่",
|
||||
"pad.modals.looping.explanation": "มีปัญหาการสื่อสารกับเซิร์ฟเวอร์การซิงค์ข้อมูล",
|
||||
"pad.modals.looping.cause": "บางทีอาจเป็นเพราะคุณเชื่อมต่อกับไฟร์วอลล์หรือพร็อกซีที่เข้ากันไม่ได้",
|
||||
"pad.modals.initsocketfail": "เซิร์ฟเวอร์ไม่สามารถเข้าถึงได้",
|
||||
"pad.modals.initsocketfail.explanation": "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์การซิงค์ข้อมูล",
|
||||
"pad.modals.initsocketfail.cause": "อาจเป็นเนื่องจากเบราว์เซอร์ของคุณหรือการเชื่อมต่ออินเทอร์เน็ตของคุณมีปัญหา",
|
||||
"pad.modals.slowcommit.explanation": "เซิร์ฟเวอร์ไม่ตอบสนอง",
|
||||
"pad.modals.slowcommit.cause": "อาจเป็นเนื่องจากปัญหาเกี่ยวกับการเชื่อมต่อเครือข่าย",
|
||||
"pad.modals.badChangeset.explanation": "การแก้ไขที่คุณกระทำถูกจัดว่าไม่เหมาะสมโดยเซิร์ฟเวอร์การซิงค์ข้อมูล",
|
||||
"pad.modals.badChangeset.cause": "อาจเป็นเนื่องจากการกำหนดค่าเซิร์ฟเวอร์ไม่ถูกต้องหรือมีลักษณะการทำงานอื่นๆ บางอย่างที่ไม่คาดคิด โปรดติดต่อผู้ดูแลการให้บริการ ถ้าคุณรู้สึกว่านี่คือข้อผิดพลาด โปรดทำการเชื่อมต่อใหม่อีกครั้งเพื่อทำการแก้ไขต่อไป",
|
||||
"pad.modals.corruptPad.explanation": "แผ่นจดบันทึกที่คุณกำลังพยายามเข้าถึงเสียหาย",
|
||||
"pad.modals.corruptPad.cause": "อาจเป็นเนื่องจากการกำหนดค่าเซิร์ฟเวอร์ไม่ถูกต้องหรือมีลักษณะการทำงานอื่นๆ บางอย่างที่ไม่คาดคิด โปรดติดต่อผู้ดูแลการให้บริการ",
|
||||
"pad.modals.deleted": "ลบแล้ว",
|
||||
"pad.modals.deleted.explanation": "แผ่นจดบันทึกนี้ได้ถูกลบออกแล้ว",
|
||||
"pad.modals.disconnected": "คุณได้ตัดการเชื่อมต่อแล้ว",
|
||||
"pad.modals.disconnected.explanation": "การเชื่อมต่อกับเซิร์ฟเวอร์ถูกตัด",
|
||||
"pad.modals.disconnected.cause": "เซิร์ฟเวอร์อาจใช้ไม่ได้ชั่วคราว โปรดแจ้งให้ผู้ดูแลการให้บริการทราบถ้าปัญหานี้ยังคงเกิดขึ้น",
|
||||
"pad.share": "แชร์แผ่นจดบันทึกนี้",
|
||||
"pad.share.readonly": "อ่านเท่านั้น",
|
||||
"pad.share.link": "ลิงก์",
|
||||
"pad.share.emebdcode": "URL แบบฝังตัว",
|
||||
"pad.chat": "แชท",
|
||||
"pad.chat.title": "เปิดการแชทสำหรับแผ่นจดบันทึกนี้",
|
||||
"pad.chat.loadmessages": "โหลดข้อความเพิ่มเติม",
|
||||
"timeslider.pageTitle": "ตัวเลื่อนเวลา {{appTitle}}",
|
||||
"timeslider.toolbar.returnbutton": "กลับไปแผ่นจดบันทึก",
|
||||
"timeslider.toolbar.authors": "ผู้เขียน:",
|
||||
"timeslider.toolbar.authorsList": "ไม่มีผู้เขียน",
|
||||
"timeslider.toolbar.exportlink.title": "ส่งออก",
|
||||
"timeslider.exportCurrent": "ส่งออกรุ่นปัจจุบันเป็น:",
|
||||
"timeslider.version": "รุ่น {{version}}",
|
||||
"timeslider.saved": "บันทึกแล้วเมื่อ {{day}} {{month}} {{year}}",
|
||||
"timeslider.playPause": "เล่น / พักเนื้อหาแผ่นจดบันทึก",
|
||||
"timeslider.backRevision": "กลับไปรุ่นแก้ไขเก่าของแผ่นจดบันทึกนี้",
|
||||
"timeslider.forwardRevision": "ไปยังรุ่นแก้ไขใหม่ของแผ่นจดบันทึกนี้",
|
||||
"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": "ธันวาคม",
|
||||
"timeslider.unnamedauthors": "{{num}} ผู้เขียนที่ไม่มีชื่อ",
|
||||
"pad.savedrevs.marked": "รุ่นแก้ไขนี้ถูกทำเครื่องหมายเป็นรุ่นแก้ไขที่บันทึกแล้ว",
|
||||
"pad.savedrevs.timeslider": "คุณสามารถดูรุ่นแก้ไขที่บันทึกแล้วโดยเยี่ยมชมตัวเลื่อนเวลา",
|
||||
"pad.userlist.entername": "กรอกชื่อของคุณ",
|
||||
"pad.userlist.unnamed": "ไม่มีชื่อ",
|
||||
"pad.userlist.guest": "ผู้เยี่ยมชม",
|
||||
"pad.userlist.deny": "ปฏิเสธ",
|
||||
"pad.userlist.approve": "อนุมัติ",
|
||||
"pad.editbar.clearcolors": "ล้างสีผู้เขียนบนทั้งเอกสารหรือไม่?",
|
||||
"pad.impexp.importbutton": "นำเข้าเดี๋ยวนี้",
|
||||
"pad.impexp.importing": "กำลังนำเข้า...",
|
||||
"pad.impexp.confirmimport": "การนำเข้าไฟล์จะเป็นการเขียนทับข้อความปัจจุบันบนแผ่นจดบันทึก คุณแน่ใจหรือว่าคุณต้องการดำเนินการต่อ?",
|
||||
"pad.impexp.convertFailed": "เราไม่สามารถนำเข้าไฟล์นี้ได้ โปรดใช้รูปแบบเอกสารอื่นหรือคัดลอกแล้ววางด้วยตนเอง",
|
||||
"pad.impexp.padHasData": "เราไม่สามารถนำเข้าไฟล์นี้ได้เนื่องจากแผ่นจดบันทึกนี้มีการเปลี่ยนแปลงอยู่แล้ว โปรดนำเข้าไปแผ่นจดบันทึกใหม่แทน",
|
||||
"pad.impexp.uploadFailed": "การอัปโหลดล้มเหลว โปรดลองอีกครั้ง",
|
||||
"pad.impexp.importfailed": "การนำเข้าล้มเหลว",
|
||||
"pad.impexp.copypaste": "โปรดคัดลอกแล้ววาง",
|
||||
"pad.impexp.exportdisabled": "การส่งออกเป็นรูปแบบ {{type}} ถูกปิดใช้งาน โปรดติดต่อผู้ดูแลระบบของคุณสำหรับรายละเอียดเพิ่มเติม"
|
||||
}
|
|
@ -6,7 +6,8 @@
|
|||
"Joseph",
|
||||
"Meelo",
|
||||
"Trockya",
|
||||
"McAang"
|
||||
"McAang",
|
||||
"Vito Genovese"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Yeni Bloknot",
|
||||
|
@ -37,7 +38,7 @@
|
|||
"pad.wrongPassword": "Parolanız yanlış",
|
||||
"pad.settings.padSettings": "Bloknot Ayarları",
|
||||
"pad.settings.myView": "Görünümüm",
|
||||
"pad.settings.stickychat": "Ekranda her zaman sohbet edin",
|
||||
"pad.settings.stickychat": "Sohbeti her zaman ekranda yap",
|
||||
"pad.settings.chatandusers": "Sohbeti ve Kullanıcıları Göster",
|
||||
"pad.settings.colorcheck": "Yazarlık renkleri",
|
||||
"pad.settings.linenocheck": "Satır numaraları",
|
||||
|
@ -57,10 +58,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF (Açık Doküman Biçimi)",
|
||||
"pad.importExport.abiword.innerHTML": "Yalnızca düz metin ya da HTML biçimlerini içe aktarabilirsiniz. Daha fazla gelişmiş içe aktarım özellikleri için <a 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\">AbiWord'ü yükleyin</a>.",
|
||||
"pad.importExport.abiword.innerHTML": "Yalnızca düz metin ya da HTML biçimlerini içe aktarabilirsiniz. Daha fazla gelişmiş içe aktarım özellikleri için lütfen <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord'ü yükleyin</a>.",
|
||||
"pad.modals.connected": "Bağlandı.",
|
||||
"pad.modals.reconnecting": "Bloknotunuza tekrar bağlanılıyor...",
|
||||
"pad.modals.forcereconnect": "Yeniden bağlanmaya zorla",
|
||||
"pad.modals.reconnecttimer": "Yeniden bağlanmaya çalışılıyor",
|
||||
"pad.modals.cancel": "İptal",
|
||||
"pad.modals.userdup": "Başka pencerede açıldı",
|
||||
"pad.modals.userdup.explanation": "Bu bloknot bu bilgisayarda birden fazla tarayıcı penceresinde açılmış gibi görünüyor.",
|
||||
"pad.modals.userdup.advice": "Bu pencereden kullanmak için yeniden bağlanın.",
|
||||
|
@ -100,7 +103,7 @@
|
|||
"timeslider.playPause": "Bloknot İçeriğini Oynat / Durdur",
|
||||
"timeslider.backRevision": "Bu bloknottaki bir revizyona geri git",
|
||||
"timeslider.forwardRevision": "Bu bloknatta sonraki revizyona git",
|
||||
"timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}.{{minutes}}.{{seconds}}",
|
||||
"timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "Ocak",
|
||||
"timeslider.month.february": "Şubat",
|
||||
"timeslider.month.march": "Mart",
|
||||
|
@ -113,11 +116,11 @@
|
|||
"timeslider.month.october": "Ekim",
|
||||
"timeslider.month.november": "Kasım",
|
||||
"timeslider.month.december": "Aralık",
|
||||
"timeslider.unnamedauthors": "{{num}} adsız {[plural(num) one: yazar, other: yazar ]}",
|
||||
"timeslider.unnamedauthors": "{{num}} isimsiz {[plural(num) one: yazar, other: yazar ]}",
|
||||
"pad.savedrevs.marked": "Bu düzenleme artık kayıtlı bir düzeltme olarak işaretlendi",
|
||||
"pad.savedrevs.timeslider": "Zaman kaydırıcısını ziyaret ederek kaydedilen revizyonları görebilirsiniz",
|
||||
"pad.userlist.entername": "Adınızı girin",
|
||||
"pad.userlist.unnamed": "Adlandırılmamış",
|
||||
"pad.userlist.unnamed": "isimsiz",
|
||||
"pad.userlist.guest": "Misafir",
|
||||
"pad.userlist.deny": "Reddet",
|
||||
"pad.userlist.approve": "Onayla",
|
||||
|
|
|
@ -7,7 +7,9 @@
|
|||
"Steve.rusyn",
|
||||
"SteveR",
|
||||
"Lxlalexlxl",
|
||||
"Григорій Пугач"
|
||||
"Григорій Пугач",
|
||||
"Bunyk",
|
||||
"Piramidion"
|
||||
]
|
||||
},
|
||||
"index.newPad": "Створити",
|
||||
|
@ -62,6 +64,8 @@
|
|||
"pad.modals.connected": "З'єднано.",
|
||||
"pad.modals.reconnecting": "Перепідлючення до Вашого документу..",
|
||||
"pad.modals.forcereconnect": "Примусове перепідключення",
|
||||
"pad.modals.reconnecttimer": "Триває спроба відновлення з'єднання",
|
||||
"pad.modals.cancel": "Скасувати",
|
||||
"pad.modals.userdup": "Відкрито в іншому вікні",
|
||||
"pad.modals.userdup.explanation": "Документ, можливо, відкрито більш ніж в одному вікні браузера на цьому комп'ютері.",
|
||||
"pad.modals.userdup.advice": "Перепідключитись використовуючи це вікно.",
|
||||
|
|
|
@ -62,10 +62,12 @@
|
|||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF(开放文档格式)",
|
||||
"pad.importExport.abiword.innerHTML": "您只能导入纯文本或HTML格式。<a 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\">安裝abiword</a>取得更多高级的导入功能。",
|
||||
"pad.importExport.abiword.innerHTML": "您只可以导入纯文本或HTML格式。要获取更高级的导入功能,请<a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">安装AbiWord</a>。",
|
||||
"pad.modals.connected": "已连接。",
|
||||
"pad.modals.reconnecting": "重新连接到您的记事本...",
|
||||
"pad.modals.forcereconnect": "强制重新连接",
|
||||
"pad.modals.reconnecttimer": "尝试重新连入",
|
||||
"pad.modals.cancel": "取消",
|
||||
"pad.modals.userdup": "在另一个窗口中打开",
|
||||
"pad.modals.userdup.explanation": "此记事本似乎在本电脑上的多个浏览器窗口中打开。",
|
||||
"pad.modals.userdup.advice": "重新连接,使用此窗口。",
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
"Kly"
|
||||
]
|
||||
},
|
||||
"index.newPad": "新Pad",
|
||||
"index.createOpenPad": "或創建/開啟以下名稱的pad:",
|
||||
"index.newPad": "新記事本",
|
||||
"index.createOpenPad": "或創建/開啟以下名稱的記事本:",
|
||||
"pad.toolbar.bold.title": "粗體(Ctrl-B)",
|
||||
"pad.toolbar.italic.title": "斜體(Ctrl-I)",
|
||||
"pad.toolbar.underline.title": "底線(Ctrl-U)",
|
||||
|
@ -28,16 +28,16 @@
|
|||
"pad.toolbar.timeslider.title": "時間軸",
|
||||
"pad.toolbar.savedRevision.title": "儲存修訂",
|
||||
"pad.toolbar.settings.title": "設定",
|
||||
"pad.toolbar.embed.title": "分享和嵌入此pad",
|
||||
"pad.toolbar.showusers.title": "顯示此 pad 的使用者",
|
||||
"pad.toolbar.embed.title": "分享和嵌入此記事本",
|
||||
"pad.toolbar.showusers.title": "顯示此記事本的使用者",
|
||||
"pad.colorpicker.save": "儲存",
|
||||
"pad.colorpicker.cancel": "取消",
|
||||
"pad.loading": "載入中...",
|
||||
"pad.noCookie": "找不到 Cookie。請讓你的瀏覽器允許 Cookie!",
|
||||
"pad.passwordRequired": "您需要密碼才能訪問這個pad",
|
||||
"pad.permissionDenied": "你沒有訪問這個pad的權限",
|
||||
"pad.passwordRequired": "您需要密碼才能訪問這個記事本",
|
||||
"pad.permissionDenied": "你沒有訪問這個記事本的權限",
|
||||
"pad.wrongPassword": "密碼錯誤",
|
||||
"pad.settings.padSettings": "Pad設定",
|
||||
"pad.settings.padSettings": "記事本設定",
|
||||
"pad.settings.myView": "我的視窗",
|
||||
"pad.settings.stickychat": "永遠在屏幕上顯示聊天",
|
||||
"pad.settings.chatandusers": "顯示聊天與使用者",
|
||||
|
@ -52,19 +52,21 @@
|
|||
"pad.importExport.import_export": "匯入/匯出",
|
||||
"pad.importExport.import": "上載任何文字檔或文件",
|
||||
"pad.importExport.importSuccessful": "完成!",
|
||||
"pad.importExport.export": "匯出當前pad為:",
|
||||
"pad.importExport.export": "匯出目前的記事本為:",
|
||||
"pad.importExport.exportetherpad": "Etherpad",
|
||||
"pad.importExport.exporthtml": "HTML",
|
||||
"pad.importExport.exportplain": "純文字",
|
||||
"pad.importExport.exportword": "Microsoft Word",
|
||||
"pad.importExport.exportpdf": "PDF",
|
||||
"pad.importExport.exportopen": "ODF(開放文件格式)",
|
||||
"pad.importExport.abiword.innerHTML": "您只可以純文字或html格式檔匯入。<a 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\">安裝abiword</a>取得更多進階的匯入功能。",
|
||||
"pad.importExport.abiword.innerHTML": "您只可以純文字或 HTML 格式檔匯入。<a href=\"ttps://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">安裝\n AbiWord </a>取得更多進階的匯入功能。",
|
||||
"pad.modals.connected": "已連線。",
|
||||
"pad.modals.reconnecting": "重新連接到您的pad...",
|
||||
"pad.modals.reconnecting": "重新連接到您的記事本...",
|
||||
"pad.modals.forcereconnect": "強制重新連線",
|
||||
"pad.modals.reconnecttimer": "嘗試重新連接在",
|
||||
"pad.modals.cancel": "取消",
|
||||
"pad.modals.userdup": "在另一個視窗中開啟",
|
||||
"pad.modals.userdup.explanation": "此pad似乎在此電腦上的多個瀏覽器視窗中開啟。",
|
||||
"pad.modals.userdup.explanation": "此記事本似乎在此電腦上的多個瀏覽器視窗中開啟。",
|
||||
"pad.modals.userdup.advice": "重新連接到此視窗。",
|
||||
"pad.modals.unauth": "未授權",
|
||||
"pad.modals.unauth.explanation": "您的權限在查看此頁時發生更改。請嘗試重新連接。",
|
||||
|
@ -77,40 +79,40 @@
|
|||
"pad.modals.slowcommit.cause": "這可能是因為網路連線問題所造成。",
|
||||
"pad.modals.badChangeset.explanation": "您的一個編輯被同步伺服器類為非法。",
|
||||
"pad.modals.badChangeset.cause": "這可能由於伺服器的配置錯誤或遇到意外問題。若您認為這是錯誤,請聯繫伺服器管理員。如要繼續編輯,請嘗試重新連接。",
|
||||
"pad.modals.corruptPad.explanation": "您試圖存取的平板已損壞。",
|
||||
"pad.modals.corruptPad.explanation": "您試圖存取的記事本已損壞。",
|
||||
"pad.modals.corruptPad.cause": "這可能由於伺服器的配置錯誤或遇到意外問題。請聯繫伺服器管理員。",
|
||||
"pad.modals.deleted": "已刪除。",
|
||||
"pad.modals.deleted.explanation": "此pad已被移除。",
|
||||
"pad.modals.deleted.explanation": "此記事本已被移除。",
|
||||
"pad.modals.disconnected": "您已中斷連線。",
|
||||
"pad.modals.disconnected.explanation": "伺服器連接曾中斷",
|
||||
"pad.modals.disconnected.cause": "伺服器可能無法使用。若此情況持續發生,請通知伺服器管理員。",
|
||||
"pad.share": "分享此pad",
|
||||
"pad.share": "分享此記事本",
|
||||
"pad.share.readonly": "唯讀",
|
||||
"pad.share.link": "連結",
|
||||
"pad.share.emebdcode": "嵌入網址",
|
||||
"pad.chat": "聊天功能",
|
||||
"pad.chat.title": "打開pad聊天功能",
|
||||
"pad.chat.title": "打開記事本聊天功能",
|
||||
"pad.chat.loadmessages": "載入更多訊息",
|
||||
"timeslider.pageTitle": "{{appTitle}}時間軸",
|
||||
"timeslider.toolbar.returnbutton": "返回到pad",
|
||||
"timeslider.toolbar.returnbutton": "返回到記事本",
|
||||
"timeslider.toolbar.authors": "協作者:",
|
||||
"timeslider.toolbar.authorsList": "無協作者",
|
||||
"timeslider.toolbar.exportlink.title": "匯出",
|
||||
"timeslider.exportCurrent": "匯出當前版本為:",
|
||||
"timeslider.version": "版本{{version}}",
|
||||
"timeslider.saved": "{{year}}年{{month}}{{day}}日儲存",
|
||||
"timeslider.playPause": "放送 / 暫停Pad內容",
|
||||
"timeslider.backRevision": "返回此Pad的前一次修訂",
|
||||
"timeslider.forwardRevision": "前往此Pad的前一次修訂",
|
||||
"timeslider.playPause": "放送 / 暫停記事本內容",
|
||||
"timeslider.backRevision": "返回此記事本的前一次修訂",
|
||||
"timeslider.forwardRevision": "前往此記事本的前一次修訂",
|
||||
"timeslider.dateformat": "{{year}}年{{month}}月{{day}}日 {{hours}}:{{minutes}}:{{seconds}}",
|
||||
"timeslider.month.january": "1月",
|
||||
"timeslider.month.february": "二月",
|
||||
"timeslider.month.february": "2月",
|
||||
"timeslider.month.march": "3月",
|
||||
"timeslider.month.april": "4月",
|
||||
"timeslider.month.may": "5月",
|
||||
"timeslider.month.june": "6月",
|
||||
"timeslider.month.july": "7月",
|
||||
"timeslider.month.august": "八月",
|
||||
"timeslider.month.august": "8月",
|
||||
"timeslider.month.september": "9月",
|
||||
"timeslider.month.october": "10月",
|
||||
"timeslider.month.november": "11月",
|
||||
|
@ -126,9 +128,9 @@
|
|||
"pad.editbar.clearcolors": "清除整個文檔的協作者顏色區別嗎?",
|
||||
"pad.impexp.importbutton": "現在匯入",
|
||||
"pad.impexp.importing": "匯入中...",
|
||||
"pad.impexp.confirmimport": "匯入的檔案將會覆蓋pad內目前的文字。您確定要繼續嗎?",
|
||||
"pad.impexp.confirmimport": "匯入的檔案將會覆蓋記事本內目前的文字。您確定要繼續嗎?",
|
||||
"pad.impexp.convertFailed": "未能匯入此檔案。請以其他檔案格式或手動複製貼上匯入。",
|
||||
"pad.impexp.padHasData": "此Pad已異動過所以無法匯入該檔案,請匯入至另一個Pad試試。",
|
||||
"pad.impexp.padHasData": "此記事本已異動過所以無法匯入該檔案,請匯入至另一個記事本試試。",
|
||||
"pad.impexp.uploadFailed": "上載失敗,請重試",
|
||||
"pad.impexp.importfailed": "匯入失敗",
|
||||
"pad.impexp.copypaste": "請複製貼上",
|
||||
|
|
|
@ -592,6 +592,11 @@ Pad.prototype.copy = function copy(destinationID, force, callback) {
|
|||
setTimeout(function(){
|
||||
padManager.getPad(destinationID, null, callback) // this runs too early.
|
||||
},10);
|
||||
},
|
||||
// let the plugins know the pad was copied
|
||||
function(callback) {
|
||||
hooks.callAll('padCopy', { 'originalPad': _this, 'destinationID': destinationID });
|
||||
callback();
|
||||
}
|
||||
// series
|
||||
], function(err)
|
||||
|
|
|
@ -31,7 +31,7 @@ var authLogger = log4js.getLogger("auth");
|
|||
/**
|
||||
* This function controlls the access to a pad, it checks if the user can access a pad.
|
||||
* @param padID the pad the user wants to access
|
||||
* @param sesssionID the session the user has (set via api)
|
||||
* @param sessionCookie the session the user has (set via api)
|
||||
* @param token the token of the author (randomly generated at client side, used for public pads)
|
||||
* @param password the password the user has given to access this pad, can be null
|
||||
* @param callback will be called with (err, {accessStatus: grant|deny|wrongPassword|needPassword, authorID: a.xxxxxx})
|
||||
|
|
|
@ -56,10 +56,14 @@ exports.doImport = function(req, res, padId)
|
|||
, pad
|
||||
, text
|
||||
, importHandledByPlugin
|
||||
, directDatabaseAccess;
|
||||
, directDatabaseAccess
|
||||
, useAbiword;
|
||||
|
||||
var randNum = Math.floor(Math.random()*0xFFFFFFFF);
|
||||
|
||||
// setting flag for whether to use abiword or not
|
||||
useAbiword = (abiword != null);
|
||||
|
||||
async.series([
|
||||
//save the uploaded file to /tmp
|
||||
function(callback) {
|
||||
|
@ -147,9 +151,9 @@ exports.doImport = function(req, res, padId)
|
|||
var fileEnding = path.extname(srcFile).toLowerCase();
|
||||
var fileIsHTML = (fileEnding === ".html" || fileEnding === ".htm");
|
||||
var fileIsTXT = (fileEnding === ".txt");
|
||||
if (fileIsTXT) abiword = false; // Don't use abiword for text files
|
||||
if (fileIsTXT) useAbiword = false; // Don't use abiword for text files
|
||||
// See https://github.com/ether/etherpad-lite/issues/2572
|
||||
if (abiword && !fileIsHTML) {
|
||||
if (useAbiword && !fileIsHTML) {
|
||||
abiword.convertFile(srcFile, destFile, "htm", function(err) {
|
||||
//catch convert errors
|
||||
if(err) {
|
||||
|
@ -169,7 +173,7 @@ exports.doImport = function(req, res, padId)
|
|||
},
|
||||
|
||||
function(callback) {
|
||||
if (!abiword && !directDatabaseAccess){
|
||||
if (!useAbiword && !directDatabaseAccess){
|
||||
// Read the file with no encoding for raw buffer access.
|
||||
fs.readFile(destFile, function(err, buf) {
|
||||
if (err) throw err;
|
||||
|
@ -228,7 +232,7 @@ exports.doImport = function(req, res, padId)
|
|||
function(callback) {
|
||||
if(!directDatabaseAccess){
|
||||
var fileEnding = path.extname(srcFile).toLowerCase();
|
||||
if (importHandledByPlugin || abiword || fileEnding == ".htm" || fileEnding == ".html") {
|
||||
if (importHandledByPlugin || useAbiword || fileEnding == ".htm" || fileEnding == ".html") {
|
||||
importHtml.setPadHTML(pad, text, function(e){
|
||||
if(e) apiLogger.warn("Error importing, possibly caused by malformed HTML");
|
||||
});
|
||||
|
|
|
@ -936,7 +936,7 @@ function handleSwitchToPad(client, message)
|
|||
var currentSession = sessioninfos[client.id];
|
||||
var padId = currentSession.padId;
|
||||
var roomClients = _getRoomClients(padId);
|
||||
|
||||
|
||||
async.forEach(roomClients, function(client, callback) {
|
||||
var sinfo = sessioninfos[client.id];
|
||||
if(sinfo && sinfo.author == currentSession.author) {
|
||||
|
@ -1115,7 +1115,7 @@ function handleClientReady(client, message)
|
|||
|
||||
//Check if this author is already on the pad, if yes, kick the other sessions!
|
||||
var roomClients = _getRoomClients(pad.id);
|
||||
|
||||
|
||||
async.forEach(roomClients, function(client, callback) {
|
||||
var sinfo = sessioninfos[client.id];
|
||||
if(sinfo && sinfo.author == author) {
|
||||
|
@ -1176,6 +1176,7 @@ function handleClientReady(client, message)
|
|||
"accountPrivs": {
|
||||
"maxRevisions": 100
|
||||
},
|
||||
"automaticReconnectionTimeout": settings.automaticReconnectionTimeout,
|
||||
"initialRevisionList": [],
|
||||
"initialOptions": {
|
||||
"guestPolicy": "deny"
|
||||
|
@ -1196,6 +1197,7 @@ function handleClientReady(client, message)
|
|||
"userColor": authorColorId,
|
||||
"padId": message.padId,
|
||||
"padOptions": settings.padOptions,
|
||||
"padShortcutEnabled": settings.padShortcutEnabled,
|
||||
"initialTitle": "Pad: " + message.padId,
|
||||
"opts": {},
|
||||
// tell the client the number of the latest chat-message, which will be
|
||||
|
@ -1214,6 +1216,15 @@ function handleClientReady(client, message)
|
|||
"parts": plugins.parts,
|
||||
},
|
||||
"indentationOnNewLine": settings.indentationOnNewLine,
|
||||
"scrollWhenFocusLineIsOutOfViewport": {
|
||||
"percentage" : {
|
||||
"editionAboveViewport": settings.scrollWhenFocusLineIsOutOfViewport.percentage.editionAboveViewport,
|
||||
"editionBelowViewport": settings.scrollWhenFocusLineIsOutOfViewport.percentage.editionBelowViewport,
|
||||
},
|
||||
"duration": settings.scrollWhenFocusLineIsOutOfViewport.duration,
|
||||
"scrollWhenCaretIsInTheLastLineOfViewport": settings.scrollWhenFocusLineIsOutOfViewport.scrollWhenCaretIsInTheLastLineOfViewport,
|
||||
"percentageToScrollWhenUserPressesArrowUp": settings.scrollWhenFocusLineIsOutOfViewport.percentageToScrollWhenUserPressesArrowUp,
|
||||
},
|
||||
"initialChangesets": [] // FIXME: REMOVE THIS SHIT
|
||||
}
|
||||
|
||||
|
@ -1676,13 +1687,13 @@ function composePadChangesets(padId, startNum, endNum, callback)
|
|||
|
||||
function _getRoomClients(padID) {
|
||||
var roomClients = []; var room = socketio.sockets.adapter.rooms[padID];
|
||||
|
||||
|
||||
if (room) {
|
||||
for (var id in room.sockets) {
|
||||
roomClients.push(socketio.sockets.sockets[id]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return roomClients;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ var apiLogger = log4js.getLogger("API");
|
|||
var clientLogger = log4js.getLogger("client");
|
||||
var formidable = require('formidable');
|
||||
var apiHandler = require('../../handler/APIHandler');
|
||||
var isVarName = require('is-var-name');
|
||||
|
||||
//This is for making an api call, collecting all post information and passing it to the apiHandler
|
||||
var apiCaller = function(req, res, fields) {
|
||||
|
@ -18,7 +19,7 @@ var apiCaller = function(req, res, fields) {
|
|||
apiLogger.info("RESPONSE, " + req.params.func + ", " + response);
|
||||
|
||||
//is this a jsonp call, if yes, add the function call
|
||||
if(req.query.jsonp)
|
||||
if(req.query.jsonp && isVarName(response))
|
||||
response = req.query.jsonp + "(" + response + ")";
|
||||
|
||||
res._____send(response);
|
||||
|
|
|
@ -49,5 +49,8 @@ exports.expressCreateServer = function (hook_name, args, cb) {
|
|||
//sigint is so far not working on windows
|
||||
//https://github.com/joyent/node/issues/1553
|
||||
process.on('SIGINT', exports.gracefulShutdown);
|
||||
// when running as PID1 (e.g. in docker container)
|
||||
// allow graceful shutdown on SIGTERM c.f. #3265
|
||||
process.on('SIGTERM', exports.gracefulShutdown);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -116,7 +116,7 @@ exports.expressConfigure = function (hook_name, args, cb) {
|
|||
|
||||
if (!exports.sessionStore) {
|
||||
exports.sessionStore = new ueberStore();
|
||||
exports.secret = settings.sessionKey; // Isn't this being reset each time the server spawns?
|
||||
exports.secret = settings.sessionKey;
|
||||
}
|
||||
|
||||
args.app.sessionStore = exports.sessionStore;
|
||||
|
|
|
@ -34,5 +34,10 @@ for ( var i = 0; i < argv.length; i++ ) {
|
|||
exports.argv.settings = arg;
|
||||
}
|
||||
|
||||
// Override location of credentials.json file
|
||||
if ( prevArg == '--credentials' ) {
|
||||
exports.argv.credentials = arg;
|
||||
}
|
||||
|
||||
prevArg = arg;
|
||||
}
|
||||
|
|
|
@ -23,9 +23,9 @@ var ERR = require("async-stacktrace");
|
|||
var settings = require('./Settings');
|
||||
var async = require('async');
|
||||
var fs = require('fs');
|
||||
var StringDecoder = require('string_decoder').StringDecoder;
|
||||
var CleanCSS = require('clean-css');
|
||||
var jsp = require("uglify-js").parser;
|
||||
var pro = require("uglify-js").uglify;
|
||||
var uglifyJS = require("uglify-js");
|
||||
var path = require('path');
|
||||
var plugins = require("ep_etherpad-lite/static/js/pluginfw/plugins");
|
||||
var RequireKernel = require('etherpad-require-kernel');
|
||||
|
@ -400,10 +400,10 @@ function getFile(filename, callback) {
|
|||
|
||||
function compressJS(content)
|
||||
{
|
||||
var ast = jsp.parse(content); // parse code and get the initial AST
|
||||
ast = pro.ast_mangle(ast); // get a new AST with mangled names
|
||||
ast = pro.ast_squeeze(ast); // get an AST with compression optimizations
|
||||
return pro.gen_code(ast); // compressed code here
|
||||
var decoder = new StringDecoder('utf8');
|
||||
var code = decoder.write(content); // convert from buffer to string
|
||||
var codeMinified = uglifyJS.minify(code, {fromString: true}).code;
|
||||
return codeMinified;
|
||||
}
|
||||
|
||||
function compressCSS(filename, content, callback)
|
||||
|
|
|
@ -100,7 +100,35 @@ exports.padOptions = {
|
|||
"alwaysShowChat": false,
|
||||
"chatAndUsers": false,
|
||||
"lang": "en-gb"
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Whether certain shortcut keys are enabled for a user in the pad
|
||||
*/
|
||||
exports.padShortcutEnabled = {
|
||||
"altF9" : true,
|
||||
"altC" : true,
|
||||
"delete" : true,
|
||||
"cmdShift2" : true,
|
||||
"return" : true,
|
||||
"esc" : true,
|
||||
"cmdS" : true,
|
||||
"tab" : true,
|
||||
"cmdZ" : true,
|
||||
"cmdY" : true,
|
||||
"cmdB" : true,
|
||||
"cmdI" : true,
|
||||
"cmdU" : true,
|
||||
"cmd5" : true,
|
||||
"cmdShiftL" : true,
|
||||
"cmdShiftN" : true,
|
||||
"cmdShift1" : true,
|
||||
"cmdShiftC" : true,
|
||||
"cmdH" : true,
|
||||
"ctrlHome" : true,
|
||||
"pageUp" : true,
|
||||
"pageDown" : true,
|
||||
},
|
||||
|
||||
/**
|
||||
* The toolbar buttons and order.
|
||||
|
@ -177,6 +205,11 @@ exports.loglevel = "INFO";
|
|||
*/
|
||||
exports.disableIPlogging = false;
|
||||
|
||||
/**
|
||||
* Number of seconds to automatically reconnect pad
|
||||
*/
|
||||
exports.automaticReconnectionTimeout = 0;
|
||||
|
||||
/**
|
||||
* Disable Load Testing
|
||||
*/
|
||||
|
@ -214,6 +247,33 @@ exports.users = {};
|
|||
*/
|
||||
exports.showSettingsInAdminPage = true;
|
||||
|
||||
/*
|
||||
* By default, when caret is moved out of viewport, it scrolls the minimum height needed to make this
|
||||
* line visible.
|
||||
*/
|
||||
exports.scrollWhenFocusLineIsOutOfViewport = {
|
||||
/*
|
||||
* Percentage of viewport height to be additionally scrolled.
|
||||
*/
|
||||
"percentage": {
|
||||
"editionAboveViewport": 0,
|
||||
"editionBelowViewport": 0
|
||||
},
|
||||
/*
|
||||
* Time (in milliseconds) used to animate the scroll transition. Set to 0 to disable animation
|
||||
*/
|
||||
"duration": 0,
|
||||
/*
|
||||
* Flag to control if it should scroll when user places the caret in the last line of the viewport
|
||||
*/
|
||||
/*
|
||||
* Percentage of viewport height to be additionally scrolled when user presses arrow up
|
||||
* in the line of the top of the viewport.
|
||||
*/
|
||||
"percentageToScrollWhenUserPressesArrowUp": 0,
|
||||
"scrollWhenCaretIsInTheLastLineOfViewport": false
|
||||
};
|
||||
|
||||
//checks if abiword is avaiable
|
||||
exports.abiwordAvailable = function()
|
||||
{
|
||||
|
|
|
@ -13,10 +13,10 @@
|
|||
],
|
||||
"dependencies" : {
|
||||
"etherpad-yajsml" : "0.0.2",
|
||||
"request" : "2.55.0",
|
||||
"request" : "2.83.0",
|
||||
"etherpad-require-kernel" : "1.0.9",
|
||||
"resolve" : "1.1.7",
|
||||
"socket.io" : "1.6.0",
|
||||
"socket.io" : "1.7.3",
|
||||
"ueberdb2" : "git+https://github.com/tiblu/ueberDB#master",
|
||||
"express" : "4.13.4",
|
||||
"express-session" : "1.13.0",
|
||||
|
@ -29,7 +29,7 @@
|
|||
"cheerio" : "0.20.0",
|
||||
"async-stacktrace" : "0.0.2",
|
||||
"npm" : "4.0.2",
|
||||
"ejs" : "2.4.1",
|
||||
"ejs" : "2.5.7",
|
||||
"graceful-fs" : "4.1.3",
|
||||
"slide" : "1.1.6",
|
||||
"semver" : "5.1.0",
|
||||
|
@ -43,7 +43,8 @@
|
|||
"jsonminify" : "0.4.1",
|
||||
"measured" : "1.1.0",
|
||||
"mocha" : "2.4.5",
|
||||
"supertest" : "1.2.0"
|
||||
"supertest" : "1.2.0",
|
||||
"is-var-name" : "1.0.0"
|
||||
},
|
||||
"bin": { "etherpad-lite": "./node/server.js" },
|
||||
"devDependencies": {
|
||||
|
@ -55,6 +56,6 @@
|
|||
"repository" : { "type" : "git",
|
||||
"url" : "http://github.com/ether/etherpad-lite.git"
|
||||
},
|
||||
"version" : "1.6.1",
|
||||
"version" : "1.6.3",
|
||||
"license" : "Apache-2.0"
|
||||
}
|
||||
|
|
|
@ -517,6 +517,23 @@ table#otheruserstable {
|
|||
display: block;
|
||||
}
|
||||
|
||||
/* styles for the automatic reconnection timer: */
|
||||
#connectivity .visible.with_reconnect_timer button,
|
||||
#connectivity .visible.with_reconnect_timer .reconnecttimer * {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#connectivity .with_reconnect_timer .hidden,
|
||||
#connectivity .with_reconnect_timer #defaulttext.hidden,
|
||||
#connectivity .with_reconnect_timer button.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#connectivity .with_reconnect_timer #cancelreconnect {
|
||||
margin-left: 10px;
|
||||
}
|
||||
/* end of styles for the automatic reconnection timer */
|
||||
|
||||
#reconnect_form button {
|
||||
font-size: 12pt;
|
||||
padding: 5px;
|
||||
|
@ -1255,11 +1272,41 @@ input[type=checkbox] {
|
|||
}
|
||||
/* End of gritter stuff */
|
||||
|
||||
/* Montserrat Font */
|
||||
@font-face {
|
||||
font-family: "Montserrat";
|
||||
src: url("../../static/font/Montserrat-Light.otf") format("opentype");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Montserrat";
|
||||
src: url("../../static/font/Montserrat-Regular.otf") format("opentype");
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
/* End of Monterrat Font */
|
||||
|
||||
@font-face {
|
||||
font-family: opendyslexic;
|
||||
src: url("../../static/font/opendyslexic.otf") format("opentype");
|
||||
}
|
||||
|
||||
/* Roboto Mono */
|
||||
@font-face {
|
||||
font-family: "RobotoMono";
|
||||
src: url("../../static/font/RobotoMono-Regular.ttf") format("truetype");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "RobotoMono";
|
||||
src: url("../../static/font/RobotoMono-Bold.ttf") format("truetype");
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
/* End of Roboto Mono */
|
||||
|
||||
@font-face {
|
||||
font-family: "fontawesome-etherpad";
|
||||
src:url("../../static/font/fontawesome-etherpad.eot");
|
||||
|
@ -1304,5 +1351,3 @@ input[type=checkbox] {
|
|||
.hideControlsEditbar{
|
||||
display:none !important;
|
||||
}
|
||||
|
||||
|
||||
|
|
BIN
src/static/font/Montserrat-Light.otf
Executable file
BIN
src/static/font/Montserrat-Light.otf
Executable file
Binary file not shown.
BIN
src/static/font/Montserrat-Regular.otf
Executable file
BIN
src/static/font/Montserrat-Regular.otf
Executable file
Binary file not shown.
BIN
src/static/font/RobotoMono-Bold.ttf
Executable file
BIN
src/static/font/RobotoMono-Bold.ttf
Executable file
Binary file not shown.
BIN
src/static/font/RobotoMono-Regular.ttf
Executable file
BIN
src/static/font/RobotoMono-Regular.ttf
Executable file
Binary file not shown.
|
@ -400,7 +400,19 @@ AttributeManager.prototype = _(AttributeManager.prototype).extend({
|
|||
this.removeAttributeOnLine(lineNum, attributeName) :
|
||||
this.setAttributeOnLine(lineNum, attributeName, attributeValue);
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
hasAttributeOnSelectionOrCaretPosition: function(attributeName) {
|
||||
var hasSelection = ((this.rep.selStart[0] !== this.rep.selEnd[0]) || (this.rep.selEnd[1] !== this.rep.selStart[1]));
|
||||
var hasAttrib;
|
||||
if (hasSelection) {
|
||||
hasAttrib = this.getAttributeOnSelection(attributeName);
|
||||
}else {
|
||||
var attributesOnCaretPosition = this.getAttributesOnCaret();
|
||||
hasAttrib = _.contains(_.flatten(attributesOnCaretPosition), attributeName);
|
||||
}
|
||||
return hasAttrib;
|
||||
},
|
||||
});
|
||||
|
||||
module.exports = AttributeManager;
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
var _, $, jQuery, plugins, Ace2Common;
|
||||
|
||||
var browser = require('./browser');
|
||||
if(browser.msie){
|
||||
// Honestly fuck IE royally.
|
||||
|
@ -61,6 +60,7 @@ function Ace2Inner(){
|
|||
var SkipList = require('./skiplist');
|
||||
var undoModule = require('./undomodule').undoModule;
|
||||
var AttributeManager = require('./AttributeManager');
|
||||
var Scroll = require('./scroll');
|
||||
|
||||
var DEBUG = false; //$$ build script replaces the string "var DEBUG=true;//$$" with "var DEBUG=false;"
|
||||
// changed to false
|
||||
|
@ -75,6 +75,9 @@ function Ace2Inner(){
|
|||
var EDIT_BODY_PADDING_TOP = 8;
|
||||
var EDIT_BODY_PADDING_LEFT = 8;
|
||||
|
||||
var FORMATTING_STYLES = ['bold', 'italic', 'underline', 'strikethrough'];
|
||||
var SELECT_BUTTON_CLASS = 'selected';
|
||||
|
||||
var caughtErrors = [];
|
||||
|
||||
var thisAuthor = '';
|
||||
|
@ -82,6 +85,7 @@ function Ace2Inner(){
|
|||
var disposed = false;
|
||||
var editorInfo = parent.editorInfo;
|
||||
|
||||
|
||||
var iframe = window.frameElement;
|
||||
var outerWin = iframe.ace_outerWin;
|
||||
iframe.ace_outerWin = null; // prevent IE 6 memory leak
|
||||
|
@ -89,6 +93,8 @@ function Ace2Inner(){
|
|||
var lineMetricsDiv = sideDiv.nextSibling;
|
||||
initLineNumbers();
|
||||
|
||||
var scroll = Scroll.init(outerWin);
|
||||
|
||||
var outsideKeyDown = noop;
|
||||
|
||||
var outsideKeyPress = function(){return true;};
|
||||
|
@ -424,7 +430,7 @@ function Ace2Inner(){
|
|||
var undoWorked = false;
|
||||
try
|
||||
{
|
||||
if (evt.eventType == "setup" || evt.eventType == "importText" || evt.eventType == "setBaseText")
|
||||
if (isPadLoading(evt.eventType))
|
||||
{
|
||||
undoModule.clearHistory();
|
||||
}
|
||||
|
@ -1208,7 +1214,7 @@ function Ace2Inner(){
|
|||
updateLineNumbers(); // update line numbers if any time left
|
||||
if (isTimeUp()) return;
|
||||
|
||||
var visibleRange = getVisibleCharRange();
|
||||
var visibleRange = scroll.getVisibleCharRange(rep);
|
||||
var docRange = [0, rep.lines.totalWidth()];
|
||||
//console.log("%o %o", docRange, visibleRange);
|
||||
finishedImportantWork = true;
|
||||
|
@ -1670,7 +1676,7 @@ function Ace2Inner(){
|
|||
});
|
||||
|
||||
//p.mark("relex");
|
||||
//rep.lexer.lexCharRange(getVisibleCharRange(), function() { return false; });
|
||||
//rep.lexer.lexCharRange(scroll.getVisibleCharRange(rep), function() { return false; });
|
||||
//var isTimeUp = newTimeLimit(100);
|
||||
// do DOM inserts
|
||||
p.mark("insert");
|
||||
|
@ -1782,9 +1788,9 @@ function Ace2Inner(){
|
|||
return !!STYLE_ATTRIBS[aname];
|
||||
}
|
||||
|
||||
function isIncorpedAttribute(aname)
|
||||
function isOtherIncorpedAttribute(aname)
|
||||
{
|
||||
return ( !! STYLE_ATTRIBS[aname]) || ( !! OTHER_INCORPED_ATTRIBS[aname]);
|
||||
return !!OTHER_INCORPED_ATTRIBS[aname];
|
||||
}
|
||||
|
||||
function insertDomLines(nodeToAddAfter, infoStructs, isTimeUp)
|
||||
|
@ -2469,17 +2475,11 @@ function Ace2Inner(){
|
|||
}
|
||||
}
|
||||
|
||||
if (selectionAllHasIt)
|
||||
{
|
||||
documentAttributeManager.setAttributesOnRange(rep.selStart, rep.selEnd, [
|
||||
[attributeName, '']
|
||||
]);
|
||||
}
|
||||
else
|
||||
{
|
||||
documentAttributeManager.setAttributesOnRange(rep.selStart, rep.selEnd, [
|
||||
[attributeName, 'true']
|
||||
]);
|
||||
|
||||
var attributeValue = selectionAllHasIt ? '' : 'true';
|
||||
documentAttributeManager.setAttributesOnRange(rep.selStart, rep.selEnd, [[attributeName, attributeValue]]);
|
||||
if (attribIsFormattingStyle(attributeName)) {
|
||||
updateStyleButtonState(attributeName, !selectionAllHasIt); // italic, bold, ...
|
||||
}
|
||||
}
|
||||
editorInfo.ace_toggleAttributeOnSelection = toggleAttributeOnSelection;
|
||||
|
@ -2526,7 +2526,6 @@ function Ace2Inner(){
|
|||
|
||||
function doIncorpLineSplice(startLine, deleteCount, newLineEntries, lineAttribs, hints)
|
||||
{
|
||||
|
||||
var startOldChar = rep.lines.offsetOfIndex(startLine);
|
||||
var endOldChar = rep.lines.offsetOfIndex(startLine + deleteCount);
|
||||
|
||||
|
@ -2760,7 +2759,7 @@ function Ace2Inner(){
|
|||
{
|
||||
function incorpedAttribFilter(anum)
|
||||
{
|
||||
return isStyleAttribute(rep.apool.getAttribKey(anum));
|
||||
return !isOtherIncorpedAttribute(rep.apool.getAttribKey(anum));
|
||||
}
|
||||
|
||||
function attribRuns(attribs)
|
||||
|
@ -2909,12 +2908,24 @@ function Ace2Inner(){
|
|||
rep.selFocusAtStart = newSelFocusAtStart;
|
||||
currentCallStack.repChanged = true;
|
||||
|
||||
// select the formatting buttons when there is the style applied on selection
|
||||
selectFormattingButtonIfLineHasStyleApplied(rep);
|
||||
|
||||
hooks.callAll('aceSelectionChanged', {
|
||||
rep: rep,
|
||||
callstack: currentCallStack,
|
||||
documentAttributeManager: documentAttributeManager,
|
||||
});
|
||||
|
||||
// we scroll when user places the caret at the last line of the pad
|
||||
// when this settings is enabled
|
||||
var docTextChanged = currentCallStack.docTextChanged;
|
||||
if(!docTextChanged){
|
||||
var isScrollableEvent = !isPadLoading(currentCallStack.type) && isScrollableEditEvent(currentCallStack.type);
|
||||
var innerHeight = getInnerHeight();
|
||||
scroll.scrollWhenCaretIsInTheLastLineOfViewportWhenNecessary(rep, isScrollableEvent, innerHeight);
|
||||
}
|
||||
|
||||
return true;
|
||||
//console.log("selStart: %o, selEnd: %o, focusAtStart: %s", rep.selStart, rep.selEnd,
|
||||
//String(!!rep.selFocusAtStart));
|
||||
|
@ -2923,6 +2934,27 @@ function Ace2Inner(){
|
|||
//console.log("%o %o %s", rep.selStart, rep.selEnd, rep.selFocusAtStart);
|
||||
}
|
||||
|
||||
function isPadLoading(eventType)
|
||||
{
|
||||
return (eventType === 'setup') || (eventType === 'setBaseText') || (eventType === 'importText');
|
||||
}
|
||||
|
||||
function updateStyleButtonState(attribName, hasStyleOnRepSelection) {
|
||||
var $formattingButton = parent.parent.$('[data-key="' + attribName + '"]').find('a');
|
||||
$formattingButton.toggleClass(SELECT_BUTTON_CLASS, hasStyleOnRepSelection);
|
||||
}
|
||||
|
||||
function attribIsFormattingStyle(attributeName) {
|
||||
return _.contains(FORMATTING_STYLES, attributeName);
|
||||
}
|
||||
|
||||
function selectFormattingButtonIfLineHasStyleApplied (rep) {
|
||||
_.each(FORMATTING_STYLES, function (style) {
|
||||
var hasStyleOnRepSelection = documentAttributeManager.hasAttributeOnSelectionOrCaretPosition(style);
|
||||
updateStyleButtonState(style, hasStyleOnRepSelection);
|
||||
})
|
||||
}
|
||||
|
||||
function doCreateDomLine(nonEmpty)
|
||||
{
|
||||
if (browser.msie && (!nonEmpty))
|
||||
|
@ -3278,50 +3310,36 @@ function Ace2Inner(){
|
|||
return false;
|
||||
}
|
||||
|
||||
function getLineEntryTopBottom(entry, destObj)
|
||||
{
|
||||
var dom = entry.lineNode;
|
||||
var top = dom.offsetTop;
|
||||
var height = dom.offsetHeight;
|
||||
var obj = (destObj || {});
|
||||
obj.top = top;
|
||||
obj.bottom = (top + height);
|
||||
return obj;
|
||||
}
|
||||
|
||||
function getViewPortTopBottom()
|
||||
{
|
||||
var theTop = getScrollY();
|
||||
var theTop = scroll.getScrollY();
|
||||
var doc = outerWin.document;
|
||||
var height = doc.documentElement.clientHeight;
|
||||
var height = doc.documentElement.clientHeight; // includes padding
|
||||
|
||||
// we have to get the exactly height of the viewport. So it has to subtract all the values which changes
|
||||
// the viewport height (E.g. padding, position top)
|
||||
var viewportExtraSpacesAndPosition = getEditorPositionTop() + getPaddingTopAddedWhenPageViewIsEnable();
|
||||
return {
|
||||
top: theTop,
|
||||
bottom: (theTop + height)
|
||||
bottom: (theTop + height - viewportExtraSpacesAndPosition)
|
||||
};
|
||||
}
|
||||
|
||||
function getVisibleLineRange()
|
||||
|
||||
function getEditorPositionTop()
|
||||
{
|
||||
var viewport = getViewPortTopBottom();
|
||||
//console.log("viewport top/bottom: %o", viewport);
|
||||
var obj = {};
|
||||
var start = rep.lines.search(function(e)
|
||||
{
|
||||
return getLineEntryTopBottom(e, obj).bottom > viewport.top;
|
||||
});
|
||||
var end = rep.lines.search(function(e)
|
||||
{
|
||||
return getLineEntryTopBottom(e, obj).top >= viewport.bottom;
|
||||
});
|
||||
if (end < start) end = start; // unlikely
|
||||
//console.log(start+","+end);
|
||||
return [start, end];
|
||||
var editor = parent.document.getElementsByTagName('iframe');
|
||||
var editorPositionTop = editor[0].offsetTop;
|
||||
return editorPositionTop;
|
||||
}
|
||||
|
||||
function getVisibleCharRange()
|
||||
// ep_page_view adds padding-top, which makes the viewport smaller
|
||||
function getPaddingTopAddedWhenPageViewIsEnable()
|
||||
{
|
||||
var lineRange = getVisibleLineRange();
|
||||
return [rep.lines.offsetOfIndex(lineRange[0]), rep.lines.offsetOfIndex(lineRange[1])];
|
||||
var rootDocument = parent.parent.document;
|
||||
var aceOuter = rootDocument.getElementsByName("ace_outer");
|
||||
var aceOuterPaddingTop = parseInt($(aceOuter).css("padding-top"));
|
||||
return aceOuterPaddingTop;
|
||||
}
|
||||
|
||||
function handleCut(evt)
|
||||
|
@ -3368,7 +3386,12 @@ function Ace2Inner(){
|
|||
evt.preventDefault();
|
||||
}
|
||||
}
|
||||
//hide the dropdownso
|
||||
|
||||
hideEditBarDropdowns();
|
||||
}
|
||||
|
||||
function hideEditBarDropdowns()
|
||||
{
|
||||
if(window.parent.parent.padeditbar){ // required in case its in an iframe should probably use parent.. See Issue 327 https://github.com/ether/etherpad-lite/issues/327
|
||||
window.parent.parent.padeditbar.toggleDropDown("none");
|
||||
}
|
||||
|
@ -3724,7 +3747,8 @@ function Ace2Inner(){
|
|||
specialHandled = _.contains(specialHandledInHook, true);
|
||||
}
|
||||
|
||||
if ((!specialHandled) && altKey && isTypeForSpecialKey && keyCode == 120){
|
||||
var padShortcutEnabled = parent.parent.clientVars.padShortcutEnabled;
|
||||
if ((!specialHandled) && altKey && isTypeForSpecialKey && keyCode == 120 && padShortcutEnabled.altF9){
|
||||
// Alt F9 focuses on the File Menu and/or editbar.
|
||||
// Note that while most editors use Alt F10 this is not desirable
|
||||
// As ubuntu cannot use Alt F10....
|
||||
|
@ -3734,14 +3758,14 @@ function Ace2Inner(){
|
|||
firstEditbarElement.focus();
|
||||
evt.preventDefault();
|
||||
}
|
||||
if ((!specialHandled) && altKey && keyCode == 67 && type === "keydown"){
|
||||
if ((!specialHandled) && altKey && keyCode == 67 && type === "keydown" && padShortcutEnabled.altC){
|
||||
// Alt c focuses on the Chat window
|
||||
$(this).blur();
|
||||
parent.parent.chat.show();
|
||||
parent.parent.$("#chatinput").focus();
|
||||
evt.preventDefault();
|
||||
}
|
||||
if ((!specialHandled) && evt.ctrlKey && shiftKey && keyCode == 50 && type === "keydown"){
|
||||
if ((!specialHandled) && evt.ctrlKey && shiftKey && keyCode == 50 && type === "keydown" && padShortcutEnabled.cmdShift2){
|
||||
// Control-Shift-2 shows a gritter popup showing a line author
|
||||
var lineNumber = rep.selEnd[0];
|
||||
var alineAttrs = rep.alines[lineNumber];
|
||||
|
@ -3819,7 +3843,7 @@ function Ace2Inner(){
|
|||
time: '4000'
|
||||
});
|
||||
}
|
||||
if ((!specialHandled) && isTypeForSpecialKey && keyCode == 8)
|
||||
if ((!specialHandled) && isTypeForSpecialKey && keyCode == 8 && padShortcutEnabled.delete)
|
||||
{
|
||||
// "delete" key; in mozilla, if we're at the beginning of a line, normalize now,
|
||||
// or else deleting a blank line can take two delete presses.
|
||||
|
@ -3833,7 +3857,7 @@ function Ace2Inner(){
|
|||
doDeleteKey(evt);
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForSpecialKey && keyCode == 13)
|
||||
if ((!specialHandled) && isTypeForSpecialKey && keyCode == 13 && padShortcutEnabled.return)
|
||||
{
|
||||
// return key, handle specially;
|
||||
// note that in mozilla we need to do an incorporation for proper return behavior anyway.
|
||||
|
@ -3847,7 +3871,7 @@ function Ace2Inner(){
|
|||
}, 0);
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForSpecialKey && keyCode == 27)
|
||||
if ((!specialHandled) && isTypeForSpecialKey && keyCode == 27 && padShortcutEnabled.esc)
|
||||
{
|
||||
// prevent esc key;
|
||||
// in mozilla versions 14-19 avoid reconnecting pad.
|
||||
|
@ -3856,7 +3880,7 @@ function Ace2Inner(){
|
|||
evt.preventDefault();
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "s" && (evt.metaKey || evt.ctrlKey) && !evt.altKey) /* Do a saved revision on ctrl S */
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "s" && (evt.metaKey || evt.ctrlKey) && !evt.altKey && padShortcutEnabled.cmdS) /* Do a saved revision on ctrl S */
|
||||
{
|
||||
evt.preventDefault();
|
||||
var originalBackground = parent.parent.$('#revisionlink').css("background")
|
||||
|
@ -3867,7 +3891,7 @@ function Ace2Inner(){
|
|||
parent.parent.pad.collabClient.sendMessage({"type":"SAVE_REVISION"}); /* The parent.parent part of this is BAD and I feel bad.. It may break something */
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForSpecialKey && keyCode == 9 && !(evt.metaKey || evt.ctrlKey))
|
||||
if ((!specialHandled) && isTypeForSpecialKey && keyCode == 9 && !(evt.metaKey || evt.ctrlKey) && padShortcutEnabled.tab)
|
||||
{
|
||||
// tab
|
||||
fastIncorp(5);
|
||||
|
@ -3876,7 +3900,7 @@ function Ace2Inner(){
|
|||
//scrollSelectionIntoView();
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "z" && (evt.metaKey || evt.ctrlKey) && !evt.altKey)
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "z" && (evt.metaKey || evt.ctrlKey) && !evt.altKey && padShortcutEnabled.cmdZ)
|
||||
{
|
||||
// cmd-Z (undo)
|
||||
fastIncorp(6);
|
||||
|
@ -3891,7 +3915,7 @@ function Ace2Inner(){
|
|||
}
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "y" && (evt.metaKey || evt.ctrlKey))
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "y" && (evt.metaKey || evt.ctrlKey) && padShortcutEnabled.cmdY)
|
||||
{
|
||||
// cmd-Y (redo)
|
||||
fastIncorp(10);
|
||||
|
@ -3899,7 +3923,7 @@ function Ace2Inner(){
|
|||
doUndoRedo("redo");
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "b" && (evt.metaKey || evt.ctrlKey))
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "b" && (evt.metaKey || evt.ctrlKey) && padShortcutEnabled.cmdB)
|
||||
{
|
||||
// cmd-B (bold)
|
||||
fastIncorp(13);
|
||||
|
@ -3907,7 +3931,7 @@ function Ace2Inner(){
|
|||
toggleAttributeOnSelection('bold');
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "i" && (evt.metaKey || evt.ctrlKey))
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "i" && (evt.metaKey || evt.ctrlKey) && padShortcutEnabled.cmdI)
|
||||
{
|
||||
// cmd-I (italic)
|
||||
fastIncorp(14);
|
||||
|
@ -3915,7 +3939,7 @@ function Ace2Inner(){
|
|||
toggleAttributeOnSelection('italic');
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "u" && (evt.metaKey || evt.ctrlKey))
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "u" && (evt.metaKey || evt.ctrlKey) && padShortcutEnabled.cmdU)
|
||||
{
|
||||
// cmd-U (underline)
|
||||
fastIncorp(15);
|
||||
|
@ -3923,7 +3947,7 @@ function Ace2Inner(){
|
|||
toggleAttributeOnSelection('underline');
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "5" && (evt.metaKey || evt.ctrlKey) && evt.altKey !== true)
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "5" && (evt.metaKey || evt.ctrlKey) && evt.altKey !== true && padShortcutEnabled.cmd5)
|
||||
{
|
||||
// cmd-5 (strikethrough)
|
||||
fastIncorp(13);
|
||||
|
@ -3931,7 +3955,7 @@ function Ace2Inner(){
|
|||
toggleAttributeOnSelection('strikethrough');
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "l" && (evt.metaKey || evt.ctrlKey) && evt.shiftKey)
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "l" && (evt.metaKey || evt.ctrlKey) && evt.shiftKey && padShortcutEnabled.cmdShiftL)
|
||||
{
|
||||
// cmd-shift-L (unorderedlist)
|
||||
fastIncorp(9);
|
||||
|
@ -3939,21 +3963,21 @@ function Ace2Inner(){
|
|||
doInsertUnorderedList()
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && (String.fromCharCode(which).toLowerCase() == "n" || String.fromCharCode(which) == 1) && (evt.metaKey || evt.ctrlKey) && evt.shiftKey)
|
||||
if ((!specialHandled) && isTypeForCmdKey && ((String.fromCharCode(which).toLowerCase() == "n" && padShortcutEnabled.cmdShiftN) || (String.fromCharCode(which) == 1 && padShortcutEnabled.cmdShift1)) && (evt.metaKey || evt.ctrlKey) && evt.shiftKey)
|
||||
{
|
||||
// cmd-shift-N (orderedlist)
|
||||
// cmd-shift-N and cmd-shift-1 (orderedlist)
|
||||
fastIncorp(9);
|
||||
evt.preventDefault();
|
||||
doInsertOrderedList()
|
||||
specialHandled = true;
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "c" && (evt.metaKey || evt.ctrlKey) && evt.shiftKey) {
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "c" && (evt.metaKey || evt.ctrlKey) && evt.shiftKey && padShortcutEnabled.cmdShiftC) {
|
||||
// cmd-shift-C (clearauthorship)
|
||||
fastIncorp(9);
|
||||
evt.preventDefault();
|
||||
CMDS.clearauthorship();
|
||||
}
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "h" && (evt.ctrlKey))
|
||||
if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "h" && (evt.ctrlKey) && padShortcutEnabled.cmdH)
|
||||
{
|
||||
// cmd-H (backspace)
|
||||
fastIncorp(20);
|
||||
|
@ -3961,12 +3985,12 @@ function Ace2Inner(){
|
|||
doDeleteKey();
|
||||
specialHandled = true;
|
||||
}
|
||||
if((evt.which == 36 && evt.ctrlKey == true)){ setScrollY(0); } // Control Home send to Y = 0
|
||||
if((evt.which == 36 && evt.ctrlKey == true) && padShortcutEnabled.ctrlHome){ scroll.setScrollY(0); } // Control Home send to Y = 0
|
||||
if((evt.which == 33 || evt.which == 34) && type == 'keydown' && !evt.ctrlKey){
|
||||
|
||||
evt.preventDefault(); // This is required, browsers will try to do normal default behavior on page up / down and the default behavior SUCKS
|
||||
|
||||
var oldVisibleLineRange = getVisibleLineRange();
|
||||
var oldVisibleLineRange = scroll.getVisibleLineRange(rep);
|
||||
var topOffset = rep.selStart[0] - oldVisibleLineRange[0];
|
||||
if(topOffset < 0 ){
|
||||
topOffset = 0;
|
||||
|
@ -3976,16 +4000,16 @@ function Ace2Inner(){
|
|||
var isPageUp = evt.which === 33;
|
||||
|
||||
scheduler.setTimeout(function(){
|
||||
var newVisibleLineRange = getVisibleLineRange(); // the visible lines IE 1,10
|
||||
var newVisibleLineRange = scroll.getVisibleLineRange(rep); // the visible lines IE 1,10
|
||||
var linesCount = rep.lines.length(); // total count of lines in pad IE 10
|
||||
var numberOfLinesInViewport = newVisibleLineRange[1] - newVisibleLineRange[0]; // How many lines are in the viewport right now?
|
||||
|
||||
if(isPageUp){
|
||||
if(isPageUp && padShortcutEnabled.pageUp){
|
||||
rep.selEnd[0] = rep.selEnd[0] - numberOfLinesInViewport; // move to the bottom line +1 in the viewport (essentially skipping over a page)
|
||||
rep.selStart[0] = rep.selStart[0] - numberOfLinesInViewport; // move to the bottom line +1 in the viewport (essentially skipping over a page)
|
||||
}
|
||||
|
||||
if(isPageDown){ // if we hit page down
|
||||
if(isPageDown && padShortcutEnabled.pageDown){ // if we hit page down
|
||||
if(rep.selEnd[0] >= oldVisibleLineRange[0]){ // If the new viewpoint position is actually further than where we are right now
|
||||
rep.selStart[0] = oldVisibleLineRange[1] -1; // dont go further in the page down than what's visible IE go from 0 to 50 if 50 is visible on screen but dont go below that else we miss content
|
||||
rep.selEnd[0] = oldVisibleLineRange[1] -1; // dont go further in the page down than what's visible IE go from 0 to 50 if 50 is visible on screen but dont go below that else we miss content
|
||||
|
@ -4009,56 +4033,26 @@ function Ace2Inner(){
|
|||
// sometimes the first selection is -1 which causes problems (Especially with ep_page_view)
|
||||
// so use focusNode.offsetTop value.
|
||||
if(caretOffsetTop === -1) caretOffsetTop = myselection.focusNode.offsetTop;
|
||||
setScrollY(caretOffsetTop); // set the scrollY offset of the viewport on the document
|
||||
scroll.setScrollY(caretOffsetTop); // set the scrollY offset of the viewport on the document
|
||||
|
||||
}, 200);
|
||||
}
|
||||
/* Attempt to apply some sanity to cursor handling in Chrome after a copy / paste event
|
||||
We have to do this the way we do because rep. doesn't hold the value for keyheld events IE if the user
|
||||
presses and holds the arrow key .. Sorry if this is ugly, blame Chrome's weird handling of viewports after new content is added*/
|
||||
if((evt.which == 37 || evt.which == 38 || evt.which == 39 || evt.which == 40) && browser.chrome){
|
||||
var viewport = getViewPortTopBottom();
|
||||
var myselection = document.getSelection(); // get the current caret selection, can't use rep. here because that only gives us the start position not the current
|
||||
var caretOffsetTop = myselection.focusNode.parentNode.offsetTop || myselection.focusNode.offsetTop; // get the carets selection offset in px IE 214
|
||||
var lineHeight = $(myselection.focusNode.parentNode).parent("div").height(); // get the line height of the caret line
|
||||
// top.console.log("offsetTop", myselection.focusNode.parentNode.parentNode.offsetTop);
|
||||
try {
|
||||
lineHeight = $(myselection.focusNode).height() // needed for how chrome handles line heights of null objects
|
||||
// console.log("lineHeight now", lineHeight);
|
||||
}catch(e){}
|
||||
var caretOffsetTopBottom = caretOffsetTop + lineHeight;
|
||||
var visibleLineRange = getVisibleLineRange(); // the visible lines IE 1,10
|
||||
|
||||
if(caretOffsetTop){ // sometimes caretOffsetTop bugs out and returns 0, not sure why, possible Chrome bug? Either way if it does we don't wanna mess with it
|
||||
// top.console.log(caretOffsetTop, viewport.top, caretOffsetTopBottom, viewport.bottom);
|
||||
var caretIsNotVisible = (caretOffsetTop < viewport.top || caretOffsetTopBottom >= viewport.bottom); // Is the Caret Visible to the user?
|
||||
// Expect some weird behavior caretOffsetTopBottom is greater than viewport.bottom on a keypress down
|
||||
var offsetTopSamePlace = caretOffsetTop == viewport.top; // sometimes moving key left & up leaves the caret at the same point as the viewport.top, technically the caret is visible but it's not fully visible so we should move to it
|
||||
if(offsetTopSamePlace && (evt.which == 37 || evt.which == 38)){
|
||||
var newY = caretOffsetTop;
|
||||
setScrollY(newY);
|
||||
}
|
||||
// scroll to viewport when user presses arrow keys and caret is out of the viewport
|
||||
if((evt.which == 37 || evt.which == 38 || evt.which == 39 || evt.which == 40)){
|
||||
// we use arrowKeyWasReleased to avoid triggering the animation when a key is continuously pressed
|
||||
// this makes the scroll smooth
|
||||
if(!continuouslyPressingArrowKey(type)){
|
||||
// We use getSelection() instead of rep to get the caret position. This avoids errors like when
|
||||
// the caret position is not synchronized with the rep. For example, when an user presses arrow
|
||||
// down to scroll the pad without releasing the key. When the key is released the rep is not
|
||||
// synchronized, so we don't get the right node where caret is.
|
||||
var selection = getSelection();
|
||||
|
||||
if(caretIsNotVisible){ // is the cursor no longer visible to the user?
|
||||
// top.console.log("Caret is NOT visible to the user");
|
||||
// top.console.log(caretOffsetTop,viewport.top,caretOffsetTopBottom,viewport.bottom);
|
||||
// Oh boy the caret is out of the visible area, I need to scroll the browser window to lineNum.
|
||||
if(evt.which == 37 || evt.which == 38){ // If left or up arrow
|
||||
var newY = caretOffsetTop; // That was easy!
|
||||
}
|
||||
if(evt.which == 39 || evt.which == 40){ // if down or right arrow
|
||||
// only move the viewport if we're at the bottom of the viewport, if we hit down any other time the viewport shouldn't change
|
||||
// NOTE: This behavior only fires if Chrome decides to break the page layout after a paste, it's annoying but nothing I can do
|
||||
var selection = getSelection();
|
||||
// top.console.log("line #", rep.selStart[0]); // the line our caret is on
|
||||
// top.console.log("firstvisible", visibleLineRange[0]); // the first visiblel ine
|
||||
// top.console.log("lastVisible", visibleLineRange[1]); // the last visible line
|
||||
// top.console.log(rep.selStart[0], visibleLineRange[1], rep.selStart[0], visibleLineRange[0]);
|
||||
var newY = viewport.top + lineHeight;
|
||||
}
|
||||
if(newY){
|
||||
setScrollY(newY); // set the scrollY offset of the viewport on the document
|
||||
}
|
||||
if(selection){
|
||||
var arrowUp = evt.which === 38;
|
||||
var innerHeight = getInnerHeight();
|
||||
scroll.scrollWhenPressArrowKeys(arrowUp, rep, innerHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4116,6 +4110,19 @@ function Ace2Inner(){
|
|||
|
||||
var thisKeyDoesntTriggerNormalize = false;
|
||||
|
||||
var arrowKeyWasReleased = true;
|
||||
function continuouslyPressingArrowKey(type) {
|
||||
var firstTimeKeyIsContinuouslyPressed = false;
|
||||
|
||||
if (type == 'keyup') arrowKeyWasReleased = true;
|
||||
else if (type == 'keydown' && arrowKeyWasReleased) {
|
||||
firstTimeKeyIsContinuouslyPressed = true;
|
||||
arrowKeyWasReleased = false;
|
||||
}
|
||||
|
||||
return !firstTimeKeyIsContinuouslyPressed;
|
||||
}
|
||||
|
||||
function doUndoRedo(which)
|
||||
{
|
||||
// precond: normalized DOM
|
||||
|
@ -4832,9 +4839,6 @@ function Ace2Inner(){
|
|||
setIfNecessary(root.style, "height", "");
|
||||
}
|
||||
}
|
||||
// if near edge, scroll to edge
|
||||
var scrollX = getScrollX();
|
||||
var scrollY = getScrollY();
|
||||
var win = outerWin;
|
||||
var r = 20;
|
||||
|
||||
|
@ -4843,52 +4847,6 @@ function Ace2Inner(){
|
|||
$(sideDiv).addClass('sidedivdelayed');
|
||||
}
|
||||
|
||||
function getScrollXY()
|
||||
{
|
||||
var win = outerWin;
|
||||
var odoc = outerWin.document;
|
||||
if (typeof(win.pageYOffset) == "number")
|
||||
{
|
||||
return {
|
||||
x: win.pageXOffset,
|
||||
y: win.pageYOffset
|
||||
};
|
||||
}
|
||||
var docel = odoc.documentElement;
|
||||
if (docel && typeof(docel.scrollTop) == "number")
|
||||
{
|
||||
return {
|
||||
x: docel.scrollLeft,
|
||||
y: docel.scrollTop
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function getScrollX()
|
||||
{
|
||||
return getScrollXY().x;
|
||||
}
|
||||
|
||||
function getScrollY()
|
||||
{
|
||||
return getScrollXY().y;
|
||||
}
|
||||
|
||||
function setScrollX(x)
|
||||
{
|
||||
outerWin.scrollTo(x, getScrollY());
|
||||
}
|
||||
|
||||
function setScrollY(y)
|
||||
{
|
||||
outerWin.scrollTo(getScrollX(), y);
|
||||
}
|
||||
|
||||
function setScrollXY(x, y)
|
||||
{
|
||||
outerWin.scrollTo(x, y);
|
||||
}
|
||||
|
||||
var _teardownActions = [];
|
||||
|
||||
function teardown()
|
||||
|
@ -4984,6 +4942,8 @@ function Ace2Inner(){
|
|||
$(document).on("keypress", handleKeyEvent);
|
||||
$(document).on("keyup", handleKeyEvent);
|
||||
$(document).on("click", handleClick);
|
||||
// dropdowns on edit bar need to be closed on clicks on both pad inner and pad outer
|
||||
$(outerWin.document).on("click", hideEditBarDropdowns);
|
||||
// Disabled: https://github.com/ether/etherpad-lite/issues/2546
|
||||
// Will break OL re-numbering: https://github.com/ether/etherpad-lite/pull/2533
|
||||
// $(document).on("cut", handleCut);
|
||||
|
@ -5207,26 +5167,6 @@ function Ace2Inner(){
|
|||
return odoc.documentElement.clientWidth;
|
||||
}
|
||||
|
||||
function scrollNodeVerticallyIntoView(node)
|
||||
{
|
||||
// requires element (non-text) node;
|
||||
// if node extends above top of viewport or below bottom of viewport (or top of scrollbar),
|
||||
// scroll it the minimum distance needed to be completely in view.
|
||||
var win = outerWin;
|
||||
var odoc = outerWin.document;
|
||||
var distBelowTop = node.offsetTop + iframePadTop - win.scrollY;
|
||||
var distAboveBottom = win.scrollY + getInnerHeight() - (node.offsetTop + iframePadTop + node.offsetHeight);
|
||||
|
||||
if (distBelowTop < 0)
|
||||
{
|
||||
win.scrollBy(0, distBelowTop);
|
||||
}
|
||||
else if (distAboveBottom < 0)
|
||||
{
|
||||
win.scrollBy(0, -distAboveBottom);
|
||||
}
|
||||
}
|
||||
|
||||
function scrollXHorizontallyIntoView(pixelX)
|
||||
{
|
||||
var win = outerWin;
|
||||
|
@ -5248,8 +5188,8 @@ function Ace2Inner(){
|
|||
{
|
||||
if (!rep.selStart) return;
|
||||
fixView();
|
||||
var focusLine = (rep.selFocusAtStart ? rep.selStart[0] : rep.selEnd[0]);
|
||||
scrollNodeVerticallyIntoView(rep.lines.atIndex(focusLine).lineNode);
|
||||
var innerHeight = getInnerHeight();
|
||||
scroll.scrollNodeVerticallyIntoView(rep, innerHeight);
|
||||
if (!doesWrap)
|
||||
{
|
||||
var browserSelection = getSelection();
|
||||
|
|
241
src/static/js/caretPosition.js
Normal file
241
src/static/js/caretPosition.js
Normal file
|
@ -0,0 +1,241 @@
|
|||
// One rep.line(div) can be broken in more than one line in the browser.
|
||||
// This function is useful to get the caret position of the line as
|
||||
// is represented by the browser
|
||||
exports.getPosition = function ()
|
||||
{
|
||||
var rect, line;
|
||||
var editor = $('#innerdocbody')[0];
|
||||
var range = getSelectionRange();
|
||||
var isSelectionInsideTheEditor = range && $(range.endContainer).closest('body')[0].id === 'innerdocbody';
|
||||
|
||||
if(isSelectionInsideTheEditor){
|
||||
// when we have the caret in an empty line, e.g. a line with only a <br>,
|
||||
// getBoundingClientRect() returns all dimensions value as 0
|
||||
var selectionIsInTheBeginningOfLine = range.endOffset > 0;
|
||||
if (selectionIsInTheBeginningOfLine) {
|
||||
var clonedRange = createSelectionRange(range);
|
||||
line = getPositionOfElementOrSelection(clonedRange);
|
||||
clonedRange.detach()
|
||||
}
|
||||
|
||||
// when there's a <br> or any element that has no height, we can't get
|
||||
// the dimension of the element where the caret is
|
||||
if(!rect || rect.height === 0){
|
||||
var clonedRange = createSelectionRange(range);
|
||||
|
||||
// as we can't get the element height, we create a text node to get the dimensions
|
||||
// on the position
|
||||
var shadowCaret = $(document.createTextNode("|"));
|
||||
clonedRange.insertNode(shadowCaret[0]);
|
||||
clonedRange.selectNode(shadowCaret[0]);
|
||||
|
||||
line = getPositionOfElementOrSelection(clonedRange);
|
||||
clonedRange.detach()
|
||||
shadowCaret.remove();
|
||||
}
|
||||
}
|
||||
return line;
|
||||
}
|
||||
|
||||
var createSelectionRange = function (range) {
|
||||
clonedRange = range.cloneRange();
|
||||
|
||||
// we set the selection start and end to avoid error when user selects a text bigger than
|
||||
// the viewport height and uses the arrow keys to expand the selection. In this particular
|
||||
// case is necessary to know where the selections ends because both edges of the selection
|
||||
// is out of the viewport but we only use the end of it to calculate if it needs to scroll
|
||||
clonedRange.setStart(range.endContainer, range.endOffset);
|
||||
clonedRange.setEnd(range.endContainer, range.endOffset);
|
||||
return clonedRange;
|
||||
}
|
||||
|
||||
var getPositionOfRepLineAtOffset = function (node, offset) {
|
||||
// it is not a text node, so we cannot make a selection
|
||||
if (node.tagName === 'BR' || node.tagName === 'EMPTY') {
|
||||
return getPositionOfElementOrSelection(node);
|
||||
}
|
||||
|
||||
while (node.length === 0 && node.nextSibling) {
|
||||
node = node.nextSibling;
|
||||
}
|
||||
|
||||
var newRange = new Range();
|
||||
newRange.setStart(node, offset);
|
||||
newRange.setEnd(node, offset);
|
||||
var linePosition = getPositionOfElementOrSelection(newRange);
|
||||
newRange.detach(); // performance sake
|
||||
return linePosition;
|
||||
}
|
||||
|
||||
function getPositionOfElementOrSelection(element) {
|
||||
var rect = element.getBoundingClientRect();
|
||||
var linePosition = {
|
||||
bottom: rect.bottom,
|
||||
height: rect.height,
|
||||
top: rect.top
|
||||
}
|
||||
return linePosition;
|
||||
}
|
||||
|
||||
// here we have two possibilities:
|
||||
// [1] the line before the caret line has the same type, so both of them has the same margin, padding
|
||||
// height, etc. So, we can use the caret line to make calculation necessary to know where is the top
|
||||
// of the previous line
|
||||
// [2] the line before is part of another rep line. It's possible this line has different margins
|
||||
// height. So we have to get the exactly position of the line
|
||||
exports.getPositionTopOfPreviousBrowserLine = function(caretLinePosition, rep) {
|
||||
var previousLineTop = caretLinePosition.top - caretLinePosition.height; // [1]
|
||||
var isCaretLineFirstBrowserLine = caretLineIsFirstBrowserLine(caretLinePosition.top, rep);
|
||||
|
||||
// the caret is in the beginning of a rep line, so the previous browser line
|
||||
// is the last line browser line of the a rep line
|
||||
if (isCaretLineFirstBrowserLine) { //[2]
|
||||
var lineBeforeCaretLine = rep.selStart[0] - 1;
|
||||
var firstLineVisibleBeforeCaretLine = getPreviousVisibleLine(lineBeforeCaretLine, rep);
|
||||
var linePosition = getDimensionOfLastBrowserLineOfRepLine(firstLineVisibleBeforeCaretLine, rep);
|
||||
previousLineTop = linePosition.top;
|
||||
}
|
||||
return previousLineTop;
|
||||
}
|
||||
|
||||
function caretLineIsFirstBrowserLine(caretLineTop, rep)
|
||||
{
|
||||
var caretRepLine = rep.selStart[0];
|
||||
var lineNode = rep.lines.atIndex(caretRepLine).lineNode;
|
||||
var firstRootNode = getFirstRootChildNode(lineNode);
|
||||
|
||||
// to get the position of the node we get the position of the first char
|
||||
var positionOfFirstRootNode = getPositionOfRepLineAtOffset(firstRootNode, 1);
|
||||
return positionOfFirstRootNode.top === caretLineTop;
|
||||
}
|
||||
|
||||
// find the first root node, usually it is a text node
|
||||
function getFirstRootChildNode(node)
|
||||
{
|
||||
if(!node.firstChild){
|
||||
return node;
|
||||
}else{
|
||||
return getFirstRootChildNode(node.firstChild);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function getPreviousVisibleLine(line, rep)
|
||||
{
|
||||
if (line < 0) {
|
||||
return 0;
|
||||
}else if (isLineVisible(line, rep)) {
|
||||
return line;
|
||||
}else{
|
||||
return getPreviousVisibleLine(line - 1, rep);
|
||||
}
|
||||
}
|
||||
|
||||
function getDimensionOfLastBrowserLineOfRepLine(line, rep)
|
||||
{
|
||||
var lineNode = rep.lines.atIndex(line).lineNode;
|
||||
var lastRootChildNode = getLastRootChildNode(lineNode);
|
||||
|
||||
// we get the position of the line in the last char of it
|
||||
var lastRootChildNodePosition = getPositionOfRepLineAtOffset(lastRootChildNode.node, lastRootChildNode.length);
|
||||
return lastRootChildNodePosition;
|
||||
}
|
||||
|
||||
function getLastRootChildNode(node)
|
||||
{
|
||||
if(!node.lastChild){
|
||||
return {
|
||||
node: node,
|
||||
length: node.length
|
||||
};
|
||||
}else{
|
||||
return getLastRootChildNode(node.lastChild);
|
||||
}
|
||||
}
|
||||
|
||||
// here we have two possibilities:
|
||||
// [1] The next line is part of the same rep line of the caret line, so we have the same dimensions.
|
||||
// So, we can use the caret line to calculate the bottom of the line.
|
||||
// [2] the next line is part of another rep line. It's possible this line has different dimensions, so we
|
||||
// have to get the exactly dimension of it
|
||||
exports.getBottomOfNextBrowserLine = function(caretLinePosition, rep)
|
||||
{
|
||||
var nextLineBottom = caretLinePosition.bottom + caretLinePosition.height; //[1]
|
||||
var isCaretLineLastBrowserLine = caretLineIsLastBrowserLineOfRepLine(caretLinePosition.top, rep);
|
||||
|
||||
// the caret is at the end of a rep line, so we can get the next browser line dimension
|
||||
// using the position of the first char of the next rep line
|
||||
if(isCaretLineLastBrowserLine){ //[2]
|
||||
var nextLineAfterCaretLine = rep.selStart[0] + 1;
|
||||
var firstNextLineVisibleAfterCaretLine = getNextVisibleLine(nextLineAfterCaretLine, rep);
|
||||
var linePosition = getDimensionOfFirstBrowserLineOfRepLine(firstNextLineVisibleAfterCaretLine, rep);
|
||||
nextLineBottom = linePosition.bottom;
|
||||
}
|
||||
return nextLineBottom;
|
||||
}
|
||||
|
||||
function caretLineIsLastBrowserLineOfRepLine(caretLineTop, rep)
|
||||
{
|
||||
var caretRepLine = rep.selStart[0];
|
||||
var lineNode = rep.lines.atIndex(caretRepLine).lineNode;
|
||||
var lastRootChildNode = getLastRootChildNode(lineNode);
|
||||
|
||||
// we take a rep line and get the position of the last char of it
|
||||
var lastRootChildNodePosition = getPositionOfRepLineAtOffset(lastRootChildNode.node, lastRootChildNode.length);
|
||||
return lastRootChildNodePosition.top === caretLineTop;
|
||||
}
|
||||
|
||||
function getPreviousVisibleLine(line, rep)
|
||||
{
|
||||
var firstLineOfPad = 0;
|
||||
if (line <= firstLineOfPad) {
|
||||
return firstLineOfPad;
|
||||
}else if (isLineVisible(line,rep)) {
|
||||
return line;
|
||||
}else{
|
||||
return getPreviousVisibleLine(line - 1, rep);
|
||||
}
|
||||
}
|
||||
exports.getPreviousVisibleLine = getPreviousVisibleLine;
|
||||
|
||||
function getNextVisibleLine(line, rep)
|
||||
{
|
||||
var lastLineOfThePad = rep.lines.length() - 1;
|
||||
if (line >= lastLineOfThePad) {
|
||||
return lastLineOfThePad;
|
||||
}else if (isLineVisible(line,rep)) {
|
||||
return line;
|
||||
}else{
|
||||
return getNextVisibleLine(line + 1, rep);
|
||||
}
|
||||
}
|
||||
exports.getNextVisibleLine = getNextVisibleLine;
|
||||
|
||||
function isLineVisible(line, rep)
|
||||
{
|
||||
return rep.lines.atIndex(line).lineNode.offsetHeight > 0;
|
||||
}
|
||||
|
||||
function getDimensionOfFirstBrowserLineOfRepLine(line, rep)
|
||||
{
|
||||
var lineNode = rep.lines.atIndex(line).lineNode;
|
||||
var firstRootChildNode = getFirstRootChildNode(lineNode);
|
||||
|
||||
// we can get the position of the line, getting the position of the first char of the rep line
|
||||
var firstRootChildNodePosition = getPositionOfRepLineAtOffset(firstRootChildNode, 1);
|
||||
return firstRootChildNodePosition;
|
||||
}
|
||||
|
||||
function getSelectionRange()
|
||||
{
|
||||
var selection;
|
||||
if (!window.getSelection) {
|
||||
return;
|
||||
}
|
||||
selection = window.getSelection();
|
||||
if (selection.rangeCount > 0) {
|
||||
return selection.getRangeAt(0);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -21,7 +21,7 @@
|
|||
* IN THE SOFTWARE.
|
||||
*/
|
||||
window.html10n = (function(window, document, undefined) {
|
||||
|
||||
|
||||
// fix console
|
||||
(function() {
|
||||
var noop = function() {};
|
||||
|
@ -80,7 +80,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* MicroEvent - to make any js object an event emitter (server or browser)
|
||||
*/
|
||||
|
@ -116,7 +116,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
destObject[props[i]] = MicroEvent.prototype[props[i]];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Loader
|
||||
* The loader is responsible for loading
|
||||
|
@ -127,7 +127,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
this.cache = {} // file => contents
|
||||
this.langs = {} // lang => strings
|
||||
}
|
||||
|
||||
|
||||
Loader.prototype.load = function(lang, cb) {
|
||||
if(this.langs[lang]) return cb()
|
||||
|
||||
|
@ -137,22 +137,22 @@ window.html10n = (function(window, document, undefined) {
|
|||
this.fetch(this.resources[i], lang, function(e) {
|
||||
reqs++;
|
||||
if(e) console.warn(e)
|
||||
|
||||
|
||||
if (reqs < n) return;// Call back once all reqs are completed
|
||||
cb && cb()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loader.prototype.fetch = function(href, lang, cb) {
|
||||
var that = this
|
||||
|
||||
|
||||
if (this.cache[href]) {
|
||||
this.parse(lang, href, this.cache[href], cb)
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var xhr = new XMLHttpRequest()
|
||||
xhr.open('GET', href, /*async: */true)
|
||||
if (xhr.overrideMimeType) {
|
||||
|
@ -172,7 +172,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
};
|
||||
xhr.send(null);
|
||||
}
|
||||
|
||||
|
||||
Loader.prototype.parse = function(lang, currHref, data, cb) {
|
||||
if ('object' != typeof data) {
|
||||
cb(new Error('A file couldn\'t be parsed as json.'))
|
||||
|
@ -192,7 +192,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
}
|
||||
if(lang != l) return cb(new Error(msg))
|
||||
}
|
||||
|
||||
|
||||
if ('string' == typeof data[lang]) {
|
||||
// Import rule
|
||||
|
||||
|
@ -200,7 +200,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
var importUrl = data[lang]
|
||||
|
||||
// relative path
|
||||
if(data[lang].indexOf("http") != 0 && data[lang].indexOf("/") != 0) {
|
||||
if(data[lang].indexOf("http") != 0 && data[lang].indexOf("/") != 0) {
|
||||
importUrl = currHref+"/../"+data[lang]
|
||||
}
|
||||
|
||||
|
@ -217,20 +217,20 @@ window.html10n = (function(window, document, undefined) {
|
|||
// TODO: Also store accompanying langs
|
||||
cb()
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The html10n object
|
||||
*/
|
||||
var html10n =
|
||||
var html10n =
|
||||
{ language : null
|
||||
}
|
||||
MicroEvent.mixin(html10n)
|
||||
|
||||
|
||||
html10n.macros = {}
|
||||
|
||||
html10n.rtl = ["ar","dv","fa","ha","he","ks","ku","ps","ur","yi"]
|
||||
|
||||
|
||||
/**
|
||||
* Get rules for plural forms (shared with JetPack), see:
|
||||
* http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
|
||||
|
@ -668,7 +668,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
|
||||
return str;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Localize a document
|
||||
* @param langs An array of lang codes defining fallbacks
|
||||
|
@ -710,7 +710,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
// translate element itself if necessary
|
||||
this.translateNode(translations, element)
|
||||
}
|
||||
|
||||
|
||||
function asyncForEach(list, iterator, cb) {
|
||||
var i = 0
|
||||
, n = list.length
|
||||
|
@ -721,7 +721,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
cb()
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
function getTranslatableChildren(element) {
|
||||
if(!document.querySelectorAll) {
|
||||
if (!element) return []
|
||||
|
@ -735,29 +735,29 @@ window.html10n = (function(window, document, undefined) {
|
|||
}
|
||||
return element.querySelectorAll('*[data-l10n-id]')
|
||||
}
|
||||
|
||||
|
||||
html10n.get = function(id, args) {
|
||||
var translations = html10n.translations
|
||||
if(!translations) return console.warn('No translations available (yet)')
|
||||
if(!translations[id]) return console.warn('Could not find string '+id)
|
||||
|
||||
|
||||
// apply macros
|
||||
var str = translations[id]
|
||||
|
||||
|
||||
str = substMacros(id, str, args)
|
||||
|
||||
|
||||
// apply args
|
||||
str = substArguments(str, args)
|
||||
|
||||
|
||||
return str
|
||||
}
|
||||
|
||||
|
||||
// replace {{arguments}} with their values or the
|
||||
// associated translation string (based on its key)
|
||||
function substArguments(str, args) {
|
||||
var reArgs = /\{\{\s*([a-zA-Z\.]+)\s*\}\}/
|
||||
, match
|
||||
|
||||
|
||||
while (match = reArgs.exec(str)) {
|
||||
if (!match || match.length < 2)
|
||||
return str // argument key not found
|
||||
|
@ -775,15 +775,15 @@ window.html10n = (function(window, document, undefined) {
|
|||
|
||||
str = str.substring(0, match.index) + sub + str.substr(match.index + match[0].length)
|
||||
}
|
||||
|
||||
|
||||
return str
|
||||
}
|
||||
|
||||
|
||||
// replace {[macros]} with their values
|
||||
function substMacros(key, str, args) {
|
||||
var regex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)((\s*([a-zA-Z]+)\: ?([ a-zA-Z{}]+),?)+)*\s*\]\}/ //.exec('{[ plural(n) other: are {{n}}, one: is ]}')
|
||||
, match
|
||||
|
||||
|
||||
while(match = regex.exec(str)) {
|
||||
// a macro has been found
|
||||
// Note: at the moment, only one parameter is supported
|
||||
|
@ -791,9 +791,9 @@ window.html10n = (function(window, document, undefined) {
|
|||
, paramName = match[2]
|
||||
, optv = match[3]
|
||||
, opts = {}
|
||||
|
||||
|
||||
if (!(macroName in html10n.macros)) continue
|
||||
|
||||
|
||||
if(optv) {
|
||||
optv.match(/(?=\s*)([a-zA-Z]+)\: ?([ a-zA-Z{}]+)(?=,?)/g).forEach(function(arg) {
|
||||
var parts = arg.split(':')
|
||||
|
@ -802,7 +802,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
opts[name] = value
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
var param
|
||||
if (args && paramName in args) {
|
||||
param = args[paramName]
|
||||
|
@ -814,10 +814,10 @@ window.html10n = (function(window, document, undefined) {
|
|||
var macro = html10n.macros[macroName]
|
||||
str = str.substr(0, match.index) + macro(key, param, opts) + str.substr(match.index+match[0].length)
|
||||
}
|
||||
|
||||
|
||||
return str
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Applies translations to a DOM node (recursive)
|
||||
*/
|
||||
|
@ -840,9 +840,9 @@ window.html10n = (function(window, document, undefined) {
|
|||
console.warn('Couldn\'t parse args for '+str.id)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
str.str = html10n.get(str.id, str.args)
|
||||
|
||||
|
||||
// get attribute name to apply str to
|
||||
var prop
|
||||
, index = str.id.lastIndexOf('.')
|
||||
|
@ -852,6 +852,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
, "alt": 1
|
||||
, "textContent": 1
|
||||
, "value": 1
|
||||
, "placeholder": 1
|
||||
}
|
||||
if (index > 0 && str.id.substr(index + 1) in attrList) { // an attribute has been specified
|
||||
prop = str.id.substr(index + 1)
|
||||
|
@ -883,7 +884,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Builds a translation object from a list of langs (loads the necessary translations)
|
||||
* @param langs Array - a list of langs sorted by priority (default langs should go last)
|
||||
|
@ -898,11 +899,11 @@ window.html10n = (function(window, document, undefined) {
|
|||
}, function() {
|
||||
var lang
|
||||
langs.reverse()
|
||||
|
||||
|
||||
// loop through the priority array...
|
||||
for (var i=0, n=langs.length; i < n; i++) {
|
||||
lang = langs[i]
|
||||
|
||||
|
||||
if(!lang) continue;
|
||||
if(!(lang in that.loader.langs)) {// uh, we don't have this lang availbable..
|
||||
// then check for related langs
|
||||
|
@ -915,13 +916,13 @@ window.html10n = (function(window, document, undefined) {
|
|||
}
|
||||
if(lang != l) continue;
|
||||
}
|
||||
|
||||
|
||||
// ... and apply all strings of the current lang in the list
|
||||
// to our build object
|
||||
for (var string in that.loader.langs[lang]) {
|
||||
build[string] = that.loader.langs[lang][string]
|
||||
}
|
||||
|
||||
|
||||
// the last applied lang will be exposed as the
|
||||
// lang the page was translated to
|
||||
that.language = lang
|
||||
|
@ -929,7 +930,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
cb(null, build)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the language that was last applied to the translations hash
|
||||
* thus overriding most of the formerly applied langs
|
||||
|
@ -962,7 +963,7 @@ window.html10n = (function(window, document, undefined) {
|
|||
this.loader = new Loader(resources)
|
||||
this.trigger('indexed')
|
||||
}
|
||||
|
||||
|
||||
if (document.addEventListener) // modern browsers and IE9+
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
html10n.index()
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
@ -99,15 +99,15 @@ function getParams()
|
|||
setting.callback(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Then URL applied stuff
|
||||
var params = getUrlVars()
|
||||
|
||||
|
||||
for(var i = 0; i < getParameters.length; i++)
|
||||
{
|
||||
var setting = getParameters[i];
|
||||
var value = params[setting.name];
|
||||
|
||||
|
||||
if(value && (value == setting.checkVal || setting.checkVal == null))
|
||||
{
|
||||
setting.callback(value);
|
||||
|
@ -156,7 +156,7 @@ function sendClientReady(isReconnect, messageType)
|
|||
token = "t." + randomString();
|
||||
createCookie("token", token, 60);
|
||||
}
|
||||
|
||||
|
||||
var sessionID = decodeURIComponent(readCookie("sessionID"));
|
||||
var password = readCookie("password");
|
||||
|
||||
|
@ -169,14 +169,14 @@ function sendClientReady(isReconnect, messageType)
|
|||
"token": token,
|
||||
"protocolVersion": 2
|
||||
};
|
||||
|
||||
|
||||
//this is a reconnect, lets tell the server our revisionnumber
|
||||
if(isReconnect == true)
|
||||
{
|
||||
msg.client_rev=pad.collabClient.getCurrentRevisionNumber();
|
||||
msg.reconnect=true;
|
||||
}
|
||||
|
||||
|
||||
socket.json.send(msg);
|
||||
}
|
||||
|
||||
|
@ -203,12 +203,12 @@ function handshake()
|
|||
socket.once('connect', function () {
|
||||
sendClientReady(false);
|
||||
});
|
||||
|
||||
|
||||
socket.on('reconnect', function () {
|
||||
pad.collabClient.setChannelState("CONNECTED");
|
||||
pad.sendClientReady(true);
|
||||
});
|
||||
|
||||
|
||||
socket.on('reconnecting', function() {
|
||||
pad.collabClient.setChannelState("RECONNECTING");
|
||||
});
|
||||
|
@ -254,7 +254,7 @@ function handshake()
|
|||
$("#passwordinput").focus();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//if we haven't recieved the clientVars yet, then this message should it be
|
||||
else if (!receivedClientVars && obj.type == "CLIENT_VARS")
|
||||
{
|
||||
|
@ -267,7 +267,7 @@ function handshake()
|
|||
clientVars = obj.data;
|
||||
clientVars.userAgent = "Anonymous";
|
||||
clientVars.collab_client_vars.clientAgent = "Anonymous";
|
||||
|
||||
|
||||
//initalize the pad
|
||||
pad._afterHandshake();
|
||||
initalized = true;
|
||||
|
@ -298,7 +298,7 @@ function handshake()
|
|||
{
|
||||
pad.changeViewOption('noColors', true);
|
||||
}
|
||||
|
||||
|
||||
if (settings.rtlIsTrue == true)
|
||||
{
|
||||
pad.changeViewOption('rtlIsTrue', true);
|
||||
|
@ -335,6 +335,12 @@ function handshake()
|
|||
console.warn(obj);
|
||||
padconnectionstatus.disconnected(obj.disconnect);
|
||||
socket.disconnect();
|
||||
|
||||
// block user from making any change to the pad
|
||||
padeditor.disable();
|
||||
padeditbar.disable();
|
||||
padimpexp.disable();
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
@ -345,13 +351,13 @@ function handshake()
|
|||
});
|
||||
// Bind the colorpicker
|
||||
var fb = $('#colorpicker').farbtastic({ callback: '#mycolorpickerpreview', width: 220});
|
||||
// Bind the read only button
|
||||
// Bind the read only button
|
||||
$('#readonlyinput').on('click',function(){
|
||||
padeditbar.setEmbedLinks();
|
||||
});
|
||||
}
|
||||
|
||||
$.extend($.gritter.options, {
|
||||
$.extend($.gritter.options, {
|
||||
position: 'bottom-right', // defaults to 'top-right' but can be 'bottom-left', 'bottom-right', 'top-left', 'top-right' (added in 1.7.1)
|
||||
fade: false, // dont fade, too jerky on mobile
|
||||
time: 6000 // hang on the screen for...
|
||||
|
@ -424,7 +430,7 @@ var pad = {
|
|||
if(window.history && window.history.pushState)
|
||||
{
|
||||
$('#chattext p').remove(); //clear the chat messages
|
||||
window.history.pushState("", "", newHref);
|
||||
window.history.pushState("", "", newHref);
|
||||
receivedClientVars = false;
|
||||
sendClientReady(false, 'SWITCH_TO_PAD');
|
||||
}
|
||||
|
@ -548,10 +554,12 @@ var pad = {
|
|||
pad.changeViewOption('rtlIsTrue', true);
|
||||
}
|
||||
|
||||
var fonts = ['useMonospaceFont', 'useOpenDyslexicFont', 'useComicSansFont', 'useCourierNewFont', 'useGeorgiaFont', 'useImpactFont',
|
||||
'useLucidaFont', 'useLucidaSansFont', 'usePalatinoFont', 'useTahomaFont', 'useTimesNewRomanFont',
|
||||
'useTrebuchetFont', 'useVerdanaFont', 'useSymbolFont', 'useWebdingsFont', 'useWingDingsFont', 'useSansSerifFont',
|
||||
'useSerifFont'];
|
||||
|
||||
var fonts = ['useMonospaceFont', 'useMontserratFont', 'useOpenDyslexicFont', 'useComicSansFont', 'useCourierNewFont',
|
||||
'useGeorgiaFont', 'useImpactFont', 'useLucidaFont', 'useLucidaSansFont', 'usePalatinoFont', 'useRobotoMonoFont',
|
||||
'useTahomaFont', 'useTimesNewRomanFont', 'useTrebuchetFont', 'useVerdanaFont', 'useSymbolFont', 'useWebdingsFont',
|
||||
'useWingDingsFont', 'useSansSerifFont', 'useSerifFont'];
|
||||
|
||||
|
||||
$.each(fonts, function(i, font){
|
||||
if(padcookie.getPref(font) == true){
|
||||
|
@ -731,20 +739,20 @@ var pad = {
|
|||
pad.diagnosticInfo.disconnectedMessage = message;
|
||||
pad.diagnosticInfo.padId = pad.getPadId();
|
||||
pad.diagnosticInfo.socket = {};
|
||||
|
||||
//we filter non objects from the socket object and put them in the diagnosticInfo
|
||||
|
||||
//we filter non objects from the socket object and put them in the diagnosticInfo
|
||||
//this ensures we have no cyclic data - this allows us to stringify the data
|
||||
for(var i in socket.socket)
|
||||
{
|
||||
var value = socket.socket[i];
|
||||
var type = typeof value;
|
||||
|
||||
|
||||
if(type == "string" || type == "number")
|
||||
{
|
||||
pad.diagnosticInfo.socket[i] = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pad.asyncSendDiagnosticInfo();
|
||||
if (typeof window.ajlog == "string")
|
||||
{
|
||||
|
|
182
src/static/js/pad_automatic_reconnect.js
Normal file
182
src/static/js/pad_automatic_reconnect.js
Normal file
|
@ -0,0 +1,182 @@
|
|||
|
||||
exports.showCountDownTimerToReconnectOnModal = function($modal, pad) {
|
||||
if (clientVars.automaticReconnectionTimeout && $modal.is('.with_reconnect_timer')) {
|
||||
createCountDownElementsIfNecessary($modal);
|
||||
|
||||
var timer = createTimerForModal($modal, pad);
|
||||
|
||||
$modal.find('#cancelreconnect').one('click', function() {
|
||||
timer.cancel();
|
||||
disableAutomaticReconnection($modal);
|
||||
});
|
||||
|
||||
enableAutomaticReconnection($modal);
|
||||
}
|
||||
}
|
||||
|
||||
var createCountDownElementsIfNecessary = function($modal) {
|
||||
var elementsDoNotExist = $modal.find('#cancelreconnect').length === 0;
|
||||
if (elementsDoNotExist) {
|
||||
var $defaultMessage = $modal.find('#defaulttext');
|
||||
var $reconnectButton = $modal.find('#forcereconnect');
|
||||
|
||||
// create extra DOM elements, if they don't exist
|
||||
var $reconnectTimerMessage = $('<p class="reconnecttimer"> \
|
||||
<span data-l10n-id="pad.modals.reconnecttimer">Trying to reconnect in </span> \
|
||||
<span class="timetoexpire"></span> \
|
||||
</p>');
|
||||
var $cancelReconnect = $('<button id="cancelreconnect" data-l10n-id="pad.modals.cancel">Cancel</button>');
|
||||
|
||||
localize($reconnectTimerMessage);
|
||||
localize($cancelReconnect);
|
||||
|
||||
$reconnectTimerMessage.insertAfter($defaultMessage);
|
||||
$cancelReconnect.insertAfter($reconnectButton);
|
||||
}
|
||||
}
|
||||
|
||||
var localize = function($element) {
|
||||
html10n.translateElement(html10n.translations, $element.get(0));
|
||||
};
|
||||
|
||||
var createTimerForModal = function($modal, pad) {
|
||||
var timeUntilReconnection = clientVars.automaticReconnectionTimeout * reconnectionTries.nextTry();
|
||||
var timer = new CountDownTimer(timeUntilReconnection);
|
||||
|
||||
timer.onTick(function(minutes, seconds) {
|
||||
updateCountDownTimerMessage($modal, minutes, seconds);
|
||||
}).onExpire(function() {
|
||||
var wasANetworkError = $modal.is('.disconnected');
|
||||
if (wasANetworkError) {
|
||||
// cannot simply reconnect, client is having issues to establish connection to server
|
||||
waitUntilClientCanConnectToServerAndThen(function() { forceReconnection($modal); }, pad);
|
||||
} else {
|
||||
forceReconnection($modal);
|
||||
}
|
||||
}).start();
|
||||
|
||||
return timer;
|
||||
}
|
||||
|
||||
var disableAutomaticReconnection = function($modal) {
|
||||
toggleAutomaticReconnectionOption($modal, true);
|
||||
}
|
||||
var enableAutomaticReconnection = function($modal) {
|
||||
toggleAutomaticReconnectionOption($modal, false);
|
||||
}
|
||||
var toggleAutomaticReconnectionOption = function($modal, disableAutomaticReconnect) {
|
||||
$modal.find('#cancelreconnect, .reconnecttimer').toggleClass('hidden', disableAutomaticReconnect);
|
||||
$modal.find('#defaulttext').toggleClass('hidden', !disableAutomaticReconnect);
|
||||
}
|
||||
|
||||
var waitUntilClientCanConnectToServerAndThen = function(callback, pad) {
|
||||
whenConnectionIsRestablishedWithServer(callback, pad);
|
||||
pad.socket.connect();
|
||||
}
|
||||
|
||||
var whenConnectionIsRestablishedWithServer = function(callback, pad) {
|
||||
// only add listener for the first try, don't need to add another listener
|
||||
// on every unsuccessful try
|
||||
if (reconnectionTries.counter === 1) {
|
||||
pad.socket.once('connect', callback);
|
||||
}
|
||||
}
|
||||
|
||||
var forceReconnection = function($modal) {
|
||||
$modal.find('#forcereconnect').click();
|
||||
}
|
||||
|
||||
var updateCountDownTimerMessage = function($modal, minutes, seconds) {
|
||||
minutes = minutes < 10 ? '0' + minutes : minutes;
|
||||
seconds = seconds < 10 ? '0' + seconds : seconds;
|
||||
|
||||
$modal.find('.timetoexpire').text(minutes + ':' + seconds);
|
||||
}
|
||||
|
||||
// store number of tries to reconnect to server, in order to increase time to wait
|
||||
// until next try
|
||||
var reconnectionTries = {
|
||||
counter: 0,
|
||||
|
||||
nextTry: function() {
|
||||
// double the time to try to reconnect on every time reconnection fails
|
||||
var nextCounterFactor = Math.pow(2, this.counter);
|
||||
this.counter++;
|
||||
|
||||
return nextCounterFactor;
|
||||
}
|
||||
}
|
||||
|
||||
// Timer based on http://stackoverflow.com/a/20618517.
|
||||
// duration: how many **seconds** until the timer ends
|
||||
// granularity (optional): how many **milliseconds** between each 'tick' of timer. Default: 1000ms (1s)
|
||||
var CountDownTimer = function(duration, granularity) {
|
||||
this.duration = duration;
|
||||
this.granularity = granularity || 1000;
|
||||
this.running = false;
|
||||
|
||||
this.onTickCallbacks = [];
|
||||
this.onExpireCallbacks = [];
|
||||
}
|
||||
|
||||
CountDownTimer.prototype.start = function() {
|
||||
if (this.running) {
|
||||
return;
|
||||
}
|
||||
this.running = true;
|
||||
var start = Date.now(),
|
||||
that = this,
|
||||
diff;
|
||||
|
||||
(function timer() {
|
||||
diff = that.duration - Math.floor((Date.now() - start) / 1000);
|
||||
|
||||
if (diff > 0) {
|
||||
that.timeoutId = setTimeout(timer, that.granularity);
|
||||
that.tick(diff);
|
||||
} else {
|
||||
that.running = false;
|
||||
that.tick(0);
|
||||
that.expire();
|
||||
}
|
||||
}());
|
||||
};
|
||||
|
||||
CountDownTimer.prototype.tick = function(diff) {
|
||||
var obj = CountDownTimer.parse(diff);
|
||||
this.onTickCallbacks.forEach(function(callback) {
|
||||
callback.call(this, obj.minutes, obj.seconds);
|
||||
}, this);
|
||||
}
|
||||
CountDownTimer.prototype.expire = function() {
|
||||
this.onExpireCallbacks.forEach(function(callback) {
|
||||
callback.call(this);
|
||||
}, this);
|
||||
}
|
||||
|
||||
CountDownTimer.prototype.onTick = function(callback) {
|
||||
if (typeof callback === 'function') {
|
||||
this.onTickCallbacks.push(callback);
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
CountDownTimer.prototype.onExpire = function(callback) {
|
||||
if (typeof callback === 'function') {
|
||||
this.onExpireCallbacks.push(callback);
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
CountDownTimer.prototype.cancel = function() {
|
||||
this.running = false;
|
||||
clearTimeout(this.timeoutId);
|
||||
return this;
|
||||
};
|
||||
|
||||
CountDownTimer.parse = function(seconds) {
|
||||
return {
|
||||
'minutes': (seconds / 60) | 0,
|
||||
'seconds': (seconds % 60) | 0
|
||||
};
|
||||
};
|
|
@ -259,18 +259,25 @@ var padeditbar = (function()
|
|||
// hide all modules and remove highlighting of all buttons
|
||||
if(moduleName == "none")
|
||||
{
|
||||
var returned = false
|
||||
var returned = false;
|
||||
for(var i=0;i<self.dropdowns.length;i++)
|
||||
{
|
||||
var thisModuleName = self.dropdowns[i];
|
||||
|
||||
//skip the userlist
|
||||
if(self.dropdowns[i] == "users")
|
||||
if(thisModuleName == "users")
|
||||
continue;
|
||||
|
||||
var module = $("#" + self.dropdowns[i]);
|
||||
var module = $("#" + thisModuleName);
|
||||
|
||||
//skip any "force reconnect" message
|
||||
var isAForceReconnectMessage = module.find('button#forcereconnect:visible').length > 0;
|
||||
if(isAForceReconnectMessage)
|
||||
continue;
|
||||
|
||||
if(module.css('display') != "none")
|
||||
{
|
||||
$("li[data-key=" + self.dropdowns[i] + "] > a").removeClass("selected");
|
||||
$("li[data-key=" + thisModuleName + "] > a").removeClass("selected");
|
||||
module.slideUp("fast", cb);
|
||||
returned = true;
|
||||
}
|
||||
|
@ -283,16 +290,17 @@ var padeditbar = (function()
|
|||
// respectively add highlighting to the corresponding button
|
||||
for(var i=0;i<self.dropdowns.length;i++)
|
||||
{
|
||||
var module = $("#" + self.dropdowns[i]);
|
||||
var thisModuleName = self.dropdowns[i];
|
||||
var module = $("#" + thisModuleName);
|
||||
|
||||
if(module.css('display') != "none")
|
||||
{
|
||||
$("li[data-key=" + self.dropdowns[i] + "] > a").removeClass("selected");
|
||||
$("li[data-key=" + thisModuleName + "] > a").removeClass("selected");
|
||||
module.slideUp("fast");
|
||||
}
|
||||
else if(self.dropdowns[i]==moduleName)
|
||||
else if(thisModuleName==moduleName)
|
||||
{
|
||||
$("li[data-key=" + self.dropdowns[i] + "] > a").addClass("selected");
|
||||
$("li[data-key=" + thisModuleName + "] > a").addClass("selected");
|
||||
module.slideDown("fast", cb);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
@ -30,10 +30,12 @@ var padeditor = (function()
|
|||
var settings = undefined;
|
||||
|
||||
// Array of available fonts
|
||||
var fonts = ['useMonospaceFont', 'useOpenDyslexicFont', 'useComicSansFont', 'useCourierNewFont', 'useGeorgiaFont', 'useImpactFont',
|
||||
'useLucidaFont', 'useLucidaSansFont', 'usePalatinoFont', 'useTahomaFont', 'useTimesNewRomanFont',
|
||||
'useTrebuchetFont', 'useVerdanaFont', 'useSymbolFont', 'useWebdingsFont', 'useWingDingsFont', 'useSansSerifFont',
|
||||
'useSerifFont'];
|
||||
|
||||
var fonts = ['useMonospaceFont', 'useMontserratFont', 'useOpenDyslexicFont', 'useComicSansFont', 'useCourierNewFont',
|
||||
'useGeorgiaFont', 'useImpactFont', 'useLucidaFont', 'useLucidaSansFont', 'usePalatinoFont', 'useRobotoMonoFont',
|
||||
'useTahomaFont', 'useTimesNewRomanFont', 'useTrebuchetFont', 'useVerdanaFont', 'useSymbolFont', 'useWebdingsFont',
|
||||
'useWingDingsFont', 'useSansSerifFont', 'useSerifFont'];
|
||||
|
||||
|
||||
var self = {
|
||||
ace: null,
|
||||
|
@ -102,7 +104,7 @@ var padeditor = (function()
|
|||
pad.changeViewOption(font, $("#viewfontmenu").val() == sfont);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// Language
|
||||
html10n.bind('localized', function() {
|
||||
$("#languagemenu").val(html10n.getLanguage());
|
||||
|
@ -161,6 +163,7 @@ var padeditor = (function()
|
|||
font = font.replace("Font","");
|
||||
font = font.toLowerCase();
|
||||
if(font === "monospace") self.ace.setProperty("textface", "monospace");
|
||||
if(font === "montserrat") self.ace.setProperty("textface", "Montserrat");
|
||||
if(font === "opendyslexic") self.ace.setProperty("textface", "OpenDyslexic");
|
||||
if(font === "comicsans") self.ace.setProperty("textface", "'Comic Sans MS','Comic Sans',cursive");
|
||||
if(font === "georgia") self.ace.setProperty("textface", "Georgia,'Bitstream Charter',serif");
|
||||
|
@ -168,6 +171,7 @@ var padeditor = (function()
|
|||
if(font === "lucida") self.ace.setProperty("textface", "Lucida,'Lucida Serif','Lucida Bright',serif");
|
||||
if(font === "lucidasans") self.ace.setProperty("textface", "'Lucida Sans','Lucida Grande','Lucida Sans Unicode','Luxi Sans',sans-serif");
|
||||
if(font === "palatino") self.ace.setProperty("textface", "Palatino,'Palatino Linotype','URW Palladio L',Georgia,serif");
|
||||
if(font === "robotomono") self.ace.setProperty("textface", "RobotoMono");
|
||||
if(font === "tahoma") self.ace.setProperty("textface", "Tahoma,sans-serif");
|
||||
if(font === "timesnewroman") self.ace.setProperty("textface", "'Times New Roman',Times,serif");
|
||||
if(font === "trebuchet") self.ace.setProperty("textface", "'Trebuchet MS',sans-serif");
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
@ -19,8 +19,9 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
var padeditbar = require('./pad_editbar').padeditbar;
|
||||
var automaticReconnect = require('./pad_automatic_reconnect');
|
||||
|
||||
var padmodals = (function()
|
||||
{
|
||||
|
@ -35,6 +36,10 @@ var padmodals = (function()
|
|||
padeditbar.toggleDropDown("none", function() {
|
||||
$("#connectivity .visible").removeClass('visible');
|
||||
$("#connectivity ."+messageId).addClass('visible');
|
||||
|
||||
var $modal = $('#connectivity .' + messageId);
|
||||
automaticReconnect.showCountDownTimerToReconnectOnModal($modal, pad);
|
||||
|
||||
padeditbar.toggleDropDown("connectivity");
|
||||
});
|
||||
},
|
||||
|
|
|
@ -524,7 +524,7 @@ function setupGlobalExceptionHandler() {
|
|||
$("#editorloadingbox").css("padding", "10px");
|
||||
$("#editorloadingbox").css("padding-top", "45px");
|
||||
$("#editorloadingbox").html("<div style='text-align:left;color:red;font-size:16px;'><b>An error occurred</b><br>The error was reported with the following id: '" + errorId + "'<br><br><span style='color:black;font-weight:bold;font-size:16px'>Please press and hold Ctrl and press F5 to reload this page, if the problem persists please send this error message to your webmaster: </span><div style='color:black;font-size:14px'>'"
|
||||
+ "ErrorId: " + errorId + "<br>URL: " + window.location.href + "<br>UserAgent: " + userAgent + "<br>" + msg + " in " + url + " at line " + linenumber + "'</div></div>");
|
||||
+ "ErrorId: " + errorId + "<br>URL: " + padutils.escapeHtml(window.location.href) + "<br>UserAgent: " + userAgent + "<br>" + msg + " in " + url + " at line " + linenumber + "'</div></div>");
|
||||
}
|
||||
|
||||
//send javascript errors to the server
|
||||
|
|
366
src/static/js/scroll.js
Normal file
366
src/static/js/scroll.js
Normal file
|
@ -0,0 +1,366 @@
|
|||
/*
|
||||
This file handles scroll on edition or when user presses arrow keys.
|
||||
In this file we have two representations of line (browser and rep line).
|
||||
Rep Line = a line in the way is represented by Etherpad(rep) (each <div> is a line)
|
||||
Browser Line = each vertical line. A <div> can be break into more than one
|
||||
browser line.
|
||||
*/
|
||||
var caretPosition = require('/caretPosition');
|
||||
|
||||
function Scroll(outerWin) {
|
||||
// scroll settings
|
||||
this.scrollSettings = parent.parent.clientVars.scrollWhenFocusLineIsOutOfViewport;
|
||||
|
||||
// DOM reference
|
||||
this.outerWin = outerWin;
|
||||
this.doc = this.outerWin.document;
|
||||
this.rootDocument = parent.parent.document;
|
||||
}
|
||||
|
||||
Scroll.prototype.scrollWhenCaretIsInTheLastLineOfViewportWhenNecessary = function (rep, isScrollableEvent, innerHeight)
|
||||
{
|
||||
// are we placing the caret on the line at the bottom of viewport?
|
||||
// And if so, do we need to scroll the editor, as defined on the settings.json?
|
||||
var shouldScrollWhenCaretIsAtBottomOfViewport = this.scrollSettings.scrollWhenCaretIsInTheLastLineOfViewport;
|
||||
if (shouldScrollWhenCaretIsAtBottomOfViewport) {
|
||||
// avoid scrolling when selection includes multiple lines -- user can potentially be selecting more lines
|
||||
// than it fits on viewport
|
||||
var multipleLinesSelected = rep.selStart[0] !== rep.selEnd[0];
|
||||
|
||||
// avoid scrolling when pad loads
|
||||
if (isScrollableEvent && !multipleLinesSelected && this._isCaretAtTheBottomOfViewport(rep)) {
|
||||
// when scrollWhenFocusLineIsOutOfViewport.percentage is 0, pixelsToScroll is 0
|
||||
var pixelsToScroll = this._getPixelsRelativeToPercentageOfViewport(innerHeight);
|
||||
this._scrollYPage(pixelsToScroll);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Scroll.prototype.scrollWhenPressArrowKeys = function(arrowUp, rep, innerHeight)
|
||||
{
|
||||
// if percentageScrollArrowUp is 0, let the scroll to be handled as default, put the previous
|
||||
// rep line on the top of the viewport
|
||||
if(this._arrowUpWasPressedInTheFirstLineOfTheViewport(arrowUp, rep)){
|
||||
var pixelsToScroll = this._getPixelsToScrollWhenUserPressesArrowUp(innerHeight);
|
||||
|
||||
// by default, the browser scrolls to the middle of the viewport. To avoid the twist made
|
||||
// when we apply a second scroll, we made it immediately (without animation)
|
||||
this._scrollYPageWithoutAnimation(-pixelsToScroll);
|
||||
}else{
|
||||
this.scrollNodeVerticallyIntoView(rep, innerHeight);
|
||||
}
|
||||
}
|
||||
|
||||
// Some plugins might set a minimum height to the editor (ex: ep_page_view), so checking
|
||||
// if (caretLine() === rep.lines.length() - 1) is not enough. We need to check if there are
|
||||
// other lines after caretLine(), and all of them are out of viewport.
|
||||
Scroll.prototype._isCaretAtTheBottomOfViewport = function(rep)
|
||||
{
|
||||
// computing a line position using getBoundingClientRect() is expensive.
|
||||
// (obs: getBoundingClientRect() is called on caretPosition.getPosition())
|
||||
// To avoid that, we only call this function when it is possible that the
|
||||
// caret is in the bottom of viewport
|
||||
var caretLine = rep.selStart[0];
|
||||
var lineAfterCaretLine = caretLine + 1;
|
||||
var firstLineVisibleAfterCaretLine = caretPosition.getNextVisibleLine(lineAfterCaretLine, rep);
|
||||
var caretLineIsPartiallyVisibleOnViewport = this._isLinePartiallyVisibleOnViewport(caretLine, rep);
|
||||
var lineAfterCaretLineIsPartiallyVisibleOnViewport = this._isLinePartiallyVisibleOnViewport(firstLineVisibleAfterCaretLine, rep);
|
||||
if (caretLineIsPartiallyVisibleOnViewport || lineAfterCaretLineIsPartiallyVisibleOnViewport) {
|
||||
// check if the caret is in the bottom of the viewport
|
||||
var caretLinePosition = caretPosition.getPosition();
|
||||
var viewportBottom = this._getViewPortTopBottom().bottom;
|
||||
var nextLineBottom = caretPosition.getBottomOfNextBrowserLine(caretLinePosition, rep);
|
||||
var nextLineIsBelowViewportBottom = nextLineBottom > viewportBottom;
|
||||
return nextLineIsBelowViewportBottom;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Scroll.prototype._isLinePartiallyVisibleOnViewport = function(lineNumber, rep)
|
||||
{
|
||||
var lineNode = rep.lines.atIndex(lineNumber);
|
||||
var linePosition = this._getLineEntryTopBottom(lineNode);
|
||||
var lineTop = linePosition.top;
|
||||
var lineBottom = linePosition.bottom;
|
||||
var viewport = this._getViewPortTopBottom();
|
||||
var viewportBottom = viewport.bottom;
|
||||
var viewportTop = viewport.top;
|
||||
|
||||
var topOfLineIsAboveOfViewportBottom = lineTop < viewportBottom;
|
||||
var bottomOfLineIsOnOrBelowOfViewportBottom = lineBottom >= viewportBottom;
|
||||
var topOfLineIsBelowViewportTop = lineTop >= viewportTop;
|
||||
var topOfLineIsAboveViewportBottom = lineTop <= viewportBottom;
|
||||
var bottomOfLineIsAboveViewportBottom = lineBottom <= viewportBottom;
|
||||
var bottomOfLineIsBelowViewportTop = lineBottom >= viewportTop;
|
||||
|
||||
return (topOfLineIsAboveOfViewportBottom && bottomOfLineIsOnOrBelowOfViewportBottom) ||
|
||||
(topOfLineIsBelowViewportTop && topOfLineIsAboveViewportBottom) ||
|
||||
(bottomOfLineIsAboveViewportBottom && bottomOfLineIsBelowViewportTop);
|
||||
}
|
||||
|
||||
Scroll.prototype._getViewPortTopBottom = function()
|
||||
{
|
||||
var theTop = this.getScrollY();
|
||||
var doc = this.doc;
|
||||
var height = doc.documentElement.clientHeight; // includes padding
|
||||
|
||||
// we have to get the exactly height of the viewport. So it has to subtract all the values which changes
|
||||
// the viewport height (E.g. padding, position top)
|
||||
var viewportExtraSpacesAndPosition = this._getEditorPositionTop() + this._getPaddingTopAddedWhenPageViewIsEnable();
|
||||
return {
|
||||
top: theTop,
|
||||
bottom: (theTop + height - viewportExtraSpacesAndPosition)
|
||||
};
|
||||
}
|
||||
|
||||
Scroll.prototype._getEditorPositionTop = function()
|
||||
{
|
||||
var editor = parent.document.getElementsByTagName('iframe');
|
||||
var editorPositionTop = editor[0].offsetTop;
|
||||
return editorPositionTop;
|
||||
}
|
||||
|
||||
// ep_page_view adds padding-top, which makes the viewport smaller
|
||||
Scroll.prototype._getPaddingTopAddedWhenPageViewIsEnable = function()
|
||||
{
|
||||
var aceOuter = this.rootDocument.getElementsByName("ace_outer");
|
||||
var aceOuterPaddingTop = parseInt($(aceOuter).css("padding-top"));
|
||||
return aceOuterPaddingTop;
|
||||
}
|
||||
|
||||
Scroll.prototype._getScrollXY = function()
|
||||
{
|
||||
var win = this.outerWin;
|
||||
var odoc = this.doc;
|
||||
if (typeof(win.pageYOffset) == "number")
|
||||
{
|
||||
return {
|
||||
x: win.pageXOffset,
|
||||
y: win.pageYOffset
|
||||
};
|
||||
}
|
||||
var docel = odoc.documentElement;
|
||||
if (docel && typeof(docel.scrollTop) == "number")
|
||||
{
|
||||
return {
|
||||
x: docel.scrollLeft,
|
||||
y: docel.scrollTop
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Scroll.prototype.getScrollX = function()
|
||||
{
|
||||
return this._getScrollXY().x;
|
||||
}
|
||||
|
||||
Scroll.prototype.getScrollY = function()
|
||||
{
|
||||
return this._getScrollXY().y;
|
||||
}
|
||||
|
||||
Scroll.prototype.setScrollX = function(x)
|
||||
{
|
||||
this.outerWin.scrollTo(x, this.getScrollY());
|
||||
}
|
||||
|
||||
Scroll.prototype.setScrollY = function(y)
|
||||
{
|
||||
this.outerWin.scrollTo(this.getScrollX(), y);
|
||||
}
|
||||
|
||||
Scroll.prototype.setScrollXY = function(x, y)
|
||||
{
|
||||
this.outerWin.scrollTo(x, y);
|
||||
}
|
||||
|
||||
Scroll.prototype._isCaretAtTheTopOfViewport = function(rep)
|
||||
{
|
||||
var caretLine = rep.selStart[0];
|
||||
var linePrevCaretLine = caretLine - 1;
|
||||
var firstLineVisibleBeforeCaretLine = caretPosition.getPreviousVisibleLine(linePrevCaretLine, rep);
|
||||
var caretLineIsPartiallyVisibleOnViewport = this._isLinePartiallyVisibleOnViewport(caretLine, rep);
|
||||
var lineBeforeCaretLineIsPartiallyVisibleOnViewport = this._isLinePartiallyVisibleOnViewport(firstLineVisibleBeforeCaretLine, rep);
|
||||
if (caretLineIsPartiallyVisibleOnViewport || lineBeforeCaretLineIsPartiallyVisibleOnViewport) {
|
||||
var caretLinePosition = caretPosition.getPosition(); // get the position of the browser line
|
||||
var viewportPosition = this._getViewPortTopBottom();
|
||||
var viewportTop = viewportPosition.top;
|
||||
var viewportBottom = viewportPosition.bottom;
|
||||
var caretLineIsBelowViewportTop = caretLinePosition.bottom >= viewportTop;
|
||||
var caretLineIsAboveViewportBottom = caretLinePosition.top < viewportBottom;
|
||||
var caretLineIsInsideOfViewport = caretLineIsBelowViewportTop && caretLineIsAboveViewportBottom;
|
||||
if (caretLineIsInsideOfViewport) {
|
||||
var prevLineTop = caretPosition.getPositionTopOfPreviousBrowserLine(caretLinePosition, rep);
|
||||
var previousLineIsAboveViewportTop = prevLineTop < viewportTop;
|
||||
return previousLineIsAboveViewportTop;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// By default, when user makes an edition in a line out of viewport, this line goes
|
||||
// to the edge of viewport. This function gets the extra pixels necessary to get the
|
||||
// caret line in a position X relative to Y% viewport.
|
||||
Scroll.prototype._getPixelsRelativeToPercentageOfViewport = function(innerHeight, aboveOfViewport)
|
||||
{
|
||||
var pixels = 0;
|
||||
var scrollPercentageRelativeToViewport = this._getPercentageToScroll(aboveOfViewport);
|
||||
if(scrollPercentageRelativeToViewport > 0 && scrollPercentageRelativeToViewport <= 1){
|
||||
pixels = parseInt(innerHeight * scrollPercentageRelativeToViewport);
|
||||
}
|
||||
return pixels;
|
||||
}
|
||||
|
||||
// we use different percentages when change selection. It depends on if it is
|
||||
// either above the top or below the bottom of the page
|
||||
Scroll.prototype._getPercentageToScroll = function(aboveOfViewport)
|
||||
{
|
||||
var percentageToScroll = this.scrollSettings.percentage.editionBelowViewport;
|
||||
if(aboveOfViewport){
|
||||
percentageToScroll = this.scrollSettings.percentage.editionAboveViewport;
|
||||
}
|
||||
return percentageToScroll;
|
||||
}
|
||||
|
||||
Scroll.prototype._getPixelsToScrollWhenUserPressesArrowUp = function(innerHeight)
|
||||
{
|
||||
var pixels = 0;
|
||||
var percentageToScrollUp = this.scrollSettings.percentageToScrollWhenUserPressesArrowUp;
|
||||
if(percentageToScrollUp > 0 && percentageToScrollUp <= 1){
|
||||
pixels = parseInt(innerHeight * percentageToScrollUp);
|
||||
}
|
||||
return pixels;
|
||||
}
|
||||
|
||||
Scroll.prototype._scrollYPage = function(pixelsToScroll)
|
||||
{
|
||||
var durationOfAnimationToShowFocusline = this.scrollSettings.duration;
|
||||
if(durationOfAnimationToShowFocusline){
|
||||
this._scrollYPageWithAnimation(pixelsToScroll, durationOfAnimationToShowFocusline);
|
||||
}else{
|
||||
this._scrollYPageWithoutAnimation(pixelsToScroll);
|
||||
}
|
||||
}
|
||||
|
||||
Scroll.prototype._scrollYPageWithoutAnimation = function(pixelsToScroll)
|
||||
{
|
||||
this.outerWin.scrollBy(0, pixelsToScroll);
|
||||
}
|
||||
|
||||
Scroll.prototype._scrollYPageWithAnimation = function(pixelsToScroll, durationOfAnimationToShowFocusline)
|
||||
{
|
||||
var outerDocBody = this.doc.getElementById("outerdocbody");
|
||||
|
||||
// it works on later versions of Chrome
|
||||
var $outerDocBody = $(outerDocBody);
|
||||
this._triggerScrollWithAnimation($outerDocBody, pixelsToScroll, durationOfAnimationToShowFocusline);
|
||||
|
||||
// it works on Firefox and earlier versions of Chrome
|
||||
var $outerDocBodyParent = $outerDocBody.parent();
|
||||
this._triggerScrollWithAnimation($outerDocBodyParent, pixelsToScroll, durationOfAnimationToShowFocusline);
|
||||
}
|
||||
|
||||
// using a custom queue and clearing it, we avoid creating a queue of scroll animations. So if this function
|
||||
// is called twice quickly, only the last one runs.
|
||||
Scroll.prototype._triggerScrollWithAnimation = function($elem, pixelsToScroll, durationOfAnimationToShowFocusline)
|
||||
{
|
||||
// clear the queue of animation
|
||||
$elem.stop("scrollanimation");
|
||||
$elem.animate({
|
||||
scrollTop: '+=' + pixelsToScroll
|
||||
}, {
|
||||
duration: durationOfAnimationToShowFocusline,
|
||||
queue: "scrollanimation"
|
||||
}).dequeue("scrollanimation");
|
||||
}
|
||||
|
||||
// scrollAmountWhenFocusLineIsOutOfViewport is set to 0 (default), scroll it the minimum distance
|
||||
// needed to be completely in view. If the value is greater than 0 and less than or equal to 1,
|
||||
// besides of scrolling the minimum needed to be visible, it scrolls additionally
|
||||
// (viewport height * scrollAmountWhenFocusLineIsOutOfViewport) pixels
|
||||
Scroll.prototype.scrollNodeVerticallyIntoView = function(rep, innerHeight)
|
||||
{
|
||||
var viewport = this._getViewPortTopBottom();
|
||||
var isPartOfRepLineOutOfViewport = this._partOfRepLineIsOutOfViewport(viewport, rep);
|
||||
|
||||
// when the selection changes outside of the viewport the browser automatically scrolls the line
|
||||
// to inside of the viewport. Tested on IE, Firefox, Chrome in releases from 2015 until now
|
||||
// So, when the line scrolled gets outside of the viewport we let the browser handle it.
|
||||
var linePosition = caretPosition.getPosition();
|
||||
if(linePosition){
|
||||
var distanceOfTopOfViewport = linePosition.top - viewport.top;
|
||||
var distanceOfBottomOfViewport = viewport.bottom - linePosition.bottom;
|
||||
var caretIsAboveOfViewport = distanceOfTopOfViewport < 0;
|
||||
var caretIsBelowOfViewport = distanceOfBottomOfViewport < 0;
|
||||
if(caretIsAboveOfViewport){
|
||||
var pixelsToScroll = distanceOfTopOfViewport - this._getPixelsRelativeToPercentageOfViewport(innerHeight, true);
|
||||
this._scrollYPage(pixelsToScroll);
|
||||
}else if(caretIsBelowOfViewport){
|
||||
var pixelsToScroll = -distanceOfBottomOfViewport + this._getPixelsRelativeToPercentageOfViewport(innerHeight);
|
||||
this._scrollYPage(pixelsToScroll);
|
||||
}else{
|
||||
this.scrollWhenCaretIsInTheLastLineOfViewportWhenNecessary(rep, true, innerHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Scroll.prototype._partOfRepLineIsOutOfViewport = function(viewportPosition, rep)
|
||||
{
|
||||
var focusLine = (rep.selFocusAtStart ? rep.selStart[0] : rep.selEnd[0]);
|
||||
var line = rep.lines.atIndex(focusLine);
|
||||
var linePosition = this._getLineEntryTopBottom(line);
|
||||
var lineIsAboveOfViewport = linePosition.top < viewportPosition.top;
|
||||
var lineIsBelowOfViewport = linePosition.bottom > viewportPosition.bottom;
|
||||
|
||||
return lineIsBelowOfViewport || lineIsAboveOfViewport;
|
||||
}
|
||||
|
||||
Scroll.prototype._getLineEntryTopBottom = function(entry, destObj)
|
||||
{
|
||||
var dom = entry.lineNode;
|
||||
var top = dom.offsetTop;
|
||||
var height = dom.offsetHeight;
|
||||
var obj = (destObj || {});
|
||||
obj.top = top;
|
||||
obj.bottom = (top + height);
|
||||
return obj;
|
||||
}
|
||||
|
||||
Scroll.prototype._arrowUpWasPressedInTheFirstLineOfTheViewport = function(arrowUp, rep)
|
||||
{
|
||||
var percentageScrollArrowUp = this.scrollSettings.percentageToScrollWhenUserPressesArrowUp;
|
||||
return percentageScrollArrowUp && arrowUp && this._isCaretAtTheTopOfViewport(rep);
|
||||
}
|
||||
|
||||
Scroll.prototype.getVisibleLineRange = function(rep)
|
||||
{
|
||||
var viewport = this._getViewPortTopBottom();
|
||||
//console.log("viewport top/bottom: %o", viewport);
|
||||
var obj = {};
|
||||
var self = this;
|
||||
var start = rep.lines.search(function(e)
|
||||
{
|
||||
return self._getLineEntryTopBottom(e, obj).bottom > viewport.top;
|
||||
});
|
||||
var end = rep.lines.search(function(e)
|
||||
{
|
||||
// return the first line that the top position is greater or equal than
|
||||
// the viewport. That is the first line that is below the viewport bottom.
|
||||
// So the line that is in the bottom of the viewport is the very previous one.
|
||||
return self._getLineEntryTopBottom(e, obj).top >= viewport.bottom;
|
||||
});
|
||||
if (end < start) end = start; // unlikely
|
||||
// top.console.log(start+","+(end -1));
|
||||
return [start, end - 1];
|
||||
}
|
||||
|
||||
Scroll.prototype.getVisibleCharRange = function(rep)
|
||||
{
|
||||
var lineRange = this.getVisibleLineRange(rep);
|
||||
return [rep.lines.offsetOfIndex(lineRange[0]), rep.lines.offsetOfIndex(lineRange[1])];
|
||||
}
|
||||
|
||||
exports.init = function(outerWin)
|
||||
{
|
||||
return new Scroll(outerWin);
|
||||
}
|
|
@ -161,7 +161,7 @@
|
|||
<div id="wrapper">
|
||||
<% e.begin_block("indexWrapper"); %>
|
||||
<div id="inner">
|
||||
<buttOn id="button" onclick="go2Random()" data-l10n-id="index.newPad"></button>
|
||||
<button id="button" onclick="go2Random()" data-l10n-id="index.newPad"></button>
|
||||
<label id="label" for="padname" data-l10n-id="index.createOpenPad"></label>
|
||||
<form action="#" onsubmit="go2Name();return false;">
|
||||
<input type="text" id="padname" maxlength="50" autofocus x-webkit-speech>
|
||||
|
|
|
@ -161,6 +161,7 @@
|
|||
<select id="viewfontmenu">
|
||||
<option value="normal" data-l10n-id="pad.settings.fontType.normal"></option>
|
||||
<option value="monospace" data-l10n-id="pad.settings.fontType.monospaced"></option>
|
||||
<option value="montserrat" data-l10n-id="pad.settings.fontType.montserrat"></option>
|
||||
<option value="opendyslexic" data-l10n-id="pad.settings.fontType.opendyslexic"></option>
|
||||
<option value="comicsans" data-l10n-id="pad.settings.fontType.comicsans"></option>
|
||||
<option value="georgia" data-l10n-id="pad.settings.fontType.georgia"></option>
|
||||
|
@ -168,6 +169,7 @@
|
|||
<option value="lucida" data-l10n-id="pad.settings.fontType.lucida"></option>
|
||||
<option value="lucidasans" data-l10n-id="pad.settings.fontType.lucidasans"></option>
|
||||
<option value="palatino" data-l10n-id="pad.settings.fontType.palatino"></option>
|
||||
<option value="robotomono" data-l10n-id="pad.settings.fontType.robotomono"></option>
|
||||
<option value="tahoma" data-l10n-id="pad.settings.fontType.tahoma"></option>
|
||||
<option value="timesnewroman" data-l10n-id="pad.settings.fontType.timesnewroman"></option>
|
||||
<option value="trebuchet" data-l10n-id="pad.settings.fontType.trebuchet"></option>
|
||||
|
@ -249,12 +251,12 @@
|
|||
<div class="userdup">
|
||||
<h1 data-l10n-id="pad.modals.userdup"></h1>
|
||||
<h2 data-l10n-id="pad.modals.userdup.explanation"></h2>
|
||||
<p data-l10n-id="pad.modals.userdup.advice"></p>
|
||||
<p id="defaulttext" data-l10n-id="pad.modals.userdup.advice"></p>
|
||||
<button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
|
||||
</div>
|
||||
<div class="unauth">
|
||||
<h1 data-l10n-id="pad.modals.unauth"></h1>
|
||||
<p data-l10n-id="pad.modals.unauth.explanation"></p>
|
||||
<p id="defaulttext" data-l10n-id="pad.modals.unauth.explanation"></p>
|
||||
<button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
|
||||
</div>
|
||||
<div class="looping">
|
||||
|
@ -267,16 +269,16 @@
|
|||
<h2 data-l10n-id="pad.modals.initsocketfail.explanation"></h2>
|
||||
<p data-l10n-id="pad.modals.initsocketfail.cause"></p>
|
||||
</div>
|
||||
<div class="slowcommit">
|
||||
<div class="slowcommit with_reconnect_timer">
|
||||
<h1 data-l10n-id="pad.modals.disconnected"></h1>
|
||||
<h2 data-l10n-id="pad.modals.slowcommit.explanation"></h2>
|
||||
<p data-l10n-id="pad.modals.slowcommit.cause"></p>
|
||||
<p id="defaulttext" data-l10n-id="pad.modals.slowcommit.cause"></p>
|
||||
<button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
|
||||
</div>
|
||||
<div class="badChangeset">
|
||||
<div class="badChangeset with_reconnect_timer">
|
||||
<h1 data-l10n-id="pad.modals.disconnected"></h1>
|
||||
<h2 data-l10n-id="pad.modals.badChangeset.explanation"></h2>
|
||||
<p data-l10n-id="pad.modals.badChangeset.cause"></p>
|
||||
<p id="defaulttext" data-l10n-id="pad.modals.badChangeset.cause"></p>
|
||||
<button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
|
||||
</div>
|
||||
<div class="corruptPad">
|
||||
|
@ -288,11 +290,11 @@
|
|||
<h1 data-l10n-id="pad.modals.deleted"></h1>
|
||||
<p data-l10n-id="pad.modals.deleted.explanation"></p>
|
||||
</div>
|
||||
<div class="disconnected">
|
||||
<div class="disconnected with_reconnect_timer">
|
||||
<% e.begin_block("disconnected"); %>
|
||||
<h1 data-l10n-id="pad.modals.disconnected"></h1>
|
||||
<h2 data-l10n-id="pad.modals.disconnected.explanation"></h2>
|
||||
<p data-l10n-id="pad.modals.disconnected.cause"></p>
|
||||
<p id="defaulttext" data-l10n-id="pad.modals.disconnected.cause"></p>
|
||||
<button id="forcereconnect" data-l10n-id="pad.modals.forcereconnect"></button>
|
||||
<% e.end_block(); %>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue